PluginProbe
Booking Calendar / 11.5
Booking Calendar v11.5
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 11.5, at core/wpbc.php

597 lines 27.1 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 $wpbc_min_wp_version = version_compare( WP_BK_MIN_WP_VERSION, $wp_version, '<=' ); // FixIn: 7.0.1.6.
19 if ( ( ! class_exists( 'Booking_Calendar' ) ) && ( $wpbc_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 $booking_menu_position = get_bk_option( 'booking_menu_position' );
131 switch ( $booking_menu_position ) {
132 case 'top':
133 $booking_menu_position = '3.3'; // FixIn: 8.7.7.16.
134 break;
135 case 'middle':
136 global $_wp_last_object_menu; // The index of the last top-level menu in the object menu group
137 $_wp_last_object_menu++;
138 $booking_menu_position = $_wp_last_object_menu; // 58.9;
139 break;
140 case 'bottom':
141 $booking_menu_position = '99.999';
142 break;
143 default:
144 $booking_menu_position = '3.3';
145 break;
146 }
147
148 // FixIn: 10.11.3.3.
149
150 // //FixIn: 9.0.1.7 //scale image by this params: viewBox="-2 -1 20 20"
151 // if( 0 ) {
152 // // calendar4-range https://icons.getbootstrap.com/icons/calendar4-range/
153 // $svg_icon_integarted = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="" viewBox="-2 -1 20 20">'
154 // . '<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"/>'
155 // . '<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"/>'
156 // . '</svg>';
157 //
158 // //calendar-range https://icons.getbootstrap.com/icons/calendar-range/
159 // $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">'
160 // . '<path d="M9 7a1 1 0 0 1 1-1h5v2h-5a1 1 0 0 1-1-1zM1 9h4a1 1 0 0 1 0 2H1V9z"/>'
161 // . '<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"/>'
162 // . '</svg>';
163 //
164 // //calendar2-range https://icons.getbootstrap.com/icons/calendar2-range/
165 // $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">'
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-.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"/>'
167 // . '<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"/>'
168 // . '</svg>';
169 // }
170 // // calendar3-range https://icons.getbootstrap.com/icons/calendar3-range/
171 // $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">'
172 // . '<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"/>'
173 // . '<path d="M7 10a1 1 0 0 0 0-2H1v2h6zm2-3h6V5H9a1 1 0 0 0 0 2z"/>'
174 // . '</svg>';
175
176 $svg_icon_integarted = wpbc_get_svg_logo( '#aaa', '#aaa', '0.4' ); // '#aaa', '#aaa', '0.2' .
177
178 self::$instance->admin_menu['master'] = new WPBC_Admin_Menus(
179 'wpbc' , array (
180 'in_menu' => 'root'
181 //, 'mune_icon_url' => '/assets/img/icon-16x16.png'
182 , 'mune_icon_url' => $svg_icon_integarted // FixIn: 9.0.1.7.
183 , 'menu_title' => $title
184 , 'menu_title_second' => __('Bookings', 'booking')
185 , 'page_header' => __('Bookings Listing','booking')
186 , 'browser_header' => __('Bookings Listing', 'booking') . ' - ' . __('Booking Calendar', 'booking')
187 , 'user_role' => get_bk_option( 'booking_user_role_booking' )
188 , 'position' => $booking_menu_position // 3.3 - top //( 58.9 ) // - middle
189 /*
190 (Optional). Positions for Core Menu Items
191 2 Dashboard
192 4 Separator
193 5 Posts
194 10 Media
195 15 Links
196 20 Pages
197 25 Comments
198 59 Separator
199 60 Appearance
200 65 Plugins
201 70 Users
202 75 Tools
203 80 Settings
204 99 Separator
205 */
206 )
207 );
208
209 self::$instance->admin_menu['new'] = new WPBC_Admin_Menus(
210 'wpbc-new',
211 array(
212 'in_menu' => 'wpbc',
213 'menu_title' => '+ ' . ucwords( __( 'Add booking', 'booking' ) ), // FixIn: 10.9.3.1.
214 'page_header' => ucwords( __( 'Add booking', 'booking' ) ),
215 'browser_header' => ucwords( __( 'Add booking', 'booking' ) ) . ' - ' . __( 'Booking Calendar', 'booking' ),
216 'user_role' => get_bk_option( 'booking_user_role_addbooking' ),
217 )
218 );
219
220 self::$instance->admin_menu['availability'] = new WPBC_Admin_Menus( // FixIn: 9.3.0.1.
221 'wpbc-availability' , array (
222 'in_menu' => 'wpbc'
223 , 'menu_title' => ucwords( __('Availability', 'booking') )
224 , 'page_header' => ucwords( __('Availability','booking') )
225 , 'browser_header'=> ucwords( __('Availability', 'booking') ) . ' - ' . __('Booking Calendar', 'booking')
226 , 'user_role' => get_bk_option( 'booking_user_role_availability' ) // FixIn: 9.5.2.2.
227 )
228 );
229 //FixIn: 9.8.15.2.4
230 if ( class_exists( 'wpdev_bk_biz_m' ) )
231 self::$instance->admin_menu['prices'] = new WPBC_Admin_Menus(
232 'wpbc-prices' , array (
233 'in_menu' => 'wpbc'
234 , 'menu_title' => __('Prices', 'booking')
235 , 'page_header' => ucwords( __('Booking Prices','booking') )
236 , 'browser_header'=> __('Prices', 'booking') . ' - ' . __('Booking Calendar', 'booking')
237 , 'user_role' => get_bk_option( 'booking_user_role_prices' ) //FixIn: 9.8.15.2.6
238 )
239 );
240 if ( class_exists( 'wpdev_bk_personal' ) ) {
241 self::$instance->admin_menu['resources'] = new WPBC_Admin_Menus(
242 'wpbc-resources' , array (
243 'in_menu' => 'wpbc'
244 , 'menu_title' => __('Resources', 'booking')
245 , 'page_header' => ucwords( __('Booking resources','booking') )
246 , 'browser_header'=> __('Resources', 'booking') . ' - ' . __('Booking Calendar', 'booking')
247 , 'user_role' => get_bk_option( 'booking_user_role_resources' )
248 )
249 );
250 }
251
252
253 if ( ! class_exists( 'wpdev_bk_personal' ) ) { // FixIn: 10.1.3.1.
254 // FixIn: 9.8.15.7.
255 self::$instance->admin_menu['resources'] = new WPBC_Admin_Menus(
256 'wpbc-resources' , array (
257 'in_menu' => 'wpbc'
258 , 'menu_title' => __('Publish', 'booking') // __('Resource', 'booking')
259 , 'page_header' => ucwords( __('Booking resource','booking') )
260 , 'browser_header'=> __('Resource', 'booking') . ' - ' . __('Booking Calendar', 'booking')
261 , 'user_role' => get_bk_option( 'booking_user_role_settings' )
262 )
263 );
264 }
265
266 if ( function_exists( 'wpbc_is_11_5_features_enabled' ) && wpbc_is_11_5_features_enabled() ) {
267 self::$instance->admin_menu['services'] = new WPBC_Admin_Menus(
268 'wpbc-services',
269 array(
270 'in_menu' => 'wpbc',
271 'menu_title' => __( 'Services', 'booking' ),
272 'page_header' => __( 'Services', 'booking' ),
273 'browser_header' => __( 'Services', 'booking' ) . ' - ' . __( 'Booking Calendar', 'booking' ),
274 'user_role' => get_bk_option( 'booking_user_role_settings' ),
275 )
276 );
277 }
278
279
280 self::$instance->admin_menu['settings'] = new WPBC_Admin_Menus(
281 'wpbc-settings' , array (
282 'in_menu' => 'wpbc'
283 , 'menu_title' => __('Settings', 'booking')
284 , 'page_header' => __('General Settings','booking')
285 , 'browser_header'=> __('Settings', 'booking') . ' - ' . __('Booking Calendar', 'booking')
286 , 'user_role' => get_bk_option( 'booking_user_role_settings' )
287 )
288 );
289
290
291
292
293 if (
294 ( wpbc_is_user_can_access_wizard_page() ) &&
295 ( ! wpbc_setup_wizard_page__is_all_steps_completed() )
296 ){
297
298 $setup_steps = new WPBC_SETUP_WIZARD_STEPS();
299
300 self::$instance->admin_menu['setup'] = new WPBC_Admin_Menus(
301 'wpbc-setup' , array (
302 'in_menu' => 'wpbc'
303 , 'menu_title' => $setup_steps->get_plugin_menu_title__setup_progress()
304 , 'page_header' => ucwords( __('Setup','booking') )
305 , 'browser_header' => ucwords( __('Setup', 'booking') ) . ' - ' . __('Booking Calendar', 'booking')
306 , 'user_role' => get_bk_option( 'booking_user_role_settings' ) //FixIn: 9.8.15.2.6
307 )
308 );
309 }
310
311
312
313 $simulate_user_id = wpbc_mu__is_simulated_login_as_user();
314 if ( ! empty( $simulate_user_id ) ) {
315
316 $custom_user = get_userdata( $simulate_user_id );
317
318 self::$instance->admin_menu['log_off'] = new WPBC_Admin_Menus(
319 'wpbc-log-off' , array (
320 'in_menu' => 'wpbc'
321 //, 'menu_title' => __( 'Log Out Simulated Login as', 'booking' ) . ' "' . $custom_user->display_name . '"'
322 , 'menu_title' => '<span style="color:#fffcdf;font-size: 11px;font-weight: 400;" title="'
323 . esc_attr( __( 'Log out as regular user and login as super booking admin user', 'booking' ) )
324 .'">'
325 .__( 'Back to Super Admin', 'booking' )
326 .'<span>'
327 /* translators: 1: ... */
328 , 'page_header' => ucwords( sprintf( __( 'Need even more functionality? Check %1$s higher versions %2$s', 'booking' ), '', '' ) )
329 , 'browser_header'=> 'Log In as Super Admin'
330 , 'user_role' => get_bk_option( 'booking_user_role_booking' )
331 )
332 );
333 }
334 }
335
336
337
338 /**
339 * Get Menu Object
340 *
341 * @param type - menu type
342 * @return boolean
343 */
344 public function get_menu_object( $type ) {
345
346 if ( isset( self::$instance->admin_menu[ $type ] ) )
347 return self::$instance->admin_menu[ $type ];
348 else
349 return false;
350 }
351
352
353 // Include Files
354 private function includes() {
355 require_once WPBC_PLUGIN_DIR . '/includes/wpbc-include.php' ;
356 }
357
358
359 private function define_version() {
360
361 // GET VERSION NUMBER
362 $plugin_data = wpbc_file__read_header_info( WPBC_FILE, array(
363 'Name' => 'Plugin Name',
364 'PluginURI' => 'Plugin URI',
365 'Version' => 'Version',
366 'Description' => 'Description',
367 'Author' => 'Author',
368 'AuthorURI' => 'Author URI',
369 'TextDomain' => 'Text Domain',
370 'DomainPath' => 'Domain Path',
371 ), 'plugin' );
372 if ( ! defined( 'WPDEV_BK_VERSION' ) ) {
373 define( 'WPDEV_BK_VERSION', $plugin_data['Version'] );
374 }
375 }
376
377
378 // Cloning instances of the class is forbidden
379 public function __clone() {
380
381 _doing_it_wrong( __FUNCTION__, esc_html__( 'Action is not allowed!', 'booking' ), '1.0' );
382 }
383
384
385 // Unserializing instances of the class is forbidden
386 public function __wakeup() {
387
388 _doing_it_wrong( __FUNCTION__, esc_html__( 'Action is not allowed!', 'booking' ), '1.0' );
389 }
390
391
392 // Initialization
393 private function start(){
394
395 if ( ( defined( 'DOING_AJAX' ) ) && ( DOING_AJAX ) ){ // New A J A X R e s p o n d e r
396
397 if ( 1 ) {
398 $wpdev_booking_obj_in_ajax = new wpdev_booking(); // GO
399 } else {
400 if ( class_exists( 'wpdev_bk_personal' ) ) {
401 $wpdev_bk_personal_in_ajax = new wpdev_bk_personal();
402 }
403 }
404
405 require_once WPBC_PLUGIN_DIR . '/core/lib/wpbc-ajax.php'; // Ajax
406
407 return false;
408 } else { // Usual Loading of plugin
409
410 // We are having Response, its executed in other file: wpbc-response.php
411 if ( WP_BK_RESPONSE )
412 return false;
413
414 if( is_admin() ) {
415 // Define Notices System
416 self::$instance->notice = new WPBC_Notices();
417 }
418
419 // Normal Start
420 self::$instance->booking_obj = new wpdev_booking(); // GO
421
422 // Cron Jobs ..... /////////////////////////////////////////////////
423 self::$instance->cron = new WPBC_Cron();
424 ////////////////////////////////////////////////////////////////////
425 }
426 return true;
427 }
428
429 }
430
431 else: // Its seems that some instance of Booking Calendar still activted!!!
432
433 // FixIn: 7.0.1.6.
434 global $wp_version;
435 $wpbc_min_wp_version = version_compare( WP_BK_MIN_WP_VERSION, $wp_version, '<=' );
436
437 // FixIn: 7.0.1.6.
438 function wpbc_show_min_wp_version_error() {
439
440 $message_type = 'error';
441 $title = __( 'Error' , 'booking') . '!';
442
443
444 $message = 'Booking Calendar ';
445
446 $booking_version_num = get_option( 'booking_version_num');
447 if ( ! empty( $booking_version_num ) )
448 $message .= '<strong>' . $booking_version_num . '</strong> ';
449
450
451 global $wp_version;
452
453 $message .= sprintf( 'require minimum %s . You are using %s. '
454 , ' <strong>' . 'WordPress ' . WP_BK_MIN_WP_VERSION . '</strong>'
455 , ' <strong>' . 'WordPress ' . $wp_version . '</strong>' );
456 if ( current_user_can( 'update_core' ) ){
457 $message .= ' <a href="' . esc_url( self_admin_url( 'update-core.php' ) ) . '">' . 'Return to Dashboard &rarr; Updates' . '</a>';
458 }
459
460
461 $message_content = '';
462
463 $message_content .= '<div class="clear"></div>';
464
465 $message_content .= '<div class="updated wpbc-settings-notice notice-' . $message_type . ' ' . $message_type . '" style="text-align:left;padding:10px;">';
466
467 if ( ! empty( $title ) )
468 $message_content .= '<strong>' . esc_js( $title ) . '</strong> ';
469
470 $message_content .= html_entity_decode( esc_js( $message ) ,ENT_QUOTES) ;
471
472 $message_content .= '</div>';
473
474 $message_content .= '<div class="clear"></div>';
475
476 echo wp_kses_post( $message_content );
477 }
478
479 function wpbc_show_activation_error() {
480
481 $message_type = 'error';
482 $title = __( 'Error' , 'booking') . '!';
483 $message = 'Please deactivate previous old version of' . ' ' . 'Booking Calendar';
484
485 $booking_version_num = get_option( 'booking_version_num');
486 if ( ! empty( $booking_version_num ) )
487 $message .= ' <strong>' . $booking_version_num . '</strong>';
488
489
490 $is_delete_if_deactive = get_bk_option( 'booking_is_delete_if_deactive' ); // check
491
492 if ( $is_delete_if_deactive == 'On' ) {
493
494 $message .= '<br/><br/> <strong>Warning!</strong> ' . 'All plugin data will be deleted when plugin had deactivated.' . ' '
495 . sprintf( 'If you want to save your plugin data, please uncheck the %s"Delete plugin data"%s at the', '<strong>', '</strong>') . ' ' . __( 'Settings' , 'booking' ) . '.';
496 }
497
498 $message_content = '';
499
500 $message_content .= '<div class="clear"></div>';
501
502 $message_content .= '<div class="updated wpbc-settings-notice notice-' . $message_type . ' ' . $message_type . '" style="text-align:left;padding:10px;">';
503
504 if ( ! empty( $title ) )
505 $message_content .= '<strong>' . esc_js( $title ) . '</strong> ';
506
507 $message_content .= html_entity_decode( esc_js( $message ) ,ENT_QUOTES) ;
508
509 $message_content .= '</div>';
510
511 $message_content .= '<div class="clear"></div>';
512
513 echo wp_kses_post( $message_content );
514 }
515
516
517 if ( ! $wpbc_min_wp_version ) // FixIn: 7.0.1.6.
518 add_action('admin_notices', 'wpbc_show_min_wp_version_error');
519 else
520 add_action('admin_notices', 'wpbc_show_activation_error');
521
522 return; // Exit
523
524 endif;
525
526
527 /**
528 * The main function responsible for returning the one true Instance to functions everywhere.
529 *
530 * Example: <?php $wpbc = WPBC(); ?>
531 */
532 function WPBC() {
533 return Booking_Calendar::init();
534 }
535
536
537
538 // Start
539 WPBC();
540
541
542
543 //if ( ! defined( 'SAVEQUERIES') ) define('SAVEQUERIES', true);
544
545 //add_action( 'admin_footer', 'wpbc_show_debug_info', 130 );
546 function wpbc_show_debug_info() {
547
548 $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 */
549 $request_uri = $server_request_uri; //FixIn:5.4.1
550 if ( strpos( $request_uri, 'page=wpbc') === false ) {
551 return;
552 }
553 echo '<div style="width:800px;margin:10px auto;"><style type="text/css"> a:link{background: inherit !important; } pre { white-space: pre-wrap; }</style>';
554 // phpcs:ignore WordPress.PHP.DevelopmentFunctions.prevent_path_disclosure_phpinfo
555 phpinfo(); echo '</div>'; return;
556
557 ?><div style="width:auto;margin:0 0 0 215px;font-size:11px; "><?php
558
559 // SYSTEM INFO SHOWING ////////////////////////////////////////////////////////
560
561 //Note firstly need to define this in functions.php file: define('SAVEQUERIES', true);
562 global $wpdb;
563 echo '<div class="clear"></div>START SYSTEM<pre>';
564 $qq_kk = 0;
565 $total_time = 0;
566 $total_num = 0;
567 foreach ( $wpdb->queries as $qq_k => $qq ) {
568 if (
569 ( strpos( $qq[0], 'booking') !== false )
570
571 ) {
572 if ( $qq[1] > 0.002 ) { echo '<div style="color:#A77;font-weight:bold;">'; }
573 debuge($qq_kk++, $qq);
574 $total_time += $qq[1];
575 $total_num++;
576 if ( $qq[1] > 0.002 ) { echo '</div>'; }
577 }
578 }
579
580 echo '<div><pre class="prettyprint linenums" style="font-size:18px;">[' . esc_html( $total_num . '/' . $total_time ) . '] WPBC Requests TOTAL TIME</pre></div>';
581
582 echo '<div class="clear"></div>';
583
584 echo '<div><pre class="prettyprint linenums" style="font-size:18px;">' . esc_html( get_num_queries() . '/' . timer_stop( 0, 3 ) ) . 'qps</pre></div>';
585
586 echo '<div class="clear"></div>';
587
588 echo "</pre>";
589 ?><br/><br/><br/><br/><br/><br/><?php
590 echo '<div class="clear"></div>';
591
592 ////////////////////////////////////////////////////////////////////////////////
593 ?></div><?php
594
595 echo '</div>';
596 }
597