activities_controller.php
1 year ago
auth_controller.php
1 year ago
booking_form_settings_controller.php
1 year ago
bookings_controller.php
1 year ago
calendars_controller.php
1 year ago
carts_controller.php
1 year ago
controller.php
1 year ago
customer_cabinet_controller.php
1 year ago
customers_controller.php
1 year ago
dashboard_controller.php
1 year ago
default_agent_controller.php
1 year ago
events_controller.php
1 year ago
form_fields_controller.php
1 year ago
integrations_controller.php
1 year ago
invoices_controller.php
1 year ago
manage_booking_by_key_controller.php
1 year ago
manage_order_by_key_controller.php
1 year ago
notifications_controller.php
1 year ago
orders_controller.php
1 year ago
pro_controller.php
1 year ago
process_jobs_controller.php
1 year ago
processes_controller.php
1 year ago
search_controller.php
1 year ago
services_controller.php
1 year ago
settings_controller.php
1 year ago
steps_controller.php
1 year ago
stripe_connect_controller.php
1 year ago
support_topics_controller.php
1 year ago
todos_controller.php
1 year ago
transactions_controller.php
1 year ago
wizard_controller.php
1 year ago
booking_form_settings_controller.php
117 lines
| 1 | <?php |
| 2 | if ( ! defined( 'ABSPATH' ) ) { |
| 3 | exit; // Exit if accessed directly. |
| 4 | } |
| 5 | |
| 6 | |
| 7 | if ( ! class_exists( 'OsBookingFormSettingsController' ) ) : |
| 8 | |
| 9 | |
| 10 | class OsBookingFormSettingsController extends OsController { |
| 11 | |
| 12 | |
| 13 | function __construct() { |
| 14 | parent::__construct(); |
| 15 | |
| 16 | $this->views_folder = LATEPOINT_VIEWS_ABSPATH . 'booking_form_settings/'; |
| 17 | $this->vars['page_header'] = OsMenuHelper::get_menu_items_by_id( 'settings' ); |
| 18 | $this->vars['pre_page_header'] = OsMenuHelper::get_label_by_id( 'settings' ); |
| 19 | $this->vars['breadcrumbs'][] = array( |
| 20 | 'label' => __( 'Booking Form Settings', 'latepoint' ), |
| 21 | 'link' => OsRouterHelper::build_link( OsRouterHelper::build_route_name( 'booking_form_settings', 'preview' ) ) |
| 22 | ); |
| 23 | } |
| 24 | |
| 25 | public function reload_preview() { |
| 26 | OsStepsHelper::set_cart_object(); |
| 27 | OsStepsHelper::set_booking_object(); |
| 28 | OsStepsHelper::set_restrictions(); |
| 29 | OsStepsHelper::set_presets(); |
| 30 | OsStepsHelper::set_active_cart_item_object(); |
| 31 | $steps_settings = OsStepsHelper::get_steps_settings(); |
| 32 | $steps = OsStepsHelper::get_step_codes_in_order(); |
| 33 | foreach ( $steps as $step_code ) { |
| 34 | if ( ! empty( $this->params['steps_settings'][ $step_code ] ) ) { |
| 35 | foreach ( $this->params['steps_settings'][ $step_code ] as $step_setting_key => $step_setting_value ) { |
| 36 | // remove empty content for text content settings |
| 37 | if ( in_array( $step_setting_value, [ '<p><br></p>', '<br>', '<br/>' ] ) ) { |
| 38 | $step_setting_value = ''; |
| 39 | } |
| 40 | $steps_settings[ $step_code ][ $step_setting_key ] = trim( $step_setting_value ); |
| 41 | } |
| 42 | } |
| 43 | } |
| 44 | // shared settings also needs to be cleaned |
| 45 | if ( ! empty( $this->params['steps_settings']['shared'] ) ) { |
| 46 | foreach ( $this->params['steps_settings']['shared'] as $step_setting_key => $step_setting_value ) { |
| 47 | // remove empty content for text content settings |
| 48 | if ( in_array( $step_setting_value, [ '<p><br></p>', '<br>', '<br/>' ] ) ) { |
| 49 | $step_setting_value = ''; |
| 50 | } |
| 51 | // shared settings are saved in general settings |
| 52 | OsSettingsHelper::save_setting_by_name( $step_setting_key, trim( $step_setting_value ) ); |
| 53 | } |
| 54 | } |
| 55 | OsStepsHelper::save_steps_settings( $steps_settings ); |
| 56 | $steps_for_select = OsStepsHelper::get_steps_for_select(); |
| 57 | |
| 58 | $selected_step_code = $this->params['selected_step_code']; |
| 59 | |
| 60 | $errors = array(); |
| 61 | |
| 62 | if ( $this->params['settings'] ) { |
| 63 | foreach ( $this->params['settings'] as $setting_name => $setting_value ) { |
| 64 | $setting = new OsSettingsModel(); |
| 65 | $setting = $setting->load_by_name( $setting_name ); |
| 66 | $is_new_record = $setting->is_new_record(); |
| 67 | if ( ! $is_new_record ) { |
| 68 | $old_setting_value = $setting->value; |
| 69 | } |
| 70 | $setting->name = $setting_name; |
| 71 | $setting->value = OsSettingsHelper::prepare_value( $setting_name, $setting_value ); |
| 72 | OsSettingsHelper::reset_loaded_value( $setting_name ); |
| 73 | |
| 74 | if ( $setting->save() ) { |
| 75 | if ( $is_new_record ) { |
| 76 | do_action( 'latepoint_setting_created', $setting ); |
| 77 | } else { |
| 78 | do_action( 'latepoint_setting_updated', $setting, $old_setting_value ); |
| 79 | } |
| 80 | } else { |
| 81 | $errors[] = $setting->get_error_messages(); |
| 82 | } |
| 83 | } |
| 84 | |
| 85 | do_action( 'latepoint_settings_updated', $this->params['settings'] ); |
| 86 | } |
| 87 | |
| 88 | $this->vars['selected_step_code'] = $selected_step_code; |
| 89 | $this->vars['steps_for_select'] = $steps_for_select; |
| 90 | $this->vars['booking'] = OsStepsHelper::build_booking_object_for_current_step_preview( $selected_step_code ); |
| 91 | |
| 92 | $data['step_settings_html'] = OsStepsHelper::get_step_settings_edit_form_html( $this->params['selected_step_code'] ); |
| 93 | $data['booking_form_html'] = $this->render( $this->views_folder . '_booking_form_preview' ); |
| 94 | $data['css_variables'] = OsStylesHelper::generate_css_variables(); |
| 95 | $data['status'] = LATEPOINT_STATUS_SUCCESS; |
| 96 | |
| 97 | |
| 98 | if ( $this->get_return_format() == 'json' ) { |
| 99 | $this->send_json( $data ); |
| 100 | } |
| 101 | } |
| 102 | |
| 103 | |
| 104 | public function show() { |
| 105 | $steps = OsStepsHelper::get_step_codes_in_order(); |
| 106 | $steps_for_select = OsStepsHelper::get_steps_for_select(); |
| 107 | $selected_step_code = array_key_first( $steps_for_select ); |
| 108 | $this->vars['steps_for_select'] = $steps_for_select; |
| 109 | $this->vars['steps'] = $steps; |
| 110 | $this->vars['selected_step_code'] = $selected_step_code; |
| 111 | $this->vars['booking'] = OsStepsHelper::build_booking_object_for_current_step_preview( $selected_step_code ); |
| 112 | |
| 113 | $this->format_render( __FUNCTION__ ); |
| 114 | } |
| 115 | |
| 116 | } |
| 117 | endif; |