PluginProbe
Booking Manager – Sync WP Booking Calendar – Import Events, Export Bookings to ICS Calendar / 2.1.21
Booking Manager – Sync WP Booking Calendar – Import Events, Export Bookings to ICS Calendar v2.1.21
2.1.22 2.1.21 2.1.20 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 trunk 1.1 2.0 2.0.1 2.0.10.2 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.17 2.0.18 2.0.2 2.0.20 2.0.21 All 56 releases
← All changes | core/wpbm-functions.php +409 -555 2.0.1 → 2.1.21 View file →
@@ -5,9 +5,9 @@
5 5 * @subpackage Support Functions
6 6 * @category Functions
7 7 *
8 8 * @author wpdevelop
9 - * @link http://oplugins.com/
9 + * @link https://oplugins.com/
10 10 * @email [email protected]
11 11 *
12 12 * @modified 29.09.2015
13 13 */
@@ -61,9 +61,9 @@
61 61 function wpbm_up_link() {
62 62 if ( ! wpbm_is_this_demo() )
63 63 $v = wpbm_get_ver_sufix();
64 64 else $v = '';
65 - return 'http://oplugins.com/plugins/booking-manager/' . ( ( empty($v) ) ? '' : 'upgrade-' . $v . '/' ) ;
65 + return 'https://oplugins.com/plugins/booking-manager/' . ( ( empty($v) ) ? '' : 'upgrade-' . $v . '/' ) ;
66 66 }
67 67
68 68 /** Check if this demo website
69 69 *
@@ -71,10 +71,10 @@
71 71 */
72 72 function wpbm_is_this_demo() {
73 73 //return ! true; //TODO: comment it. 2016-09-27 // Replaced!
74 74 if (
75 - ( ( isset( $_SERVER['SCRIPT_FILENAME'] ) ) && ( strpos( $_SERVER['SCRIPT_FILENAME'], 'oplugins.com' ) !== false ) )
76 - || ( ( isset( $_SERVER['HTTP_HOST'] ) ) && ( strpos( $_SERVER['HTTP_HOST'], 'oplugins.com' ) !== false ) )
75 + ( ( isset( $_SERVER['SCRIPT_FILENAME'] ) ) && ( strpos( sanitize_text_field( wp_unslash($_SERVER['SCRIPT_FILENAME']) ), 'oplugins.com' ) !== false ) )
76 + || ( ( isset( $_SERVER['HTTP_HOST'] ) ) && ( strpos( sanitize_text_field( wp_unslash($_SERVER['HTTP_HOST'])), 'oplugins.com' ) !== false ) )
77 77 )
78 78 return true;
79 79 else
80 80 return false;
@@ -89,191 +89,9 @@
89 89 /** Show System Info (status) at item > Settings General page
90 90 * Link: http://server.com/wp-admin/admin.php?page=wpbm-settings&system_info=show#wpbm_general_settings_system_info_metabox
91 91 */
92 92 function wpbm_system_info() {
93 -
94 - if ( wpbm_is_this_demo() ) return;
95 -
96 - if ( current_user_can( 'activate_plugins' ) ) { // Only for Administrator or Super admin. More here: https://codex.wordpress.org/Roles_and_Capabilities
97 -
98 - global $wpdb, $wp_version;
99 -
100 - $all_plugins = get_plugins();
101 - $active_plugins = get_option( 'active_plugins' );
102 -
103 - $mysql_info = $wpdb->get_results( "SHOW VARIABLES LIKE 'sql_mode'" );
104 - if ( is_array( $mysql_info ) ) $sql_mode = $mysql_info[0]->Value;
105 - if ( empty( $sql_mode ) ) $sql_mode = 'Not set';
106 -
107 - $safe_mode = ( ini_get( 'safe_mode' ) ) ? 'On' : 'Off';
108 - $allow_url_fopen = ( ini_get( 'allow_url_fopen' ) ) ? 'On' : 'Off';
109 - $upload_max_filesize = ( ini_get( 'upload_max_filesize' ) ) ? ini_get( 'upload_max_filesize' ) : 'N/A';
110 - $post_max_size = ( ini_get( 'post_max_size' ) ) ? ini_get( 'post_max_size' ) : 'N/A';
111 - $max_execution_time = ( ini_get( 'max_execution_time' ) ) ? ini_get( 'max_execution_time' ) : 'N/A';
112 - $memory_limit = ( ini_get( 'memory_limit' ) ) ? ini_get( 'memory_limit' ) : 'N/A';
113 - $memory_usage = ( function_exists( 'memory_get_usage' ) ) ? round( memory_get_usage() / 1024 / 1024, 2 ) . ' Mb' : 'N/A';
114 - $exif_read_data = ( is_callable( 'exif_read_data' ) ) ? 'Yes' . " ( V" . substr( phpversion( 'exif' ), 0, 4 ) . ")" : 'No';
115 - $iptcparse = ( is_callable( 'iptcparse' ) ) ? 'Yes' : 'No';
116 - $xml_parser_create = ( is_callable( 'xml_parser_create' ) ) ? 'Yes' : 'No';
117 - $theme = ( function_exists( 'wp_get_theme' ) ) ? wp_get_theme() : get_theme( get_current_theme() );
118 -
119 - if ( function_exists( 'is_multisite' ) ) {
120 - if ( is_multisite() ) $multisite = 'Yes';
121 - else $multisite = 'No';
122 - } else { $multisite = 'N/A';
123 - }
124 -
125 - $system_info = array(
126 - 'system_info' => '',
127 - 'php_info' => '',
128 - 'active_plugins' => '',
129 - 'inactive_plugins' => ''
130 - );
131 -
132 - $ver_small_name = get_wpbm_version();
133 - if ( class_exists( 'wpbm_multiuser' ) ) $ver_small_name = 'multiuser';
134 -
135 - $system_info['system_info'] = array(
136 - 'Plugin Update' => ( defined( 'WPBM_VERSION' ) ) ? WPBM_VERSION : 'N/A',
137 - 'Plugin Version' => ucwords( $ver_small_name ),
138 - 'Plugin Update Date' => date( "Y-m-d", filemtime( WPBM_FILE ) ),
139 -
140 - 'WP Version' => $wp_version,
141 - 'WP DEBUG' => ( ( defined('WP_DEBUG') ) && ( WP_DEBUG ) ) ? 'On' : 'Off',
142 - 'WP DB Version' => get_option( 'db_version' ),
143 - 'Operating System' => PHP_OS,
144 - 'Server' => $_SERVER["SERVER_SOFTWARE"],
145 - 'PHP Version' => PHP_VERSION,
146 - 'PHP Safe Mode' => $safe_mode,
147 - 'MYSQL Version' => $wpdb->get_var( "SELECT VERSION() AS version" ),
148 - 'SQL Mode' => $sql_mode,
149 - 'Memory usage' => $memory_usage,
150 - 'Site URL' => get_option( 'siteurl' ),
151 - 'Home URL' => home_url(),
152 - 'SERVER[HTTP_HOST]' => $_SERVER['HTTP_HOST'],
153 - 'SERVER[SERVER_NAME]' => $_SERVER['SERVER_NAME'],
154 - 'Multisite' => $multisite,
155 - 'Active Theme' => $theme['Name'] . ' ' . $theme['Version']
156 - );
157 -
158 - $system_info['php_info'] = array(
159 - 'PHP Version' => PHP_VERSION,
160 - 'PHP Safe Mode' => $safe_mode,
161 - 'PHP Memory Limit' => '<strong>' . $memory_limit . '</strong>',
162 - 'PHP Max Script Execute Time' => '<strong>' . $max_execution_time . '</strong>',
163 -
164 - 'PHP Max Post Size' => '<strong>' . $post_max_size . '</strong>',
165 - 'PHP MAX Input Vars' => '<strong>' . ( ( ini_get( 'max_input_vars' ) ) ? ini_get( 'max_input_vars' ) : 'N/A' ) . '</strong>', //How many input variables may be accepted (limit is applied to $_GET, $_POST and $_COOKIE superglobal separately).
166 -
167 - 'PHP Max Upload Size' => $upload_max_filesize,
168 - 'PHP Allow URL fopen' => $allow_url_fopen,
169 - 'PHP Exif support' => $exif_read_data,
170 - 'PHP IPTC support' => $iptcparse,
171 - 'PHP XML support' => $xml_parser_create
172 - );
173 -
174 - $system_info['php_info']['PHP cURL'] = ( function_exists('curl_init') ) ? 'On' : 'Off';
175 - $system_info['php_info']['Max Nesting Level'] = ( ( ini_get( 'max_input_nesting_level' ) ) ? ini_get( 'max_input_nesting_level' ) : 'N/A' );
176 - $system_info['php_info']['Max Time 4 script'] = ( ( ini_get( 'max_input_time' ) ) ? ini_get( 'max_input_time' ) : 'N/A' ); //Maximum amount of time each script may spend parsing request data
177 - $system_info['php_info']['Log'] = ( ( ini_get( 'error_log' ) ) ? ini_get( 'error_log' ) : 'N/A' );
178 -
179 - if ( ini_get( "suhosin.get.max_value_length" ) ) {
180 -
181 - $system_info['suhosin_info'] = array();
182 - $system_info['suhosin_info']['POST max_array_index_length'] = ( ( ini_get( 'suhosin.post.max_array_index_length' ) ) ? ini_get( 'suhosin.post.max_array_index_length' ) : 'N/A' );
183 - $system_info['suhosin_info']['REQUEST max_array_index_length'] = ( ( ini_get( 'suhosin.request.max_array_index_length' ) ) ? ini_get( 'suhosin.request.max_array_index_length' ) : 'N/A' );
184 -
185 - $system_info['suhosin_info']['POST max_totalname_length'] = ( ( ini_get( 'suhosin.post.max_totalname_length' ) ) ? ini_get( 'suhosin.post.max_totalname_length' ) : 'N/A' );
186 - $system_info['suhosin_info']['REQUEST max_totalname_length'] = ( ( ini_get( 'suhosin.request.max_totalname_length' ) ) ? ini_get( 'suhosin.request.max_totalname_length' ) : 'N/A' );
187 -
188 - $system_info['suhosin_info']['POST max_vars'] = ( ( ini_get( 'suhosin.post.max_vars' ) ) ? ini_get( 'suhosin.post.max_vars' ) : 'N/A' );
189 - $system_info['suhosin_info']['REQUEST max_vars'] = ( ( ini_get( 'suhosin.request.max_vars' ) ) ? ini_get( 'suhosin.request.max_vars' ) : 'N/A' );
190 -
191 - $system_info['suhosin_info']['POST max_value_length'] = ( ( ini_get( 'suhosin.post.max_value_length' ) ) ? ini_get( 'suhosin.post.max_value_length' ) : 'N/A' );
192 - $system_info['suhosin_info']['REQUEST max_value_length'] = ( ( ini_get( 'suhosin.request.max_value_length' ) ) ? ini_get( 'suhosin.request.max_value_length' ) : 'N/A' );
193 -
194 - $system_info['suhosin_info']['POST max_name_length'] = ( ( ini_get( 'suhosin.post.max_name_length' ) ) ? ini_get( 'suhosin.post.max_name_length' ) : 'N/A' );
195 - $system_info['suhosin_info']['REQUEST max_varname_length'] = ( ( ini_get( 'suhosin.request.max_varname_length' ) ) ? ini_get( 'suhosin.request.max_varname_length' ) : 'N/A' );
196 -
197 - $system_info['suhosin_info']['POST max_array_depth'] = ( ( ini_get( 'suhosin.post.max_array_depth' ) ) ? ini_get( 'suhosin.post.max_array_depth' ) : 'N/A' );
198 - $system_info['suhosin_info']['REQUEST max_array_depth'] = ( ( ini_get( 'suhosin.request.max_array_depth' ) ) ? ini_get( 'suhosin.request.max_array_depth' ) : 'N/A' );
199 - }
200 -
201 -
202 - if ( function_exists('gd_info') ) {
203 - $gd_info = gd_info();
204 - if ( isset( $gd_info['GD Version'] ) )
205 - $gd_info = $gd_info['GD Version'];
206 - else
207 - $gd_info = json_encode( $gd_info );
208 - } else {
209 - $gd_info = 'Off';
210 - }
211 - $system_info['php_info']['PHP GD'] = $gd_info;
212 -
213 - // More here https://docs.woocommerce.com/document/problems-with-large-amounts-of-data-not-saving-variations-rates-etc/
214 -
215 -
216 - foreach ( $all_plugins as $path => $plugin ) {
217 - if ( is_plugin_active( $path ) )
218 - $system_info['active_plugins'][$plugin['Name']] = $plugin['Version'];
219 - else
220 - $system_info['inactive_plugins'][$plugin['Name']] = $plugin['Version'];
221 - }
222 -
223 - // Showing
224 - foreach ( $system_info as $section_name => $section_values ) {
225 - ?>
226 - <span class="wpdevelop">
227 - <table class="table table-striped table-bordered">
228 - <thead><tr><th colspan="2" style="border-bottom: 1px solid #eeeeee;padding: 10px;"><?php echo strtoupper( $section_name ); ?></th></tr></thead>
229 - <tbody>
230 - <?php
231 - if ( !empty( $section_values ) ) {
232 - foreach ( $section_values as $key => $value ) {
233 - ?>
234 - <tr>
235 - <td scope="row" style="width:18em;padding:4px 8px;"><?php echo $key; ?></td>
236 - <td scope="row" style="padding:4px 8px;"><?php echo $value; ?></td>
237 - </tr>
238 - <?php
239 - }
240 - }
241 - ?>
242 - </tbody>
243 - </table>
244 - </span>
245 - <div class="clear"></div>
246 - <?php
247 - }
248 -?>
249 -<hr>
250 -<div style="color:#777;">
251 -<h4 style="font-size:1.1em;">Commonly required configuration vars in php.ini file:</h4>
252 -<h4>General section:</h4>
253 -<pre><code>memory_limit = 256M
254 -max_execution_time = 120
255 -post_max_size = 8M
256 -upload_max_filesize = 8M
257 -max_input_vars = 20480
258 -post_max_size = 64M</code></pre>
259 -<h4>Suhosin section (if installed):</h4>
260 -<pre><code>suhosin.post.max_array_index_length = 1024
261 -suhosin.post.max_totalname_length = 65535
262 -suhosin.post.max_vars = 2048
263 -suhosin.post.max_value_length = 1000000
264 -suhosin.post.max_name_length = 256
265 -suhosin.post.max_array_depth = 1000
266 -suhosin.request.max_array_index_length = 1024
267 -suhosin.request.max_totalname_length = 65535
268 -suhosin.request.max_vars = 2048
269 -suhosin.request.max_value_length = 1000000
270 -suhosin.request.max_varname_length = 256
271 -suhosin.request.max_array_depth = 1000</code></pre>
272 -</div>
273 -<?php
274 - // phpinfo();
275 - }
93 + echo '---';
276 94 }
277 95
278 96
279 97
@@ -296,9 +114,9 @@
296 114 function wpbm_is_wpbc_supported() {
297 115
298 116 // 7.2.1 - its start version of Booking Calendar which support integration with Booking Manager 2.0
299 117
300 - if ( version_compare( wpbm_get_wpbc_version(), '7.2.1') >= 0 ) {
118 + if ( version_compare( wpbm_get_wpbc_version(), '9.8') >= 0 ) {
301 119 return true;
302 120 } else {
303 121 return false;
304 122 }
@@ -431,9 +249,9 @@
431 249 '', // Unknown/unhandled entities
432 250 ' ' // Runs of spaces, post-handling
433 251 );
434 252
435 - $newstring = preg_replace( $plain_search_array, $get_plain_replace_array, strip_tags( $string ) );
253 + $newstring = preg_replace( $plain_search_array, $get_plain_replace_array, wp_strip_all_tags( $string ) );
436 254
437 255 return $newstring;
438 256 }
439 257 // </editor-fold>
@@ -462,8 +280,10 @@
462 280 $replace = wp_parse_args( $replace_array, $defaults );
463 281
464 282 foreach ( $replace as $replace_shortcode => $replace_value ) {
465 283
284 + $replace_value = esc_js( $replace_value ); // FixIn:
285 +
466 286 $subject = str_replace( array( '[' . $replace_shortcode . ']'
467 287 , '{' . $replace_shortcode . '}' )
468 288 , $replace_value
469 289 , $subject );
@@ -476,10 +296,50 @@
476 296
477 297 return $subject;
478 298 }
479 299
300 +
301 +/**
302 + * Sanitize the frontend listing template.
303 + *
304 + * The listing template is stored as an option and rendered by the public
305 + * [booking-manager-listing] shortcode, so script-capable markup must never be
306 + * persisted or returned to visitors.
307 + *
308 + * @param string $template Template HTML with Booking Manager placeholders.
309 + * @return string Safe template HTML.
310 + */
311 +function wpbm_sanitize_listing_template( $template ) {
312 +
313 + if ( ! is_string( $template ) ) {
314 + $template = '';
315 + }
316 +
317 + $allowed_html = wp_kses_allowed_html( 'post' );
318 +
319 + // Keep compatibility with templates that embed safe external content.
320 + $allowed_html['iframe'] = array(
321 + 'src' => true
322 + , 'style' => true
323 + , 'id' => true
324 + , 'class' => true
325 + , 'width' => true
326 + , 'height' => true
327 + , 'title' => true
328 + , 'loading' => true
329 + , 'allowfullscreen' => true
330 + );
331 +
332 + if ( isset( $allowed_html['a'] ) ) {
333 + $allowed_html['a']['target'] = true;
334 + $allowed_html['a']['rel'] = true;
335 + }
336 +
337 + return wp_kses( $template, $allowed_html );
338 +}
339 +
480 340 /** Simple hack to make array strings lowercase
481 - *
341 + *
482 342 * @param type $array
483 343 * @return type
484 344 */
485 345 function wpbm_arraytolower( $array ){
@@ -506,22 +366,22 @@
506 366 }
507 367 }
508 368
509 369 /** Check if this valid timestamp
510 - *
370 + *
511 371 * @param string|int $timestamp
512 372 * @return bool
513 373 */
514 374 function wpbm_is_valid_timestamp( $timestamp ) {
515 - return ( ( (string) (int) $timestamp === $timestamp)
375 + return ( ( (string) (int) $timestamp === $timestamp)
516 376 && ($timestamp <= PHP_INT_MAX)
517 - && ($timestamp >= ~PHP_INT_MAX)
377 + && ($timestamp >= ~PHP_INT_MAX)
518 378 );
519 379 }
520 380 // </editor-fold>
521 381
522 -
523 -// <editor-fold defaultstate="collapsed" desc=" F i l e s && U R L s " >
382 +
383 +// <editor-fold defaultstate="collapsed" desc=" F i l e s && U R L s " >
524 384 ////////////////////////////////////////////////////////////////////////////////
525 385 // F i l e s && U R L s
526 386 ////////////////////////////////////////////////////////////////////////////////
527 387
@@ -546,9 +406,9 @@
546 406 return trailingslashit( WPBM_PLUGIN_URL ) . ltrim( $path, '/\\' );
547 407 }
548 408
549 409 /** Check if such file exist or not.
550 - *
410 + *
551 411 * @param string $path - relative path to file (relative to plugin folder).
552 412 * @return boolean true | false
553 413 */
554 414 function wpbm_is_file_exist( $path ) {
@@ -554,14 +414,14 @@
554 414 function wpbm_is_file_exist( $path ) {
555 415
556 416 if ( file_exists( trailingslashit( WPBM_PLUGIN_DIR ) . ltrim( $path, '/\\' ) ) ) // check if this file exist
557 417 return true;
558 - else
418 + else
559 419 return false;
560 420 }
561 -
421 +
562 422 /** Set URL from absolute to relative (starting from /)
563 - *
423 + *
564 424 * @param type $url
565 425 * @return type
566 426 */
567 427 function wpbm_set_relative_url( $url ){
@@ -574,24 +434,24 @@
574 434 $url = trim($url_path, '/');
575 435 return '/' . $url;
576 436 }
577 437
578 -/** Get Correct Relative URL
579 - *
438 +/** Get Correct Relative URL
439 + *
580 440 * @param type $link
581 441 * @return string
582 442 */
583 443 function wpbm_make_link_relative( $link ){
584 444
585 - if ( $link == get_option('siteurl') )
445 + if ( $link == get_option('siteurl') )
586 446 $link = '/';
587 - $link = '/' . trim( wp_make_link_relative( $link ), '/' );
447 + $link = '/' . trim( wp_make_link_relative( $link ), '/' );
588 448
589 - return $link;
449 + return $link;
590 450 }
591 451
592 -/** Get Correct Absolute URL
593 - *
452 +/** Get Correct Absolute URL
453 + *
594 454 * @param string $link
595 455 * @return type
596 456 */
597 457 function wpbm_make_link_absolute( $link ){
@@ -596,17 +456,17 @@
596 456 */
597 457 function wpbm_make_link_absolute( $link ){
598 458
599 459 if ( ( $link != get_option('siteurl') ) && ( strpos($link, 'http') !== 0 ) )
600 - $link = get_option('siteurl') . '/' . trim( wp_make_link_relative( $link ), '/' );
460 + $link = get_option('siteurl') . '/' . trim( wp_make_link_relative( $link ), '/' );
601 461 return esc_js( $link ) ;
602 462 }
603 463
604 464
605 465 if (!function_exists ('get_file_data_wpdev')) {
606 -
466 +
607 467 /** Get header info from this file, just for compatibility with WordPress 2.8 and older versions
608 - *
468 + *
609 469 * @param type $file
610 470 * @param type $default_headers
611 471 * @param type $context
612 472 * @return type
@@ -612,15 +472,15 @@
612 472 * @return type
613 473 */
614 474 function get_file_data_wpdev( $file, $default_headers, $context = '' ) {
615 475 // We don't need to write to the file, so just open for reading.
616 - $fp = fopen( $file, 'r' );
476 + $fp = fopen( $file, 'r' ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fopen
617 477
618 478 // Pull only the first 8kiB of the file in.
619 - $file_data = fread( $fp, 8192 );
479 + $file_data = fread( $fp, 8192 );// phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fread
620 480
621 481 // PHP will close file handle, but we are good citizens.
622 - fclose( $fp );
482 + fclose( $fp );// phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fclose
623 483
624 484 if( $context != '' ) {
625 485 $extra_headers = array(); //apply_filters( "extra_$context".'_headers', array() );
626 486
@@ -648,9 +508,9 @@
648 508 }
649 509
650 510
651 511 /** Get content from specific URL
652 - *
512 + *
653 513 * @param string $url
654 514 * @return string|boolean (false on error)
655 515 */
656 516 function wpbm_get_ssl_page_content( $url ) {
@@ -658,13 +518,15 @@
658 518 $request = new WP_Http();
659 519
660 520 $result = $request->request( $url
661 521 , array( // Default Parameters
522 + 'reject_unsafe_urls' => true, //FixIn: 2.0.29.1
523 + 'user-agent' => 'Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405' //FixIn: 2.0.12.1
662 524 // 'method' => 'GET',
663 525 // 'timeout' => 5, // timeout value for an HTTP request.
664 - // 'redirection' => 5, // number of redirects allowed during an HTTP request.
665 - // 'httpversion' => '1.0',
666 - // 'user-agent' => 'WordPress/' . get_bloginfo( 'version' ) . '; ' . get_bloginfo( 'url' ),
526 + // 'redirection' => 5, // number of redirects allowed during an HTTP request.
527 + // 'httpversion' => '1.0',
528 + // 'user-agent' => 'WordPress/' . get_bloginfo( 'version' ) . '; ' . get_bloginfo( 'url' ),
667 529 // 'reject_unsafe_urls' => false,
668 530 // 'blocking' => true,
669 531 // 'headers' => array(),
670 532 // 'cookies' => array(),
@@ -675,14 +537,14 @@
675 537 // 'sslcertificates' => ABSPATH . WPINC . '/certificates/ca-bundle.crt',
676 538 // 'stream' => false,
677 539 // 'filename' => null,
678 540 // 'limit_response_size' => null
679 - )
541 + )
680 542 );
681 543
682 - if (
683 - ( ! is_wp_error( $result ) )
684 - && ( $result[ 'response' ][ 'code' ] == '200' )
544 + if (
545 + ( ! is_wp_error( $result ) )
546 + && ( $result[ 'response' ][ 'code' ] == '200' )
685 547 ) {
686 548
687 549 return $result[ 'body' ];
688 550
@@ -687,11 +549,21 @@
687 549 return $result[ 'body' ];
688 550
689 551 } else {
690 552
691 - $error_message = $result->get_error_message();
553 + //FixIn: 2.0.2.2
554 + if ( is_wp_error( $result ) ) {
555 + $error_message = $result->get_error_message();
556 + } else {
557 + $error_message = __( 'Unknown error during downloading feed', 'booking-manager' );
558 +
559 + // Show more detail info of not ability to download .ics feeds. //FixIn: 2.0.10.5
560 + $error_message .= $result[ 'body' ];
561 + //do_action( 'wpbc_admin_show_top_notice', $error_message, 'error', 5000 );
562 + //die;
563 + }
692 564 do_action( 'wpbc_admin_show_top_notice', $error_message, 'error', 5000 ); // N_O_T_I_C_E in H_E_A_D_E_R
693 - debuge($error_message); //FixIn: 2.0.1.3
565 +// debuge($error_message); //FixIn: 2.0.1.3 //FixIn: 2.0.8.2
694 566
695 567 return false;
696 568 }
697 569 }
@@ -717,9 +589,9 @@
717 589 $d = 0; // string bytes counter
718 590
719 591 // Iterate over every character in the string, escaping with a slash or encoding to UTF-8 where necessary
720 592 for ( $c = 0; $c < $strlen_var; ++ $c ) {
721 - $ord_var_c = ord( $str{$c} );
593 + $ord_var_c = ord( $str[$c] ); //FixIn: 2.0.17.1
722 594 switch ( true ) {
723 595 case(($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)): // characters U-00000000 - U-0000007F (same as ASCII)
724 596 $d ++;
725 597 break;
@@ -748,15 +620,15 @@
748 620
749 621 // </editor-fold>
750 622
751 623
752 -// <editor-fold defaultstate="collapsed" desc=" A d m i n M e n u L i n k s " >
624 +// <editor-fold defaultstate="collapsed" desc=" A d m i n M e n u L i n k s " >
753 625 ////////////////////////////////////////////////////////////////////////////
754 626 // A d m i n M e n u L i n k s
755 627 ////////////////////////////////////////////////////////////////////////////
756 628
757 629 /** Get URL to specific Admin Menu page
758 - *
630 + *
759 631 * @param string $menu_type - { item | add | resources | settings }
760 632 * @param boolean $is_absolute_url - Absolute or relative url { default: true }
761 633 * @return string - URL to menu
762 634 */
@@ -784,19 +656,19 @@
784 656 }
785 657
786 658 if ( $is_absolute_url ) {
787 659 $link = admin_url( 'admin.php' ) . '?page=' . $link ;
788 - }
660 + }
789 661
790 - return $link;
662 + return $link;
791 663 }
792 664
793 665 // // // // // // // // // // // // // // // // // // // // // // // // // /
794 666
795 667 /** Get URL of item Listing or Calendar Overview page
796 - *
668 + *
797 669 * @param boolean $is_absolute_url - Absolute or relative url { default: true }
798 - * @param boolean $is_old - { default: true }
670 + * @param boolean $is_old - { default: true }
799 671 * @return string - URL to menu
800 672 */
801 673 function wpbm_get_master_url( $is_absolute_url = true ) {
802 674 return wpbm_get_menu_url( 'master', $is_absolute_url );
@@ -801,12 +673,12 @@
801 673 function wpbm_get_master_url( $is_absolute_url = true ) {
802 674 return wpbm_get_menu_url( 'master', $is_absolute_url );
803 675 }
804 676
805 -/** Get URL of item > Add item page
806 - *
677 +/** Get URL of item > Add item page
678 + *
807 679 * @param boolean $is_absolute_url - Absolute or relative url { default: true }
808 - * @param boolean $is_old - { default: true }
680 + * @param boolean $is_old - { default: true }
809 681 * @return string - URL to menu
810 682 */
811 683 function wpbm_get_new_wpbm_url( $is_absolute_url = true ) {
812 684 return wpbm_get_menu_url( 'add', $is_absolute_url );
@@ -811,18 +683,18 @@
811 683 function wpbm_get_new_wpbm_url( $is_absolute_url = true ) {
812 684 return wpbm_get_menu_url( 'add', $is_absolute_url );
813 685 }
814 686
815 -/** Get URL of item > Settings page
816 - *
687 +/** Get URL of item > Settings page
688 + *
817 689 * @param boolean $is_absolute_url - Absolute or relative url { default: true }
818 - * @param boolean $is_old - { default: true }
690 + * @param boolean $is_old - { default: true }
819 691 * @return string - URL to menu
820 692 */
821 693 function wpbm_get_settings_url( $is_absolute_url = true ) {
822 694 return wpbm_get_menu_url( 'settings', $is_absolute_url );
823 695 }
824 -
696 +
825 697 // // // // // // // // // // // // // // // // // // // // // // // // // /
826 698
827 699 /** Check if this item Listing or Calendar Overview page
828 700 * @param string $server_param - 'REQUEST_URI' | 'HTTP_REFERER' Default: 'REQUEST_URI'
@@ -827,62 +699,62 @@
827 699 /** Check if this item Listing or Calendar Overview page
828 700 * @param string $server_param - 'REQUEST_URI' | 'HTTP_REFERER' Default: 'REQUEST_URI'
829 701 * @return boolean true | false
830 702 */
831 -function wpbm_is_master_page( $server_param = 'REQUEST_URI' ) {
703 +function wpbm_is_master_page( $server_param = 'REQUEST_URI' ) {
832 704
833 - if ( ( is_admin() ) &&
834 - ( strpos($_SERVER[ $server_param ],'page=oplugins') !== false ) &&
835 - ( strpos($_SERVER[ $server_param ],'tab=wpbm-') === false ) && // not the settings
836 - ( ( strpos($_SERVER[ $server_param ],'tab=wpbm') !== false ) // tab specified
837 - || ( strpos($_SERVER[ $server_param ],'tab=') === false ) ) // or tab not specified at all
705 + if ( ( is_admin() ) && isset($_SERVER[ $server_param ]) &&
706 + ( strpos(sanitize_text_field( wp_unslash($_SERVER[ $server_param ])),'page=oplugins') !== false ) && // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated
707 + ( strpos(sanitize_text_field( wp_unslash($_SERVER[ $server_param ])),'tab=wpbm-') === false ) && // not the settings // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated
708 + ( ( strpos(sanitize_text_field( wp_unslash($_SERVER[ $server_param ])),'tab=wpbm') !== false ) // tab specified // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated
709 + || ( strpos(sanitize_text_field( wp_unslash($_SERVER[ $server_param ])),'tab=') === false ) ) // or tab not specified at all // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated
838 710 ) {
839 711 return true;
840 - }
712 + }
841 713 return false;
842 714 }
843 715
844 -/** Check if this item > Add item page
716 +/** Check if this item > Add item page
845 717 * @param string $server_param - 'REQUEST_URI' | 'HTTP_REFERER' Default: 'REQUEST_URI'
846 718 * @return boolean true | false
847 719 */
848 720 function wpbm_is_new_wpbm_page( $server_param = 'REQUEST_URI' ) {
849 721
850 - if ( ( is_admin() ) &&
851 - ( strpos($_SERVER[ $server_param ],'page=oplugins') !== false ) &&
852 - ( strpos($_SERVER[ $server_param ],'tab=wpbm-new') !== false )
722 + if ( ( is_admin() ) && isset($_SERVER[ $server_param ]) &&
723 + ( strpos(sanitize_text_field( wp_unslash($_SERVER[ $server_param ])),'page=oplugins') !== false ) && // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated
724 + ( strpos(sanitize_text_field( wp_unslash($_SERVER[ $server_param ])),'tab=wpbm-new') !== false ) // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated
853 725 ) {
854 726 return true;
855 - }
727 + }
856 728 return false;
857 729 }
858 730
859 731
860 -/** Check if this item > Settings page
732 +/** Check if this item > Settings page
861 733 * @param string $server_param - 'REQUEST_URI' | 'HTTP_REFERER' Default: 'REQUEST_URI'
862 734 * @return boolean true | false
863 - */
735 + */
864 736 function wpbm_is_settings_page( $server_param = 'REQUEST_URI' ) {
865 737
866 - if ( ( is_admin() ) &&
867 - ( strpos($_SERVER[ $server_param ],'page=oplugins') !== false ) &&
868 - ( strpos($_SERVER[ $server_param ],'tab=wpbm-settings') !== false )
738 + if ( ( is_admin() ) && isset($_SERVER[ $server_param ]) &&
739 + ( strpos(sanitize_text_field( wp_unslash($_SERVER[ $server_param ])),'page=oplugins') !== false ) && // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated
740 + ( strpos(sanitize_text_field( wp_unslash($_SERVER[ $server_param ])),'tab=wpbm-settings') !== false ) // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated
869 741 ) {
870 742 return true;
871 - }
743 + }
872 744 return false;
873 745 }
874 746
875 747 // </editor-fold>
876 -
877 748
878 -// <editor-fold defaultstate="collapsed" desc=" A d m i n U I E l e m e n t s " >
749 +
750 +// <editor-fold defaultstate="collapsed" desc=" A d m i n U I E l e m e n t s " >
879 751 ////////////////////////////////////////////////////////////////////////////
880 752 // A d m i n U I E l e m e n t s
881 753 ////////////////////////////////////////////////////////////////////////////
882 754
883 755 /** Get Number of new items
884 - *
756 + *
885 757 * @return int
886 758 */
887 759 function wpbm_get_number_new_items(){
888 760 return 0;
@@ -889,9 +761,9 @@
889 761 }
890 762
891 763
892 764 /** Show Admin B A R .
893 - *
765 + *
894 766 * @global type $wp_admin_bar
895 767 * @return type
896 768 */
897 769 function wp_admin_bar_items_menu(){
@@ -918,9 +790,9 @@
918 790 $update_title = $title;
919 791
920 792
921 793 if ( $update_count > 0 ) {
922 - $update_count_title = "&nbsp;<span id='ab-updates' class='wpbm-count bk-update-count' >" . number_format_i18n($update_count) . "</span>" ; //id='wpbm-count'
794 + $update_count_title = "&nbsp;<span class='wpbm-count bk-update-count' style='background: #f0f0f1;color: #2c3338;display: inline;padding: 2px 5px;font-weight: 600;border-radius: 10px;'>" . number_format_i18n($update_count) . "</span>" ; //id='wpbm-count'
923 795 $update_title .= $update_count_title;
924 796 }
925 797
926 798 $link_items = wpbm_get_master_url();
@@ -979,33 +851,16 @@
979 851 // add_action( 'admin_bar_menu', 'wp_admin_bar_items_menu', 70 ); // Add Admin Bar
980 852
981 853
982 854 /** Show Rating link at footer */
983 -function wpbm_show_wpbm_footer(){
855 +function wpbm_show_wpbm_footer(){
984 856
985 - if ( ! wpbm_is_this_demo() ) {
857 + // Nothing here.
858 +}
859 +// </editor-fold>
986 860
987 - $message = sprintf( __( 'If you like %s please leave us a %s rating. A huge thank you in advance!', 'booking-manager')
988 - , '<strong>Booking Manager</strong>' . ' ' . WPBM_VERSION_NUM
989 - , '<a href="https://wordpress.org/support/plugin/booking-manager/reviews/#new-post" target="_blank" title="' . esc_attr__( 'Thanks :)', 'booking-manager') . '">'
990 - . '&#9733;&#9733;&#9733;&#9733;&#9733;'
991 - . '</a>'
992 - );
993 861
994 - echo '<div id="wpbm-footer" style="position:absolute;bottom:40px;text-align:left;width:95%;font-size:0.9em;text-shadow:0 1px 0 #fff;margin:0;color:#888;">' . $message . '</div>';
995 - ?>
996 - <script type="text/javascript">
997 - jQuery(document).ready(function(){
998 - jQuery('#wpfooter').append( jQuery('#wpbm-footer') );
999 - });
1000 - </script>
1001 - <?php
1002 - }
1003 -}
1004 -// </editor-fold>
1005 -
1006 -
1007 -// <editor-fold defaultstate="collapsed" desc=" DB - cheking if table, field or index exists " >
862 +// <editor-fold defaultstate="collapsed" desc=" DB - cheking if table, field or index exists " >
1008 863 ////////////////////////////////////////////////////////////////////////////
1009 864 // DB - cheking if table, field or index exists
1010 865 ////////////////////////////////////////////////////////////////////////////
1011 866
@@ -1010,9 +865,9 @@
1010 865 ////////////////////////////////////////////////////////////////////////////
1011 866
1012 867 /**
1013 868 * Check if table exist
1014 - *
869 + *
1015 870 * @global type $wpdb
1016 871 * @param string $tablename
1017 872 * @return 0|1
1018 873 */
@@ -1019,31 +874,23 @@
1019 874 function wpbm_is_table_exists( $tablename ) {
1020 875
1021 876 global $wpdb;
1022 877
1023 - if ( (! empty($wpdb->prefix) ) && ( strpos($tablename, $wpdb->prefix) === false ) )
1024 - $tablename = $wpdb->prefix . $tablename ;
878 + if ( ( ! empty( $wpdb->prefix ) ) && ( strpos( $tablename, $wpdb->prefix ) === false ) ) {
879 + $tablename = $wpdb->prefix . $tablename;
880 + }
1025 881
1026 - $sql_check_table = $wpdb->prepare("SHOW TABLES LIKE %s" , $tablename ); //FixIn 5.4.3
1027 882
1028 - $res = $wpdb->get_results( $sql_check_table );
1029 883
1030 - return count($res); //FixIn 5.4.3
1031 - /*
1032 - $sql_check_table = $wpdb->prepare("
1033 - SELECT COUNT(*) AS count
1034 - FROM information_schema.tables
1035 - WHERE table_schema = '". DB_NAME ."'
1036 - AND table_name = %s " , $tablename );
884 + $res = $wpdb->get_results( $wpdb->prepare( "SHOW TABLES LIKE %s", $tablename ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
1037 885
1038 - $res = $wpdb->get_results( $sql_check_table );
1039 - return $res[0]->count;*/
886 + return count( $res ); //FixIn 5.4.3.
1040 887 }
1041 888
1042 889
1043 890 /**
1044 891 * Check if table exist
1045 - *
892 + *
1046 893 * @global type $wpdb
1047 894 * @param string $tablename
1048 895 * @param type $fieldname
1049 896 * @return 0|1
@@ -1052,9 +899,9 @@
1052 899 global $wpdb;
1053 900 if ( (! empty($wpdb->prefix) ) && ( strpos($tablename, $wpdb->prefix) === false ) ) $tablename = $wpdb->prefix . $tablename ;
1054 901 $sql_check_table = "SHOW COLUMNS FROM {$tablename}" ;
1055 902
1056 - $res = $wpdb->get_results( $sql_check_table );
903 + $res = $wpdb->get_results( $sql_check_table ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared, PluginCheck.Security.DirectDB.UnescapedDBParameter
1057 904
1058 905 foreach ($res as $fld) {
1059 906 if ($fld->Field == $fieldname) return 1;
1060 907 }
@@ -1064,9 +911,9 @@
1064 911
1065 912
1066 913 /**
1067 914 * Check if index exist
1068 - *
915 + *
1069 916 * @global type $wpdb
1070 917 * @param string $tablename
1071 918 * @param type $fieldindex
1072 919 * @return 0|1
@@ -1073,24 +920,24 @@
1073 920 */
1074 921 function wpbm_is_index_in_table_exists( $tablename , $fieldindex) {
1075 922 global $wpdb;
1076 923 if ( (! empty($wpdb->prefix) ) && ( strpos($tablename, $wpdb->prefix) === false ) ) $tablename = $wpdb->prefix . $tablename ;
1077 - $sql_check_table = $wpdb->prepare("SHOW INDEX FROM {$tablename} WHERE Key_name = %s", $fieldindex );
1078 - $res = $wpdb->get_results( $sql_check_table );
924 +
925 + $res = $wpdb->get_results( $wpdb->prepare("SHOW INDEX FROM {$tablename} WHERE Key_name = %s", $fieldindex ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared
1079 926 if (count($res)>0) return 1;
1080 927 else return 0;
1081 928 }
1082 929
1083 930 // </editor-fold>
1084 -
1085 -
1086 -// <editor-fold defaultstate="collapsed" desc=" E s c a p i n g " >
931 +
932 +
933 +// <editor-fold defaultstate="collapsed" desc=" E s c a p i n g " >
1087 934 ////////////////////////////////////////////////////////////////////////////
1088 935 // E s c a p i n g
1089 936 ////////////////////////////////////////////////////////////////////////////
1090 937
1091 938 /** Transform the REQESTS parameters (GET and POST) into URL
1092 - *
939 + *
1093 940 * @param type $page_param
1094 941 * @param array $exclude_params
1095 942 * @param type $only_these_parameters
1096 943 * @return type
@@ -1098,25 +945,25 @@
1098 945 function wpbm_get_params_in_url( $page_param , $exclude_params = array(), $only_these_parameters = false, $is_escape_url = false, $only_get = false ){
1099 946
1100 947 $exclude_params[] = 'page';
1101 948
1102 - if ( isset( $_GET['page'] ) )
1103 - $page_param = $_GET['page'];
949 + // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
950 + if ( isset( $_GET['page'] ) ) { $page_param = $_GET['page']; }
1104 951
1105 952 $get_paramaters = array( 'page' => $page_param );
1106 953
1107 954 if ( $only_get )
1108 - $check_params = $_GET;
1109 - else
1110 - $check_params = $_REQUEST;
1111 -//debuge($check_params);
955 + $check_params = $_GET; // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
956 + else
957 + $check_params = $_REQUEST; // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
958 +//debuge($check_params);
1112 959 foreach ( $check_params as $prm_key => $prm_value ) {
1113 960
1114 961 // Skip parameters arrays, like $_GET['rvaluation_to'] = Array ( [0] => 6, [1] => 14, [2] => 14 )
1115 - if (
1116 - ( is_string( $prm_value ) )
1117 - || ( is_numeric( $prm_value ) )
1118 - ) {
962 + if (
963 + ( is_string( $prm_value ) )
964 + || ( is_numeric( $prm_value ) )
965 + ) {
1119 966
1120 967 if ( strlen( $prm_value ) > 1000 ) { // Check about TOOO long parameters, if it exist then reset it.
1121 968 $prm_value = '';
1122 969 }
@@ -1125,9 +972,9 @@
1125 972 if ( ( $only_these_parameters === false ) || ( in_array( $prm_key, $only_these_parameters ) ) )
1126 973 $get_paramaters[ $prm_key ] = $prm_value;
1127 974 }
1128 975 }
1129 -//debuge($check_params, $get_paramaters, $exclude_params );
976 +//debuge($check_params, $get_paramaters, $exclude_params );
1130 977 $url = admin_url( add_query_arg( $get_paramaters , 'admin.php' ) );
1131 978
1132 979 if ( $is_escape_url )
1133 980 $url = esc_url( $url );
@@ -1136,9 +983,9 @@
1136 983
1137 984 /* // Old variant:
1138 985 if ( isset( $_GET['page'] ) ) $page_param = $_GET['page'];
1139 986
1140 - $url_start = 'admin.php?page=' . $page_param . '&';
987 + $url_start = 'admin.php?page=' . $page_param . '&';
1141 988 $exclude_params[] = 'page';
1142 989 foreach ( $_REQUEST as $prm_key => $prm_value ) {
1143 990
1144 991 if ( !in_array( $prm_key, $exclude_params ) )
@@ -1149,18 +996,18 @@
1149 996 }
1150 997 $url_start = substr( $url_start, 0, -1 );
1151 998
1152 999 return $url_start;
1153 - */
1000 + */
1154 1001 }
1155 1002
1156 1003
1157 1004 /** Clean Request Parameters
1158 - *
1005 + *
1159 1006 */
1160 -function wpbm_check_request_paramters() {
1007 +function wpbm_check_request_paramters() {
1161 1008
1162 - $clean_params = array();
1009 + $clean_params = array();
1163 1010
1164 1011 $clean_params[ 'wh_wpbm_id' ] = 'digit_or_csd'; // '0' | '1' | ''
1165 1012 $clean_params[ 'wh_wpbm_date' ] = 'digit_or_date'; // number | date 2016-07-20
1166 1013 $clean_params[ 'wh_wpbm_datenext' ] = 'd'; // '1' | '2' ....
@@ -1171,13 +1018,13 @@
1171 1018
1172 1019 // elements only listed in array::
1173 1020 if ( is_array( $clean_type ) ) { // check only values from the list in this array
1174 1021
1175 - if ( ( isset( $_REQUEST[ $request_key ] ) ) && ( ! in_array( $_REQUEST[ $request_key ], $clean_type ) ) )
1176 - $clean_type = 's';
1177 - else
1022 + if ( ( isset( $_REQUEST[ $request_key ] ) ) && ( ! in_array( $_REQUEST[ $request_key ], $clean_type ) ) ) // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1023 + $clean_type = 's';
1024 + else
1178 1025 $clean_type = 'checked_skip_it';
1179 - }
1026 + }
1180 1027
1181 1028 switch ( $clean_type ) {
1182 1029
1183 1030 case 'checked_skip_it':
@@ -1184,36 +1031,34 @@
1184 1031
1185 1032 break;
1186 1033
1187 1034 case 'digit_or_date': // digit or comma separated digit
1188 - if ( isset( $_REQUEST[ $request_key ] ) )
1189 - $_REQUEST[ $request_key ] = wpbm_clean_digit_or_date( $_REQUEST[ $request_key ] ); // nums
1035 + // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1036 + if ( isset( $_REQUEST[ $request_key ] ) ) { $_REQUEST[ $request_key ] = wpbm_clean_digit_or_date( $_REQUEST[ $request_key ] ); } // nums
1190 1037
1191 1038 break;
1192 1039
1193 1040 case 'digit_or_csd': // digit or comma separated digit
1194 - if ( isset( $_REQUEST[ $request_key ] ) )
1195 - $_REQUEST[ $request_key ] = wpbm_clean_digit_or_csd( $_REQUEST[ $request_key ] ); // nums
1041 + // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1042 + if ( isset( $_REQUEST[ $request_key ] ) ) { $_REQUEST[ $request_key ] = wpbm_clean_digit_or_csd( $_REQUEST[ $request_key ] ); } // nums
1196 1043
1197 1044 break;
1198 1045
1199 1046 case 's': // string
1200 - if ( isset( $_REQUEST[ $request_key ] ) )
1201 - $_REQUEST[ $request_key ] = wpbm_clean_like_string_for_db( $_REQUEST[ $request_key ] );
1047 + // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1048 + if ( isset( $_REQUEST[ $request_key ] ) ) { $_REQUEST[ $request_key ] = wpbm_clean_like_string_for_db( $_REQUEST[ $request_key ] ); }
1202 1049
1203 1050 break;
1204 1051
1205 1052 case 'd': // digit
1206 - if ( isset( $_REQUEST[ $request_key ] ) )
1207 - if ( $_REQUEST[ $request_key ] !== '' )
1208 - $_REQUEST[ $request_key ] = intval( $_REQUEST[ $request_key ] );
1053 + // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1054 + if (( isset( $_REQUEST[ $request_key ] ) ) && ( $_REQUEST[ $request_key ] !== '' )) { $_REQUEST[ $request_key ] = intval( $_REQUEST[ $request_key ] ); }
1209 1055
1210 1056 break;
1211 1057
1212 1058 default:
1213 - if ( isset( $_REQUEST[ $request_key ] ) ) {
1214 - $_REQUEST[ $request_key ] = intval( $_REQUEST[ $request_key ] );
1215 - }
1059 + // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1060 + if ( isset( $_REQUEST[ $request_key ] ) ) { $_REQUEST[ $request_key ] = intval( $_REQUEST[ $request_key ] ); }
1216 1061 break;
1217 1062 }
1218 1063
1219 1064
@@ -1220,15 +1065,15 @@
1220 1065 }
1221 1066
1222 1067 }
1223 1068
1224 -
1069 +
1225 1070 /** Check paramter if it number or comma separated list of numbers
1226 - *
1071 + *
1227 1072 * @global type $wpdb
1228 1073 * @param string $value
1229 1074 * @return string
1230 - *
1075 + *
1231 1076 * Exmaple:
1232 1077 wpbm_clean_digit_or_csd( '12,a,45,9' ) => '12,0,45,9'
1233 1078 * or
1234 1079 wpbm_clean_digit_or_csd( '10a' ) => '10
@@ -1234,9 +1079,9 @@
1234 1079 wpbm_clean_digit_or_csd( '10a' ) => '10
1235 1080 * or
1236 1081 wpbm_clean_digit_or_csd( array( '12,a,45,9', '10a' ) ) => array ( '12,0,45,9', '10' )
1237 1082 */
1238 -function wpbm_clean_digit_or_csd( $value ) { //FixIn:6.2.1.4
1083 +function wpbm_clean_digit_or_csd( $value ) { //FixIn:6.2.1.4
1239 1084
1240 1085 if ( $value === '' ) return $value;
1241 1086
1242 1087
@@ -1241,9 +1086,9 @@
1241 1086
1242 1087
1243 1088 if ( is_array( $value ) ) {
1244 1089 foreach ( $value as $key => $check_value ) {
1245 - $value[ $key ] = wpbm_clean_digit_or_csd( $check_value );
1090 + $value[ $key ] = wpbm_clean_digit_or_csd( $check_value );
1246 1091 }
1247 1092 return $value;
1248 1093 }
1249 1094
@@ -1260,12 +1105,12 @@
1260 1105 }
1261 1106 $result = implode(',', $result );
1262 1107 return $result;
1263 1108 }
1264 -
1265 -
1109 +
1110 +
1266 1111 /** Cehck about Valid date, like 2016-07-20 or digit
1267 - *
1112 + *
1268 1113 * @param string $value
1269 1114 * @return string or int
1270 1115 */
1271 1116 function wpbm_clean_digit_or_date( $value ) { //FixIn:6.2.1.4
@@ -1279,12 +1124,12 @@
1279 1124 return intval( $value );
1280 1125 }
1281 1126
1282 1127 }
1283 -
1284 1128
1129 +
1285 1130 /** Check $value for injection here
1286 - *
1131 + *
1287 1132 * @param type $value
1288 1133 * @return type
1289 1134 */
1290 1135 function wpbm_clean_parameter( $value ) {
@@ -1289,16 +1134,16 @@
1289 1134 */
1290 1135 function wpbm_clean_parameter( $value ) {
1291 1136
1292 1137 $value = preg_replace( '/<[^>]*>/', '', $value ); // clean any tags
1293 - $value = str_replace( '<', ' ', $value );
1294 - $value = str_replace( '>', ' ', $value );
1295 - $value = strip_tags( $value );
1138 + $value = str_replace( '<', ' ', $value );
1139 + $value = str_replace( '>', ' ', $value );
1140 + $value = wp_strip_all_tags( $value );
1296 1141
1297 - // Clean SQL injection
1142 + // Clean SQL injection
1298 1143 $value = esc_sql( $value );
1299 1144
1300 - return $value;
1145 + return $value;
1301 1146 }
1302 1147
1303 1148
1304 1149 function wpbm_esc_like( $value_trimmed ) {
@@ -1311,14 +1156,14 @@
1311 1156 }
1312 1157
1313 1158
1314 1159 /** Clean user string for using in SQL LIKE statement - append to LIKE sql
1315 - *
1160 + *
1316 1161 * @param string $value - to clean
1317 1162 * @return string - escaped
1318 - * Exmaple:
1163 + * Exmaple:
1319 1164 * $search_escaped_like_title = wpbm_clean_like_string_for_append_in_sql_for_db( $input_var );
1320 - *
1165 + *
1321 1166 * $where_sql = " WHERE title LIKE ". $search_escaped_like_title ." ";
1322 1167 */
1323 1168 function wpbm_clean_like_string_for_append_in_sql_for_db( $value ) {
1324 1169 global $wpdb;
@@ -1323,13 +1168,13 @@
1323 1168 function wpbm_clean_like_string_for_append_in_sql_for_db( $value ) {
1324 1169 global $wpdb;
1325 1170
1326 1171 $value_trimmed = trim( stripslashes( $value ) );
1327 -$wild = '%';
1328 -$like = $wild . wpbm_esc_like( $value_trimmed ) . $wild;
1329 -$sql = $wpdb->prepare( "'%s'", $like );
1172 + $wild = '%';
1173 + $like = $wild . wpbm_esc_like( $value_trimmed ) . $wild;
1174 + $sql = $wpdb->prepare( "'%s'", $like ); // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders.QuotedSimplePlaceholder
1330 1175
1331 - return $sql;
1176 + return $sql;
1332 1177
1333 1178
1334 1179 /* Help:
1335 1180 * First half of escaping for LIKE special characters % and _ before preparing for MySQL.
@@ -1344,22 +1189,22 @@
1344 1189 *
1345 1190 * Example Escape Chain:
1346 1191 *
1347 1192 * $sql = esc_sql( wpbm_esc_like( $input ) );
1348 - */
1193 + */
1349 1194
1350 1195 }
1351 1196
1352 1197
1353 -/** Clean string for using in SQL LIKE requests inside single quotes: WHERE title LIKE '%". $escaped_search_title ."%'
1198 +/** Clean string for using in SQL LIKE requests inside single quotes: WHERE title LIKE '%". $escaped_search_title ."%'
1354 1199 * Replaced _ to \_ % to \% \ to \\
1355 1200 * @param string $value - to clean
1356 1201 * @return string - escaped
1357 - * Exmaple:
1202 + * Exmaple:
1358 1203 * $search_escaped_like_title = wpbm_clean_like_string_for_db( $input_var );
1359 - *
1204 + *
1360 1205 * $where_sql = " WHERE title LIKE '%". $search_escaped_like_title ."%' ";
1361 - *
1206 + *
1362 1207 * Important! Use SINGLE quotes after in SQL query: LIKE '%".$data."%'
1363 1208 */
1364 1209 function wpbm_clean_like_string_for_db( $value ){
1365 1210
@@ -1368,9 +1213,9 @@
1368 1213 $value_trimmed = trim( stripslashes( $value ) );
1369 1214
1370 1215 $value_trimmed = wpbm_esc_like( $value_trimmed );
1371 1216
1372 - $value = trim( $wpdb->prepare( "'%s'", $value_trimmed ) , "'" );
1217 + $value = trim( $wpdb->prepare( "'%s'", $value_trimmed ) , "'" ); // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders.QuotedSimplePlaceholder
1373 1218
1374 1219 return $value;
1375 1220
1376 1221 /* Help:
@@ -1386,26 +1231,26 @@
1386 1231 *
1387 1232 * Example Escape Chain:
1388 1233 *
1389 1234 * $sql = esc_sql( wpbm_esc_like( $input ) );
1390 - */
1235 + */
1391 1236 }
1392 1237
1393 1238
1394 1239 /** Escape string from SQL for the HTML form field
1395 - *
1240 + *
1396 1241 * @param string $value
1397 1242 * @return string
1398 - *
1243 + *
1399 1244 * Used: esc_sql function.
1400 - *
1401 - * https://codex.wordpress.org/Function_Reference/esc_sql
1402 - * Note: Be careful to use this function correctly. It will only escape values to be used in strings in the query.
1403 - * That is, it only provides escaping for values that will be within quotes in the SQL (as in field = '{$escaped_value}').
1404 - * If your value is not going to be within quotes, your code will still be vulnerable to SQL injection.
1405 - * For example, this is vulnerable, because the escaped value is not surrounded by quotes in the SQL query:
1406 - * ORDER BY {$escaped_value}. As such, this function does not escape unquoted numeric values, field names, or SQL keywords.
1407 - *
1245 + *
1246 + * https://codex.wordpress.org/Function_Reference/esc_sql
1247 + * Note: Be careful to use this function correctly. It will only escape values to be used in strings in the query.
1248 + * That is, it only provides escaping for values that will be within quotes in the SQL (as in field = '{$escaped_value}').
1249 + * If your value is not going to be within quotes, your code will still be vulnerable to SQL injection.
1250 + * For example, this is vulnerable, because the escaped value is not surrounded by quotes in the SQL query:
1251 + * ORDER BY {$escaped_value}. As such, this function does not escape unquoted numeric values, field names, or SQL keywords.
1252 + *
1408 1253 */
1409 1254 function wpbm_clean_string_for_form( $value ){
1410 1255
1411 1256 global $wpdb;
@@ -1422,16 +1267,16 @@
1422 1267
1423 1268 }
1424 1269 // </editor-fold>
1425 1270
1426 -
1427 -// <editor-fold defaultstate="collapsed" desc=" U s e r s " >
1271 +
1272 +// <editor-fold defaultstate="collapsed" desc=" U s e r s " >
1428 1273 ////////////////////////////////////////////////////////////////////////////////
1429 1274 // U s e r s
1430 1275 ////////////////////////////////////////////////////////////////////////////////
1431 1276
1432 1277 /** Get ID of active user
1433 - *
1278 + *
1434 1279 * @return type
1435 1280 */
1436 1281 function get_wpbm_current_user_id() {
1437 1282 $user = wp_get_current_user();
@@ -1438,11 +1283,35 @@
1438 1283 return ( isset( $user->ID ) ? (int) $user->ID : 0 );
1439 1284 }
1440 1285
1441 1286
1287 +/**
1288 + * Resolve a requested per-user settings target to the current user.
1289 + *
1290 + * Booking Manager's established AJAX payloads include a user ID. The value is
1291 + * retained for request compatibility, but it must never authorize a write to
1292 + * another user's preferences.
1293 + *
1294 + * @param mixed $requested_user_id User ID supplied by the request.
1295 + *
1296 + * @return int Current user ID when the request target matches; otherwise 0.
1297 + */
1298 +function wpbm_get_authorized_user_option_target_id( $requested_user_id ) {
1299 + $current_user_id = get_wpbm_current_user_id();
1300 +
1301 + if ( 0 === $current_user_id || ! is_scalar( $requested_user_id ) ) {
1302 + return 0;
1303 + }
1304 +
1305 + $requested_user_id = absint( wp_unslash( (string) $requested_user_id ) );
1306 +
1307 + return ( $current_user_id === $requested_user_id ) ? $current_user_id : 0;
1308 +}
1309 +
1310 +
1442 1311 /** Check if Current User have specific Role
1443 - *
1444 - * @return bool Whether the current user has the given capability.
1312 + *
1313 + * @return bool Whether the current user has the given capability.
1445 1314 */
1446 1315 function wpbm_is_current_user_have_this_role( $user_role ) {
1447 1316
1448 1317 if ( $user_role == 'administrator' ) $user_role = 'activate_plugins';
@@ -1455,64 +1324,44 @@
1455 1324 }
1456 1325
1457 1326
1458 1327 function wpbm_get_user_ip() {
1459 -//return '84.243.195.114' ; // Test //90.36.89.174
1460 - if (isset($_SERVER['HTTP_CLIENT_IP'])) {
1461 - $userIP = $_SERVER['HTTP_CLIENT_IP'] ;
1462 - } elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
1463 - $userIP = $_SERVER['HTTP_X_FORWARDED_FOR'] ;
1464 - } elseif (isset($_SERVER['HTTP_X_FORWARDED'])) {
1465 - $userIP = $_SERVER['HTTP_X_FORWARDED'] ;
1466 - } elseif (isset($_SERVER['HTTP_FORWARDED_FOR'])) {
1467 - $userIP = $_SERVER['HTTP_FORWARDED_FOR'] ;
1468 - } elseif (isset($_SERVER['HTTP_FORWARDED'])) {
1469 - $userIP = $_SERVER['HTTP_FORWARDED'] ;
1470 - } elseif (isset($_SERVER['REMOTE_ADDR'])) {
1471 - $userIP = $_SERVER['REMOTE_ADDR'] ;
1472 - } else {
1473 - $userIP = "" ;
1474 - }
1475 -
1476 - $userIP = explode( ',', $userIP );
1477 - $userIP = array_map( 'trim', $userIP );
1478 -
1479 - return $userIP[0] ;
1328 + return '---';
1480 1329 }
1481 1330 add_wpbm_filter( 'wpbm_get_user_ip', 'wpbm_get_user_ip' );
1482 1331 // </editor-fold>
1483 1332
1484 1333
1485 -// <editor-fold defaultstate="collapsed" desc=" Mesages for Admin panel " >
1486 -////////////////////////////////////////////////////////////////////////////////
1487 -// Mesages for Admin panel
1488 -////////////////////////////////////////////////////////////////////////////////
1334 +// <editor-fold defaultstate="collapsed" desc=" Mesages for Admin panel " >
1335 +////////////////////////////////////////////////////////////////////////////////
1336 +// Mesages for Admin panel
1337 +////////////////////////////////////////////////////////////////////////////////
1489 1338
1490 1339 function wpbm_show_fixed_message( $message, $time_to_show , $message_type = 'updated' , $notice_id = 0, $is_dismissible = false ) {
1491 1340
1492 1341 // Generate unique HTML ID for the message
1493 1342 if ( $notice_id == 0 )
1494 - $notice_id = intval( time() * rand(10, 100) );
1343 + $notice_id = intval( time() * wp_rand(10, 100) );
1495 1344
1496 1345 $notice_id = 'wpbm_system_notice_' . $notice_id;
1497 1346
1498 1347 $is_dismissible = false;
1499 1348
1500 - if (
1349 + if (
1501 1350 ( ( $is_dismissible ) && ( ! wpbm_section_is_dismissed( $notice_id ) ) )
1502 1351 || ( ! $is_dismissible )
1503 - // || true
1352 + // || true
1504 1353 ){
1505 1354
1506 - ?><div id="<?php echo $notice_id; ?>"
1507 - class="wpbm_system_notice wpbm_is_dismissible wpbm_is_hideable <?php echo $message_type; ?>"
1508 - data-nonce="<?php echo wp_create_nonce( $nonce_name = $notice_id . '_wpbmnonce' ); ?>"
1509 - data-user-id="<?php echo get_current_user_id(); ?>"
1510 - ><?php
1355 + ?><div id="<?php echo esc_attr($notice_id); ?>"
1356 + class="wpbm_system_notice wpbm_is_dismissible wpbm_is_hideable <?php echo esc_attr( $message_type ); ?>"
1357 + data-nonce="<?php echo esc_attr(wp_create_nonce( $nonce_name = $notice_id . '_wpbmnonce' )); ?>"
1358 + data-user-id="<?php echo esc_attr(get_current_user_id()); ?>"
1359 + ><?php
1511 1360
1512 1361 wpbm_x_dismiss_button();
1513 1362
1514 - echo $message;
1363 + echo wp_kses_post($message);
1515 1364
1516 1365 ?></div><?php
1517 1366
1518 1367 // Get the time of message showing
@@ -1517,19 +1366,19 @@
1517 1366
1518 1367 // Get the time of message showing
1519 1368 $time_to_show = intval( $time_to_show ) * 1000;
1520 1369
1521 - if ( $time_to_show > 0 ) {
1522 - ?> <script type="text/javascript">
1523 - jQuery('#<?php echo $notice_id; ?>').animate({opacity: 1},<?php echo $time_to_show; ?>).fadeOut( 2000 );
1370 + if ( $time_to_show > 0 ) {
1371 + ?> <script type="text/javascript">
1372 + jQuery('#<?php echo esc_attr($notice_id); ?>').animate({opacity: 1},<?php echo esc_attr( $time_to_show ); ?>).fadeOut( 2000 );
1524 1373 </script> <?php
1525 - }
1526 - }
1374 + }
1375 + }
1527 1376 }
1528 1377
1529 1378
1530 1379 /** Show Ajax message at the top of page
1531 - *
1380 + *
1532 1381 * @param type $message
1533 1382 * @param type $time_to_show
1534 1383 * @param type $is_error
1535 1384 */
@@ -1541,24 +1390,24 @@
1541 1390 // Escape any JavaScript from message
1542 1391 $notice = html_entity_decode( esc_js( $message ) ,ENT_QUOTES) ;
1543 1392
1544 1393 ?><script type="text/javascript">
1545 - var my_message = '<?php echo $notice; ?>';
1546 - wpbm_admin_show_message( my_message, '<?php echo ( $is_error ? 'error' : 'success' ); ?>', <?php echo $time_to_show; ?> );
1394 + var my_message = '<?php echo esc_js( $notice ); ?>';
1395 + wpbm_admin_show_message( my_message, '<?php echo ( $is_error ? 'error' : 'success' ); ?>', <?php echo esc_attr($time_to_show); ?> );
1547 1396 </script><?php
1548 1397 }
1549 1398
1550 1399
1551 1400 /** Show "Saved Changes" message at the top of settings page.
1552 - *
1553 - */
1401 + *
1402 + */
1554 1403 function wpbm_show_changes_saved_message() {
1555 1404 wpbm_show_message ( __('Changes saved.', 'booking-manager'), 5 );
1556 -}
1405 +}
1557 1406
1558 1407
1559 1408 /** Show Message at Top of Admin Pages
1560 - *
1409 + *
1561 1410 * @param type $message - mesage to show
1562 1411 * @param type $time_to_show - number of seconds to show, if 0 or skiped, then unlimited time.
1563 1412 * @param type $message_type - Default: updated { updated | error | notice }
1564 1413 */
@@ -1564,9 +1413,9 @@
1564 1413 */
1565 1414 function wpbm_show_message ( $message, $time_to_show , $message_type = 'updated') {
1566 1415
1567 1416 // Generate unique HTML ID for the message
1568 - $inner_message_id = intval( time() * rand(10, 100) );
1417 + $inner_message_id = intval( time() * wp_rand(10, 100) );
1569 1418
1570 1419 // Get formated HTML message
1571 1420 $notice = wpbm_get_formated_message( $message, $message_type, $inner_message_id );
1572 1421
@@ -1573,13 +1422,16 @@
1573 1422 // Get the time of message showing
1574 1423 $time_to_show = intval( $time_to_show ) * 1000;
1575 1424
1576 1425 // Show this Message
1577 - ?> <script type="text/javascript">
1426 + ?> <script type="text/javascript">
1578 1427 if ( jQuery('.wpbm_admin_message').length ) {
1579 - jQuery('.wpbm_admin_message').append( '<?php echo $notice; ?>' );
1428 + jQuery('.wpbm_admin_message').append( '<?php
1429 + // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1430 + echo ($notice);
1431 + ?>' );
1580 1432 <?php if ( $time_to_show > 0 ) { ?>
1581 - jQuery('#wpbm_inner_message_<?php echo $inner_message_id; ?>').animate({opacity: 1},<?php echo $time_to_show; ?>).fadeOut( 2000 );
1433 + jQuery('#wpbm_inner_message_<?php echo esc_attr($inner_message_id); ?>').animate({opacity: 1},<?php echo esc_attr($time_to_show); ?>).fadeOut( 2000 );
1582 1434 <?php } ?>
1583 1435 }
1584 1436 </script> <?php
1585 1437 }
@@ -1585,9 +1437,9 @@
1585 1437 }
1586 1438
1587 1439
1588 1440 /** Escape and prepare message to show it
1589 - *
1441 + *
1590 1442 * @param type $message - message
1591 1443 * @param type $message_type - Default: updated { updated | error | notice }
1592 1444 * @param string $inner_message_id - ID of message DIV, can be skipped
1593 1445 * @return string
@@ -1612,13 +1464,13 @@
1612 1464 }
1613 1465
1614 1466
1615 1467 /** Show system info in settings page
1616 - *
1617 - * @param string $message ...
1468 + *
1469 + * @param string $message ...
1618 1470 * @param string $message_type 'info' | 'warning' | 'error'
1619 1471 * @param string $title __('Important!' , 'booking-manager') | __('Note' , 'booking-manager')
1620 - *
1472 + *
1621 1473 * Exmaple: wpbm_show_message_in_settings( __( 'Nothing Found', 'booking-manager'), 'warning', __('Important!' , 'booking-manager') );
1622 1474 */
1623 1475 function wpbm_show_message_in_settings( $message, $message_type = 'info', $title = '' , $is_echo = true ) {
1624 1476
@@ -1637,9 +1489,9 @@
1637 1489
1638 1490 $message_content .= '<div class="clear"></div>';
1639 1491
1640 1492 if ( $is_echo )
1641 - echo $message_content;
1493 + echo wp_kses_post( $message_content );
1642 1494 else
1643 1495 return $message_content;
1644 1496
1645 1497 }
@@ -1645,36 +1497,39 @@
1645 1497 }
1646 1498 // </editor-fold>
1647 1499
1648 1500
1649 -// <editor-fold defaultstate="collapsed" desc=" Settings Meta Boxes " >
1650 -////////////////////////////////////////////////////////////////////////////////
1501 +// <editor-fold defaultstate="collapsed" desc=" Settings Meta Boxes " >
1502 +////////////////////////////////////////////////////////////////////////////////
1651 1503 // Settings Meta Boxes
1652 -////////////////////////////////////////////////////////////////////////////////
1504 +////////////////////////////////////////////////////////////////////////////////
1653 1505 function wpbm_open_meta_box_section( $metabox_id, $title ) {
1654 1506
1655 1507 $my_close_open_win_id = $metabox_id . '_metabox';
1656 - ?>
1657 - <div class='meta-box'>
1658 - <div
1659 - id="<?php echo $my_close_open_win_id; ?>"
1660 - class="postbox <?php if ( '1' == get_user_option( 'wpbm_win_' . $my_close_open_win_id ) ) echo 'closed'; ?>"
1661 - > <div title="<?php _e('Click to toggle', 'booking-manager'); ?>"
1662 - class="handlediv"
1663 - onclick="javascript:wpbm_verify_window_opening(<?php echo get_wpbm_current_user_id(); ?>, '<?php echo $my_close_open_win_id; ?>');"
1664 - ><br/></div>
1665 - <h3 class='hndle'>
1666 - <span><?php echo wp_kses_post( $title ); ?></span>
1667 - </h3>
1668 - <div class="inside">
1669 - <?php
1508 + //FixIn: 2.0.16.1
1509 + ?>
1510 + <div class='meta-box'>
1511 + <div
1512 + id="<?php echo esc_attr($my_close_open_win_id); ?>"
1513 + class="postbox <?php if ( '1' == get_user_option( 'wpbm_win_' . $my_close_open_win_id ) ) echo 'closed'; ?>"
1514 + ><div class="postbox-header" style="display: flex;flex-flow: row nowrap;border-bottom: 1px solid #ccd0d4;"><?php //FixIn: 8.7.8.1 ?>
1515 + <h3 class='hndle' style="flex: 1 1 auto;border: none;">
1516 + <span><?php echo wp_kses_post( $title ); ?></span>
1517 + </h3>
1518 + <div title="<?php echo esc_attr(__('Click to toggle','booking-manager')); ?>"
1519 + class="handlediv"
1520 + onclick="javascript:wpbm_verify_window_opening(<?php echo esc_attr( get_wpbm_current_user_id() ); ?>, '<?php echo esc_attr($my_close_open_win_id); ?>');"
1521 + ><br/></div>
1522 + </div>
1523 + <div class="inside">
1524 + <?php
1670 1525 }
1671 1526
1672 1527 function wpbm_close_meta_box_section() {
1673 1528 ?>
1674 - </div>
1675 - </div>
1676 - </div>
1529 + </div>
1530 + </div>
1531 + </div>
1677 1532 <?php
1678 1533 }
1679 1534 // </editor-fold>
1680 1535
@@ -1679,23 +1534,23 @@
1679 1534 // </editor-fold>
1680 1535
1681 1536
1682 1537 // from Toolbar
1683 -// <editor-fold defaultstate="collapsed" desc=" M o d a l s " >
1684 -////////////////////////////////////////////////////////////////////////////////
1538 +// <editor-fold defaultstate="collapsed" desc=" M o d a l s " >
1539 +////////////////////////////////////////////////////////////////////////////////
1685 1540 // M o d a l s
1686 1541 ////////////////////////////////////////////////////////////////////////////////
1687 1542
1688 -/** Start Loyouts - Modal Window structure */
1543 +/** Start Loyouts - Modal Window structure */
1689 1544 function wpbm_write_content_for_modals_start_here() {
1690 -
1545 +
1691 1546 ?><span id="wpbm_content_for_modals"></span><?php
1692 1547 }
1693 -add_wpbm_action( 'wpbm_write_content_for_modals', 'wpbm_write_content_for_modals_start_here');
1548 +add_wpbm_action( 'wpbm_write_content_for_modals', 'wpbm_write_content_for_modals_start_here');
1694 1549 // </editor-fold>
1695 1550
1696 1551
1697 -// <editor-fold defaultstate="collapsed" desc=" Inline JavaScript " >
1552 +// <editor-fold defaultstate="collapsed" desc=" Inline JavaScript " >
1698 1553 ////////////////////////////////////////////////////////////////////////////////
1699 1554 // Inline J a v a S c r i p t to Footer page
1700 1555 ////////////////////////////////////////////////////////////////////////////////
1701 1556 /**
@@ -1731,9 +1586,9 @@
1731 1586
1732 1587 $wpbm_queued_js = preg_replace( '/&#(x)?0*(?(1)27|39);?/i', "'", $wpbm_queued_js );
1733 1588 $wpbm_queued_js = str_replace( "\r", '', $wpbm_queued_js );
1734 1589
1735 - echo $wpbm_queued_js . "});\n</script>\n<!-- End WPBM JavaScript -->\n";
1590 + echo $wpbm_queued_js . "});\n</script>\n<!-- End WPBM JavaScript -->\n"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1736 1591
1737 1592 $wpbm_queued_js = '';
1738 1593 unset( $wpbm_queued_js );
1739 1594 }
@@ -1741,9 +1596,9 @@
1741 1596
1742 1597 // </editor-fold>
1743 1598
1744 1599 // from Toolbar
1745 -// <editor-fold defaultstate="collapsed" desc=" JS & CSS - Tooltips & Popover" >
1600 +// <editor-fold defaultstate="collapsed" desc=" JS & CSS - Tooltips & Popover" >
1746 1601 ////////////////////////////////////////////////////////////////////////////////
1747 1602 // JS & CSS
1748 1603 ////////////////////////////////////////////////////////////////////////////////
1749 1604
@@ -1748,15 +1603,15 @@
1748 1603 ////////////////////////////////////////////////////////////////////////////////
1749 1604
1750 1605 /** Load suport JavaScript for "Items" page*/
1751 1606 function wpbm_js_for_items_page() {
1752 -
1607 +
1753 1608 $is_use_hints = get_wpbm_option( 'wpbm_is_use_hints_at_admin_panel' );
1754 1609 if ( $is_use_hints == 'On' )
1755 1610 wpbm_bs_javascript_tooltips(); // JS Tooltips
1756 1611
1757 - wpbm_bs_javascript_popover(); // JS Popover
1758 -
1612 + wpbm_bs_javascript_popover(); // JS Popover
1613 +
1759 1614 //wpbm_datepicker_js(); // JS Datepicker
1760 1615 wpbm_datepicker_css(); // CSS DatePicker
1761 1616 }
1762 1617
@@ -1762,14 +1617,14 @@
1762 1617
1763 1618
1764 1619 /** Datepicker activation JavaScript */
1765 1620 function wpbm_datepicker_js() {
1766 -
1621 +
1767 1622 ?><script type="text/javascript">
1768 1623 jQuery(document).ready( function(){
1769 1624
1770 1625 function applyCSStoDays( date ){
1771 - return [true, 'date_available'];
1626 + return [true, 'date_available'];
1772 1627 }
1773 1628 jQuery('input.wpbm-filters-section-calendar').datepick(
1774 1629 { beforeShowDay: applyCSStoDays,
1775 1630 showOn: 'focus',
@@ -1780,9 +1635,9 @@
1780 1635 nextText: '&raquo;',
1781 1636 dateFormat: 'yy-mm-dd',
1782 1637 changeMonth: false,
1783 1638 changeYear: false,
1784 - minDate: null,
1639 + minDate: null,
1785 1640 maxDate: null, //'1Y',
1786 1641 showStatus: false,
1787 1642 multiSeparator: ', ',
1788 1643 closeAtTop: false,
@@ -1793,9 +1648,9 @@
1793 1648 mandatory: true
1794 1649 }
1795 1650 );
1796 1651 });
1797 - </script><?php
1652 + </script><?php
1798 1653 }
1799 1654
1800 1655
1801 1656 /** Support CSS - datepick, etc... */
@@ -1831,16 +1686,16 @@
1831 1686 height: auto;
1832 1687 }
1833 1688 </style>
1834 1689 <?php
1835 -}
1690 +}
1836 1691
1837 1692
1838 1693 /** Sortable Table JavaScript */
1839 1694 function wpbm_sortable_js() {
1840 1695 ?>
1841 - <script type="text/javascript">
1842 - // Activate Sortable Functionality
1696 + <script type="text/javascript">
1697 + // Activate Sortable Functionality
1843 1698 jQuery( document ).ready(function(){
1844 1699
1845 1700 jQuery('.wpbm_input_table tbody th').css('cursor','move');
1846 1701
@@ -1864,20 +1719,20 @@
1864 1719 });
1865 1720 });
1866 1721 </script>
1867 1722 <?php
1868 -
1723 +
1869 1724 }
1870 1725 // </editor-fold>
1871 1726
1872 1727
1873 -// <editor-fold defaultstate="collapsed" desc=" R e l o a d p a g e " >
1728 +// <editor-fold defaultstate="collapsed" desc=" R e l o a d p a g e " >
1874 1729 ////////////////////////////////////////////////////////////////////////////////
1875 1730 // R e l o a d p a g e
1876 1731 ////////////////////////////////////////////////////////////////////////////////
1877 1732 /**
1878 1733 * Reload page by using JavaScript
1879 - *
1734 + *
1880 1735 * @param string $url - URL of page to load
1881 1736 */
1882 1737 function wpbm_reload_page_by_js( $url ) {
1883 1738
@@ -1884,10 +1739,10 @@
1884 1739 $redir = html_entity_decode( esc_url( $url ) );
1885 1740
1886 1741 if ( ! empty( $redir ) ) {
1887 1742 ?>
1888 - <script type="text/javascript">
1889 - window.location.href = '<?php echo $redir ?>';
1743 + <script type="text/javascript">
1744 + window.location.href = '<?php echo esc_url($redir); ?>';
1890 1745 </script>
1891 1746 <?php
1892 1747 }
1893 1748 }
@@ -1893,9 +1748,9 @@
1893 1748 }
1894 1749
1895 1750
1896 1751 /** Redirect browser to a specific page
1897 - *
1752 + *
1898 1753 * @param string $url - URL of page to redirect
1899 1754 */
1900 1755 function wpbm_redirect( $url ) {
1901 1756
@@ -1903,20 +1758,20 @@
1903 1758
1904 1759 $url = html_entity_decode( esc_url( $url ) );
1905 1760
1906 1761 echo '<script type="text/javascript">';
1907 - echo 'window.location.href="'.$url.'";';
1762 + echo 'window.location.href="'.esc_url($url).'";';
1908 1763 echo '</script>';
1909 1764 echo '<noscript>';
1910 - echo '<meta http-equiv="refresh" content="0;url='.$url.'" />';
1765 + echo '<meta http-equiv="refresh" content="0;url='.esc_url($url).'" />';
1911 1766 echo '</noscript>';
1912 1767 }
1913 1768 // </editor-fold>
1914 1769
1915 1770
1916 -// <editor-fold defaultstate="collapsed" desc=" P a g i n a t i o n o f T a b l e L i s t i n g " >
1771 +// <editor-fold defaultstate="collapsed" desc=" P a g i n a t i o n o f T a b l e L i s t i n g " >
1917 1772 /** Show P a g i n a t i o n
1918 - *
1773 + *
1919 1774 * @param int $summ_number_of_items - total number of items
1920 1775 * @param int $active_page_num - number of activated page
1921 1776 * @param int $num_items_per_page - number of items per page
1922 1777 * @param array $only_these_parameters - array of keys to exclude from links
@@ -1932,11 +1787,10 @@
1932 1787 if ( $pages_number < 2 )
1933 1788 return;
1934 1789
1935 1790 //Fix: 5.1.4 - Just in case we are having tooo much resources, then we need to show all resources - and its empty string
1936 - if ( ( isset($_REQUEST['wh_wpbm_type'] ) ) && ( strlen($_REQUEST['wh_wpbm_type']) > 1000 ) ) {
1937 - $_REQUEST['wh_wpbm_type'] = '';
1938 - }
1791 + // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
1792 + if ( ( isset($_REQUEST['wh_wpbm_type'] ) ) && ( strlen($_REQUEST['wh_wpbm_type']) > 1000 ) ) { $_REQUEST['wh_wpbm_type'] = ''; }
1939 1793
1940 1794 // First parameter will overwriten by $_GET['page'] parameter
1941 1795 $bk_admin_url = wpbm_get_params_in_url( wpbm_get_master_url( false ), array('page_num'), $only_these_parameters );
1942 1796
@@ -1942,9 +1796,9 @@
1942 1796
1943 1797
1944 1798 ?>
1945 1799 <span class="wpdevelop wpbm-pagination">
1946 - <div class="container-fluid">
1800 + <div class="container-fluid">
1947 1801 <div class="row">
1948 1802 <div class="col-sm-12 text-center control-group0">
1949 1803 <nav class="btn-toolbar">
1950 1804 <div class="btn-group wpbm-no-margin" style="float:none;">
@@ -1949,13 +1803,13 @@
1949 1803 <nav class="btn-toolbar">
1950 1804 <div class="btn-group wpbm-no-margin" style="float:none;">
1951 1805
1952 1806 <?php if ( $pages_number > 1 ) { ?>
1953 - <a class="button button-secondary <?php echo ( $active_page_num == 1 ) ? ' disabled' : ''; ?>"
1954 - href="<?php echo $bk_admin_url; ?>&page_num=<?php if ($active_page_num == 1) { echo $active_page_num; } else { echo ($active_page_num-1); } echo $url_sufix; ?>">
1955 - <?php _e('Prev', 'booking-manager'); ?>
1807 + <a class="button button-secondary <?php echo ( $active_page_num == 1 ) ? ' disabled' : ''; ?>"
1808 + href="<?php echo esc_url($bk_admin_url); ?>&page_num=<?php if ($active_page_num == 1) { echo esc_attr( $active_page_num ); } else { echo esc_attr($active_page_num-1); } echo esc_attr( $url_sufix ); ?>">
1809 + <?php esc_html_e('Prev', 'booking-manager'); ?>
1956 1810 </a>
1957 - <?php }
1811 + <?php }
1958 1812
1959 1813 /** Number visible pages (links) that linked to active page, other pages skipped by "..." */
1960 1814 $num_closed_steps = 3;
1961 1815
@@ -1960,23 +1814,23 @@
1960 1814 $num_closed_steps = 3;
1961 1815
1962 1816 for ( $pg_num = 1; $pg_num <= $pages_number; $pg_num++ ) {
1963 1817
1964 - if ( ! (
1965 - ( $pages_number > ( $num_closed_steps * 4) )
1966 - && ( $pg_num > $num_closed_steps )
1967 - && ( ( $pages_number - $pg_num + 1 ) > $num_closed_steps )
1968 - && ( abs( $active_page_num - $pg_num ) > $num_closed_steps )
1818 + if ( ! (
1819 + ( $pages_number > ( $num_closed_steps * 4) )
1820 + && ( $pg_num > $num_closed_steps )
1821 + && ( ( $pages_number - $pg_num + 1 ) > $num_closed_steps )
1822 + && ( abs( $active_page_num - $pg_num ) > $num_closed_steps )
1969 1823 ) ) {
1970 - ?> <a class="button button-secondary <?php if ($pg_num == $active_page_num ) echo ' active'; ?>"
1971 - href="<?php echo $bk_admin_url; ?>&page_num=<?php echo $pg_num; echo $url_sufix; ?>">
1972 - <?php echo $pg_num; ?>
1973 - </a><?php
1824 + ?> <a class="button button-secondary <?php if ($pg_num == $active_page_num ) echo ' active'; ?>"
1825 + href="<?php echo esc_attr( $bk_admin_url ); ?>&page_num=<?php echo esc_attr( $pg_num); echo esc_attr( $url_sufix); ?>">
1826 + <?php echo esc_html($pg_num); ?>
1827 + </a><?php
1974 1828
1975 - if ( ( $pages_number > ( $num_closed_steps * 4) )
1976 - && ( ($pg_num+1) > $num_closed_steps )
1977 - && ( ( $pages_number - ( $pg_num + 1 ) ) > $num_closed_steps )
1978 - && ( abs($active_page_num - ( $pg_num + 1 ) ) > $num_closed_steps )
1829 + if ( ( $pages_number > ( $num_closed_steps * 4) )
1830 + && ( ($pg_num+1) > $num_closed_steps )
1831 + && ( ( $pages_number - ( $pg_num + 1 ) ) > $num_closed_steps )
1832 + && ( abs($active_page_num - ( $pg_num + 1 ) ) > $num_closed_steps )
1979 1833 ) {
1980 1834 echo ' <a class="button button-secondary disabled" href="javascript:void(0);">...</a> ';
1981 1835 }
1982 1836 }
@@ -1982,11 +1836,11 @@
1982 1836 }
1983 1837 }
1984 1838
1985 1839 if ( $pages_number > 1 ) { ?>
1986 - <a class="button button-secondary <?php echo ( $active_page_num == $pages_number ) ? ' disabled' : ''; ?>"
1987 - href="<?php echo $bk_admin_url; ?>&page_num=<?php if ($active_page_num == $pages_number) { echo $active_page_num; } else { echo ($active_page_num+1); } echo $url_sufix; ?>">
1988 - <?php _e('Next', 'booking-manager'); ?>
1840 + <a class="button button-secondary <?php echo ( $active_page_num == $pages_number ) ? ' disabled' : ''; ?>"
1841 + href="<?php echo esc_attr( $bk_admin_url ); ?>&page_num=<?php if ($active_page_num == $pages_number) { echo esc_attr( $active_page_num); } else { echo esc_attr($active_page_num+1); } echo esc_attr( $url_sufix); ?>">
1842 + <?php esc_html_e('Next', 'booking-manager'); ?>
1989 1843 </a>
1990 1844 <?php } ?>
1991 1845
1992 1846 </div>
@@ -1999,9 +1853,9 @@
1999 1853 }
2000 1854 // </editor-fold>
2001 1855
2002 1856
2003 -// <editor-fold defaultstate="collapsed" desc=" D a t e s " >
1857 +// <editor-fold defaultstate="collapsed" desc=" D a t e s " >
2004 1858 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2005 1859 // Dates Format
2006 1860 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2007 1861
@@ -2006,9 +1860,9 @@
2006 1860 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2007 1861
2008 1862
2009 1863 /** Get Formated Date & time
2010 - *
1864 + *
2011 1865 * @param string $date_sql - 2017-07-31 00:00:00 || 2017-07-31
2012 1866 * @param string $date_format - Optional. - "m / d / Y, D H:i:s"
2013 1867 * @param string $seperator - Optional. - " "
2014 1868 * @return string - July 29, 2014 12:00 am
@@ -2013,21 +1867,21 @@
2013 1867 * @param string $seperator - Optional. - " "
2014 1868 * @return string - July 29, 2014 12:00 am
2015 1869 */
2016 1870 function wpbm_get_date_time_formatted( $date_sql, $date_format = false, $seperator = ' ', $skip_midnight_time = false ) {
2017 -
1871 +
2018 1872 $return_date = wpbm_get_date_formatted( $date_sql, $date_format );
2019 -
2020 - $return_time = wpbm_get_time_formatted( $date_sql, $date_format, $skip_midnight_time );
1873 +
1874 + $return_time = wpbm_get_time_formatted( $date_sql, $date_format, $skip_midnight_time );
2021 1875 if ( ! empty( $return_time ) )
2022 1876 $return_date .= $seperator . $return_time;
2023 -
1877 +
2024 1878 return $return_date;
2025 1879 }
2026 1880
2027 1881
2028 1882 /** Get Formated Date
2029 - *
1883 + *
2030 1884 * @param string $date_sql - 2017-07-31 00:00:00 || 2017-07-31
2031 1885 * @param string $date_format - Optional. - "m / d / Y, D"
2032 1886 * @param bool $skip_midnight_time - Default false - if 00:00:00 then return '';
2033 1887 * @return string - July 29, 2014
@@ -2035,17 +1889,17 @@
2035 1889 function wpbm_get_date_formatted( $date_sql, $date_format = false ) {
2036 1890
2037 1891 if ( $date_format === false ) $date_format = get_wpbm_option( 'wpbm_date_format' );
2038 1892 if ( empty( $date_format ) ) $date_format = "m / d / Y, D";
2039 -
1893 +
2040 1894 $formated_date = date_i18n( $date_format, strtotime( $date_sql ) );
2041 -
1895 +
2042 1896 return $formated_date;
2043 1897 }
2044 1898
2045 1899
2046 1900 /** Get Formated Date & time
2047 - *
1901 + *
2048 1902 * @param string $date_sql - 2017-07-31 00:00:00 || 2017-07-31
2049 1903 * @param string $time_format - Optional. - "H:i:s"
2050 1904 * @return string - 12:00 am
2051 1905 */
@@ -2052,20 +1906,20 @@
2052 1906 function wpbm_get_time_formatted( $date_sql, $time_format = false , $skip_midnight_time = false ) {
2053 1907
2054 1908 if ( ( $skip_midnight_time ) && ( '00:00:00' == substr( $date_sql, -8 ) ) )
2055 1909 return '';
2056 -
1910 +
2057 1911 if ( $time_format === false ) $time_format = get_wpbm_option( 'wpbm_time_format' );
2058 1912 if ( empty( $time_format ) ) $time_format = 'h:i a';
2059 -
1913 +
2060 1914 $formated_date = date_i18n( $time_format, strtotime( $date_sql ) );
2061 -
2062 - return $formated_date;
1915 +
1916 + return $formated_date;
2063 1917 }
2064 1918
2065 1919
2066 1920 /** Check if "current_day" is tomorrow from "next_day"
2067 - *
1921 + *
2068 1922 * @param string $current_day_sql_check : 2015-02-29 00:00:00
2069 1923 * @param string $next_day_sql_check : 2015-02-30 00:00:00
2070 1924 * @return boolean : true | false
2071 1925 */
@@ -2072,28 +1926,28 @@
2072 1926 function wpbm_is_next_day( $current_day_sql_check, $next_day_sql_check ) {
2073 1927
2074 1928 // Current day
2075 1929 $current_day_unix = strtotime( $current_day_sql_check );
2076 -
1930 +
2077 1931 $current_day_midnight_sql = date_i18n( 'Y-m-d', $current_day_unix );
2078 1932 $current_day_midnight_unix = strtotime( $current_day_midnight_sql );
2079 -
1933 +
2080 1934 $calc_next_day_unix = strtotime( '+1 day', $current_day_midnight_unix );
2081 -
1935 +
2082 1936 // Next day
2083 - $next_day_unix = strtotime( $next_day_sql_check );
1937 + $next_day_unix = strtotime( $next_day_sql_check );
2084 1938 $next_day_midnight_sql = date_i18n( 'Y-m-d', $next_day_unix );
2085 1939 $next_day_midnight_unix = strtotime( $next_day_midnight_sql );
2086 -
2087 -
2088 - if ( $calc_next_day_unix == $next_day_midnight_unix )
2089 - return true;
2090 - else
2091 - return false;
1940 +
1941 +
1942 + if ( $calc_next_day_unix == $next_day_midnight_unix )
1943 + return true;
1944 + else
1945 + return false;
2092 1946 }
2093 1947
2094 1948 /** Check if "current_day" is same day of "other_day"
2095 - *
1949 + *
2096 1950 * @param string $current_day_sql_check : 2015-02-29 00:00:00
2097 1951 * @param string $other_day_sql_check : 2015-02-30 00:00:00
2098 1952 * @return boolean : true | false
2099 1953 */
@@ -2100,27 +1954,27 @@
2100 1954 function wpbm_is_this_same_day( $current_day_sql_check, $other_day_sql_check ) {
2101 1955
2102 1956 // Current day
2103 1957 $current_day_unix = strtotime( $current_day_sql_check );
2104 -
1958 +
2105 1959 $current_day_midnight_sql = date_i18n( 'Y-m-d', $current_day_unix );
2106 1960 $current_day_midnight_unix = strtotime( $current_day_midnight_sql );
2107 -
1961 +
2108 1962 // Other day
2109 - $other_day_unix = strtotime( $other_day_sql_check );
1963 + $other_day_unix = strtotime( $other_day_sql_check );
2110 1964 $other_day_midnight_sql = date_i18n( 'Y-m-d', $other_day_unix );
2111 1965 $other_day_midnight_unix = strtotime( $other_day_midnight_sql );
2112 -
2113 -
2114 - if ( $current_day_midnight_unix == $other_day_midnight_unix )
2115 - return true;
2116 - else
2117 - return false;
1966 +
1967 +
1968 + if ( $current_day_midnight_unix == $other_day_midnight_unix )
1969 + return true;
1970 + else
1971 + return false;
2118 1972 }
2119 1973
2120 1974
2121 1975 /** Get days in short format view
2122 - *
1976 + *
2123 1977 * @param string $days Dates: 15.05.2015, 16.05.2015, 17.05.2015
2124 1978 * @return string Dates in format: 15.05.2015 - 17.05.2015
2125 1979 */
2126 1980 function wpbm_get_dates_short_format( $dates_sql_csv ) { // $days - string with comma seperated dates
@@ -2134,24 +1988,24 @@
2134 1988 $result_string = '';
2135 1989 $last_show_day = '';
2136 1990
2137 1991 foreach ( $days as $day ) {
2138 -
1992 +
2139 1993 $is_fin_at_end = false;
2140 -
1994 +
2141 1995 if ( $previosday === false ) { // First Day
2142 -
1996 +
2143 1997 $result_string = wpbm_get_date_time_formatted( $day, false, ' ', true ); // echo format for first day
2144 1998 $last_show_day = $day;
2145 1999 $previosday = $day; // Set previos day for next loop
2146 -
2000 +
2147 2001 } else { // Not first day
2148 -
2149 - if (
2150 - wpbm_is_next_day( $previosday, $day )
2151 - || wpbm_is_this_same_day( $previosday, $day )
2002 +
2003 + if (
2004 + wpbm_is_next_day( $previosday, $day )
2005 + || wpbm_is_this_same_day( $previosday, $day )
2152 2006 ) { // Check if $day next day from previous
2153 -
2007 +
2154 2008 $previosday = $day; // Set previos day for next loop
2155 2009 $is_fin_at_end = true;
2156 2010 } else {
2157 2011 if ( $last_show_day !== $previosday ) { // check if previos day was show or no
@@ -2160,10 +2014,10 @@
2160 2014 $result_string .= ', ' . wpbm_get_date_time_formatted( $day, false, ' ', true ); // assign in needed format this day
2161 2015 $previosday = $day; // Set previos day for next loop
2162 2016 $last_show_day = $day;
2163 2017 }
2164 - }
2165 -
2018 + }
2019 +
2166 2020 }
2167 2021
2168 2022 if ( $is_fin_at_end ) {
2169 2023 $result_string .= ' - ' . wpbm_get_date_time_formatted( $day, false, ' ', true );
@@ -2171,5 +2025,5 @@
2171 2025
2172 2026 return $result_string;
2173 2027 }
2174 2028
2175 -// </editor-fold>
2029 +// </editor-fold>