PluginProbe
Booking Calendar / 11.8.2
Booking Calendar v11.8.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
← All changes | core/wpbc_functions_dates.php +83 -2 10.1111.8.2 View file →
@@ -1,8 +1,25 @@
1 1 <?php
2 2
3 3 if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
4 4
5 +
6 +/**
7 + * Convert a CSV of numeric date parts to an array of integers.
8 + * Example: '2025,09,05,08,55' -> [2025, 9, 5, 8, 55]
9 + *
10 + * @param string $csv E.g. '2025,09,05,08,55'.
11 + * @param string $separator Defaults to ','.
12 + *
13 + * @return int[] Numeric parts as integers.
14 + */
15 +function wpbc_csv_numbers_to_int_array( $csv, $separator = ',' ) {
16 +
17 + $parts = array_map( 'trim', explode( $separator, (string) $csv ) );
18 +
19 + return array_map( 'intval', $parts );
20 +}
21 +
5 22 // ---------------------------------------------------------------------------------------------------------------------
6 23 // Localize dates
7 24 // ---------------------------------------------------------------------------------------------------------------------
8 25
@@ -16,9 +33,9 @@
16 33 *
17 34 * @return string
18 35 */
19 36 function wpbc_datetime_localized( $date_str_ymdhis, $format = '', $is_add_timezone_offset = false ) {
20 -
37 + // FixIn: 10.15.5.3.
21 38 if ( empty( $format ) ) {
22 39 $format = sprintf( '%s %s', get_option( 'booking_date_format' ), get_option( 'booking_time_format' ) );
23 40 }
24 41 if ( empty( $format ) ) {
@@ -34,10 +51,23 @@
34 51 if ( is_string( $date_str_ymdhis ) ) {
35 52 $date_str_ymdhis = strtotime( $date_str_ymdhis );
36 53 }
37 54
55 + if ( false === $date_str_ymdhis ) {
56 + if ( 'UTC' !== $server_zone ) {
57 + // phpcs:ignore WordPress.DateTime.RestrictedFunctions.timezone_change_date_default_timezone_set
58 + @date_default_timezone_set( $server_zone );
59 + }
60 + return '';
61 + }
62 +
63 + $date_str_ymdhis = (int) $date_str_ymdhis;
64 +
38 65 if ( $is_add_timezone_offset ) {
39 - $date_str_ymdhis += (int) ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS );
66 + $gmt_offset = get_option( 'gmt_offset', 0 );
67 + $gmt_offset = is_numeric( $gmt_offset ) ? (float) $gmt_offset : 0.0;
68 +
69 + $date_str_ymdhis += (int) round( $gmt_offset * HOUR_IN_SECONDS );
40 70 }
41 71
42 72 $local_date = date_i18n( $format, $date_str_ymdhis );
43 73
@@ -191,8 +221,13 @@
191 221 }
192 222
193 223 $dates_array_in_sql_format = explode( ',', $dates_str_in_sql_format );
194 224
225 + $is_no_date = apply_filters( 'wpbc_maybe_no_booking_date', false, $dates_array_in_sql_format );
226 + if ( $is_no_date ) {
227 + return '---';
228 + }
229 +
195 230 $result_dates_arr = array();
196 231
197 232 foreach ( $dates_array_in_sql_format as $date_sql ) {
198 233
@@ -458,8 +493,54 @@
458 493 }
459 494
460 495
461 496 return $is_next_date;
497 + }
498 +
499 +
500 + /**
501 + * Check if $date_sql1 < $date_sql2
502 + *
503 + * @param string $date_sql1 : '2015-02-29' | '2015-02-29 00:00:00'
504 + * @param string $date_sql2 : '2015-02-30' | '2015-02-30 00:00:00'
505 + *
506 + * @return boolean : true | false
507 + */
508 + function wpbc_is_date_less_than( $date_sql1, $date_sql2 ) {
509 +
510 + if ( empty( $date_sql2 ) ) {
511 + return false;
512 + }
513 +
514 + $date_sql1 = wpbc_date_sql__ymd_his__to__ymd_000( $date_sql1 );
515 + $date_sql2 = wpbc_date_sql__ymd_his__to__ymd_000( $date_sql2 );
516 +
517 + $is_date_less = ( strtotime( $date_sql1 ) < strtotime( $date_sql2 ) );
518 +
519 + return $is_date_less;
520 + }
521 +
522 +
523 + /**
524 + * Check if $date_sql1 > $date_sql2
525 + *
526 + * @param string $date_sql1 : '2015-02-29' | '2015-02-29 00:00:00'
527 + * @param string $date_sql2 : '2015-02-30' | '2015-02-30 00:00:00'
528 + *
529 + * @return boolean : true | false
530 + */
531 + function wpbc_is_date_higher_than( $date_sql1, $date_sql2 ) {
532 +
533 + if ( empty( $date_sql2 ) ) {
534 + return false;
535 + }
536 +
537 + $date_sql1 = wpbc_date_sql__ymd_his__to__ymd_000( $date_sql1 );
538 + $date_sql2 = wpbc_date_sql__ymd_his__to__ymd_000( $date_sql2 );
539 +
540 + $is_date_less = ( strtotime( $date_sql1 ) > strtotime( $date_sql2 ) );
541 +
542 + return $is_date_less;
462 543 }
463 544
464 545
465 546 /**