PluginProbe
Booking Calendar / 10.11
Booking Calendar v10.11
11.8.1 11.8 11.7 11.6.1 11.6 11.5 11.4.3 11.4.2 11.4.1 11.4 11.3 11.2.1 11.2 11.1 11.0 10.15.7 10.15.6 10.1.3 10.10 10.10.1 10.10.2 10.11 10.11.2 10.11.3 10.11.4 All 201 releases
booking / core / sync / wpbc-gcal.php

wpbc-gcal.php in Booking Calendar 10.11, at core/sync/wpbc-gcal.php

343 lines 19.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 Google Calendar Import
6 * @category Data Sync
7 *
8 * @author wpdevelop
9 * @link https://wpbookingcalendar.com/
10 * @email info@wpbookingcalendar.com
11 *
12 * @modified 2014.06.27
13 * @since 5.2.0
14 */
15
16 if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
17
18
19 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
20 // A J A X
21 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
22
23 // FixIn: 9.6.3.5.
24
25 function wpbc_silent_import_all_events() {
26
27
28
29 global $wpdb;
30
31 $wpbc_Google_Calendar = new WPBC_Google_Calendar();
32
33 $wpbc_Google_Calendar->setSilent();
34
35 $wpbc_Google_Calendar->set_timezone( get_bk_option('booking_gcal_timezone') );
36
37 $wpbc_Google_Calendar->set_events_max( get_bk_option( 'booking_gcal_events_max') );
38
39 $wpbc_Google_Calendar->set_events_from_with_array(
40 array( get_bk_option( 'booking_gcal_events_from')
41 , get_bk_option( 'booking_gcal_events_from_offset' )
42 , get_bk_option( 'booking_gcal_events_from_offset_type' ) )
43 );
44
45 $wpbc_Google_Calendar->set_events_until_with_array(
46 array( get_bk_option( 'booking_gcal_events_until')
47 , get_bk_option( 'booking_gcal_events_until_offset' )
48 , get_bk_option( 'booking_gcal_events_until_offset_type' ) )
49 );
50
51 if ( ! class_exists('wpdev_bk_personal') ) {
52
53 $wpbc_Google_Calendar->setUrl( get_bk_option( 'booking_gcal_feed') );
54 $import_result = $wpbc_Google_Calendar->run();
55
56 } else {
57
58 // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared
59 $types_list = $wpdb->get_results( "SELECT booking_type_id, import FROM {$wpdb->prefix}bookingtypes" );
60
61 foreach ($types_list as $wpbc_booking_resource) {
62 $wpbc_booking_resource_id = $wpbc_booking_resource->booking_type_id;
63 $wpbc_booking_resource_feed = $wpbc_booking_resource->import;
64 if ( (! empty($wpbc_booking_resource_feed) ) && ($wpbc_booking_resource_feed != NULL ) && ( $wpbc_booking_resource_feed != '/' ) ) {
65
66 $wpbc_Google_Calendar->setUrl($wpbc_booking_resource_feed);
67 $wpbc_Google_Calendar->setResource($wpbc_booking_resource_id);
68
69 // FixIn: 9.9.0.25.
70 if ( function_exists( 'wpbm_delete_all_imported_bookings' ) ) {
71 wpbm_delete_all_imported_bookings( array( 'resource_id' => $wpbc_booking_resource_id ) );
72 }
73 $import_result = $wpbc_Google_Calendar->run();
74 }
75 }
76 }
77 // debuge(2);
78 }
79 add_bk_action('wpbc_silent_import_all_events' , 'wpbc_silent_import_all_events' );
80
81 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
82 // Fields for Modal window
83 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
84
85 function wpbc_gcal_settings_content_field_from( $booking_gcal_events_from, $booking_gcal_events_from_offset = '', $booking_gcal_events_from_offset_type = '' ) {
86 if ($booking_gcal_events_from == "date") {
87 echo '<style type="text/css"> .booking_gcal_events_from .wpbc_offset_value { display:none; } </style>';
88 } else {
89 echo '<style type="text/css"> .booking_gcal_events_from .wpbc_offset_datetime { display:none; } </style>';
90 }
91 ?>
92 <tr valign="top">
93 <th scope="row"><label for="booking_gcal_events_from" ><?php esc_html_e('From' ,'booking'); ?>:</label></th>
94 <td class="booking_gcal_events_from">
95 <select id="booking_gcal_events_from" name="booking_gcal_events_from"
96 onchange="javascript: if(this.value=='date') {
97 jQuery('.booking_gcal_events_from .wpbc_offset_value').hide();
98 jQuery('.booking_gcal_events_from .wpbc_offset_datetime').show();
99 } else {
100 jQuery('.booking_gcal_events_from .wpbc_offset_value').show();
101 jQuery('.booking_gcal_events_from .wpbc_offset_datetime').hide();
102 }
103 jQuery('#booking_gcal_events_from_offset').val('');" >
104 <?php
105 $wpbc_options = array(
106 "now" => __('Now' ,'booking')
107 , "today" => __('00:00 today' ,'booking')
108 , "week" => __('Start of current week' ,'booking')
109 , "month-start" => __('Start of current month' ,'booking')
110 , "month-end" => __('End of current month' ,'booking')
111 , "any" => __('The start of time' ,'booking')
112 , "date" => __('Specific date / time' ,'booking')
113 );
114 foreach ($wpbc_options as $key => $value) {
115 ?><option <?php if( $booking_gcal_events_from == $key ) echo "selected"; ?> value="<?php
116 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
117 echo $key; ?>"><?php echo esc_html( $value ); ?></option><?php
118 }
119 ?>
120 </select>
121 <span class="description"><?php esc_html_e('Select option, when to start retrieving events.' ,'booking'); ?></span>
122 <div class="booking_gcal_events_from_offset" style="margin:10px 0 0;">
123 <label for="booking_gcal_events_from_offset"> <span class="wpbc_offset_value"><?php esc_html_e('Offset' ,'booking'); ?></span><span class="wpbc_offset_datetime" ><?php esc_html_e('Enter date / time' ,'booking'); ?></span>: </label>
124 <input type="text" id="booking_gcal_events_from_offset" name="booking_gcal_events_from_offset" value="<?php
125 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
126 echo $booking_gcal_events_from_offset; ?>" style="width:100px;text-align: right;" />
127 <span class="wpbc_offset_value">
128 <select id="booking_gcal_events_from_offset_type" name="booking_gcal_events_from_offset_type" style="margin-top: -2px;width: 99px;">
129 <?php
130 $wpbc_options = array(
131 "second" => __('seconds' ,'booking')
132 , "minute" => __('minutes' ,'booking')
133 , "hour" => __('hours' ,'booking')
134 , "day" => __('days' ,'booking')
135 );
136 foreach ($wpbc_options as $key => $value) {
137 ?><option <?php if( $booking_gcal_events_from_offset_type == $key ) echo "selected"; ?> value="<?php
138 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
139 echo $key; ?>"><?php echo esc_html( $value ); ?></option><?php
140 }
141 ?>
142 </select>
143 <span class="description"><?php esc_html_e('You can specify an additional offset from you chosen start point. The offset can be negative.' ,'booking'); ?></span>
144 </span>
145 <span class="wpbc_offset_datetime">
146 <em><?php
147 /* translators: 1: ... */
148 echo wp_kses_post( sprintf( __( 'Type your date in format %1$s. Example: %2$s', 'booking' ), 'Y-m-d', '2014-08-01' ) ); ?></em>
149 </span>
150 </div>
151 </td>
152 </tr>
153 <?php
154 }
155
156
157 function wpbc_gcal_settings_content_field_until( $booking_gcal_events_until, $booking_gcal_events_until_offset = '', $booking_gcal_events_until_offset_type = '' ) {
158 if ($booking_gcal_events_until == "date") {
159 echo '<style type="text/css"> .booking_gcal_events_until .wpbc_offset_value { display:none; } </style>';
160 } else {
161 echo '<style type="text/css"> .booking_gcal_events_until .wpbc_offset_datetime { display:none; } </style>';
162 }
163 ?>
164 <tr valign="top">
165 <th scope="row"><label for="booking_gcal_events_until" ><?php esc_html_e('Until' ,'booking'); ?>:</label></th>
166 <td class="booking_gcal_events_until">
167 <select id="booking_gcal_events_until" name="booking_gcal_events_until"
168 onchange="javascript: if(this.value=='date') {
169 jQuery('.booking_gcal_events_until .wpbc_offset_value').hide();
170 jQuery('.booking_gcal_events_until .wpbc_offset_datetime').show();
171 } else {
172 jQuery('.booking_gcal_events_until .wpbc_offset_value').show();
173 jQuery('.booking_gcal_events_until .wpbc_offset_datetime').hide();
174 }
175 jQuery('#booking_gcal_events_until_offset').val('');" >
176 <?php
177 $wpbc_options = array(
178 "now" => __('Now' ,'booking')
179 , "today" => __('00:00 today' ,'booking')
180 , "week" => __('Start of current week' ,'booking')
181 , "month-start" => __('Start of current month' ,'booking')
182 , "month-end" => __('End of current month' ,'booking')
183 , "any" => __('The end of time' ,'booking')
184 , "date" => __('Specific date / time' ,'booking')
185 );
186 foreach ($wpbc_options as $key => $value) {
187 ?><option <?php if( $booking_gcal_events_until == $key ) echo "selected"; ?> value="<?php
188 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
189 echo $key; ?>"><?php echo esc_html( $value ); ?></option><?php
190 }
191 ?>
192 </select>
193 <span class="description"><?php esc_html_e('Select option, when to stop retrieving events.' ,'booking'); ?></span>
194 <div class="booking_gcal_events_until_offset" style="margin:10px 0 0;">
195 <label for="booking_gcal_events_until_offset" > <span class="wpbc_offset_value"><?php esc_html_e('Offset' ,'booking'); ?></span><span class="wpbc_offset_datetime" ><?php esc_html_e('Enter date / time' ,'booking'); ?></span>: </label>
196 <input type="text" id="booking_gcal_events_until_offset" name="booking_gcal_events_until_offset" value="<?php
197 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
198 echo $booking_gcal_events_until_offset; ?>" style="width:100px;text-align: right;" />
199 <span class="wpbc_offset_value">
200 <select id="booking_gcal_events_until_offset_type" name="booking_gcal_events_until_offset_type" style="margin-top: -2px;width: 99px;">
201 <?php
202 $wpbc_options = array(
203 "second" => __('seconds' ,'booking')
204 , "minute" => __('minutes' ,'booking')
205 , "hour" => __('hours' ,'booking')
206 , "day" => __('days' ,'booking')
207 );
208 foreach ($wpbc_options as $key => $value) {
209 ?><option <?php if( $booking_gcal_events_until_offset_type == $key ) echo "selected"; ?> value="<?php
210 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
211 echo $key; ?>"><?php echo esc_html( $value ); ?></option><?php
212 }
213 ?>
214 </select>
215 <span class="description"><?php esc_html_e('You can specify an additional offset from you chosen end point. The offset can be negative.' ,'booking'); ?></span>
216 </span>
217 <span class="wpbc_offset_datetime">
218 <em><?php
219 /* translators: 1: ... */
220 echo wp_kses_post( sprintf( __( 'Type your date in format %1$s. Example: %2$s', 'booking' ),'Y-m-d','2014-08-30') ); ?></em>
221 </span>
222
223 </div>
224 </td>
225 </tr>
226 <?php
227 }
228
229
230 function wpbc_gcal_settings_content_field_max_feeds($booking_gcal_events_max) {
231 ?>
232 <tr valign="top">
233 <th scope="row"><label for="booking_gcal_events_max" ><?php esc_html_e('Maximum number' ,'booking'); ?>:</label></th>
234 <td><input id="booking_gcal_events_max" name="booking_gcal_events_max" class="regular-text" type="text" value="<?php
235 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
236 echo $booking_gcal_events_max; ?>" />
237 <span class="description"><?php
238 esc_html_e('You can specify the maximum number of events to import during one session.' ,'booking');
239 ?></span>
240 </td>
241 </tr>
242 <?php
243 }
244
245
246 function wpbc_gcal_settings_content_field_timezone($booking_gcal_timezone) {
247 ?>
248 <tr valign="top">
249 <th scope="row"><label for="booking_gcal_timezone" ><?php esc_html_e('Timezone' ,'booking'); ?>:</label></th>
250 <td>
251 <select id="booking_gcal_timezone" name="booking_gcal_timezone">
252 <?php
253 $wpbc_options = array(
254 "" => __('Default' ,'booking')
255 );
256 foreach ($wpbc_options as $key => $value) {
257 ?><option <?php if( $booking_gcal_timezone == $key ) echo "selected"; ?> value="<?php
258 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
259 echo $key; ?>"><?php echo esc_html( $value ); ?></option><?php
260 }
261
262
263 // structure: $wpbc_booking_region_cities_list["Pacific"]["Fiji"] = "Fiji";
264 $wpbc_booking_region_cities_list = wpbc_get_booking_region_cities_list(); // FixIn: 8.9.4.9.
265
266 foreach ($wpbc_booking_region_cities_list as $region => $region_cities) {
267
268 echo '<optgroup label="'. esc_attr( $region ) .'">';
269
270 foreach ($region_cities as $city_key => $city_title) {
271
272 if( $booking_gcal_timezone == $region .'/'. $city_key )
273 $is_selected = 'selected';
274 else
275 $is_selected = '';
276
277 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
278 echo '<option ' . $is_selected . ' value="' . $region . '/' . $city_key . '">' . $city_title . '</option>';
279
280 }
281 echo '</optgroup>';
282 }
283
284
285 ?>
286 </select>
287 <span class="description"><?php esc_html_e('Select a city in your required timezone, if you are having problems with dates and times.' ,'booking'); ?></span>
288 </td>
289 </tr>
290 <?php
291 }
292
293 // FixIn: 9.6.3.5.
294
295 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
296 // Activation
297 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
298 function wpbc_sync_gcal_activate() {
299
300 add_bk_option( 'booking_gcal_feed' , '' );
301 add_bk_option( 'booking_gcal_events_from', 'month-start');
302 add_bk_option( 'booking_gcal_events_from_offset' , '' );
303 add_bk_option( 'booking_gcal_events_from_offset_type' , '' );
304 add_bk_option( 'booking_gcal_events_until', 'any');
305 add_bk_option( 'booking_gcal_events_until_offset' , '' );
306 add_bk_option( 'booking_gcal_events_until_offset_type' , '' );
307 add_bk_option( 'booking_gcal_events_max', '25');
308 add_bk_option( 'booking_gcal_api_key', '');
309 add_bk_option( 'booking_gcal_timezone','');
310 add_bk_option( 'booking_gcal_is_send_email' , 'Off' );
311 add_bk_option( 'booking_gcal_auto_import_is_active' , 'Off' );
312 add_bk_option( 'booking_gcal_auto_import_time', '24' );
313
314 add_bk_option( 'booking_gcal_events_form_fields', 'a:3:{s:5:"title";s:9:"text^name";s:11:"description";s:16:"textarea^details";s:5:"where";s:5:"text^";}');
315 }
316 add_bk_action('wpbc_other_versions_activation', 'wpbc_sync_gcal_activate' );
317
318 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
319 // Deactivation
320 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
321 function wpbc_sync_gcal_deactivate() {
322
323 delete_bk_option( 'booking_gcal_feed' );
324 delete_bk_option( 'booking_gcal_events_from');
325 delete_bk_option( 'booking_gcal_events_from_offset' );
326 delete_bk_option( 'booking_gcal_events_from_offset_type' );
327
328 delete_bk_option( 'booking_gcal_events_until');
329 delete_bk_option( 'booking_gcal_events_until_offset' );
330 delete_bk_option( 'booking_gcal_events_until_offset_type' );
331
332 delete_bk_option( 'booking_gcal_events_max' );
333 delete_bk_option( 'booking_gcal_api_key' );
334 delete_bk_option( 'booking_gcal_timezone');
335 delete_bk_option( 'booking_gcal_is_send_email' );
336 delete_bk_option( 'booking_gcal_auto_import_is_active' );
337 delete_bk_option( 'booking_gcal_auto_import_time' );
338
339 delete_bk_option( 'booking_gcal_events_form_fields');
340
341 }
342 add_bk_action('wpbc_other_versions_deactivation', 'wpbc_sync_gcal_deactivate' );
343