FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
booking
/
core
/
admin
Edit File: page-import-gcal.php
<?php /** * @version 1.0 * @package Booking > Settings > Import page * @category Settings API * @author wpdevelop * * @web-site https://wpbookingcalendar.com/ * @email info@wpbookingcalendar.com * @modified 2016-08-07 * * This is COMMERCIAL SCRIPT * We are not guarantee correct work and support of Booking Calendar, if some file(s) was modified by someone else then wpdevelop. */ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly /** API for Settings Page */ class WPBC_API_SettingsImportGCal extends WPBC_Settings_API { /** * Settings API Constructor * During creation, system try to load values from DB, if exist. * * @param type $id - "Pure Name" */ public function __construct( $id, $init_fields_values = array(), $options = array() ) { $default_options = array( 'db_prefix_option' => '' , 'db_saving_type' => 'separate' ); // separate_prefix: update_bk_option( $this->options['db_prefix_option'] . $settings_id . '_' . $field_name , $value ); $options = wp_parse_args( $options, $default_options ); /** * Activation and deactivation of these options already done at the wpbc-gcal.php file // // add_bk_action( 'wpbc_other_versions_activation', array( $this, 'activate' ) ); // Activate // add_bk_action( 'wpbc_other_versions_deactivation', array( $this, 'deactivate' ) ); // Deactivate */ parent::__construct( $id, $options, $init_fields_values ); // Define ID of Setting page and options } /** Define settings Fields */ public function init_settings_fields() { $this->fields = array(); // Auto import if ( wpbc_is_mu_user_can_be_here('only_super_admin') ){ $this->fields['booking_gcal_auto_import_is_active'] = array( 'type' => 'checkbox' , 'default' => 'Off' , 'title' => __( 'Activate auto import', 'booking' ) /* translators: 1: ... */ , 'label' => sprintf( __( 'Check this box to %1$sactivate%2$s auto import events and creation bookings from them', 'booking' ),'<b>','</b>') , 'description' => '' , 'group' => 'auto_import' ); // $options = array(); // $options[1] = '1 ' . __( 'hour', 'booking' ); // for ( $i = 2; $i < 24; $i++ ) { // $options[$i] = $i . ' ' . __( 'hours', 'booking' ); // } // $options[24] = '1 ' . __( 'day', 'booking' ); // for ( $i = 2; $i < 32; $i++ ) { // $options[( $i * 24)] = $i . ' ' . __( 'days', 'booking' ); // } // Fix for legacy code (previously) was only integer value here in hours $legacy_booking_gcal_auto_import_time = get_bk_option( 'booking_gcal_auto_import_time' ); if ( ( false === strpos( $legacy_booking_gcal_auto_import_time, 'm' ) ) && ( false === strpos( $legacy_booking_gcal_auto_import_time, 'd' ) ) ) { update_bk_option( 'booking_gcal_auto_import_time', strval( intval( $legacy_booking_gcal_auto_import_time ) * 60 ) . 'm' ); } // Options $extra_time = array(); foreach ( range( 15, 55, 15 ) as $extra_num ) { // Each 5 minutes $extra_time[ $extra_num . 'm' ] = $extra_num . ' ' . __( 'minutes', 'booking' ); } $extra_time[ '60' . 'm' ] = '1 ' . __( 'hour', 'booking' ); foreach ( range( 75, 115, 15 ) as $extra_num ) { // 1 hour + Each 5 minutes $extra_time[ $extra_num . 'm' ] = '1 ' . __( 'hour', 'booking' ) . ' ' . ( $extra_num - 60 ) . ' ' . __( 'minutes', 'booking' ); } foreach ( range( 120, 1380, 60 ) as $extra_num ) { // Each Hour based on minutes $extra_time[ $extra_num . 'm' ] = ( $extra_num / 60 ) . ' ' . __( 'hours', 'booking' ); } foreach ( range( 1, 30, 1 ) as $extra_num ) { // Each Day $extra_time[ $extra_num . 'd' ] = $extra_num . ' ' . __( 'day(s)', 'booking' ); } $cron_info = ''; $readable_time_of_next_run = WPBC()->cron->get_readable_time_of_last_run( 'wpbc_import_gcal' ); if ( ! empty( $readable_time_of_next_run ) ) { $cron_info .= '<br/><strong>' . esc_html__( 'Last import', 'booking' ) . '</strong>: ' . $readable_time_of_next_run; } $readable_time_of_next_run = WPBC()->cron->get_readable_time_of_next_run( 'wpbc_import_gcal', '<strong>'.__( 'during', 'booking' ).'</strong> <code>' ) . '</code>'; if ( ! empty( $readable_time_of_next_run ) ) { $cron_info .= '<br/><strong>' . esc_html__( 'Next import', 'booking' ) . '</strong>: ' . $readable_time_of_next_run; } // $active_tasks_arr = WPBC()->cron->get_active_tasks_info(); // if ( ! empty( $active_tasks_arr['wpbc_import_gcal'] ) ) { // $cron_info .= '<br/><strong>' . esc_html__( 'Last import', 'booking' ) . '</strong>: ' . $active_tasks_arr['wpbc_import_gcal']['last_time__run__local']; // $cron_info .= '<br/><strong>' . esc_html__( 'Next import', 'booking' ) . '</strong>: ' . $active_tasks_arr['wpbc_import_gcal']['next_time__run__local']; // $cron_info .= ' ' . __( 'during', 'booking' ) . ': <strong>' . wpbc_get_readable_time_interval( $active_tasks_arr['wpbc_import_gcal']['next_run_after_seconds'] ) . '</strong> '; // } $this->fields['booking_gcal_auto_import_time'] = array( 'type' => 'select' , 'default' => '24' , 'title' => __('Import events every' ,'booking') , 'description' => __('Select time duration of import requests.' ,'booking') . $cron_info , 'description_tag' => 'span' , 'css' => '' , 'options' => $extra_time , 'tr_class' => 'wpbc_sub_settings_grayed wpbc_tr_auto_import' , 'group' => 'auto_import' ); } //////////////////////////////////////////////////////////////////////// // General Google Calendar Settings $this->fields['booking_gcal_api_key'] = array( 'type' => 'text' , 'default' => '' //, 'placeholder' => '' , 'title' => __('Google API Key', 'booking') , 'description' => __('Please enter your Google API key. This field required to import events.' ,'booking') . '<div class="wpbc-settings-notice notice-info" style="text-align:left;"><strong>' . __('Note:' ,'booking') . '</strong> ' /* translators: 1: ... */ . sprintf( __( 'You can check in this %1$sinstruction how to generate and use your Google API key%2$s.', 'booking' ) , '<a href="https://wpbookingcalendar.com/faq/import-gc-events/">' ,'</a>' ) . '</div>' . ( ( wpbc_is_this_demo() ) ? wpbc_get_warning_text_in_demo_mode() : '' ) , 'description_tag' => 'p' , 'css' => ''//'width:100%' , 'group' => 'general' , 'tr_class' => '' // 'wpbc_sub_settings_grayed' //, 'validate_as' => array( 'required' ) , 'is_demo_safe' => wpbc_is_this_demo() ); // General Google ID for Free version if ( ! class_exists('wpdev_bk_personal') ) $this->fields['booking_gcal_feed'] = array( 'type' => 'text' , 'default' => '' //, 'placeholder' => '' , 'title' => __('Google Calendar ID', 'booking') , 'description' => ( ( wpbc_is_this_demo() ) ? wpbc_get_warning_text_in_demo_mode() : '' ) , 'description_tag' => 'span' , 'css' => 'width:100%' , 'group' => 'general' , 'tr_class' => '' // 'wpbc_sub_settings_grayed' //, 'validate_as' => array( 'required' ) , 'is_demo_safe' => wpbc_is_this_demo() ); //////////////////////////////////////////////////////////////////////// // M A X num - Default Settings $this->fields['booking_gcal_events_max'] = array( 'type' => 'text' , 'default' => '25' //, 'placeholder' => '' , 'title' => __('Maximum number', 'booking') , 'description' => __('You can specify the maximum number of events to import during one session.' ,'booking') , 'description_tag' => 'span' , 'css' => 'width:4em' , 'group' => 'default_settings' , 'tr_class' => '' // 'wpbc_sub_settings_grayed' //, 'validate_as' => array( 'required' ) ); // F R O M ///////////////////////////////////////////////////////// $options = array( "now" => __('Now' ,'booking') , "today" => __('00:00 today' ,'booking') , "week" => __('Start of current week' ,'booking') , "month-start" => __('Start of current month' ,'booking') , "month-end" => __('End of current month' ,'booking') , "any" => __('The start of time' ,'booking') , "date" => __('Specific date / time' ,'booking') ); $this->fields['booking_gcal_events_from'] = array( 'type' => 'select' , 'default' => 'month-start' , 'title' => __('From', 'booking') , 'description' => __('Select option, when to start retrieving events.' ,'booking') , 'description_tag' => 'span' , 'css' => '' , 'options' => $options , 'group' => 'default_settings' ); ///////////// $this->fields['booking_gcal_events_from_offset_html_prefix'] = array( 'type' => 'pure_html' , 'group' => 'default_settings' , 'html' => '<tr valign="top" class="wpbc_tr_import_gcal_booking_gcal_events_from_offset wpbc_sub_settings_grayed wpbc_tr_from_offset"> <th scope="row"> <label class="wpbc-form-text" for="' . esc_attr( 'import_gcal_booking_gcal_events_from_offset' ) . '">' . '<span class="wpbc_offset_value">' . wp_kses_post( __('Offset' ,'booking') ) . '</span>' . '<span class="wpbc_offset_datetime">' . wp_kses_post( __('Enter date / time' ,'booking') ) . '</span>' . '</label> </th> <td><fieldset>' ); $this->fields['booking_gcal_events_from_offset'] = array( 'type' => 'text' , 'default' => '' //, 'placeholder' => '' , 'title' => '' , 'description' => '' , 'description_tag' => 'span' , 'css' => 'width:6em;height:28px;margin:0;vertical-align:middle;' , 'group' => 'default_settings' , 'tr_class' => 'wpbc_sub_settings_grayed wpbc_tr_from_offset' , 'only_field' => true ); $option_types = array( 'second' => __('seconds' ,'booking') , 'minute' => __('minutes' ,'booking') , 'hour' => __('hours' ,'booking') , 'day' => __('days' ,'booking') ); $this->fields['booking_gcal_events_from_offset_type'] = array( 'type' => 'select' , 'default' => '' , 'title' => '' , 'description' => '' , 'description_tag' => 'span' , 'css' => '' , 'options' => $option_types , 'group' => 'default_settings' , 'class' => 'wpbc_offset_value' , 'tr_class' => 'wpbc_sub_settings_grayed' , 'only_field' => true ); $this->fields['booking_gcal_events_from_offset_html_sufix'] = array( 'type' => 'pure_html' , 'group' => 'default_settings' , 'html' => ' <span class="description wpbc_offset_value">' . __('You can specify an additional offset from you chosen start point. The offset can be negative.' ,'booking') . '</span> <span class="description wpbc_offset_datetime">' /* translators: 1: ... */ . sprintf( __( 'Type your date in format %1$s. Example: %2$s', 'booking' ), '<code>Y-m-d</code>', '<code>' . date_i18n( 'Y-m-d' ) . '</code>' ) . '</span> </fieldset> </td> </tr>' ); ///////////// // U N T I L ///////////////////////////////////////////////////// $options = array( "now" => __('Now' ,'booking') , "today" => __('00:00 today' ,'booking') , "week" => __('Start of current week' ,'booking') , "month-start" => __('Start of current month' ,'booking') , "month-end" => __('End of current month' ,'booking') , "any" => __('The end of time' ,'booking') , "date" => __('Specific date / time' ,'booking') ); $this->fields['booking_gcal_events_until'] = array( 'type' => 'select' , 'default' => 'any' , 'title' => __('Until', 'booking') , 'description' => __('Select option, when to stop retrieving events.' ,'booking') , 'description_tag' => 'span' , 'css' => '' , 'options' => $options , 'group' => 'default_settings' ); ///////////// $this->fields['booking_gcal_events_until_offset_html_prefix'] = array( 'type' => 'pure_html' , 'group' => 'default_settings' , 'html' => '<tr valign="top" class="wpbc_tr_import_gcal_booking_gcal_events_until_offset wpbc_sub_settings_grayed wpbc_tr_until_offset"> <th scope="row"> <label class="wpbc-form-text" for="' . esc_attr( 'import_gcal_booking_gcal_events_until_offset' ) . '">' . '<span class="wpbc_offset_value">' . wp_kses_post( __('Offset' ,'booking') ) . '</span>' . '<span class="wpbc_offset_datetime">' . wp_kses_post( __('Enter date / time' ,'booking') ) . '</span>' . '</label> </th> <td><fieldset>' ); $this->fields['booking_gcal_events_until_offset'] = array( 'type' => 'text' , 'default' => '' //, 'placeholder' => '' , 'title' => '' , 'description' => '' , 'description_tag' => 'span' , 'css' => 'width:6em;height:28px;margin:0;vertical-align:middle;' , 'group' => 'default_settings' , 'tr_class' => 'wpbc_sub_settings_grayed wpbc_tr_until_offset' , 'only_field' => true ); $option_types = array( 'second' => __('seconds' ,'booking') , 'minute' => __('minutes' ,'booking') , 'hour' => __('hours' ,'booking') , 'day' => __('days' ,'booking') ); $this->fields['booking_gcal_events_until_offset_type'] = array( 'type' => 'select' , 'default' => '' , 'title' => '' , 'description' => '' , 'description_tag' => 'span' , 'css' => '' , 'options' => $option_types , 'group' => 'default_settings' , 'class' => 'wpbc_offset_value' , 'tr_class' => 'wpbc_sub_settings_grayed' , 'only_field' => true ); $this->fields['booking_gcal_events_until_offset_html_sufix'] = array( 'type' => 'pure_html' , 'group' => 'default_settings' , 'html' => ' <span class="description wpbc_offset_value">' . __('You can specify an additional offset from you chosen start point. The offset can be negative.' ,'booking') . '</span> <span class="description wpbc_offset_datetime">' /* translators: 1: ... */ . sprintf( __( 'Type your date in format %1$s. Example: %2$s', 'booking' ), '<code>Y-m-d</code>', '<code>' . date_i18n( 'Y-m-d' ) . '</code>' ) . '</span> </fieldset> </td> </tr>' ); ///////////// //////////////////////////////////////////////////////////////////////// // Help $this->fields['booking_gcal_events_help'] = array( 'type' => 'help' , 'value' => array() , 'cols' => 2 , 'group' => 'help' ); $this->fields['booking_gcal_events_help']['value'][] = '<h4 style="margin-top:-20px;">01. ' . __('To get Google Calendar API key please follow this instruction' ,'booking') . ':</h4>'; $this->fields['booking_gcal_events_help']['value'][] = '<ol style="list-style-type: decimal !important;margin-left: 15px;font-size:0.86em;">'; /* translators: 1: ... */ $this->fields['booking_gcal_events_help']['value'][] = '<li>' . sprintf(__( 'Go to Google Developer Console: %s.' ,'booking'),'<a href="https://console.developers.google.com" target="_blank">https://console.developers.google.com</a>') . '</li>'; $this->fields['booking_gcal_events_help']['value'][] = '<li>' . sprintf(__('Give your project a name and click "Create".' ,'booking')) . '</li>'; $this->fields['booking_gcal_events_help']['value'][] = '<li>' . sprintf(__('In the sidebar click on "APIs & auth".' ,'booking')) . '</li>'; $this->fields['booking_gcal_events_help']['value'][] = '<li>' . sprintf(__('Click APIs and make sure "Calendar API" is set to ON.' ,'booking')) . '</li>'; $this->fields['booking_gcal_events_help']['value'][] = '<li>' . sprintf(__('Now click on "Credentials" in the sidebar.' ,'booking')) . '</li>'; $this->fields['booking_gcal_events_help']['value'][] = '<li>' . sprintf(__('Under the section "Public API access" click the button "Create new Key".' ,'booking')) . '</li>'; $this->fields['booking_gcal_events_help']['value'][] = '<li>' . sprintf(__('On the popup click the button "Server Key" and click "Create".' ,'booking')) . '</li>'; /* translators: 1: ... */ $this->fields['booking_gcal_events_help']['value'][] = '<li>' . sprintf( __( 'You will now see a table loaded with the top item being the API Key. Copy this and paste it into %1$sGoogle API Key%2$s field at this page.', 'booking' ),'<strong>','</strong>') . '</li>'; $this->fields['booking_gcal_events_help']['value'][] = '</ol>'; $this->fields['booking_gcal_events_help']['value'][] = '<h4>02. ' . __('Set Your Calendar to Public' ,'booking') . ':</h4>'; $this->fields['booking_gcal_events_help']['value'][] = '<ol style="list-style-type: decimal !important;margin-left: 15px;font-size:0.86em;">'; $this->fields['booking_gcal_events_help']['value'][] = '<li>' . sprintf(__('Navigate to your Google calendars.' ,'booking'),'<a href="https://console.developers.google.com" target="_blank">https://console.developers.google.com</a>') . '</li>'; $this->fields['booking_gcal_events_help']['value'][] = '<li>' . sprintf(__('Open the settings for the calendar.' ,'booking')) . '</li>'; $this->fields['booking_gcal_events_help']['value'][] = '<li>' . sprintf(__('Click the "Share this Calendar" link.' ,'booking')) . '</li>'; $this->fields['booking_gcal_events_help']['value'][] = '<li>' . sprintf(__('Click the checkbox to make calendar public. Do not check the other option.' ,'booking')) . '</li>'; $this->fields['booking_gcal_events_help']['value'][] = '</ol>'; $this->fields['booking_gcal_events_help']['value'][] = '<h4>03. ' . __('Find Your Calendar ID' ,'booking') . ':</h4>'; $this->fields['booking_gcal_events_help']['value'][] = '<ol style="list-style-type: decimal !important;margin-left: 15px;font-size:0.86em;">'; $this->fields['booking_gcal_events_help']['value'][] = '<li>' . sprintf(__('Navigate to your Google calendars.' ,'booking'),'<a href="https://console.developers.google.com" target="_blank">https://console.developers.google.com</a>') . '</li>'; $this->fields['booking_gcal_events_help']['value'][] = '<li>' . sprintf(__('Open the settings for the calendar.' ,'booking')) . '</li>'; /* translators: 1: ... */ $this->fields['booking_gcal_events_help']['value'][] = '<li>' . sprintf( __( 'Now copy the Calendar ID to use in the plugin settings in your WordPress admin. Make sure to %1$suse the Calendar ID only, not the entire XML feed URL%2$s.', 'booking' ),'<strong>','</strong>') . '</li>'; $this->fields['booking_gcal_events_help']['value'][] = '</ol>'; //////////////////////////////////////////////////////////////////////// } } /** * Show Content * Update Content * Define Slug * Define where to show */ class WPBC_Page_SettingsImportGCal extends WPBC_Page_Structure { public $settings_api = false; /** * API - for Fields of this Settings Page * * @param array $init_fields_values - array of init form fields data - this array can ovveride "default" fields and loaded data. * @return object API */ public function get_api( $init_fields_values = array() ){ if ( $this->settings_api === false ) { $this->settings_api = new WPBC_API_SettingsImportGCal( 'import_gcal' , $init_fields_values ); } return $this->settings_api; } public function in_page() { return 'wpbc-settings'; } public function tabs() { $tabs = array(); $tabs[ 'sync' ] = array( 'title' => __( 'Sync', 'booking') // Title of TAB , 'page_title'=> __( 'Sync', 'booking') // Title of Page , 'hint' => __('Import' ,'booking') . ' / ' . __('Export' ,'booking') //, 'link' => '' // Can be skiped, then generated link based on Page and Tab tags. Or can be extenral link //, 'position' => '' // 'left' || 'right' || '' //, 'css_classes'=> '' // CSS class(es) //, 'icon' => '' // Icon - link to the real PNG img , 'font_icon' => 'wpbc_icn_sync_alt' // CSS definition of forn Icon //, 'default' => false // Is this tab activated by default or not: true || false. //, 'disabled' => false // Is this tab disbaled: true || false. //, 'hided' => false // Is this tab hided: true || false. , 'subtabs' => array() ); $subtabs = array(); $subtabs[ 'gcal' ] = array( 'type' => 'subtab' // Required| Possible values: 'subtab' | 'separator' | 'button' | 'goto-link' | 'html' , 'title' => __('Import Google Calendar', 'booking') //__('Google Calendar' ,'booking') . ' - ' . __('Events Import' ,'booking') // Title of TAB , 'page_title' => __('Import Google Calendar Events', 'booking') //__('Import Settings' ,'booking') // Title of Page , 'hint' => __('Set up and configure the import of Google Calendar events using the API.' ,'booking') // Hint , 'link' => '' // link , 'position' => '' // 'left' || 'right' || '' , 'css_classes' => '' // CSS class(es) //, 'icon' => 'http://.../icon.png' // Icon - link to the real PNG img , 'font_icon' => 'wpbc-bi-google' // CSS definition of Font Icon , 'default' => false // Is this sub tab activated by default or not: true || false. , 'disabled' => false // Is this sub tab deactivated: true || false. , 'checkbox' => false // or definition array for specific checkbox: array( 'checked' => true, 'name' => 'feature1_active_status' ) //, 'checkbox' => array( 'checked' => $is_checked, 'name' => 'enabled_active_status' ) , 'content' => 'content' // Function to load as conten of this TAB ); $tabs[ 'sync' ]['subtabs'] = $subtabs; return $tabs; } /** Show Content of Settings page */ public function content() { //$active_tasks_arr = WPBC()->cron->get_active_tasks_info(); //debuge( $active_tasks_arr ); $this->css(); //////////////////////////////////////////////////////////////////////// // Checking //////////////////////////////////////////////////////////////////////// do_action( 'wpbc_hook_settings_page_header', 'import_gcal_settings'); // Define Notices Section and show some static messages, if needed if ( ! wpbc_is_mu_user_can_be_here('activated_user') ) return false; // Check if MU user activated, otherwise show Warning message. // if ( ! wpbc_is_mu_user_can_be_here('only_super_admin') ) return false; // User is not Super admin, so exit. Basically its was already checked at the bottom of the PHP file, just in case. //////////////////////////////////////////////////////////////////////// // Load Data //////////////////////////////////////////////////////////////////////// $this->get_api(); // Load fields Data from DB //////////////////////////////////////////////////////////////////////// // S u b m i t Main Form //////////////////////////////////////////////////////////////////////// $submit_form_name = 'wpbc_import_gcal'; // Define form name // $this->get_api()->validated_form_id = $submit_form_name; // Define ID of Form for ability to validate fields (like required field) before submit. // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing if ( isset( $_POST['is_form_sbmitted_'. $submit_form_name ] ) ) { // Nonce checking {Return false if invalid, 1 if generated between, 0-12 hours ago, 2 if generated between 12-24 hours ago. } $nonce_gen_time = check_admin_referer( 'wpbc_settings_page_' . $submit_form_name ); // Its stop show anything on submiting, if its not refear to the original page // Save Changes $this->update(); } //////////////////////////////////////////////////////////////////////// // JavaScript: Tooltips, Popover, Datepick (js & css) //////////////////////////////////////////////////////////////////////// echo '<span class="wpdevelop">'; wpbc_js_for_bookings_page(); echo '</span>'; ?><div class="clear" style="margin-bottom:0px;"></div><?php // Scroll links //////////////////////////////////////////////////////// ?> <div class="wpdvlp-sub-tabs" style="background:none;border:none;box-shadow: none;padding:0;"><span class="nav-tabs" style="text-align:right;"> <a href="javascript:void(0);" onclick="javascript:wpbc_scroll_to('#wpbc_settings_import_gcal_events_general_metabox' );" original-title="" class="nav-tab go-to-link"><span><?php esc_html_e('General Settings', 'booking'); ?></span></a> <?php if ( wpbc_is_mu_user_can_be_here('only_super_admin') ) { ?> <a href="javascript:void(0);" onclick="javascript:wpbc_scroll_to('#wpbc_settings_import_gcal_events_auto_import_metabox' );" original-title="" class="nav-tab go-to-link"><span><?php esc_html_e('Auto import events' ,'booking'); ?></span></a> <?php } ?> <a href="javascript:void(0);" onclick="javascript:wpbc_scroll_to('#wpbc_settings_import_gcal_events_default_settings_metabox' );" original-title="" class="nav-tab go-to-link"><span><?php esc_html_e('Default settings for retrieving events' ,'booking'); ?></span></a> <?php if ( class_exists('wpdev_bk_personal') ) { ?> <a href="javascript:void(0);" onclick="javascript:wpbc_scroll_to('#wpbc_resource_table_gcal_id' );" original-title="" class="nav-tab go-to-link"><span><?php esc_html_e('Resources' ,'booking'); ?></span></a> <?php } ?> </span></div> <?php if ( class_exists('wpdev_bk_personal') ) wpbc_toolbar_search_by_id__top_form( array( 'search_form_id' => 'wpbc_booking_resources_search_form' , 'search_get_key' => 'wh_resource_id' , 'is_pseudo' => false ) ); //////////////////////////////////////////////////////////////////////// // Content //////////////////////////////////////////////////////////// ?> <div class="clear" style="margin-bottom:0px;"></div> <span class="metabox-holder"> <form name="<?php echo esc_attr( $submit_form_name ); ?>" id="<?php echo esc_attr( $submit_form_name ); ?>" action="" method="post" autocomplete="off"> <?php // N o n c e field, and key for checking S u b m i t wp_nonce_field( 'wpbc_settings_page_' . $submit_form_name ); ?><input type="hidden" name="is_form_sbmitted_<?php echo esc_attr( $submit_form_name ); ?>" id="is_form_sbmitted_<?php echo esc_attr( $submit_form_name ); ?>" value="1" /><?php ?><div class="clear"></div><?php // Add hidden input SEARCH KEY field into main form, if previosly was searching by ID or Title if ( class_exists('wpdev_bk_personal') ) wpbc_hidden_search_by_id_field_in_main_form( array( 'search_get_key' => 'wh_resource_id' ) ); // FixIn: 8.0.1.12. ?><div class="clear" style="height:10px;"></div><?php ?><div class="wpbc_settings_row wpbc_settings_row_left"><?php wpbc_open_meta_box_section( 'wpbc_settings_import_gcal_events_general', __('Google Calendar - General Settings' ,'booking') ); $this->get_api()->show( 'general' ); wpbc_close_meta_box_section(); if ( wpbc_is_mu_user_can_be_here('only_super_admin') ){ wpbc_open_meta_box_section( 'wpbc_settings_import_gcal_events_auto_import', __('Auto import events' ,'booking') ); $this->get_api()->show( 'auto_import' ); wpbc_close_meta_box_section(); } wpbc_open_meta_box_section( 'wpbc_settings_import_gcal_events_default_settings', __('Default settings for retrieving events' ,'booking') ); $this->get_api()->show( 'default_settings' ); wpbc_close_meta_box_section(); ?> </div> <div class="wpbc_settings_row wpbc_settings_row_right"><?php wpbc_open_meta_box_section( 'wpbc_settings_import_gcal_form_help', __('Help', 'booking') ); $this->get_api()->show( 'help' ); wpbc_close_meta_box_section(); ?> </div> <div id="wpbc_resources_link" class="clear"></div> <?php if ( class_exists('wpdev_bk_personal') ) { ?> <div id="wpbc_resource_table_gcal_id" class="wpbc_settings_row wpbc_settings_row_rightNO"><?php //wpbc_open_meta_box_section( 'wpbc_settings_import_gcal_resources', __('Resources', 'booking') ); wpbc_import_gcal__show_table(); //wpbc_close_meta_box_section(); ?> </div> <div class="clear"></div> <?php } ?> <input type="submit" value="<?php esc_attr_e('Save Changes','booking'); ?>" class="button button-primary wpbc_submit_button" /> </form> </span> <?php do_action( 'wpbc_hook_settings_page_footer', 'import_gcal_settings' ); $this->enqueue_js(); } /** Save Chanages */ public function update() { //debuge($_POST); if ( function_exists( 'wpbc_import_gcal__update') ) wpbc_import_gcal__update(); // Get Validated Email fields $validated_fields = $this->get_api()->validate_post(); $validated_fields = apply_filters( 'wpbc_fields_before_saving_to_db__import_gcal', $validated_fields ); //Hook for validated fields. //debuge($validated_fields); $this->get_api()->save_to_db( $validated_fields ); wpbc_show_changes_saved_message(); // Old way of saving: // update_bk_option( 'booking_cache_expiration' , WPBC_Settings_API::validate_text_post_static( 'booking_cache_expiration' ) ); } //TODO: clear unused CSS here // <editor-fold defaultstate="collapsed" desc=" CSS & JS " > /** CSS for this page */ private function css() { ?> <style type="text/css"> .wpbc-help-message { border:none; } /* toolbar fix */ .wpdevelop .visibility_container .control-group { margin: 2px 8px 3px 0; /* margin: 0 8px 5px 0; */ /* FixIn: 9.5.4.8 */ } /* Selectbox element in toolbar */ .visibility_container select optgroup{ color:#999; vertical-align: middle; font-style: italic; font-weight: 400; } .visibility_container select option { padding:5px; font-weight: 600; } .visibility_container select optgroup option{ padding: 5px 20px; color:#555; font-weight: 600; } #wpbc_create_new_custom_form_name_fields { width: 360px; display:none; } @media (max-width: 399px) { #wpbc_create_new_custom_form_name_fields { width: 100%; } } </style> <?php } /** * Add Custon JavaScript - for some specific settings options * Executed After post content, after initial definition of settings, and possible definition after POST request. * * @param type $menu_slug */ private function enqueue_js(){ // JavaScript ////////////////////////////////////////////////////////////// $js_script = ''; //Show|Hide grayed section $js_script .= " if ( ! jQuery('#import_gcal_booking_gcal_auto_import_is_active').is(':checked') ) { jQuery('.wpbc_tr_auto_import').addClass('hidden_items'); } "; // Hide|Show on Click Checkbox $js_script .= " jQuery('#import_gcal_booking_gcal_auto_import_is_active').on( 'change', function(){ if ( this.checked ) { jQuery('.wpbc_tr_auto_import').removeClass('hidden_items'); } else { jQuery('.wpbc_tr_auto_import').addClass('hidden_items'); } } ); "; // F R O M $js_script .= " if ( jQuery('#import_gcal_booking_gcal_events_from').val() != 'date' ) { jQuery('.wpbc_tr_from_offset .wpbc_offset_value').removeClass('hidden_items'); jQuery('.wpbc_tr_from_offset .wpbc_offset_datetime').addClass('hidden_items'); } else { jQuery('.wpbc_tr_from_offset .wpbc_offset_value').addClass('hidden_items'); jQuery('.wpbc_tr_from_offset .wpbc_offset_datetime').removeClass('hidden_items'); } "; // On select option in selectbox $js_script .= " jQuery('#import_gcal_booking_gcal_events_from').on( 'change', function(){ jQuery('#import_gcal_booking_gcal_events_from_offset').val(''); if ( jQuery(this).val() != 'date' ){ jQuery('.wpbc_tr_from_offset .wpbc_offset_value').removeClass('hidden_items'); jQuery('.wpbc_tr_from_offset .wpbc_offset_datetime').addClass('hidden_items'); } else { jQuery('.wpbc_tr_from_offset .wpbc_offset_value').addClass('hidden_items'); jQuery('.wpbc_tr_from_offset .wpbc_offset_datetime').removeClass('hidden_items'); } } ); "; // U n t i l $js_script .= " if ( jQuery('#import_gcal_booking_gcal_events_until').val() != 'date' ) { jQuery('.wpbc_tr_until_offset .wpbc_offset_value').removeClass('hidden_items'); jQuery('.wpbc_tr_until_offset .wpbc_offset_datetime').addClass('hidden_items'); } else { jQuery('.wpbc_tr_until_offset .wpbc_offset_value').addClass('hidden_items'); jQuery('.wpbc_tr_until_offset .wpbc_offset_datetime').removeClass('hidden_items'); } "; // On select option in selectbox $js_script .= " jQuery('#import_gcal_booking_gcal_events_until').on( 'change', function(){ jQuery('#import_gcal_booking_gcal_events_until_offset').val(''); if ( jQuery(this).val() != 'date' ){ jQuery('.wpbc_tr_until_offset .wpbc_offset_value').removeClass('hidden_items'); jQuery('.wpbc_tr_until_offset .wpbc_offset_datetime').addClass('hidden_items'); } else { jQuery('.wpbc_tr_until_offset .wpbc_offset_value').addClass('hidden_items'); jQuery('.wpbc_tr_until_offset .wpbc_offset_datetime').removeClass('hidden_items'); } } ); "; // // Hide|Show on Click Radion // $js_script .= " jQuery('input[name=\"paypal_pro_hosted_solution\"]').on( 'change', function(){ // jQuery('.wpbc_sub_settings_paypal_account_type').addClass('hidden_items'); // if ( jQuery('#paypal_type_standard').is(':checked') ) { // jQuery('.wpbc_sub_settings_paypal_standard').removeClass('hidden_items'); // } else { // jQuery('.wpbc_sub_settings_paypal_pro_hosted').removeClass('hidden_items'); // } // } ); "; //////////////////////////////////////////////////////////////////////// // Eneque JS to the footer of the page wpbc_enqueue_js( $js_script ); } // </editor-fold> } add_action('wpbc_menu_created', array( new WPBC_Page_SettingsImportGCal() , '__construct') ); // Executed after creation of Menu /** * Override fields array of Settings page, AFTER saving to DB. Some fields have to have different Values. * Set here values for our pseudo-options, after saving to DB * Because they was not overloading during this saving * * @param array $fields * @param string $page_id * @return array - fields */ function wpbc_fields_after_saving_to_db__import_gcal( $fields, $page_id ) { if ( $page_id == 'import_gcal' ) { // Check our API ID relative saving of this settings page // Update Cron // FixIn: 7.0.1.9. if ( $fields['booking_gcal_auto_import_is_active']['value'] == 'On' ) { $booking_gcal_auto_import_time = $fields['booking_gcal_auto_import_time']['value']; if ( false !== strpos( $booking_gcal_auto_import_time, 'm' ) ) { $booking_gcal_auto_import_time = str_replace( array( 'm', 'd' ), '', $booking_gcal_auto_import_time ); $booking_gcal_auto_import_time = intval( $booking_gcal_auto_import_time ); $time_dimension = 'm'; } else if ( false !== strpos( $booking_gcal_auto_import_time, 'd' ) ) { $booking_gcal_auto_import_time = str_replace( array( 'm', 'd' ), '', $booking_gcal_auto_import_time ); $booking_gcal_auto_import_time = intval( $booking_gcal_auto_import_time ); $time_dimension = 'd'; } else { // Old hours $booking_gcal_auto_import_time = intval( $booking_gcal_auto_import_time ); $time_dimension = 'h'; } update_bk_option( 'booking_gcal_auto_import_time', $fields['booking_gcal_auto_import_time']['value'] ); // add WPBC()->cron->update( 'wpbc_import_gcal' , array( 'action' => array( 'wpbc_silent_import_all_events' ) // Action and parameters , 'start_time' => (time()-1) // Now , 'last_execution' => time() // Set last time execution , 'recurrence' => intval( $booking_gcal_auto_import_time ) // Set time value , 'time_dimension' => $time_dimension // 'h' - hours, 'm' - minutes, 'd' - days ) ); } else { WPBC()->cron->delete( 'wpbc_import_gcal' ); // delete } } return $fields; } add_filter('wpbc_fields_after_saving_to_db', 'wpbc_fields_after_saving_to_db__import_gcal', 10, 2);
Save
Back