PluginProbe
Booking Calendar / 10.11.2
Booking Calendar v10.11.2
11.8.2 11.8.1 11.8 11.7 11.6.1 11.6 11.5 11.4.3 11.4.2 11.4.1 11.4 11.3 11.2.1 11.2 11.1 11.0 10.15.7 10.15.6 10.1.3 10.10 10.10.1 10.10.2 10.11 10.11.2 10.11.3 All 202 releases
booking / core / wpbc-js-vars.php

wpbc-js-vars.php in Booking Calendar 10.11.2, at core/wpbc-js-vars.php

189 lines 13.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php /**
2 * @version 1.0
3 * @package Booking Calendar - JavaScript
4 * @category Define JavaScript variables
5 * @author wpdevelop
6 *
7 * @web-site https://wpbookingcalendar.com/
8 * @email info@wpbookingcalendar.com
9 *
10 * @modified 19.10.2015
11 */
12
13 if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
14
15
16 /**
17 * Get script string for localised variables.
18 *
19 * @return string
20 */
21 function wpbc_get_localized_js_vars() {
22
23 // $script = 'var1 = '. wp_json_encode('var1') .'; '; // JSON.parse(wpbc_global_var); //.
24
25 $script = '';
26 $script .= "_wpbc.set_other_param( 'locale_active', '" . esc_js( wpbc_get_maybe_reloaded_booking_locale() ) . "' ); ";
27
28 // FixIn: 10.8.1.4.
29 $gmt_time = gmdate( 'Y-m-d H:i:s', strtotime( 'now' ) );
30
31 if ( ( isset( $_REQUEST['allow_past'] ) ) || ( wpbc_is_new_booking_page() && ( isset( $_GET['booking_hash'] ) ) ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing
32 // Get time in past. //FixIn: 10.10.3.2.
33 $gmt_time = gmdate( 'Y-m-d H:i:s', strtotime( '-' . intval( wpbc_get_max_visible_days_in_calendar() ) . ' days' ) ); // - 365 days or more
34 }
35
36 $script .= "_wpbc.set_other_param( 'time_gmt_arr', [" . wpbc_datetime_localized__no_wp_timezone( $gmt_time, 'Y,m,d,H,i' ) . '] ); ';
37 $script .= "_wpbc.set_other_param( 'time_local_arr', [" . wpbc_datetime_localized__use_wp_timezone( $gmt_time, 'Y,m,d,H,i' ) . '] ); ';
38
39 $unavailable_time_from_today = get_bk_option( 'booking_unavailable_days_num_from_today' );
40
41 if ( ! empty( $unavailable_time_from_today ) ) {
42 if ( 'm' === substr( $unavailable_time_from_today, - 1 ) ) {
43
44 // Get time ONLY, if it is not in past. //FixIn: 10.10.3.2.
45 if ( ( ! isset( $_REQUEST['allow_past'] ) ) && ( ! ( wpbc_is_new_booking_page() && ( isset( $_GET['booking_hash'] ) ) ) ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing
46 $gmt_time = gmdate( 'Y-m-d H:i:s', strtotime( '+' . ( intval( $unavailable_time_from_today ) - 1 ) . ' minutes' ) );
47 }
48
49 // Local timezone unavailable time. // FixIn: 10.9.6.3.
50 $local_unavailable_datetime_ymdhis = wpbc_datetime_localized__use_wp_timezone( $gmt_time, 'Y-m-d H:i:s' ); // Local unavailable.
51 // Local timezone Now time.
52 $local_now_datetime_ymdhis = wpbc_datetime_localized__use_wp_timezone( strtotime( 'now' ), 'Y-m-d H:i:s' ); // Local Now.
53 // Local timezone Today midnight time.
54 $local_now_datetime_ymd000 = wpbc_datetime_localized__use_wp_timezone( strtotime( 'now' ), 'Y-m-d 00:00:00' ); // Local Midnight.
55
56 // Check time from local MIDNIGHT to Unavailable.
57 $days_number_shift = intval( ( strtotime( $local_unavailable_datetime_ymdhis ) - strtotime( $local_now_datetime_ymd000 ) ) / 86400 );
58 $unavailable_time_from_today = $days_number_shift;
59 // $unavailable_time_from_today = '0'; // FixIn: 10.9.2.6.
60 }
61 } else {
62 $unavailable_time_from_today = '0';
63 }
64
65 $today_local = wpbc_datetime_localized__use_wp_timezone( $gmt_time, 'Y,m,d,H,i' );
66
67 $script .= "_wpbc.set_other_param( 'today_arr', [" . $today_local . "] ); ";
68
69 $script .= "_wpbc.set_other_param( 'url_plugin', '" . esc_url( plugins_url( '', WPBC_FILE ) ) . "' ); ";
70
71 $get_booking_hash = ( ( isset( $_GET['booking_hash'] ) ) ? sanitize_text_field( wp_unslash( $_GET['booking_hash'] ) ) : '' ); /* phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing */ /* FixIn: sanitize_unslash */
72
73 $script .= "_wpbc.set_other_param( 'this_page_booking_hash', '" . esc_js( $get_booking_hash ) . "' ); ";
74
75
76 $script .= "_wpbc.set_other_param( 'calendars__on_this_page', [] ); ";
77
78 $script .= "_wpbc.set_other_param( 'calendars__first_day', '" . intval( get_bk_option( 'booking_start_day_weeek' ) ) . "' ); "; //."\n";
79 $script .= "_wpbc.set_other_param( 'calendars__max_monthes_in_calendar', '" . esc_js( get_bk_option( 'booking_max_monthes_in_calendar' ) ) . "' ); ";
80 // FixIn: 10.8.1.4.
81 $script .= "_wpbc.set_other_param( 'availability__unavailable_from_today', '" . esc_js( $unavailable_time_from_today ) . "' ); "; //Default: 0 ' Old JS: block_some_dates_from_today' _wpbc.get_other_param( 'availability__unavailable_from_today' )
82 if ( class_exists( 'wpdev_bk_biz_m' ) ) {
83 $script .= "_wpbc.set_other_param( 'availability__available_from_today', '" . esc_js( get_bk_option( 'booking_available_days_num_from_today' ) ) . "' ); "; //Default '' - all days. Old JS: 'wpbc_available_days_num_from_today'
84 }
85 $script .= "_wpbc.set_other_param( 'availability__week_days_unavailable', ["
86 . ( ( get_bk_option( 'booking_unavailable_day0') == 'On' ) ? '0,' : '' )
87 . ( ( get_bk_option( 'booking_unavailable_day1') == 'On' ) ? '1,' : '' )
88 . ( ( get_bk_option( 'booking_unavailable_day2') == 'On' ) ? '2,' : '' )
89 . ( ( get_bk_option( 'booking_unavailable_day3') == 'On' ) ? '3,' : '' )
90 . ( ( get_bk_option( 'booking_unavailable_day4') == 'On' ) ? '4,' : '' )
91 . ( ( get_bk_option( 'booking_unavailable_day5') == 'On' ) ? '5,' : '' )
92 . ( ( get_bk_option( 'booking_unavailable_day6') == 'On' ) ? '6,' : '' )
93 . "999] ); "; // 999 - blank day, which will not impact to the checking of the week days. Required for correct creation of this array.
94 // General days selection.
95 $days_selection_arr = wpbc__calendar__js_params__get_days_selection_arr();
96
97 $script .= "_wpbc.set_other_param( 'calendars__days_select_mode', '" . $days_selection_arr['days_select_mode'] . "' ); ";
98 $script .= "_wpbc.set_other_param( 'calendars__fixed__days_num', " . $days_selection_arr['fixed__days_num'] . " ); ";
99 $script .= "_wpbc.set_other_param( 'calendars__fixed__week_days__start', [" . $days_selection_arr['fixed__week_days__start'] . "] ); ";
100 $script .= "_wpbc.set_other_param( 'calendars__dynamic__days_min', " . $days_selection_arr['dynamic__days_min'] . " ); ";
101 $script .= "_wpbc.set_other_param( 'calendars__dynamic__days_max', " . $days_selection_arr['dynamic__days_max'] . " ); ";
102 $script .= "_wpbc.set_other_param( 'calendars__dynamic__days_specific', [" . $days_selection_arr['dynamic__days_specific'] . "] ); ";
103 $script .= "_wpbc.set_other_param( 'calendars__dynamic__week_days__start', [" . $days_selection_arr['dynamic__week_days__start'] . "] ); ";
104
105 // FixIn: 10.3.0.9.
106 if ( false !== strpos( get_bk_option( 'booking_skin' ), 'light__24_8' ) ) {
107 $script .= "_wpbc.set_other_param( 'calendars__days_selection__middle_days_opacity', '0.5' ); ";
108 } else {
109 $script .= "_wpbc.set_other_param( 'calendars__days_selection__middle_days_opacity', '0.75' ); ";
110 }
111
112
113 // Defined in BS.
114 $script .= "_wpbc.set_other_param( 'is_enabled_booking_recurrent_time', " . ( ( get_bk_option( 'booking_recurrent_time' ) !== 'On' ) ? 'false' : 'true' ) . " ); ";
115 $script .= "_wpbc.set_other_param( 'is_allow_several_months_on_mobile', " . ( ( get_bk_option( 'booking_calendar_allow_several_months_on_mobile' ) !== 'On' ) ? 'false' : 'true' ) . " ); ";
116 $script .= "_wpbc.set_other_param( 'is_enabled_change_over', " . (
117 (
118 ( function_exists( 'wpbc_is_booking_used_check_in_out_time' ) )
119 && ( wpbc_is_booking_used_check_in_out_time() )
120 ) ? 'true' : 'false'
121 ) . " ); ";
122 if ( class_exists( 'wpdev_bk_biz_l' ) ) {
123 $script .= "_wpbc.set_other_param( 'is_enabled_booking_search_results_days_select', '" . esc_js( get_bk_option( 'booking_search_results_days_select' ) ) . "' ); ";
124 }
125
126 $script .= "_wpbc.set_other_param( 'update', '" . esc_attr( WP_BK_VERSION_NUM ) . "' ); ";
127 $script .= "_wpbc.set_other_param( 'version', '" . wpbc_get_version_type__and_mu() . "' ); ";
128
129 // Warning Messages.
130 $script .= "_wpbc.set_message( 'message_dates_times_unavailable', " . wp_json_encode( __( 'These dates and times in this calendar are already booked or unavailable.', 'booking' ) ) . " ); ";
131 $script .= "_wpbc.set_message( 'message_choose_alternative_dates', " . wp_json_encode( __( 'Please choose alternative date(s), times, or adjust the number of slots booked.', 'booking' ) ) . " ); ";
132 $script .= "_wpbc.set_message( 'message_cannot_save_in_one_resource', " . wp_json_encode( __( 'It is not possible to store this sequence of the dates into the one same resource.', 'booking' ) ) . " ); ";
133 $script .= "_wpbc.set_message( 'message_check_required', " . wp_json_encode( __( 'This field is required', 'booking' ) ) . " ); ";
134 $script .= "_wpbc.set_message( 'message_check_required_for_check_box', " . wp_json_encode( __( 'This checkbox must be checked', 'booking' ) ) . " ); ";
135 $script .= "_wpbc.set_message( 'message_check_required_for_radio_box', " . wp_json_encode( __( 'At least one option must be selected', 'booking' ) ) . " ); ";
136 $script .= "_wpbc.set_message( 'message_check_email', " . wp_json_encode( __( 'Incorrect email address', 'booking' ) ) . " ); ";
137 $script .= "_wpbc.set_message( 'message_check_same_email', " . wp_json_encode( __( 'Your emails do not match', 'booking' ) ) . " ); ";
138 $script .= "_wpbc.set_message( 'message_check_no_selected_dates', " . wp_json_encode( __( 'Please, select booking date(s) at Calendar.', 'booking' ) ) . " ); ";
139 $script .= "_wpbc.set_message( 'message_processing', " . wp_json_encode( __( 'Processing', 'booking' ) ) . " ); ";
140 $script .= "_wpbc.set_message( 'message_deleting', " . wp_json_encode( __( 'Deleting', 'booking' ) ) . " ); ";
141 $script .= "_wpbc.set_message( 'message_updating', " . wp_json_encode( __( 'Updating', 'booking' ) ) . " ); ";
142 $script .= "_wpbc.set_message( 'message_saving', " . wp_json_encode( __( 'Saving', 'booking' ) ) . " ); ";
143 $script .= "_wpbc.set_message( 'message_error_check_in_out_time', " . wp_json_encode( __( 'Error! Please reset your check-in/check-out dates above.', 'booking' ) ) . " ); ";
144 $script .= "_wpbc.set_message( 'message_error_start_time', " . wp_json_encode( __( 'Start Time is invalid. The date or time may be booked, or already in the past! Please choose another date or time.', 'booking' ) ) . " ); ";
145 $script .= "_wpbc.set_message( 'message_error_end_time', " . wp_json_encode( __( 'End Time is invalid. The date or time may be booked, or already in the past. The End Time may also be earlier that the start time, if only 1 day was selected! Please choose another date or time.', 'booking' ) ) . " ); ";
146 $script .= "_wpbc.set_message( 'message_error_range_time', " . wp_json_encode( __( 'The time(s) may be booked, or already in the past!', 'booking' ) ) . " ); ";
147 $script .= "_wpbc.set_message( 'message_error_duration_time', " . wp_json_encode( __( 'The time(s) may be booked, or already in the past!', 'booking' ) ) . " ); ";
148
149 $script .= "console.log( '== WPBC VARS " . esc_attr( WP_BK_VERSION_NUM ) . ' [' . wpbc_get_version_type__and_mu() . "] LOADED ==' );";
150 return $script;
151 }
152
153
154 /**
155 * Define General inline JavaScript variables for the Booking Calendar
156 * This function run after ENQUEUE of WPBC JavaScript files
157 *
158 * @param string $where_to_load - 'both'.
159 *
160 * @return void
161 */
162 function wpbc_localize_js_vars( $where_to_load = 'both' ) {
163
164 $script_before = 'var wpbc_url_ajax =' . wp_json_encode( admin_url( 'admin-ajax.php' ) ) . ';';
165 wp_add_inline_script( 'wpbc_all', $script_before, 'before' );
166
167 $script = wpbc_get_localized_js_vars();
168
169 // Load this _wpbc only after loading of all scripts // FixIn: 10.1.3.4.
170 $script = ' function wpbc_init__head(){ ' . $script . ' } ';
171 $script .= "( function() { if ( document.readyState === 'loading' ){ document.addEventListener( 'DOMContentLoaded', wpbc_init__head ); } else { wpbc_init__head(); } }() );";
172
173 wp_add_inline_script( 'wpbc_all', $script );
174
175 /**
176 * Help info. Order of JS events:
177 *
178 * window.addEventListener("load", (event) => { log.textContent += "load\n"; }); -> window.onload (which is implemented even in old browsers), which fires when the entire page loads (images, styles, etc.)
179 * document.addEventListener("readystatechange", (event) => { log.textContent += `readystate: ${document.readyState}\n`; });
180 * document.addEventListener("DOMContentLoaded", (event) => { log.textContent += "DOMContentLoaded\n"; }); -> newish event which fires when the document's DOM is loaded (which may be some time before the images, etc. are loaded);
181 * ::
182 * DOMContentLoaded
183 * readystate: complete
184 * load
185 */
186 }
187 add_action( 'wpbc_enqueue_js_files', 'wpbc_localize_js_vars', 51 ); // Need to set here 51, because some JS has 50 priority, for example at WP Booking Calendar > Availability > Days Availability page -> This hook fired after ENQUEUE of WPBC JS - wp_enqueue_script
188
189