????
Current Path : /home/innovagencyco/www/abtest.innovagency.co.za/wp-content/plugins/pagelayer/main/ |
Current File : /home/innovagencyco/www/abtest.innovagency.co.za/wp-content/plugins/pagelayer/main/live.php |
<?php ////////////////////////////////////////////////////////////// //=========================================================== // live.php //=========================================================== // PAGELAYER // Inspired by the DESIRE to be the BEST OF ALL // ---------------------------------------------------------- // Started by: Pulkit Gupta // Date: 23rd Jan 2017 // Time: 23:00 hrs // Site: http://pagelayer.com/wordpress (PAGELAYER) // ---------------------------------------------------------- // Please Read the Terms of use at http://pagelayer.com/tos // ---------------------------------------------------------- //=========================================================== // (c)Pagelayer Team //=========================================================== ////////////////////////////////////////////////////////////// // Are we being accessed directly ? if(!defined('PAGELAYER_VERSION')) { exit('Hacking Attempt !'); } class PageLayer_LiveEditor{ // The constructor function __construct() { global $pagelayer; // Convert the post to a Pagelayer Post first $this->check_post(); // Add the shortcodes // TODO : Make a json file add_action('wp_head', array($this, 'wp_head'), 999); // Add the Body Class Filter //add_filter('body_class', array($this, 'body_class')); // Add the content handler add_filter('the_content', array($this, 'the_content'), 999999); // Skip do_blocks for invalid blocks add_filter( 'pre_render_block', array($this, 'pre_do_render_block'), 10, 3 ); // Skip do_shortcode for invalid shortcodes add_filter( 'pre_do_shortcode_tag', array($this, 'pre_do_shortcode_tag'), 10, 4 ); // Build the Shortcodes MD5 for cache $scmd5 = md5(json_encode($pagelayer->shortcodes).json_encode($pagelayer->groups).json_encode($pagelayer->styles)); $premium_js = apply_filters('pagelayer_editor_give_js', ''); $premium_css = apply_filters('pagelayer_editor_give_css', ''); // Enqueue our Editor's JS wp_register_script('pagelayer-editor', admin_url( 'admin-ajax.php?action=pagelayer_givejs' ).'&give=pagelayer-editor.js,widgets.js,properties.js,base-64.min.js,slimscroll.js,vanilla-picker.min.js,trumbowyg.js,trumbowyg.fontfamily.js,trumbowyg-pagelayer.js,tlite.min.js,pagelayer-pen.js'.$premium_js.'&pagelayer_nonce=1&scmd5='.$scmd5, array('jquery'), PAGELAYER_VERSION); wp_enqueue_script('pagelayer-editor'); $css_url = admin_url('admin-ajax.php?action=pagelayer_givecss&pagelayer_nonce=1&'); if(pagelayer_enable_giver()){ $css_url = PAGELAYER_CSS.'/givecss.php?'; } // Enqueue the Editor's CSS wp_register_style('pagelayer-editor', $css_url.'give=pagelayer-editor-frontend.css,pagelayer-pen.css,'.(defined('PAGELAYER_PREMIUM') ? ',owl.theme.default.min.css,owl.carousel.min.css' : '').$premium_css, array(), PAGELAYER_VERSION); wp_enqueue_style('pagelayer-editor'); // Enqueue the DateTime picker CSS /* wp_register_style('datetime-picker', PAGELAYER_CSS.'/datetime-picker.css', array(), PAGELAYER_VERSION); wp_enqueue_style('datetime-picker'); */ // Enqueue the media library if(!did_action('wp_enqueue_media')){ wp_enqueue_media(); } // Force the Frontend CSS and JS if not already loaded pagelayer_enqueue_frontend(true); // Hide Admin Bar show_admin_bar(false); remove_action('wp_head', '_admin_bar_bump_cb'); // Load custom widgets do_action('pagelayer_custom_editor_enqueue'); // Add the footer scripts add_action('wp_footer', array($this, 'wp_footer'), 1); } // Add our body class function body_class($classes){ return array_merge($classes, array('pagelayer-body')); } // Header function to add certain things function wp_head(){ global $pagelayer, $post, $wp_query, $_wp_post_type_features; // Export the post props $_post = clone $post; unset($_post->post_content); // Add template type if(!empty($pagelayer->template_editor)){ $_post->pagelayer_template_type = get_post_meta($_post->ID, 'pagelayer_template_type', true); } $returnURL = ($_post->post_type == 'post' ? admin_url('edit.php') : admin_url('edit.php?post_type='.$_post->post_type) ); // Get CAPTCHA site key $pagelayer_recaptch_site_key = get_option('pagelayer_google_captcha'); $pro_url = defined('POPULARFX_PRO_URL') ? POPULARFX_PRO_URL : PAGELAYER_PRO_PRICE_URL; $pro_txt = defined('POPULARFX_PRO_URL') ? 'PopularFX Pro' : 'Pagelayer Pro'; $post_type = get_post_type_object($post->post_type); $post_type_name = (!empty($post_type->labels->singular_name)) ? $post_type->labels->singular_name : ucfirst($post_type->name); // Create list of nav menus and it's items list $pagelayer_menus_items_list = array(); $menus = wp_get_nav_menus(); foreach($menus as $menu){ if(!is_nav_menu($menu)){ continue; } $pagelayer_menus_items_list[$menu->term_id] = wp_get_nav_menu_items($menu->term_id, array('post_status' => 'any')); } echo ' <script type="text/javascript"> pagelayer_ver = "'.PAGELAYER_VERSION.'"; pagelayer_block_prefix = "'.PAGELAYER_BLOCK_PREFIX.'"; pagelayer_pro = '.(int)defined('PAGELAYER_PREMIUM').'; pagelayer_pro_url = "'.PAGELAYER_PRO_PRICE_URL.'"; pagelayer_pro_txt = "'.addslashes('This feature is a part of <a href="'.$pro_url.'" target="_blank">'.$pro_txt.'</a>. You will need purchase <a href="'.$pro_url.'" target="_blank">'.$pro_txt.'</a> to use this feature.').'"; pagelayer_api_url = "'.PAGELAYER_API.'"; pagelayer_ajax_url = "'.admin_url( 'admin-ajax.php' ).'?&"; pagelayer_post_props = "'.admin_url( 'admin.php?page=pagelayer_meta_setting&post=' ).$post->ID.'"; pagelayer_ajax_nonce = "'.wp_create_nonce('pagelayer_ajax').'"; pagelayer_media_ajax_nonce = "'.wp_create_nonce('media-form').'"; pagelayer_internal_linking_nonce = "'.wp_create_nonce('internal-linking').'"; pagelayer_preview_nonce = "'. wp_create_nonce( 'post_preview_' . $post->ID ).'"; pagelayer_url = "'.PAGELAYER_URL.'"; pagelayer_postID = "'.$post->ID.'"; pagelayer_permalink_structure = "'.(empty(get_option('permalink_structure')) ? 0 : 1).'"; pagelayer_post_permalink = "'.get_permalink($post->ID).'"; pagelayer_tabs = '.json_encode($pagelayer->tabs).'; pagelayer_isDirty = false; pagelayer_returnURL = "'.$returnURL.'"; pagelayer_theme_vars = '.json_encode( pagelayer_template_vars() ).'; pagelayer_revision_obj = '.json_encode( pagelayer_get_post_revision_by_id( $post->ID ) ).'; pagelayer_author = '.json_encode(pagelayer_author_data($post->ID)).'; pagelayer_site_logo = '.json_encode(pagelayer_site_logo()).'; pagelayer_support_FI = "'. ( current_theme_supports('post-thumbnails') ) .'"; pagelayer_editable = ".'.(!empty($pagelayer->template_editor) ? $pagelayer->template_editor : 'pagelayer-editable-area').'"; pagelayer_recaptch_site_key = "'.(!empty($pagelayer_recaptch_site_key) ? $pagelayer_recaptch_site_key : '').'"; pagelayer_post = '. @json_encode($_post) .'; pagelayer_loaded_icons = '.json_encode(pagelayer_enabled_icons()).'; pagelayer_social_urls = '.json_encode(pagelayer_get_social_urls()).'; pagelayer_global_widgets = '.json_encode($pagelayer->global_widgets).'; pagelayer_saved_sections = '.json_encode($pagelayer->saved_sections).'; pagelayer_global_sections = '.json_encode($pagelayer->global_sections).'; pagelayer_brand = "'.addslashes($pagelayer->BRAND_TEXT).'"; pagelayer_post_type_features = '.json_encode(@$_wp_post_type_features[$post->post_type]).'; pagelayer_post_categories = '.json_encode(pagelayer_post_cats($post)).'; pagelayer_post_tags = '.json_encode(pagelayer_post_tags($post)).'; pagelayer_shortcodes.pl_post_props.name = "'.ucfirst($post_type_name).' '. __pl('Settings').'"; pagelayer_shortcodes.pl_post_props.params.post_author.list = '.json_encode(pagelayer_post_authors_by_type($post->post_type)).'; pagelayer_shortcodes.pl_post_props.pageParent.post_parent.list = '.json_encode(pagelayer_parent_post_prop($post)).'; pagelayer_gmaps_key = "'.get_option('pagelayer-gmaps-api-key').'"; pagelayer_ajax_post_data = {}; pagelayer_menus_items_list = '.json_encode($pagelayer_menus_items_list).'; pagelayer_customizer_values = '.json_encode(pagelayer_get_customizer_options()).'; pagelayer_global_colors = '.json_encode($pagelayer->global_colors).'; pagelayer_global_fonts = '.json_encode($pagelayer->global_fonts).'; pagelayer_customizer_url = "'.admin_url("/customize.php?return=").urlencode($_SERVER['HTTP_REFERER']).'"; pagelayer_support_url = "'.$pagelayer->support .'";'; if(defined('PAGELAYER_PREMIUM')){ echo 'pagelayer_shortcodes.pl_popup.advance_options.popup_cookie_name.default = "popup_cookie_'.rand(100, 999).'";'; } // Detect JS via givejs for better performance if(empty($pagelayer->settings['enable_giver'])){ echo ' jQuery(document).ready(function(){ var test_giver = -1; return jQuery.ajax({ url: "'.PAGELAYER_JS.'/givejs.php?test=1", type: "GET", dataType: "text", success:function(data){ if(data !== "1"){ return; } test_giver = 1; }, complete:function(data){ jQuery.ajax({ type: "POST", url: pagelayer_ajax_url+"&action=pagelayer_set_jscss_giver", data: { pagelayer_nonce: pagelayer_ajax_nonce, set : test_giver }, error: function(errorThrown){ console.log("Error saving giver data"); console.log(errorThrown); } }); } }); }); '; } echo ' </script>'; echo '<style> @media (min-width: '.($pagelayer->settings['tablet_breakpoint'] + 1).'px){ .pagelayer-hide-desktop{ display:initial; filter:blur(3px); } .pagelayer-hide-desktop *{ filter:blur(2px); } } @media (max-width: '.$pagelayer->settings['tablet_breakpoint'].'px) and (min-width: '.($pagelayer->settings['mobile_breakpoint'] + 1).'px){ .pagelayer-hide-tablet{ display:initial; filter:blur(3px); } .pagelayer-hide-tablet *{ filter:blur(2px); } } @media (max-width: '.$pagelayer->settings['mobile_breakpoint'].'px){ .pagelayer-hide-mobile{ display:initial; filter:blur(3px); } .pagelayer-hide-mobile *{ filter:blur(2px); } } </style>'; do_action('pagelayer_editor_wp_head'); } // Footer function to add certain things function wp_footer(){ global $pagelayer; echo '<script> pagelayer_default_params = '.json_encode($pagelayer->default_params, JSON_FORCE_OBJECT).'; pagelayer.el = '.json_encode($pagelayer->data_attr, JSON_FORCE_OBJECT).'; </script>'; wp_enqueue_script('heartbeat'); _wp_footer_scripts(); } // Convert to Pagelayer post function check_post(){ global $post; // Is this a Pagelayer post $data = get_post_meta($post->ID, 'pagelayer-data', true); if(empty($data)){ // Is it a Gutenburg Post ? if(!empty($post->post_content)){ // Add our surrounding tag $post->post_content = '<!-- '.PAGELAYER_BLOCK_PREFIX.':pagelayer/pl_row --> <!-- '.PAGELAYER_BLOCK_PREFIX.':pagelayer/pl_col {col=12} --> '.$post->post_content.' <!-- /'.PAGELAYER_BLOCK_PREFIX.':pagelayer/pl_col --> <!-- /'.PAGELAYER_BLOCK_PREFIX.':pagelayer/pl_row -->'; // Regular post, but its empty so we will add our blocks ! }else{ // Add our surrounding tag $post->post_content = '<!-- '.PAGELAYER_BLOCK_PREFIX.':pagelayer/pl_row {"stretch":"auto","col_gap":"10","width_content":"auto","row_height":"default","overlay_hover_delay":"400","row_shape_top_color":"#227bc3","row_shape_top_width":"100","row_shape_top_height":"100","row_shape_bottom_color":"#e44993","row_shape_bottom_width":"100","row_shape_bottom_height":"100","pagelayer-id":""} --> <!-- '.PAGELAYER_BLOCK_PREFIX.':pagelayer/pl_col {"overlay_hover_delay":"400","pagelayer-id":""} --> <!-- /'.PAGELAYER_BLOCK_PREFIX.':pagelayer/pl_col --> <!-- /'.PAGELAYER_BLOCK_PREFIX.':pagelayer/pl_row -->'; // Update the post $new_post = array( 'ID' => $post->ID, 'post_content' => $post->post_content, ); // Update the post into the database wp_update_post($new_post); // Convert to pagelayer accessed post if(!add_post_meta($post->ID, 'pagelayer-data', time(), true)){ update_post_meta($post->ID, 'pagelayer-data', time()); } } } } // Add certain things function the_content($content) { global $post, $pagelayer; if(empty($pagelayer->dont_make_editable)){ $content = '<div class="pagelayer-editable-area">'.$content.'</div>'; } // Check if we're inside the main loop in a single post page. if ( is_single() && in_the_loop() && is_main_query() ) { return $content; } return $content; } // Skip do_shortcode for invalid shortcodes function pre_do_shortcode_tag($return, $tag, $attr, $m){ if(!empty($pagelayer->dont_make_editable) || ! doing_filter('the_content')){ return $return; } $prefixes = ['pl_']; $prefixes = apply_filters( 'pagelayer_valid_shortcode_tag', $prefixes); $vailid = false; foreach($prefixes as $prefix) { if (strpos($tag, $prefix) === 0) { $vailid = true; break; } } if($vailid){ return $return; } return $m[0]; } // Skip do_blocks for invalid blocks function pre_do_render_block($return, $parsed_block = [], $parent_block = null){ if(!empty($pagelayer->dont_make_editable) || ! doing_filter('the_content') || empty($parsed_block['blockName'])){ return $return; } $prefixes = ['pagelayer/']; $prefixes = apply_filters( 'pagelayer_valid_block_tag', $prefixes); $vailid = false; foreach($prefixes as $prefix) { if (strpos($parsed_block['blockName'], $prefix) === 0) { $vailid = true; break; } } if($vailid){ return $return; } $serialize_block = serialize_block($parsed_block); $parsed_block['blockName'] = 'pagelayer/pl_missing'; $parsed_block['innerHTML'] = $serialize_block; $parsed_block['attrs'] = []; return render_block($parsed_block); } }