FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
booking
/
includes
/
publish
Edit File: wpbc-publish-shortcode.php
<?php /** * @version 1.0 * @package Booking Calendar * @subpackage Publish Booking Calendar shortcodes into the Pages * @category Functions * * @author wpdevelop * @link https://wpbookingcalendar.com/ * @email info@wpbookingcalendar.com * * @modified 2023-12-27 */ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly // FixIn: 9.8.15.5. /** * Get prepared (for WP Blocks) shortcode of booking form for inserting into the post or page * * @param int $resource_id * * @return string */ function wpbc_get_prepared_shortcode( $resource_id = 1 ) { $resource_id = intval( $resource_id ); $shortcode = ''; if ( ! empty( $resource_id ) ) { // $shortcode .= '<!-- wp:booking/booking {"wpbc_shortcode":"[booking resource_id=' . $resource_id . ' nummonths=1]"} -->'; // $shortcode .= '<div class="wp-block-booking-booking">[booking resource_id=' . $resource_id . ' nummonths=1]</div>'; // $shortcode .= '<!-- /wp:booking/booking -->'; $shortcode .= '<!-- wp:shortcode -->'; $shortcode .= '[booking resource_id=' . $resource_id . ' nummonths=1]'; $shortcode .= '<!-- /wp:shortcode -->'; } return $shortcode; } /** * Submit | Update checking * * @param $page_name * * @return false|void */ function wpbc_check_for_submit__page_resource_publish( $page_name ) { if ( ( 'resources' !== $page_name ) // && ( 'wpbc-ajx_booking_setup_wizard' !== $page_name ) ){ return false; } // Check $_POST // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing if ( ( isset( $_POST['action'] ) ) && ( 'wpbc_page_resource_publish' === $_POST['action'] ) ) { if ( wpbc_is_this_demo() ) { wpbc_show_notice__for_page_resource_publish( 'This operation is restricted in the demo version.', 'warning' ); return; } $nonce_gen_time = check_admin_referer( 'set_resource_publish_check' ); // It stops show anything on submitting, if it not refers to the original page $add_shortcode_result_arr = false; // CREATE NEW PAGE // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated if ( ( 'create' === $_POST['wpbc_page_resource_publish_what'] ) && ( ! empty($_POST['create_page_for_resource_publish'] ) ) && ( ! empty($_POST['wpbc_page_resource_publish_resource_id'] ) ) ){ $shortcode_resource_id = intval( $_POST['wpbc_page_resource_publish_resource_id'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing $page_name = sanitize_text_field( wp_unslash( $_POST['create_page_for_resource_publish'] ) ); /* phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing */ /* FixIn: sanitize_unslash */ // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing if ( ! empty( $_POST['wpbc_page_resource_publish_resource_shortcode'] ) ) { //$insert_shortcode = WPBC_Settings_API::validate_textarea_post_static( 'wpbc_page_resource_publish_resource_shortcode' ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $insert_shortcode = wp_kses( trim( stripslashes( $_POST[ 'wpbc_page_resource_publish_resource_shortcode' ] ) ), array_merge( array( // 'iframe' => array( 'src' => true, 'style' => true, 'id' => true, 'class' => true ) // , 'script' => array( 'type' => true ) // Allow JS ), wp_kses_allowed_html( 'post' ) ) ); $insert_shortcode = '<!-- wp:shortcode -->' . $insert_shortcode .'<!-- /wp:shortcode -->'; } else { // auto_generated_shortcode $insert_shortcode = wpbc_get_prepared_shortcode( $shortcode_resource_id ); } // Add shortcode to specific Page with POST ID $add_shortcode_result_arr = wpbc_add_shortcode_into_page( array( 'shortcode' => $insert_shortcode, 'check_exist_shortcode' => '[WPBC_' . microtime() . '_WPBC]', // Just add Fake shortcode, so we always add new shortcode to the page 'page_post_name' => sanitize_title( $page_name ), 'post_title' => esc_html( $page_name ), 'resource_id' => $shortcode_resource_id ) ); } // ADD TO EXIST PAGE // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated if ( ( 'edit' === $_POST['wpbc_page_resource_publish_what'] ) && ( ! empty($_POST['select_page_for_resource_publish'] ) ) && ( ! empty($_POST['wpbc_page_resource_publish_resource_id'] ) ) ){ $shortcode_resource_id = intval( $_POST['wpbc_page_resource_publish_resource_id'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing $page_id = intval( $_POST['select_page_for_resource_publish'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing // Add shortcode to specific Page with POST ID $check_exist_shortcode_arr = array( '[booking resource_id=' . $shortcode_resource_id . ' ', '[booking resource_id=' . $shortcode_resource_id . ']', '[booking type=' . $shortcode_resource_id . ' ', '[booking type=' . $shortcode_resource_id . ']' ); if ( 1 === $shortcode_resource_id ) { $check_exist_shortcode_arr[] = '[booking]'; } // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing if ( ! empty( $_POST['wpbc_page_resource_publish_resource_shortcode'] ) ) { //$insert_shortcode = WPBC_Settings_API::validate_textarea_post_static( 'wpbc_page_resource_publish_resource_shortcode' ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotValidated, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $insert_shortcode = wp_kses( trim( stripslashes( $_POST[ 'wpbc_page_resource_publish_resource_shortcode' ] ) ), array_merge( array( // 'iframe' => array( 'src' => true, 'style' => true, 'id' => true, 'class' => true ) // , 'script' => array( 'type' => true ) // Allow JS ), wp_kses_allowed_html( 'post' ) ) ); $insert_shortcode = '<!-- wp:shortcode -->' . $insert_shortcode .'<!-- /wp:shortcode -->'; } else { // auto_generated_shortcode $insert_shortcode = wpbc_get_prepared_shortcode( $shortcode_resource_id ); } $add_shortcode_result_arr = wpbc_add_shortcode_into_page( array( 'shortcode' => $insert_shortcode, 'page_id' => $page_id, 'check_exist_shortcode' => $check_exist_shortcode_arr, //'[WPBC_' . microtime() . '_WPBC]' // Just add Fake shortcode, so we always add new shortcode to the page 'resource_id' => $shortcode_resource_id ) ); } // Show Result Message if ( ( ! empty( $add_shortcode_result_arr ) ) && ( $add_shortcode_result_arr['result'] ) && ( ! empty( $add_shortcode_result_arr['relative_url'] ) ) ){ $relative_post_url = $add_shortcode_result_arr['relative_url']; $post_title = trim( $relative_post_url, '/' ); $post_obj = get_page_by_path( $relative_post_url ); if ( ! empty( $post_obj ) ) { $post_title = $post_obj->post_title; } wpbc_show_notice__for_page_resource_publish( $add_shortcode_result_arr['message'] // . ' ' . '<a href="' . esc_url( wpbc_make_link_absolute( $relative_post_url ) ) . '">' . $post_title . '</a>' ); } elseif ( false === $add_shortcode_result_arr ) { wpbc_show_notice__for_page_resource_publish( 'Error: You may not have chosen the correct page name.', 'error' ); wpbc_show_notice__for_page_resource_publish( /* translators: 1: ... */ sprintf( __( 'Find more information at the %1$sFAQ page%2$s', 'booking' ), '<a href="https://wpbookingcalendar.com/faq/#shortcodes">', '</a>' ), 'info'); }else { wpbc_show_notice__for_page_resource_publish( $add_shortcode_result_arr['message'], 'error' ); wpbc_show_notice__for_page_resource_publish( /* translators: 1: ... */ sprintf( __( 'Find more information at the %1$sFAQ page%2$s', 'booking' ), '<a href="https://wpbookingcalendar.com/faq/#shortcodes">', '</a>' ), 'info'); } } } add_action( 'wpbc_hook_settings_page_before_content_table', 'wpbc_check_for_submit__page_resource_publish' ,10, 1); function wpbc_show_notice__for_page_resource_publish( $message, $message_type = 'success' ) { ?> <div class="wpbc-settings-notice notice-<?php echo esc_attr( $message_type ); ?>" style="text-align:left;font-size: 1rem;margin-top:20px;"> <strong><?php if ( ( 'error' == $message_type ) ) { echo esc_html__( 'Error', 'booking' ) . '! '; } ?></strong> <?php // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo $message; ?> </div> <?php } /** Publish Layout - Modal Window structure */ function wpbc_write_content_for_modal__page_resource_publish( $page_name ) { if ( ( 'resources' !== $page_name ) && ( 'wpbc-ajx_booking_setup_wizard' !== $page_name ) // && ( 'wpbc-ajx_booking' !== $page_name ) // FixIn: 10.6.6.2. ){ return false; } ?><span class="wpdevelop"><?php ?><div id="wpbc_modal__resource_publish" class="modal wpbc_popup_modal" tabindex="-1" role="dialog"> <style type="text/css"> #wpbc_modal__resource_publish .modal-header .modal-title { font-weight: 600; } .wpbc_popup_modal .form-table input[type="radio"]{ margin: -4px 4px 0 0; } .wpbc_publish_wizard_steps { display: none; } .wpbc_publish_wizard_step_1 { display: block; } .wpbc_publish_wizard_steps .wpbc_publish_wizard_inner_header { line-height: 1.75em; text-align: center; font-size: 16px; font-weight: 400; max-width: 30em; margin: 0 auto; margin-bottom: 15px; } .wpbc_publish_wizard_steps__buttons, .wpbc_publish_wizard_steps__inputs { display: flex; flex-flow: row wrap; justify-content: center; align-items: center; margin:10px 0; } #wpbc_modal__resource_publish .wpbc_publish_wizard_steps__buttons a{ margin: 0 10px; } #wpbc_modal__resource_publish .modal-footer { display: none; text-align: center; } .wp-core-ui .wpbc_page .wpbc_publish_wizard_steps__inputs input[type='text'], .wpbc_publish_wizard_steps__inputs input[type='text'], .wpbc_publish_wizard_steps__inputs select { width: Min(100%,25em); max-width: Min(100%,25em); margin: 5px 10px 10px; min-height: 30px; } .wpbc_publish_wizard_steps__inputs input[type='submit'] { margin: 5px 10px 10px; } </style> <div class="modal-dialog modal-lg0"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> <h4 class="modal-title"><?php esc_html_e( 'Insert into page', 'booking' ); ?></h4> </div> <div class="modal-body"> <div id="wpbc_content_for_js_resource_publish"> <?php if ( wpbc_is_this_demo() ) { wpbc_show_notice__for_page_resource_publish( 'In the demo versions such operation is not allowed.', 'warning' ); } else { ?> <form method="post" action=""> <input type="hidden" name="action" value="wpbc_page_resource_publish" /> <input type="hidden" id="wpbc_page_resource_publish_resource_id" name="wpbc_page_resource_publish_resource_id" value="" /> <input type="hidden" id="wpbc_page_resource_publish_resource_shortcode" name="wpbc_page_resource_publish_resource_shortcode" value="" /> <input type="hidden" id="wpbc_page_resource_publish_what" name="wpbc_page_resource_publish_what" value="" /> <?php wp_nonce_field( 'set_resource_publish_check' ); ?> <div class="wpbc_publish_wizard_steps wpbc_publish_wizard_step_1"> <div class="wpbc_publish_wizard_inner_header"><?php esc_html_e('Choose whether to embed your booking form in an existing page or create a new one.', 'booking'); ?></div> <div class="wpbc_publish_wizard_steps__buttons"> <a href="javascript:void(0)" class="button button-secondary" onclick="javascript:jQuery( '.wpbc_publish_wizard_steps').hide(); jQuery( '.wpbc_publish_wizard_step_2').show(); jQuery( '#wpbc_modal__resource_publish .modal-footer').show(); jQuery( '#wpbc_page_resource_publish_resource_shortcode' ).val( jQuery( '#booking_resource_shortcode_' + jQuery( '#wpbc_page_resource_publish_resource_id' ).val() ).val() ); jQuery( '#wpbc_page_resource_publish_what' ).val( 'edit' );" ><?php esc_html_e('Embed in Existing Page', 'booking' ); ?></a> <a href="javascript:void(0)" class="button button-secondary" onclick="javascript:jQuery( '.wpbc_publish_wizard_steps').hide(); jQuery( '.wpbc_publish_wizard_step_3').show(); jQuery( '#wpbc_modal__resource_publish .modal-footer').show(); jQuery( '#wpbc_page_resource_publish_resource_shortcode' ).val( jQuery( '#booking_resource_shortcode_' + jQuery( '#wpbc_page_resource_publish_resource_id' ).val() ).val() ); jQuery( '#wpbc_page_resource_publish_what' ).val( 'create' );" ><?php esc_html_e('Create New Page','booking'); ?></a> </div> </div> <div class="wpbc_publish_wizard_steps wpbc_publish_wizard_step_2"> <div class="wpbc_publish_wizard_inner_header"><?php esc_html_e('Select the page where you want to embed your booking form.', 'booking'); ?></div> <div class="wpbc_publish_wizard_steps__inputs"> <?php wp_dropdown_pages( array( 'name' => 'select_page_for_resource_publish', 'show_option_none' => '— ' . esc_html__( 'Select', 'booking' ) . ' —', 'option_none_value' => '0', 'selected' => 0,//$privacy_policy_page_id, 'post_status' => array( 'draft', 'publish' ), ) ); submit_button( __( 'Use This Page', 'booking' ), 'primary', 'submit', false, array( 'id' => 'set-page' ) ); ?> </div> </div> <div class="wpbc_publish_wizard_steps wpbc_publish_wizard_step_3"> <div class="wpbc_publish_wizard_inner_header"><?php esc_html_e('Provide a name for your new page.', 'booking'); ?></div> <div class="wpbc_publish_wizard_steps__inputs"> <input id="create_page_for_resource_publish" name="create_page_for_resource_publish" type="text" value="" placeholder="<?php echo esc_attr( __( 'Enter Page Name', 'booking' ) ); ?>"/> <?php submit_button( __( 'Create Page', 'booking' ), 'primary', 'submit', false, array( 'id' => 'set-page' ) ); ?> </div> </div> </form> <?php } ?> </div> </div> <div class="modal-footer"> <!--a href="javascript:void(0)" class="button button-secondary" data-dismiss="modal"><?php esc_html_e('Close' ,'booking'); ?></a--> <a id="wpbc_modal__go_back_button" class="button button-secondary" href="javascript:void(0);" onclick="javascript:jQuery( '.wpbc_publish_wizard_steps').hide(); jQuery( '.wpbc_publish_wizard_step_1').show(); jQuery( '#wpbc_modal__resource_publish .modal-footer').hide();" ><i class="menu_icon icon-1x wpbc_icn_keyboard_arrow_left"></i> <?php esc_html_e('Go Back' ,'booking'); ?></a> </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --> </div><!-- /.modal --> <?php ?></span><?php ?><script type="text/javascript"> function wpbc_modal_dialog__show__resource_publish( booking_id ){ if ( 'function' === typeof (jQuery( '#wpbc_modal__resource_publish' ).wpbc_my_modal) ){ jQuery( '#wpbc_modal__resource_publish' ).wpbc_my_modal( 'show' ); jQuery( '#wpbc_page_resource_publish_resource_id' ).val( booking_id ); jQuery( '.wpbc_publish_wizard_steps').hide(); jQuery( '.wpbc_publish_wizard_step_1').show(); jQuery( '#wpbc_modal__resource_publish .modal-footer').hide(); } else { alert( 'Warning! Modal module( wpbc_my_modal ) had not define.' ) } } </script><?php } add_action( 'wpbc_hook_settings_page_footer', 'wpbc_write_content_for_modal__page_resource_publish' ,10, 1);
Save
Back