FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
booking
/
core
/
admin
Edit File: page-ics-export.php
<?php /** * @version 1.0 * @menu Booking > Settings > (Sync) Export page * @category Settings API * @author wpdevelop * * @web-site https://wpbookingcalendar.com/ * @email info@wpbookingcalendar.com * @modified 2017-07-09 * * 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. */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) {exit;} /** * Show Content * Update Content * Define Slug * Define where to show */ class WPBC_Page_SettingsExportFeeds extends WPBC_Page_Structure { public $settings_api = false; 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_get_import_export' // 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[ 'export' ] = array( 'type' => 'subtab' // Required| Possible values: 'subtab' | 'separator' | 'button' | 'goto-link' | 'html' , 'title' => __('Export' ,'booking') . ' - .ics' // Title of TAB , 'page_title' => __('Export Bookings via .ics' ,'booking') //. ' <span style="padding: 10px;font-size: 12px;font-style: italic;vertical-align: top;">Beta</span>' // Title of Page , 'hint' => __('Set up and configure the export of bookings into .ics feeds.' ,'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-box-arrow-up-right' // 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() { $this->css(); //////////////////////////////////////////////////////////////////////// // Checking //////////////////////////////////////////////////////////////////////// do_action( 'wpbc_hook_settings_page_header', 'export_feeds_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 //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// // S u b m i t Main Form //////////////////////////////////////////////////////////////////////// $submit_form_name = 'wpbc_export_feeds'; // 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 if ( ! function_exists( 'mb_detect_encoding' ) ) { //FixIn: 2.0.5.3 // FixIn: 8.1.3.25. ?> <span class="metabox-holder"> <div class="clear" style="height:15px;"></div> <div class="wpbc-settings-notice notice-error" style="text-align:left;font-size: 16px;padding: 5px 20px;"> <strong><?php esc_html_e('Warning!' ,'booking'); ?></strong> <?php /* translators: 1: PHP function description. */ printf( esc_attr__( 'This feature require %s', 'booking' ), 'PHP <strong>mbstring</strong> extension.' ); ?> </div> <div class="clear" style="height:25px;"></div><?php } $wpbm_version = wpbc_get_wpbm_version(); $wpbm_minimum_version = '2.1'; // If lower than 2, than show warning if ( version_compare( $wpbm_version, $wpbm_minimum_version, '<') ) { $is_bm_exist = false; } else { $is_bm_exist = true; } if ( ! $is_bm_exist ) { // Not Exist ?> <span class="metabox-holder"> <div class="clear" style="height:15px;"></div> <div class="wpbc-settings-notice notice-error" style="text-align:left;font-size: 16px;padding: 5px 20px;"> <strong><?php esc_html_e('Important!' ,'booking'); ?></strong> <?php /* translators: 1: ... */ echo wp_kses_post( sprintf( __( 'This feature require %1$s plugin. You can install %2$s plugin from this %3$spage%4$s.', 'booking' ) , '<strong><a href="'. esc_attr( home_url() .'/wp-admin/plugin-install.php?s=booking+manager+by+oplugins&tab=search&type=term' ). '">' // , '<strong><a class="thickbox open-plugin-details-modal" href="'. home_url() .'/wp-admin/plugin-install.php?tab=plugin-information&plugin=booking-manager&TB_iframe=true&width=772&height=741" target="_blank">' . 'Booking Manager' . '</a></strong> ' . ' <strong>' .esc_attr($wpbm_minimum_version).'</strong> ('. esc_attr__('or newer','booking') . ') ' , '<strong>' . 'Booking Manager' . '</strong>' , '<a target="_blank" href="https://wordpress.org/plugins/booking-manager/">' , '</a>' ) ); ?> </div> <div class="clear" style="height:25px;"></div><?php wpbc_open_meta_box_section( 'wpbc_settings_ics_import_help_how', __('How it works', 'booking') ); wpbc_ics_import_export__show_help_info( false ); wpbc_close_meta_box_section(); ?></span><?php } else { // Exist 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" style="margin-top:10px;"></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 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_export_feeds_resources', __('Resources', 'booking') ); wpbc_export_feeds__show_table(); //wpbc_close_meta_box_section(); ?> </div> <div class="clear"></div> <?php } else { // Booking Calendar Free version wpbc_open_meta_box_section( 'wpbc_settings_export_feeds_resources', __('Export' ,'booking') . ' .ics/ical ' . __('feed', 'booking') ); wpbc_export_ics_feed__table(); wpbc_close_meta_box_section(); } ?> <input type="submit" value="<?php esc_attr_e( 'Save Changes', 'booking' ); ?>" class="button button-primary wpbc_submit_button" /> <div class="clear" style="height:25px;"></div> <?php wpbc_open_meta_box_section( 'wpbc_settings_ics_import_help_how', __( 'How it works', 'booking' ) ); wpbc_ics_import_export__show_help_info( false ); wpbc_close_meta_box_section(); ?><div class="clear"></div> </form> </span> <?php } do_action( 'wpbc_hook_settings_page_footer', 'export_feeds_settings' ); $this->enqueue_js(); } /** Save Chanages */ public function update() { if ( function_exists( 'wpbc_export_feeds__update') ) wpbc_export_feeds__update(); else wpbc_export_ics_feed__update(); // Free version // Get Validated Email fields //$validated_fields = $this->get_api()->validate_post(); //$validated_fields = apply_filters( 'wpbc_fields_before_saving_to_db__export_feeds', $validated_fields ); //Hook for validated fields. //$this->get_api()->save_to_db( $validated_fields ); // Old way of saving: // update_bk_option( 'booking_cache_expiration' , WPBC_Settings_API::validate_text_post_static( 'booking_cache_expiration' ) ); wpbc_show_changes_saved_message(); } //TODO: claer 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; } .wpbc_tr_booking_export_feed_free input[type="text"].regular-text { margin-right:10px; } @media (max-width: 782px) { #wpbc_create_new_custom_form_name_fields { width: 100%; } .wpbc_tr_booking_export_feed_free code { display: inline; line-height: 2.7em; vertical-align: top; padding: 7px 10px; margin: 0; } .wpbc_tr_booking_export_feed_free input[type="text"].regular-text { width:65%; display: inline; } } </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('#export_feeds_booking_gcal_auto_import_is_active').is(':checked') ) { jQuery('.wpbc_tr_auto_import').addClass('hidden_items'); } "; // Hide|Show on Click Checkbox $js_script .= " jQuery('#export_feeds_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('#export_feeds_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('#export_feeds_booking_gcal_events_from').on( 'change', function(){ jQuery('#export_feeds_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('#export_feeds_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('#export_feeds_booking_gcal_events_until').on( 'change', function(){ jQuery('#export_feeds_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_SettingsExportFeeds() , '__construct') ); // Executed after creation of Menu /** Show .ics ULR section for Free version */ function wpbc_export_ics_feed__table() { $resource_export = get_bk_option( 'booking_resource_export_ics_url' ); ?> <table class="form-table"> <tbody><tr class="wpbc_tr_booking_export_feed_free" valign="top"> <th scope="row"> <label for="booking_export_feed1" class="wpbc-form-text"><?php esc_html_e( '.ics feed URL', 'booking' ); ?></label> </th> <td><fieldset class="wpdevelop"> <legend class="screen-reader-text"><span><?php esc_html_e( '.ics feed URL', 'booking' ); ?></span></legend> <code style="font-size:12px;line-height: 2.4em;background: #ddd;color:#000;"><a href="<?php echo esc_url( trim( home_url(), '/' ) . '/' . trim( $resource_export, '/' ) ); ?>" target="_blank"><?php $wpbc_h_u = home_url(); // FixIn: 8.1.3.6. if (strlen( $wpbc_h_u ) > 23 ) { echo esc_attr( substr( $wpbc_h_u, 0, 10 ) . '...' . substr( $wpbc_h_u, -10 ) ); } else { echo esc_attr( $wpbc_h_u ); }?></a></code> <input id="booking_export_feed1" name="booking_export_feed1" value="<?php echo esc_attr( $resource_export ); ?>" placeholder="" autocomplete="off" type="text" class="regular-text" /> <a href="<?php echo esc_url( trim( home_url(), '/' ) . '/' . trim( $resource_export, '/') ); ?>" title="<?php esc_attr_e( 'Open in new window', 'booking' ); ?>" target="_blank"><i class="wpbc_icn_open_in_new"></i></a> <p class="description"><?php esc_html_e( 'Please enter URL for generating .ics feed', 'booking' ); ?></p> <div class="wpbc-settings-notice notice-info" style="text-align:left;border-top:1px solid #f0f0f0;border-right:1px solid #f0f0f0;"> <strong><?php esc_html_e( 'Note', 'booking' ); ?></strong>. <?php esc_html_e( 'This .ics feed of bookings starting from today for 1 year', 'booking' ); ?> </div> </fieldset></td> </tr></tbody> </table> <?php } /** * Save changes to URL in Free version * * @return string - validated value */ function wpbc_export_ics_feed__update() { $validated_value = WPBC_Settings_API::validate_text_post_static( 'booking_export_feed1' ); $validated_value = explode( '/', $validated_value ); foreach ( $validated_value as $v_i => $v_val ) { // FixIn: 8.1.1.9. if ( strpos( $v_val, '.') !== false ) { $v_val = sanitize_file_name( $v_val ); } $validated_value[ $v_i ] = $v_val; } // $validated_value = array_map( 'sanitize_file_name', $validated_value ); $validated_value = implode( '/', $validated_value ); $validated_value = strtolower( $validated_value ); $validated_value = wpbc_make_link_relative( $validated_value ); if ( empty( $validated_value ) ) $validated_value = '/ics/' . wpbc_get_slug_format( 'default' ); update_bk_option( 'booking_resource_export_ics_url', $validated_value ); return $validated_value; }
Save
Back