PluginProbe
Booking Calendar / 11.9
Booking Calendar v11.9
11.9 11.8.4 11.8.3 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 All 205 releases
← All changes | includes/_capacity/calendar_load.php +47 -18 11.5 → 11.9 View file →
@@ -44,13 +44,15 @@
44 44 }
45 45 $start_script_code .= " _wpbc.calendar__set_param_value( " . $resource_id . " , 'calendar_scroll_to' , " . $calendar_scroll_to . " ); ";
46 46
47 47 // Set Start / End Date in Calendar (JSON encode => safe quotes).
48 - $params['calendar_dates_start'] = ( empty( $params['calendar_dates_start'] ) ) ? '' : (string) $params['calendar_dates_start'];
49 - $params['calendar_dates_end'] = ( empty( $params['calendar_dates_end'] ) ) ? '' : (string) $params['calendar_dates_end'];
48 + $params['calendar_dates_start'] = ( empty( $params['calendar_dates_start'] ) ) ? '' : (string) $params['calendar_dates_start'];
49 + $params['calendar_dates_end'] = ( empty( $params['calendar_dates_end'] ) ) ? '' : (string) $params['calendar_dates_end'];
50 + $params['classic_booking_context_token'] = empty( $params['classic_booking_context_token'] ) ? '' : (string) $params['classic_booking_context_token'];
50 51
51 52 $start_script_code .= " _wpbc.calendar__set_param_value( " . $resource_id . " , 'calendar_dates_start' , " . wp_json_encode( $params['calendar_dates_start'] ) . " ); ";
52 - $start_script_code .= " _wpbc.calendar__set_param_value( " . $resource_id . " , 'calendar_dates_end' , " . wp_json_encode( $params['calendar_dates_end'] ) . " ); ";
53 + $start_script_code .= " _wpbc.calendar__set_param_value( " . $resource_id . " , 'calendar_dates_end' , " . wp_json_encode( $params['calendar_dates_end'] ) . " ); ";
54 + $start_script_code .= " _wpbc.booking__set_param_value( " . $resource_id . " , 'classic_booking_context_token' , " . wp_json_encode( $params['classic_booking_context_token'] ) . " ); ";
53 55
54 56 if ( ( '' !== $params['calendar_dates_start'] ) || ( '' !== $params['calendar_dates_end'] ) ) {
55 57 $start_script_code .= wpbc_get_localized_js__time_local( $params['calendar_dates_start'] );
56 58 }
@@ -193,9 +195,10 @@
193 195 'start_month_calendar' => false,
194 196 'shortcode_options' => '',
195 197 'custom_form' => 'standard',
196 198 'calendar_dates_start' => '',
197 - 'calendar_dates_end' => '',
199 + 'calendar_dates_end' => '',
200 + 'classic_booking_context_token' => '',
198 201 'skip_general_availability' => 0,
199 202 'calendar_request_overrides' => array(),
200 203 );
201 204 $params = wp_parse_args( $params, $defaults );
@@ -253,20 +256,27 @@
253 256 'request_uri' => $server_request_uri,
254 257 'custom_form' => (string) $params['custom_form'],
255 258 'aggregate_resource_id_str' => implode( ',', (array) $params['aggregate_resource_id_arr'] ),
256 259 'aggregate_type' => (string) $aggregate_type,
257 - 'skip_general_availability' => (int) $params['skip_general_availability'],
260 + 'skip_general_availability' => (int) $params['skip_general_availability'],
261 + 'classic_booking_context_token' => (string) $params['classic_booking_context_token'],
258 262 );
259 263
260 264 if ( ! empty( $params['calendar_request_overrides'] ) && is_array( $params['calendar_request_overrides'] ) ) {
261 265 foreach ( $params['calendar_request_overrides'] as $override_key => $override_value ) {
262 - if (
263 - 'allow_past' === $override_key
264 - && function_exists( 'wpbc_is_11_5_features_enabled' )
265 - && wpbc_is_11_5_features_enabled()
266 + if ( 'allow_past' === $override_key ) {
267 + $params_for_request['allow_past'] = ! empty( $override_value ) ? 1 : 0;
268 + } elseif (
269 + 0 === strpos( (string) $override_key, 'wpbc_settings_calendar_preview' )
270 + || in_array(
271 + (string) $override_key,
272 + array(
273 + 'wpbc_setup_wizard_date_selection_preview',
274 + 'wpbc_setup_wizard_date_selection_preview_nonce',
275 + ),
276 + true
277 + )
266 278 ) {
267 - $params_for_request['allow_past'] = ! empty( $override_value ) ? 1 : 0;
268 - } elseif ( 0 === strpos( (string) $override_key, 'wpbc_settings_calendar_preview' ) ) {
269 279 $params_for_request[ $override_key ] = $override_value;
270 280 }
271 281 }
272 282 }
@@ -364,8 +374,9 @@
364 374 'booking_hash' => array( 'validate' => 's', 'default' => '' ),
365 375 'request_uri' => array( 'validate' => 's', 'default' => '' ),
366 376 'custom_form' => array( 'validate' => 's', 'default' => 'standard' ),
367 377 'allow_past' => array( 'validate' => 'd', 'default' => 0 ),
378 + 'classic_booking_context_token' => array( 'validate' => 'strong', 'default' => '' ),
368 379 'aggregate_resource_id_str' => array( 'validate' => 'digit_or_csd', 'default' => '' ), // Comma separated string of resource ID, which was used in 'aggregate' parameter.
369 380 'aggregate_type' => array( 'validate' => 's', 'default' => 'all' ), // 'all' | 'bookings_only' // FixIn: 9.8.15.10.
370 381 'dates_to_check' => array( 'validate' => 'array', 'default' => '' ), // 'all' | 'bookings_only' // FixIn: 9.8.15.10.
371 382 'skip_general_availability' => array( 'validate' => 'd', 'default' => 0 ),
@@ -400,19 +411,37 @@
400 411 'wpbc_settings_calendar_preview_cost_word' => array( 'validate' => 's', 'default' => '' ),
401 412 'wpbc_settings_calendar_preview_show_cost_cell' => array( 'validate' => array( 'On', 'Off' ), 'default' => 'Off' ),
402 413 'wpbc_settings_calendar_preview_cost_currency' => array( 'validate' => 's', 'default' => '' ),
403 414 'wpbc_settings_calendar_preview_show_booked_details' => array( 'validate' => array( 'On', 'Off' ), 'default' => 'Off' ),
404 - 'wpbc_settings_calendar_preview_booked_details' => array( 'validate' => 's', 'default' => '' ),
405 - )
415 + 'wpbc_settings_calendar_preview_booked_details' => array( 'validate' => 's', 'default' => '' ),
416 + 'wpbc_setup_wizard_date_selection_preview' => array( 'validate' => 'd', 'default' => 0 ),
417 + 'wpbc_setup_wizard_date_selection_preview_nonce' => array( 'validate' => 'strong', 'default' => '' ),
418 + )
406 419 )
407 420 );
408 421 $request_prefix = 'calendar_request_params';
409 422 $request_params = $user_request->get_sanitized__in_request__value_or_default( $request_prefix ); // NOT Direct: $_REQUEST['search_params']['resource_id']
410 - $can_allow_past = (
411 - ! empty( $request_params['allow_past'] )
412 - && function_exists( 'wpbc_is_11_5_features_enabled' )
413 - && wpbc_is_11_5_features_enabled()
414 - );
423 + if ( ! empty( $request_params['classic_booking_context_token'] ) && function_exists( 'wpbc_classic_booking_context_validate_submission' ) ) {
424 + $classic_context = wpbc_classic_booking_context_validate_submission(
425 + $request_params['classic_booking_context_token'],
426 + $request_params['resource_id'],
427 + $request_params['dates_to_check'],
428 + $request_params['custom_form'],
429 + $request_params['aggregate_resource_id_str']
430 + );
431 + if ( ! is_wp_error( $classic_context ) ) {
432 + $request_params['allow_past'] = ! empty( $classic_context['allow_past'] ) ? 1 : 0;
433 + // Use the signed canonical set so equivalent wire shapes cannot change availability input.
434 + $request_params['aggregate_resource_id_str'] = implode( ',', $classic_context['aggregate_resource_ids'] );
435 + $request_params['dates_to_check'] = array(
436 + $classic_context['calendar_dates_start'],
437 + $classic_context['calendar_dates_end'],
438 + );
439 + } else {
440 + $request_params['allow_past'] = 0;
441 + }
442 + }
443 + $can_allow_past = ! empty( $request_params['allow_past'] );
415 444 $request_params['allow_past'] = $can_allow_past ? 1 : 0;
416 445
417 446 if ( ! empty( $request_params['skip_general_availability'] ) ) {
418 447 $can_skip_general_availability = (