'', 'service_id' => 0, 'template' => '', 'calendar_view' => '', 'calendar' => '', 'type' => '', 'staff' => '', 'category' => '', 'reschedule_id' => 0, 'reschedule_token' => '', ], (array) $atts, 'bookingistic' ); $service = null; if ( ! empty( $atts['service'] ) ) { $service = Service_Repository::find_by_slug( sanitize_title( $atts['service'] ) ); } if ( ! $service && ! empty( $atts['service_id'] ) ) { $service = Service_Repository::find( (int) $atts['service_id'] ); } if ( ! $service ) { $services = Service_Repository::all( [ 'status' => 'active' ] ); $service = $services[0] ?? null; } if ( ! $service || $service['status'] !== 'active' ) { return '
' . esc_html__( 'No booking service is currently available.', 'bookingistic' ) . '
'; } $reschedule_id = (int) $atts['reschedule_id']; $reschedule_token = sanitize_text_field( $atts['reschedule_token'] ); // Staff that can fulfil this service. Only show the picker when more than one. $assignable_staff = \Bookingistic\Database\Staff_Repository::for_service( (int) $service['id'] ); $calendar_view = sanitize_key( $atts['calendar_view'] ?: $atts['calendar'] ); return Booking_Form::render( $service, $assignable_staff, $reschedule_id, $reschedule_token, [ 'template' => sanitize_key( $atts['template'] ), 'calendar' => $calendar_view, ] ); } }