activities_controller.php
3 months ago
auth_controller.php
3 months ago
booking_form_settings_controller.php
3 months ago
bookings_controller.php
3 months ago
calendars_controller.php
3 months ago
carts_controller.php
3 months ago
controller.php
3 months ago
customer_cabinet_controller.php
3 months ago
customers_controller.php
3 months ago
dashboard_controller.php
3 months ago
default_agent_controller.php
3 months ago
events_controller.php
3 months ago
form_fields_controller.php
3 months ago
integrations_controller.php
3 months ago
invoices_controller.php
3 months ago
manage_booking_by_key_controller.php
3 months ago
manage_order_by_key_controller.php
3 months ago
notifications_controller.php
3 months ago
orders_controller.php
3 months ago
pro_controller.php
3 months ago
process_jobs_controller.php
3 months ago
processes_controller.php
3 months ago
search_controller.php
3 months ago
services_controller.php
3 months ago
settings_controller.php
3 months ago
steps_controller.php
3 months ago
stripe_connect_controller.php
3 months ago
support_topics_controller.php
3 months ago
todos_controller.php
3 months ago
transactions_controller.php
3 months ago
wizard_controller.php
3 months ago
booking_form_settings_controller.php
129 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 | // Verify nonce. |
| 27 | $this->check_nonce( 'reload_preview' ); |
| 28 | |
| 29 | OsStepsHelper::set_cart_object(); |
| 30 | OsStepsHelper::set_booking_object(); |
| 31 | OsStepsHelper::set_restrictions(); |
| 32 | OsStepsHelper::set_presets(); |
| 33 | OsStepsHelper::set_active_cart_item_object(); |
| 34 | $steps_settings = OsStepsHelper::get_steps_settings(); |
| 35 | $steps = OsStepsHelper::get_step_codes_in_order(); |
| 36 | foreach ( $steps as $step_code ) { |
| 37 | if ( ! empty( $this->params['steps_settings'][ $step_code ] ) ) { |
| 38 | foreach ( $this->params['steps_settings'][ $step_code ] as $step_setting_key => $step_setting_value ) { |
| 39 | // remove empty content for text content settings |
| 40 | if ( in_array( $step_setting_value, [ '<p><br></p>', '<br>', '<br/>' ] ) ) { |
| 41 | $step_setting_value = ''; |
| 42 | } |
| 43 | if ( in_array( $step_setting_key, [ 'side_panel_heading', 'main_panel_heading' ] ) ) { |
| 44 | $step_setting_value = wp_strip_all_tags( $step_setting_value ); |
| 45 | } |
| 46 | if ( in_array( $step_setting_key, [ 'side_panel_description' ] ) ) { |
| 47 | $step_setting_value = strip_tags( $step_setting_value, [ 'a', 'i', 'u', 'b', 'br' ] ); |
| 48 | } |
| 49 | $steps_settings[ $step_code ][ $step_setting_key ] = trim( $step_setting_value ); |
| 50 | } |
| 51 | } |
| 52 | } |
| 53 | // shared settings also needs to be cleaned |
| 54 | if ( ! empty( $this->params['steps_settings']['shared'] ) ) { |
| 55 | foreach ( $this->params['steps_settings']['shared'] as $step_setting_key => $step_setting_value ) { |
| 56 | // remove empty content for text content settings |
| 57 | if ( in_array( $step_setting_value, [ '<p><br></p>', '<br>', '<br/>' ] ) ) { |
| 58 | $step_setting_value = ''; |
| 59 | } |
| 60 | if ( in_array( $step_setting_key, [ 'steps_support_text' ] ) ) { |
| 61 | $step_setting_value = strip_tags( $step_setting_value, [ 'a', 'i', 'u', 'b', 'h3', 'h4', 'h5', 'br' ] ); |
| 62 | } |
| 63 | // shared settings are saved in general settings |
| 64 | OsSettingsHelper::save_setting_by_name( $step_setting_key, trim( $step_setting_value ) ); |
| 65 | } |
| 66 | } |
| 67 | OsStepsHelper::save_steps_settings( $steps_settings ); |
| 68 | $steps_for_select = OsStepsHelper::get_steps_for_select(); |
| 69 | |
| 70 | $selected_step_code = $this->params['selected_step_code']; |
| 71 | |
| 72 | $errors = array(); |
| 73 | |
| 74 | if ( $this->params['settings'] ) { |
| 75 | foreach ( $this->params['settings'] as $setting_name => $setting_value ) { |
| 76 | $setting = new OsSettingsModel(); |
| 77 | $setting = $setting->load_by_name( $setting_name ); |
| 78 | $is_new_record = $setting->is_new_record(); |
| 79 | if ( ! $is_new_record ) { |
| 80 | $old_setting_value = $setting->value; |
| 81 | } |
| 82 | $setting->name = $setting_name; |
| 83 | $setting->value = OsSettingsHelper::prepare_value( $setting_name, $setting_value ); |
| 84 | OsSettingsHelper::reset_loaded_value( $setting_name ); |
| 85 | |
| 86 | if ( $setting->save() ) { |
| 87 | if ( $is_new_record ) { |
| 88 | do_action( 'latepoint_setting_created', $setting ); |
| 89 | } else { |
| 90 | do_action( 'latepoint_setting_updated', $setting, $old_setting_value ); |
| 91 | } |
| 92 | } else { |
| 93 | $errors[] = $setting->get_error_messages(); |
| 94 | } |
| 95 | } |
| 96 | |
| 97 | do_action( 'latepoint_settings_updated', $this->params['settings'] ); |
| 98 | } |
| 99 | |
| 100 | $this->vars['selected_step_code'] = $selected_step_code; |
| 101 | $this->vars['steps_for_select'] = $steps_for_select; |
| 102 | $this->vars['booking'] = OsStepsHelper::build_booking_object_for_current_step_preview( $selected_step_code ); |
| 103 | |
| 104 | $data['step_settings_html'] = OsStepsHelper::get_step_settings_edit_form_html( $this->params['selected_step_code'] ); |
| 105 | $data['booking_form_html'] = $this->render( $this->views_folder . '_booking_form_preview' ); |
| 106 | $data['css_variables'] = OsStylesHelper::generate_css_variables(); |
| 107 | $data['status'] = LATEPOINT_STATUS_SUCCESS; |
| 108 | |
| 109 | |
| 110 | if ( $this->get_return_format() == 'json' ) { |
| 111 | $this->send_json( $data ); |
| 112 | } |
| 113 | } |
| 114 | |
| 115 | |
| 116 | public function show() { |
| 117 | $steps = OsStepsHelper::get_step_codes_in_order(); |
| 118 | $steps_for_select = OsStepsHelper::get_steps_for_select(); |
| 119 | $selected_step_code = array_key_first( $steps_for_select ); |
| 120 | $this->vars['steps_for_select'] = $steps_for_select; |
| 121 | $this->vars['steps'] = $steps; |
| 122 | $this->vars['selected_step_code'] = $selected_step_code; |
| 123 | $this->vars['booking'] = OsStepsHelper::build_booking_object_for_current_step_preview( $selected_step_code ); |
| 124 | |
| 125 | $this->format_render( __FUNCTION__ ); |
| 126 | } |
| 127 | } |
| 128 | endif; |
| 129 |