PluginProbe
Booking Calendar / 10.11
Booking Calendar v10.11
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 10.11.4 10.12.0 10.12.1 All 199 releases
booking / core / wpbc.php

wpbc.php in Booking Calendar 10.11, at core/wpbc.php

599 lines 28.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * @version 1.0
4 * @package Booking Calendar
5 * @subpackage Core
6 * @category Bookings
7 *
8 * @author wpdevelop
9 * @link https://wpbookingcalendar.com/
10 * @email info@wpbookingcalendar.com
11 *
12 * @modified 2014.07.29
13 */
14
15 if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
16
17 global $wp_version;
18 $min_wp_version = version_compare( WP_BK_MIN_WP_VERSION, $wp_version, '<=' ); // FixIn: 7.0.1.6.
19 if ( ( ! class_exists( 'Booking_Calendar' ) ) && ( $min_wp_version ) ) :
20
21
22 // General Init Class
23 final class Booking_Calendar {
24
25 static private $instance = NULL;
26
27 public $cron;
28 public $notice;
29 public $booking_obj;
30
31 public $admin_menu;
32 public $js;
33 public $css;
34
35 private $is_wp_inited = false;
36
37 /** Get Single Instance of this Class and Init Plugin */
38 public static function init() {
39
40 if ( ! isset( self::$instance ) && ! ( self::$instance instanceof Booking_Calendar ) ) {
41
42 self::$instance = new Booking_Calendar;
43 self::$instance->includes();
44 self::$instance->define_version();
45
46 add_action( 'init', array( self::$instance, 'wp_inited' ) );
47
48 if ( class_exists( 'WPBC_BookingInstall' ) ) { // Check if we need to run Install / Uninstal process.
49 new WPBC_BookingInstall();
50 }
51
52 /**
53 * Make Ajax, Response, in this case $is_continue_at_frontend = false
54 * or
55 * define Booking Class for front-end side, then $is_continue_at_frontend = true
56 */
57 $is_continue_at_frontend = self::$instance->start();
58
59 make_bk_action('wpbc_booking_calendar_started');
60
61 if ( $is_continue_at_frontend ) { // Possible Load Admin or Front-End page
62
63 self::$instance->js = new WPBC_JS;
64 self::$instance->css = new WPBC_CSS;
65
66 if( is_admin() ) {
67
68 // Define Menu
69 add_action( '_admin_menu', array( self::$instance, 'define_admin_menu') ); // _admin_menu - Fires before the administration menu loads in the admin.
70
71 add_action( 'admin_footer', 'wpbc_print_js', 50 ); // Load my Queued JavaScript Code at the footer of the Admin Panel page. Executed in ALL Admin Menu Pages
72
73 } else {
74
75 if ( function_exists( 'wpbc_br_cache' ) ) $br_cache = wpbc_br_cache(); // Init booking resources cache
76
77 add_action( 'wp_enqueue_scripts', array(self::$instance->css, 'load'), 1000000001 ); // Load CSS at front-end side // Enqueue Scripts to All Client pages
78 add_action( 'wp_enqueue_scripts', array(self::$instance->js, 'load'), 1000000001 ); // Load JavaScript files and define JS varibales at forn-end side
79 add_action( 'wp_footer', 'wpbc_print_js', 50 ); // Load my Queued JavaScript Code at the footer of the page, if executed "wp_footer" hook at the Theme.
80 }
81 }
82
83 }
84 return self::$instance;
85 }
86
87 /**
88 * Set WordPress was inited
89 *
90 * @return void
91 */
92 public function wp_inited(){
93 self::$instance->is_wp_inited = true;
94 }
95
96 /**
97 * Check if WP was inited
98 * @return mixed
99 */
100 public function is_wp_inited(){
101 return self::$instance->is_wp_inited;
102 }
103
104 /** Define Admin Menu items */
105 public function define_admin_menu(){
106
107 $update_count = wpbc_db_get_number_new_bookings();
108 // FixIn: 9.1.3.3.
109 $title = 'WPBC ';//__('Booking', 'booking'); //'&#223;<span style="font-size:0.75em;">&#920;&#920;</span>&kgreen;&imath;&eng;'; // __('Booking', 'booking')
110 $is_user_activated = apply_bk_filter('multiuser_is_current_user_active', true ); // FixIn: 6.0.1.17.
111
112 if ( ( $update_count > 0 ) && ( $is_user_activated ) ) {
113 $update_count_title = "<span class='update-plugins count-$update_count' title=''><span class='update-count bk-update-count'>" . number_format_i18n($update_count) . "</span></span>" ;
114 $title .= $update_count_title;
115 }
116
117 $title = '<div class="name_container" style="display: flex;flex-flow: row nowrap;justify-content: flex-start;align-items: center;min-height: 16px;">'
118 . ' <div class="name_item" style="font-size: 6px;font-weight: 600;margin-left: -4px;margin-top: 12px;margin-right: 0px;word-wrap: normal;white-space: nowrap;position: absolute;">WP</div>'
119 . ' <div class="name_item" style="font-size: 11px;margin-left: -5px;margin-top: -7px;white-space: nowrap;margin-right: 4px;">Booking Calendar</div>';
120 if ( ( $update_count > 0 ) && ( $is_user_activated ) ) {
121 $badge_style= '';
122 } else {
123 $badge_style = 'display:none;';
124 }
125
126 $title .= '<span style="margin-top:-2px;'.$badge_style.'" class="wpbc_badge_count name_item update-plugins count-'.$update_count.'" title=""><span class="update-count bk-update-count" style="white-space: nowrap;word-wrap: normal;">' . number_format_i18n( $update_count ) . '</span></span>';
127 $title .= '</div>';
128
129 /**
130 global $menu;
131 if ( current_user_can( ) ) {
132 $menu[] = array( '', 'read', 'separator-wpbc', '', 'wp-menu-separator wpbc' );
133 }
134 debuge($menu);
135 */
136
137 $booking_menu_position = get_bk_option( 'booking_menu_position' );
138 switch ( $booking_menu_position ) {
139 case 'top':
140 $booking_menu_position = '3.3'; // FixIn: 8.7.7.16.
141 break;
142 case 'middle':
143 global $_wp_last_object_menu; // The index of the last top-level menu in the object menu group
144 $_wp_last_object_menu++;
145 $booking_menu_position = $_wp_last_object_menu; // 58.9;
146 break;
147 case 'bottom':
148 $booking_menu_position = '99.999';
149 break;
150 default:
151 $booking_menu_position = '3.3';
152 break;
153 }
154
155 //FixIn: 9.0.1.7 //scale image by this params: viewBox="-2 -1 20 20"
156 if( 0 ) {
157 // calendar4-range https://icons.getbootstrap.com/icons/calendar4-range/
158 $svg_icon_integarted = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="" viewBox="-2 -1 20 20">'
159 . '<path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v1h14V3a1 1 0 0 0-1-1H2zm13 3H1v9a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5z"/>'
160 . '<path d="M9 7.5a.5.5 0 0 1 .5-.5H15v2H9.5a.5.5 0 0 1-.5-.5v-1zm-2 3v1a.5.5 0 0 1-.5.5H1v-2h5.5a.5.5 0 0 1 .5.5z"/>'
161 . '</svg>';
162
163 //calendar-range https://icons.getbootstrap.com/icons/calendar-range/
164 $svg_icon_integarted = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar-range" viewBox="-2 -1 20 20">'
165 . '<path d="M9 7a1 1 0 0 1 1-1h5v2h-5a1 1 0 0 1-1-1zM1 9h4a1 1 0 0 1 0 2H1V9z"/>'
166 . '<path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z"/>'
167 . '</svg>';
168
169 //calendar2-range https://icons.getbootstrap.com/icons/calendar2-range/
170 $svg_icon_integarted = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-range" viewBox="-2 -1 20 20">'
171 . '<path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2z"/>'
172 . '<path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5V4zM9 8a1 1 0 0 1 1-1h5v2h-5a1 1 0 0 1-1-1zm-8 2h4a1 1 0 1 1 0 2H1v-2z"/>'
173 . '</svg>';
174 }
175 // calendar3-range https://icons.getbootstrap.com/icons/calendar3-range/
176 $svg_icon_integarted = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar3-range" viewBox="-2 -1 20 20">'
177 . '<path d="M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857V3.857z"/>'
178 . '<path d="M7 10a1 1 0 0 0 0-2H1v2h6zm2-3h6V5H9a1 1 0 0 0 0 2z"/>'
179 . '</svg>';
180
181 //$svg_icon_integarted = wpbc_get_svg_logo( '#aaa', '#aaa', '0.2' );
182 $svg_icon_integarted = wpbc_get_svg_logo( '#aaa', '#aaa', '0.4' );
183
184 self::$instance->admin_menu['master'] = new WPBC_Admin_Menus(
185 'wpbc' , array (
186 'in_menu' => 'root'
187 //, 'mune_icon_url' => '/assets/img/icon-16x16.png'
188 , 'mune_icon_url' => $svg_icon_integarted // FixIn: 9.0.1.7.
189 , 'menu_title' => $title
190 , 'menu_title_second' => __('Bookings', 'booking')
191 , 'page_header' => __('Bookings Listing','booking')
192 , 'browser_header' => __('Bookings Listing', 'booking') . ' - ' . __('Booking Calendar', 'booking')
193 , 'user_role' => get_bk_option( 'booking_user_role_booking' )
194 , 'position' => $booking_menu_position // 3.3 - top //( 58.9 ) // - middle
195 /*
196 (Optional). Positions for Core Menu Items
197 2 Dashboard
198 4 Separator
199 5 Posts
200 10 Media
201 15 Links
202 20 Pages
203 25 Comments
204 59 Separator
205 60 Appearance
206 65 Plugins
207 70 Users
208 75 Tools
209 80 Settings
210 99 Separator
211 */
212 )
213 );
214
215 self::$instance->admin_menu['new'] = new WPBC_Admin_Menus(
216 'wpbc-new' , array (
217 'in_menu' => 'wpbc'
218 , 'menu_title' => '+ ' . ucwords( __('Add booking', 'booking') ) // FixIn: 10.9.3.1.
219 , 'page_header' => ucwords( __('Add booking','booking') )
220 , 'browser_header'=> ucwords( __('Add booking', 'booking') ) . ' - ' . __('Booking Calendar', 'booking')
221 , 'user_role' => get_bk_option( 'booking_user_role_addbooking' )
222 )
223 );
224 self::$instance->admin_menu['availability'] = new WPBC_Admin_Menus( // FixIn: 9.3.0.1.
225 'wpbc-availability' , array (
226 'in_menu' => 'wpbc'
227 , 'menu_title' => ucwords( __('Availability', 'booking') )
228 , 'page_header' => ucwords( __('Availability','booking') )
229 , 'browser_header'=> ucwords( __('Availability', 'booking') ) . ' - ' . __('Booking Calendar', 'booking')
230 , 'user_role' => get_bk_option( 'booking_user_role_availability' ) // FixIn: 9.5.2.2.
231 )
232 );
233 //FixIn: 9.8.15.2.4
234 if ( class_exists( 'wpdev_bk_biz_m' ) )
235 self::$instance->admin_menu['prices'] = new WPBC_Admin_Menus(
236 'wpbc-prices' , array (
237 'in_menu' => 'wpbc'
238 , 'menu_title' => __('Prices', 'booking')
239 , 'page_header' => ucwords( __('Booking Prices','booking') )
240 , 'browser_header'=> __('Prices', 'booking') . ' - ' . __('Booking Calendar', 'booking')
241 , 'user_role' => get_bk_option( 'booking_user_role_prices' ) //FixIn: 9.8.15.2.6
242 )
243 );
244 if ( class_exists( 'wpdev_bk_personal' ) ) {
245 self::$instance->admin_menu['resources'] = new WPBC_Admin_Menus(
246 'wpbc-resources' , array (
247 'in_menu' => 'wpbc'
248 , 'menu_title' => __('Resources', 'booking')
249 , 'page_header' => ucwords( __('Booking resources','booking') )
250 , 'browser_header'=> __('Resources', 'booking') . ' - ' . __('Booking Calendar', 'booking')
251 , 'user_role' => get_bk_option( 'booking_user_role_resources' )
252 )
253 );
254 }
255
256
257 if ( ! class_exists( 'wpdev_bk_personal' ) ) { // FixIn: 10.1.3.1.
258 // FixIn: 9.8.15.7.
259 self::$instance->admin_menu['resources'] = new WPBC_Admin_Menus(
260 'wpbc-resources' , array (
261 'in_menu' => 'wpbc'
262 , 'menu_title' => __('Publish', 'booking') // __('Resource', 'booking')
263 , 'page_header' => ucwords( __('Booking resource','booking') )
264 , 'browser_header'=> __('Resource', 'booking') . ' - ' . __('Booking Calendar', 'booking')
265 , 'user_role' => get_bk_option( 'booking_user_role_settings' )
266 )
267 );
268 }
269
270
271 self::$instance->admin_menu['settings'] = new WPBC_Admin_Menus(
272 'wpbc-settings' , array (
273 'in_menu' => 'wpbc'
274 , 'menu_title' => __('Settings', 'booking')
275 , 'page_header' => __('General Settings','booking')
276 , 'browser_header'=> __('Settings', 'booking') . ' - ' . __('Booking Calendar', 'booking')
277 , 'user_role' => get_bk_option( 'booking_user_role_settings' )
278 )
279 );
280
281
282
283
284 if (
285 ( wpbc_is_user_can_access_wizard_page() ) &&
286 ( ! wpbc_setup_wizard_page__is_all_steps_completed() )
287 ){
288
289 $setup_steps = new WPBC_SETUP_WIZARD_STEPS();
290
291 self::$instance->admin_menu['setup'] = new WPBC_Admin_Menus(
292 'wpbc-setup' , array (
293 'in_menu' => 'wpbc'
294 , 'menu_title' => $setup_steps->get_plugin_menu_title__setup_progress()
295 , 'page_header' => ucwords( __('Setup','booking') )
296 , 'browser_header' => ucwords( __('Setup', 'booking') ) . ' - ' . __('Booking Calendar', 'booking')
297 , 'user_role' => get_bk_option( 'booking_user_role_settings' ) //FixIn: 9.8.15.2.6
298 )
299 );
300 }
301
302
303
304 $simulate_user_id = wpbc_mu__is_simulated_login_as_user();
305 if ( ! empty( $simulate_user_id ) ) {
306
307 $custom_user = get_userdata( $simulate_user_id );
308
309 self::$instance->admin_menu['log_off'] = new WPBC_Admin_Menus(
310 'wpbc-log-off' , array (
311 'in_menu' => 'wpbc'
312 //, 'menu_title' => __( 'Log Out Simulated Login as', 'booking' ) . ' "' . $custom_user->display_name . '"'
313 , 'menu_title' => '<span style="color:#fffcdf;font-size: 11px;font-weight: 400;" title="'
314 . esc_attr( __( 'Log out as regular user and login as super booking admin user', 'booking' ) )
315 .'">'
316 .__( 'Back to Super Admin', 'booking' )
317 .'<span>'
318 /* translators: 1: ... */
319 , 'page_header' => ucwords( sprintf( __( 'Need even more functionality? Check %1$s higher versions %2$s', 'booking' ), '', '' ) )
320 , 'browser_header'=> 'Log In as Super Admin'
321 , 'user_role' => get_bk_option( 'booking_user_role_booking' )
322 )
323 );
324 }
325
326
327
328 //FixIn: 8.0.1.6 // FixIn: 10.1.3.1.
329 if ( ! class_exists( 'wpdev_bk_personal' ) ) {
330
331 $is_show_this_menu = get_bk_option('booking_menu_go_pro');
332
333 if ( 'hide' !== $is_show_this_menu )
334 self::$instance->admin_menu['go_pro'] = new WPBC_Admin_Menus(
335 'wpbc-go-pro' , array (
336 'in_menu' => 'wpbc'
337 , 'menu_title' => __('Get Pro', 'booking')
338 /* translators: 1: ... */
339 , 'page_header' => ucwords( sprintf( __( 'Need even more functionality? Check %1$s higher versions %2$s', 'booking' ), '', '' ) )
340 , 'browser_header'=> 'Booking Calendar'
341 , 'user_role' => get_bk_option( 'booking_user_role_booking' )
342 )
343 );
344 }
345
346 }
347
348
349
350 /**
351 * Get Menu Object
352 *
353 * @param type - menu type
354 * @return boolean
355 */
356 public function get_menu_object( $type ) {
357
358 if ( isset( self::$instance->admin_menu[ $type ] ) )
359 return self::$instance->admin_menu[ $type ];
360 else
361 return false;
362 }
363
364
365 // Include Files
366 private function includes() {
367 require_once WPBC_PLUGIN_DIR . '/core/wpbc-include.php' ;
368 }
369
370
371 private function define_version() {
372
373 // GET VERSION NUMBER
374 $plugin_data = wpbc_file__read_header_info( WPBC_FILE , array( 'Name' => 'Plugin Name', 'PluginURI' => 'Plugin URI', 'Version' => 'Version', 'Description' => 'Description', 'Author' => 'Author', 'AuthorURI' => 'Author URI', 'TextDomain' => 'Text Domain', 'DomainPath' => 'Domain Path' ) , 'plugin' );
375 if (!defined('WPDEV_BK_VERSION')) define('WPDEV_BK_VERSION', $plugin_data['Version'] );
376 }
377
378
379 // Cloning instances of the class is forbidden
380 public function __clone() {
381
382 _doing_it_wrong( __FUNCTION__, esc_html__( 'Action is not allowed!', 'booking' ), '1.0' );
383 }
384
385
386 // Unserializing instances of the class is forbidden
387 public function __wakeup() {
388
389 _doing_it_wrong( __FUNCTION__, esc_html__( 'Action is not allowed!', 'booking' ), '1.0' );
390 }
391
392
393 // Initialization
394 private function start(){
395
396 if ( ( defined( 'DOING_AJAX' ) ) && ( DOING_AJAX ) ){ // New A J A X R e s p o n d e r
397
398 if ( 1 ) {
399 $wpdev_booking_obj_in_ajax = new wpdev_booking(); // GO
400 } else {
401 if ( class_exists( 'wpdev_bk_personal' ) ) {
402 $wpdev_bk_personal_in_ajax = new wpdev_bk_personal();
403 }
404 }
405
406 require_once WPBC_PLUGIN_DIR . '/core/lib/wpbc-ajax.php'; // Ajax
407
408 return false;
409 } else { // Usual Loading of plugin
410
411 // We are having Response, its executed in other file: wpbc-response.php
412 if ( WP_BK_RESPONSE )
413 return false;
414
415 if( is_admin() ) {
416 // Define Notices System
417 self::$instance->notice = new WPBC_Notices();
418 }
419
420 // Normal Start
421 self::$instance->booking_obj = new wpdev_booking(); // GO
422
423 // Cron Jobs ..... /////////////////////////////////////////////////
424 self::$instance->cron = new WPBC_Cron();
425 ////////////////////////////////////////////////////////////////////
426 }
427 return true;
428 }
429
430 }
431
432 else: // Its seems that some instance of Booking Calendar still activted!!!
433
434 // FixIn: 7.0.1.6.
435 global $wp_version;
436 $min_wp_version = version_compare( WP_BK_MIN_WP_VERSION, $wp_version, '<=' );
437
438 // FixIn: 7.0.1.6.
439 function wpbc_show_min_wp_version_error() {
440
441 $message_type = 'error';
442 $title = __( 'Error' , 'booking') . '!';
443
444
445 $message = 'Booking Calendar ';
446
447 $booking_version_num = get_option( 'booking_version_num');
448 if ( ! empty( $booking_version_num ) )
449 $message .= '<strong>' . $booking_version_num . '</strong> ';
450
451
452 global $wp_version;
453
454 $message .= sprintf( 'require minimum %s . You are using %s. '
455 , ' <strong>' . 'WordPress ' . WP_BK_MIN_WP_VERSION . '</strong>'
456 , ' <strong>' . 'WordPress ' . $wp_version . '</strong>' );
457 if ( current_user_can( 'update_core' ) ){
458 $message .= ' <a href="' . esc_url( self_admin_url( 'update-core.php' ) ) . '">' . 'Return to Dashboard &rarr; Updates' . '</a>';
459 }
460
461
462 $message_content = '';
463
464 $message_content .= '<div class="clear"></div>';
465
466 $message_content .= '<div class="updated wpbc-settings-notice notice-' . $message_type . ' ' . $message_type . '" style="text-align:left;padding:10px;">';
467
468 if ( ! empty( $title ) )
469 $message_content .= '<strong>' . esc_js( $title ) . '</strong> ';
470
471 $message_content .= html_entity_decode( esc_js( $message ) ,ENT_QUOTES) ;
472
473 $message_content .= '</div>';
474
475 $message_content .= '<div class="clear"></div>';
476
477 echo wp_kses_post( $message_content );
478 }
479
480 function wpbc_show_activation_error() {
481
482 $message_type = 'error';
483 $title = __( 'Error' , 'booking') . '!';
484 $message = 'Please deactivate previous old version of' . ' ' . 'Booking Calendar';
485
486 $booking_version_num = get_option( 'booking_version_num');
487 if ( ! empty( $booking_version_num ) )
488 $message .= ' <strong>' . $booking_version_num . '</strong>';
489
490
491 $is_delete_if_deactive = get_bk_option( 'booking_is_delete_if_deactive' ); // check
492
493 if ( $is_delete_if_deactive == 'On' ) {
494
495 $message .= '<br/><br/> <strong>Warning!</strong> ' . 'All plugin data will be deleted when plugin had deactivated.' . ' '
496 . sprintf( 'If you want to save your plugin data, please uncheck the %s"Delete plugin data"%s at the', '<strong>', '</strong>') . ' ' . __( 'Settings' , 'booking' ) . '.';
497 }
498
499 $message_content = '';
500
501 $message_content .= '<div class="clear"></div>';
502
503 $message_content .= '<div class="updated wpbc-settings-notice notice-' . $message_type . ' ' . $message_type . '" style="text-align:left;padding:10px;">';
504
505 if ( ! empty( $title ) )
506 $message_content .= '<strong>' . esc_js( $title ) . '</strong> ';
507
508 $message_content .= html_entity_decode( esc_js( $message ) ,ENT_QUOTES) ;
509
510 $message_content .= '</div>';
511
512 $message_content .= '<div class="clear"></div>';
513
514 echo wp_kses_post( $message_content );
515 }
516
517
518 if ( ! $min_wp_version ) // FixIn: 7.0.1.6.
519 add_action('admin_notices', 'wpbc_show_min_wp_version_error');
520 else
521 add_action('admin_notices', 'wpbc_show_activation_error');
522
523 return; // Exit
524
525 endif;
526
527
528 /**
529 * The main function responsible for returning the one true Instance to functions everywhere.
530 *
531 * Example: <?php $wpbc = WPBC(); ?>
532 */
533 function WPBC() {
534 return Booking_Calendar::init();
535 }
536
537
538
539 // Start
540 WPBC();
541
542
543
544 //if ( ! defined( 'SAVEQUERIES') ) define('SAVEQUERIES', true);
545
546 //add_action( 'admin_footer', 'show_debug_info', 130 );
547 function show_debug_info() {
548
549 $server_request_uri = ( ( isset( $_SERVER['REQUEST_URI'] ) ) ? sanitize_text_field( $_SERVER['REQUEST_URI'] ) : '' ); /* phpcs:ignore WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.MissingUnslash */ /* FixIn: sanitize_unslash */
550 $request_uri = $server_request_uri; //FixIn:5.4.1
551 if ( strpos( $request_uri, 'page=wpbc') === false ) {
552 return;
553 }
554 echo '<div style="width:800px;margin:10px auto;"><style type="text/css"> a:link{background: inherit !important; } pre { white-space: pre-wrap; }</style>';
555 // phpcs:ignore WordPress.PHP.DevelopmentFunctions.prevent_path_disclosure_phpinfo
556 phpinfo(); echo '</div>'; return;
557
558 ?><div style="width:auto;margin:0 0 0 215px;font-size:11px; "><?php
559
560 // SYSTEM INFO SHOWING ////////////////////////////////////////////////////////
561
562 //Note firstly need to define this in functions.php file: define('SAVEQUERIES', true);
563 global $wpdb;
564 echo '<div class="clear"></div>START SYSTEM<pre>';
565 $qq_kk = 0;
566 $total_time = 0;
567 $total_num = 0;
568 foreach ( $wpdb->queries as $qq_k => $qq ) {
569 if (
570 ( strpos( $qq[0], 'booking') !== false )
571
572 ) {
573 if ( $qq[1] > 0.002 ) { echo '<div style="color:#A77;font-weight:bold;">'; }
574 debuge($qq_kk++, $qq);
575 $total_time += $qq[1];
576 $total_num++;
577 if ( $qq[1] > 0.002 ) { echo '</div>'; }
578 }
579 }
580
581 echo '<div><pre class="prettyprint linenums" style="font-size:18px;">[' . esc_html( $total_num . '/' . $total_time ) . '] WPBC Requests TOTAL TIME</pre></div>';
582
583 echo '<div class="clear"></div>';
584
585 echo '<div><pre class="prettyprint linenums" style="font-size:18px;">' . esc_html( get_num_queries() . '/' . timer_stop( 0, 3 ) ) . 'qps</pre></div>';
586
587 echo '<div class="clear"></div>';
588
589 echo "</pre>";
590 ?><br/><br/><br/><br/><br/><br/><?php
591 echo '<div class="clear"></div>';
592
593 ////////////////////////////////////////////////////////////////////////////////
594 ?></div><?php
595
596 echo '</div>';
597 }
598
599