/** * Save WR PageBuilder shortcode content of a post/page * * @param int $post_id * @return type */ function save_pagebuilder_content($post_id) { if (!current_user_can('edit_page', $post_id)) { return; } if (!isset($_POST[WR_NONCE . '_builder']) || !wp_verify_nonce($_POST[WR_NONCE . '_builder'], 'wr_builder')) { return; } $wr_deactivate_pb = intval(esc_sql($_POST['wr_deactivate_pb'])); if ($wr_deactivate_pb) { WR_Pb_Utils_Common::delete_meta_key(array('_wr_page_builder_content', '_wr_html_content', '_wr_page_active_tab', '_wr_post_view_count'), $post_id); } else { $wr_active_tab = intval(esc_sql($_POST['wr_active_tab'])); $post_content = ''; // WR PageBuilder is activate if ($wr_active_tab) { $data = array(); if (isset($_POST['shortcode_content']) && is_array($_POST['shortcode_content'])) { foreach ($_POST['shortcode_content'] as $shortcode) { $data[] = trim(stripslashes($shortcode)); } } else { $data[] = ''; } $post_content = WR_Pb_Utils_Placeholder::remove_placeholder(implode('', $data), 'wrapper_append', ''); // update post meta update_post_meta($post_id, '_wr_page_builder_content', $post_content); update_post_meta($post_id, '_wr_html_content', WR_Pb_Helper_Shortcode::doshortcode_content($post_content)); } else { $content = stripslashes($_POST['content']); /// remove this line? $content = apply_filters( 'the_content', $content ); $post_content = $content; } // update current active tab update_post_meta($post_id, '_wr_page_active_tab', $wr_active_tab); } // update whether or not deactive pagebuilder update_post_meta($post_id, '_wr_deactivate_pb', $wr_deactivate_pb); }
/** * Deactivate handle * * @global type $pagenow * @global type $wpdb */ function do_deactivate() { global $pagenow; if ($pagenow == 'plugins.php') { $deactivate_action = false; $wr_pb_plugin = 'wr-pagebuilder/wr-pagebuilder.php'; // check if single deactivate plugin/ bulk deactivate plugins if (!empty($_REQUEST['action']) && in_array($_REQUEST['action'], array('deactivate-selected', 'deactivate'))) { $action = $_REQUEST['action']; if ($action == 'deactivate' && $_REQUEST['plugin'] == $wr_pb_plugin || $action == 'deactivate-selected' && in_array($wr_pb_plugin, $_REQUEST['checked'])) { $deactivate_action = true; } } if ($deactivate_action) { $wr_action = 'wr_deactivate'; if (is_network_admin()) { $plugin_url = network_admin_url('plugins.php'); } else { $plugin_url = admin_url('plugins.php'); } // check whether delete only WR PageBuilder OR Bulk deactivate plugins $deactivate_one = isset($_POST['action']) ? false : true; // show Confirmation form before doing deactivate if (!isset($_REQUEST['wr_wpnonce']) && !isset($_REQUEST['wr_back'])) { // create wr_nonce $wr_nonce = wp_create_nonce($wr_action); $method = $deactivate_one ? 'GET' : 'POST'; $back_text = __('No, take me back', WR_PBL); if ($deactivate_one) { $back_btn = "<a href='{$plugin_url}' class='button button-large'>" . $back_text . '</a>'; } else { $back_btn = "<input type='submit' name='wr_back' class='button button-large' value='" . $back_text . "'>"; } $form = " action='{$plugin_url}' method='{$method}' "; $fields = ''; foreach ($_REQUEST as $key => $value) { if (!is_array($value)) { $fields .= "<input type='hidden' name='{$key}' value='{$value}' />"; } else { foreach ($value as $p) { $fields .= "<input type='hidden' name='{$key}[]' value='{$p}' />"; } } } $fields .= "<input type='hidden' name='wr_wpnonce' value='{$wr_nonce}' />"; // show message ob_start(); ?> <p> <?php _e('After deactivating, all content built with PageBuilder will be parsed to plain HTML code. Are you sure you want to deactivate PageBuilder plugin?', WR_PBL); ?> </p> <center> <form <?php echo balanceTags($form); ?> > <?php echo balanceTags($fields); ?> <input type="submit" name="wr_deactivate" class="button button-large" value="<?php _e('Yes, deactivate plugin', WR_PBL); ?> " style="background: #d9534f; color: #fff; text-shadow: none; border: none;"> <?php echo balanceTags($back_btn); ?> </form> </center> <p style="font-style: italic; font-size: 12px; margin-top: 20px;"> <?php _e("Or if you want to deactivate without parsing 'content built with PageBuilder' to HTML code, click on the button below", WR_PBL); ?> </p> <center> <form <?php echo balanceTags($form); ?> > <?php echo balanceTags($fields); ?> <input type="submit" name="wr_deactivate_light" class="button button-large" value="<?php _e('Deactivate without parsing data', WR_PBL); ?> " style="background: #f0ad4e; color: #fff; text-shadow: none; border: none;"> </form> </center> <?php $message = ob_get_clean(); // Change page title _default_wp_die_handler($message, __('WordPress › Confirmation', WR_PBL)); exit; } else { // get nonce $wr_nonce = esc_sql($_REQUEST['wr_wpnonce']); $nonce = wp_verify_nonce($wr_nonce, $wr_action); // if nonce is invalid if (!in_array($nonce, array(1, 2))) { _default_wp_die_handler(__('Nonce is invalid!', WR_PBL)); exit; } // do action when customer choose "take me back" in confirmation form if (isset($_REQUEST['wr_back'])) { // remove WR PageBuilder from the checked list if (($key = array_search($wr_pb_plugin, $_REQUEST['checked'])) !== false) { unset($_REQUEST['checked'][$key]); } // Overwrite list of checked plugins to deactivating $_POST['checked'] = $_REQUEST['checked']; } else { if (isset($_REQUEST['wr_deactivate'])) { global $wpdb; // update post content = value of '_wr_html_content', deactivate pagebuilder $meta_key1 = 1; $meta_key2 = '_wr_html_content'; $meta_key3 = '_wr_deactivate_pb'; $wpdb->query($wpdb->prepare("\n\t\t\t\t\t\t\t\tUPDATE\t\t{$wpdb->posts} p\n\t\t\t\t\t\t\t\tLEFT JOIN\t{$wpdb->postmeta} p1\n\t\t\t\t\t\t\t\t\t\t\tON p1.post_id = p.ID\n\t\t\t\t\t\t\t\tLEFT JOIN\t{$wpdb->postmeta} p2\n\t\t\t\t\t\t\t\t\t\t\tON p2.post_id = p.ID\n\t\t\t\t\t\t\t\tSET\t\t\tpost_content = p1.meta_value, p2.meta_value = %d\n\t\t\t\t\t\t\t\tWHERE\t\tp1.meta_key = %s\n\t\t\t\t\t\t\t\t\t\t\tAND p2.meta_key = %s\n\t\t\t\t\t\t\t\t", $meta_key1, $meta_key2, $meta_key3)); // update post content = value of '_wr_html_content', deactivate pagebuilder all blog if (is_network_admin()) { // get list id blog all $list_prefix_musite = $wpdb->get_results("SELECT blog_id FROM {$wpdb->blogs}", ARRAY_A); if ($list_prefix_musite && count($list_prefix_musite) > 1) { foreach ($list_prefix_musite as $key => $value) { if ($value['blog_id'] == 1) { continue; } $prefix = $wpdb->prefix . $value['blog_id'] . '_'; $wpdb->query($wpdb->prepare("\n\t\t\t\t\t\t\t\t\t\t\t\tUPDATE\t\t{$prefix}posts p\n\t\t\t\t\t\t\t\t\t\t\t\tLEFT JOIN\t{$prefix}postmeta p1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tON p1.post_id = p.ID\n\t\t\t\t\t\t\t\t\t\t\t\tLEFT JOIN\t{$prefix}postmeta p2\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tON p2.post_id = p.ID\n\t\t\t\t\t\t\t\t\t\t\t\tSET\t\t\tpost_content = p1.meta_value, p2.meta_value = %d\n\t\t\t\t\t\t\t\t\t\t\t\tWHERE\t\tp1.meta_key = %s\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tAND p2.meta_key = %s\n\t\t\t\t\t\t\t\t\t\t\t\t", $meta_key1, $meta_key2, $meta_key3)); } } } // delete pagebuilder content WR_Pb_Utils_Common::delete_meta_key(array('_wr_page_builder_content', '_wr_page_active_tab')); do_action('wr_pb_deactivate'); } } } } } }
/** * * Uninstalling WR PageBuilder: deletes post metas & options * * @author WooRockets Team <*****@*****.**> * @package IGPGBLDR * @version $Id$ */ //if uninstall not called from WordPress exit if (!defined('WP_UNINSTALL_PLUGIN')) { exit; } include_once 'core/utils/common.php'; // delete all other providers $providers = get_option('_wr_pb_providers'); if ($providers) { $providers = unserialize($providers); $list_plugins = array(); foreach ($providers as $provider) { if (!empty($provider['file'])) { $list_plugins[] = $provider['file']; } } delete_plugins($list_plugins); } // delete cache folder WR_Pb_Utils_Common::remove_cache_folder(); // delete meta key WR_Pb_Utils_Common::delete_meta_key(array('_wr_page_builder_content', '_wr_html_content', '_wr_page_active_tab', '_wr_post_view_count', '_wr_deactivate_pb', '_wr_page_builder_css_files', '_wr_page_builder_css_custom'));