odb_classes(); // URLS AND DIRECTORIES $this->odb_urls_dirs(); // 5.0.8 THIS MAY NOT THIS MAY NOT EVEN BE NECESSARY ANYMORE if ($this->odb_is_relevant_page()) { $this->odb_create_log_table(); } // GET (MULTI-SITE) NETWORK INFORMATION $this->odb_multisite_obj->odb_ms_network_info(); // LOAD OPTIONS $this->odb_load_options(); // INITIALIZE WORDPRESS HOOKS $this->odb_init_hooks(); // GET EXCLUDED TABLES FROM SETTINGS $this->odb_rvg_excluded_tabs = $this->odb_multisite_obj->odb_ms_get_option('odb_rvg_excluded_tabs'); // USE THE NON-MINIFIED VERSION OF SCRIPTS AND STYLE SHEETS WHILE DEBUGGING $this->odb_minify = (defined('WP_DEBUG') && WP_DEBUG) ? '' : '.min'; // LOAD STYLE SHEET (ONLY ON RELEVANT PAGES) // v4.0.3 if($this->odb_is_relevant_page()) { wp_register_style( 'odb-style'.$this->odb_version, plugins_url('css/style.css', __FILE__), array(), $this->odb_version ); wp_enqueue_style('odb-style'.$this->odb_version); } // if($this->odb_is_relevant_page()) if(defined('RUN_OPTIMIZE_DATABASE') && RUN_OPTIMIZE_DATABASE == 1) $this->odb_start(true); } // odb_init() /******************************************************************************* * * LOAD AND INITIALIZE CLASSES * *******************************************************************************/ function odb_classes() { // LOAD CLASSES include_once('classes/odb-cleaner.php'); include_once('classes/odb-displayer.php'); include_once('classes/odb-logger.php'); include_once('classes/odb-multisite.php'); include_once('classes/odb-scheduler.php'); include_once('classes/odb-utilities.php'); // CREATE INSTANCES $this->odb_cleaner_obj = new ODB_Cleaner(); $this->odb_displayer_obj = new ODB_Displayer(); $this->odb_logger_obj = new ODB_Logger(); $this->odb_multisite_obj = new ODB_MultiSite(); $this->odb_scheduler_obj = new ODB_Scheduler(); $this->odb_utilities_obj = new ODB_Utilities(); } // odb_classes() /******************************************************************************* * * INITIALIZE URLS AND DIRECTORIES * *******************************************************************************/ function odb_urls_dirs() { $this->odb_plugin_url = plugins_url( '/', __FILE__ ); $this->odb_plugin_path = plugin_dir_path(__FILE__); $this->odb_logfile_debug_path = $this->odb_plugin_path.'logs/rvg-optimize-db-log.txt'; } // odb_urls_dirs() /******************************************************************************* * * LOAD OPTIONS * *******************************************************************************/ function odb_load_options() { // GET OPTIONS $this->odb_rvg_options = $this->odb_multisite_obj->odb_ms_get_option('odb_rvg_options', array()); if(!isset($this->odb_rvg_options['version'])) // THIS VERSION IS FROM BEFORE 4.0: CONVERT OPTIONS $this->odb_convert_options(); if(!isset($this->odb_rvg_options['adminbar'])) $this->odb_rvg_options['adminbar'] = 'N'; if(!isset($this->odb_rvg_options['adminmenu'])) $this->odb_rvg_options['adminmenu'] = 'N'; if(!isset($this->odb_rvg_options['clear_pingbacks'])) $this->odb_rvg_options['clear_pingbacks'] = 'N'; if(!isset($this->odb_rvg_options['clear_oembed'])) $this->odb_rvg_options['clear_oembed'] = 'N'; if(!isset($this->odb_rvg_options['clear_orphans'])) $this->odb_rvg_options['clear_orphans'] = 'N'; if(!isset($this->odb_rvg_options['clear_spam'])) $this->odb_rvg_options['clear_spam'] = 'N'; if(!isset($this->odb_rvg_options['clear_tags'])) $this->odb_rvg_options['clear_tags'] = 'N'; if(!isset($this->odb_rvg_options['clear_transients'])) $this->odb_rvg_options['clear_transients'] = 'N'; if(!isset($this->odb_rvg_options['clear_trash'])) $this->odb_rvg_options['clear_trash'] = 'N'; if(!isset($this->odb_rvg_options['delete_older'])) $this->odb_rvg_options['delete_older'] = 'N'; if(!isset($this->odb_rvg_options['rvg_revisions'])) $this->odb_rvg_options['rvg_revisions'] = 'N'; if(!isset($this->odb_rvg_options['last_run'])) $this->odb_rvg_options['last_run'] = ''; // v4.5.1 if(!isset($this->odb_rvg_options['last_run_seconds'])) $this->odb_rvg_options['last_run_seconds'] = ''; if(!isset($this->odb_rvg_options['logging_on'])) $this->odb_rvg_options['logging_on'] = 'N'; if(!isset($this->odb_rvg_options['nr_of_revisions'])) $this->odb_rvg_options['nr_of_revisions'] = ''; // v4.1 if(!isset($this->odb_rvg_options['older_than'])) $this->odb_rvg_options['older_than'] = ''; if(!isset($this->odb_rvg_options['optimize_innodb'])) $this->odb_rvg_options['optimize_innodb'] = 'N'; if(!isset($this->odb_rvg_options['schedule_type'])) $this->odb_rvg_options['schedule_type'] = ''; if(!isset($this->odb_rvg_options['schedule_hour'])) $this->odb_rvg_options['schedule_hour'] = ''; if(!isset($this->odb_rvg_options['total_savings'])) $this->odb_rvg_options['total_savings'] = (int)0; if(!isset($this->odb_rvg_options['version'])) $this->odb_rvg_options['version'] = $this->odb_version; // CUSTOM POST TYPES (from v4.4) if(!isset($this->odb_rvg_options['post_types'])) { $this->odb_rvg_options['post_types'] = array(); $relevant_pts = $this->odb_utilities_obj->odb_get_relevant_post_types(); // (CUSTOM) POST TYPES ARE PER DEFAULT ENABLED foreach($relevant_pts as $posttype) { $this->odb_rvg_options['post_types'][$posttype] = "Y"; } // foreach($relevant_pts as $posttype) if (isset($this->odb_rvg_options['rev_post_type'])) { // UPGRADE FROM A VERSION < 4.4 if ($this->odb_rvg_options['rev_post_type'] == 'page') { // PAGES ONLY: DISABLE 'post' $this->odb_rvg_options['post_types']['post'] = "N"; } else if ($this->odb_rvg_options['rev_post_type'] == 'post') { // POSTS ONLY: DISABLE 'page' $this->odb_rvg_options['post_types']['page'] = "N"; } unset($this->odb_rvg_options['rev_post_type']); } // if (isset($this->odb_rvg_options['rev_post_type'])) } // if(!isset($this->odb_rvg_options['post_types'])) // UPDATE OPTIONS $this->odb_multisite_obj->odb_ms_update_option('odb_rvg_options', $this->odb_rvg_options); // UPDATE SCHEDULER (IF NEEDED) $this->odb_scheduler_obj->odb_update_scheduler(); } // odb_load_options() /******************************************************************************* * * COPY AND DELETE OPTIONS FROM PREVIOUS VERSIONS (BEFORE 4.0) * *******************************************************************************/ function odb_convert_options() { global $wpdb; // STOP OLD SCHEDULER wp_clear_scheduled_hook('rvg_optimize_database'); $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_total_savings'); if($setting) { $this->odb_rvg_options['total_savings'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_total_savings'); $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_total_savings'); } $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_pingbacks'); if($setting) { $this->odb_rvg_options['clear_pingbacks'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_pingbacks'); $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_pingbacks'); } $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_oembed'); if($setting) { $this->odb_rvg_options['rvg_clear_oembed'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_oembed'); $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_oembed'); } $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_orphans'); if($setting) { $this->odb_rvg_options['rvg_clear_orphans'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_orphans'); $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_orphans'); } $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_spam'); if($setting) { $this->odb_rvg_options['clear_spam'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_spam'); $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_spam'); } $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_tags'); if($setting) { $this->odb_rvg_options['clear_tags'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_tags'); $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_tags'); } $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_transients'); if($setting) { $this->odb_rvg_options['clear_transients'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_transients'); $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_transients'); } $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_trash'); if($setting) { $this->odb_rvg_options['clear_trash'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_trash'); $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_trash'); } $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_adminbar'); if($setting) { $this->odb_rvg_options['adminbar'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_adminbar'); $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_adminbar'); } $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_adminmenu'); if($setting) { $this->odb_rvg_options['adminmenu'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_adminmenu'); $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_adminmenu'); } $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_logging_on'); if($setting) { $this->odb_rvg_options['logging_on'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_logging_on'); $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_logging_on'); } $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_number'); if($setting) $this->odb_rvg_options['nr_of_revisions'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_number'); $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_number'); $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_schedule'); if($setting) $this->odb_rvg_options['schedule_type'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_schedule'); $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_schedule'); $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_schedulehour'); if($setting) $this->odb_rvg_options['schedule_hour'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_schedulehour'); $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_schedulehour'); // COPY EXCLUDED TABLES for($i = 0; $i < count($this->odb_ms_prefixes); $i++) { $sql = " SELECT `option_name` FROM ".$this->odb_ms_prefixes[$i]."options WHERE `option_name` LIKE 'rvg_ex_%' "; $res = $wpdb->get_results($sql, ARRAY_A); for($j=0; $jodb_rvg_excluded_tabs[$option_name_new] = 'Y'; $this->odb_multisite_obj->odb_ms_delete_option($option_name); } // for($j=0; $jodb_ms_prefixes); $i++) // UPDATE EXCLUDED TABLES $this->odb_multisite_obj->odb_ms_update_option('odb_rvg_excluded_tabs', $this->odb_rvg_excluded_tabs); } // odb_convert_options() /******************************************************************************* * * INITIALIZE WORDPRESS HOOKS * *******************************************************************************/ function odb_init_hooks() { global $blog_id; // ADD ENTRY TO ADMIN TOOLS MENU if (is_multisite()) { if ($blog_id == 1) { // v4.1: PLUGIN ONLY CAN BE USED ON THE MAIN SITE (NOT ON THE SUB SITES) add_action('admin_menu', array(&$this, 'odb_admin_tools')); add_action('admin_menu', array(&$this, 'odb_admin_settings')); // ADD 'SETTINGS' LINK TO THE MAIN PLUGIN PAGE add_filter('plugin_action_links_'.plugin_basename(__FILE__), array(&$this, 'odb_settings_link')); } // if ($blog_id == 1) } else { add_action('admin_menu', array(&$this, 'odb_admin_tools')); add_action('admin_menu', array(&$this, 'odb_admin_settings')); // ADD 'SETTINGS' LINK TO THE MAIN PLUGIN PAGE add_filter('plugin_action_links_'.plugin_basename(__FILE__), array(&$this, 'odb_settings_link')); } // if (is_multisite()) // ICON MODE: ADD ICON TO ADMIN MENU if (! empty( $this->odb_rvg_options['adminmenu'] ) && $this->odb_rvg_options['adminmenu'] == "Y") { add_action('admin_menu', array(&$this, 'odb_admin_icon')); add_action('admin_menu', array(&$this, 'odb_register_options')); } // ADD THE '1 CLICK OPTIMIZE DATABASE' ITEM TO THE ADMIN BAR (IF ACTIVATED) if(! empty( $this->odb_rvg_options['adminbar'] ) && $this->odb_rvg_options['adminbar'] == 'Y') add_action('wp_before_admin_bar_render', array(&$this, 'odb_admin_bar')); // INITIALIZE LOCALIZATION add_action('admin_menu', array(&$this, 'odb_i18n')); } // odb_init_hooks() /******************************************************************************* * * ADD ENTRY TO THE ADMIN TOOLS MENU * *******************************************************************************/ function odb_admin_tools() { if (function_exists('add_management_page')) { add_management_page( __('Optimize Database',$this->odb_txt_domain), // page title __('Optimize Database',$this->odb_txt_domain), // menu title 'manage_options', // capability 'rvg-optimize-database', // menu slug array(&$this, 'odb_start_manually')); // function } // if (function_exists('add_management_page')) } // odb_admin_tools() /******************************************************************************* * * ADD ENTRY TO THE ADMIN SETTINGS MENU * *******************************************************************************/ function odb_admin_settings() { if (function_exists('add_options_page')) add_options_page( __('Optimize Database', $this->odb_txt_domain), // page title __('Optimize Database', $this->odb_txt_domain), // menu title 'manage_options', // capability 'odb_settings_page', // menu slug array(&$this, 'odb_settings_page') // function ); } // odb_admin_settings() /******************************************************************************* * * ADD 'SETTINGS' LINK TO THE MAIN PLUGIN PAGE * *******************************************************************************/ function odb_settings_link($links) { array_unshift($links, ''.__('Settings', $this->odb_txt_domain).''); return $links; } // odb_settings_link() /******************************************************************************************** * * ADD THE '1 CLICK OPTIMIZE DATABASE' ITEM TO THE ADMIN BAR (IF ACTIVATED) * ********************************************************************************************/ function odb_admin_bar() { global $wp_admin_bar; if (!is_super_admin() || !is_admin_bar_showing()) return; $siteurl = site_url('/'); $nonce = wp_create_nonce( 'rvg-optimize-database' ); $wp_admin_bar->add_menu( array( 'id' => 'optimize', 'title' => __('Optimize DB (1 click)', $this->odb_txt_domain), 'href' => $siteurl . 'wp-admin/tools.php?page=rvg-optimize-database&action=run_detail&_wpnonce=' . $nonce )); } // odb_admin_bar() /******************************************************************************************** * * 'ICON MODE': ADD A LINK TO THE ADMIN MENU * ********************************************************************************************/ function odb_admin_icon() { if (function_exists('add_menu_page')) { add_menu_page( __('Optimize Database', $this->odb_txt_domain), // page title __('Optimize Database', $this->odb_txt_domain), // menu title 'administrator', // capability 'rvg-optimize-database', // menu slug array(&$this, 'odb_start_manually'), // function $this->odb_plugin_url.'images/icon.png' // icon url ); } } // odb_admin_icon() /******************************************************************************************** * * 'ICON MODE': REGISTER OPTION PAGE BUT HIDE IT FROM THE ADMIN MENU * ********************************************************************************************/ function odb_register_options() { if (function_exists('add_submenu_page')) { add_submenu_page( '', // parent slug (NULL is hide from menu) __('Optimize Database', $this->odb_txt_domain), // page title __('Optimize Database', $this->odb_txt_domain), // menu title 'manage_options', // capability 'rvg_odb_admin', // menu slug array(&$this, 'odb_settings_page') // function ); } // if (function_exists('add_submenu_page')) } // odb_register_options() /******************************************************************************* * * LOAD TEXT DOMAIN * *******************************************************************************/ function odb_i18n() { load_plugin_textdomain( $this->odb_txt_domain, // domain false, // abs rel path dirname(plugin_basename( __FILE__ )).'/language/' // plugin rel path ); } // odb_i18n() /******************************************************************************* * * ARE WE ON A, FOR THIS PLUGIN, RELEVANT PAGE? * Since v4.0.3 * *******************************************************************************/ function odb_is_relevant_page() { $this_page = ''; if(isset($_GET['page'])) { $this_page = $_GET['page']; return ($this_page == 'odb_settings_page' || $this_page == 'rvg-optimize-database'); } return false; } // odb_is_relevant_page() /******************************************************************************* * * LOAD SETTINGS (OPTIONS) PAGE * *******************************************************************************/ function odb_settings_page() { global $wpdb, $odb_rvg_excluded_tabs, $odb_ms_prefixes; include_once(trailingslashit(dirname(__FILE__)).'/includes/settings-page.php'); } // odb_settings_page() /******************************************************************************* * * START CLEANING / OPTIMIZATION (INITIATED BY THE USER, NOT FROM WP-CRON) * *******************************************************************************/ function odb_start_manually() { $this->odb_start(false); } // odb_start_manually() /******************************************************************************* * * START CLEANING / OPTIMIZATION (FROM WP-CRON) * *******************************************************************************/ function odb_start_scheduler() { $this->odb_start(true); } // odb_start_scheduler() /******************************************************************************* * * CREATE THE LOG TABLE (IF NOT EXISTS) * *******************************************************************************/ function odb_create_log_table() { global $wpdb; // PLUGIN RUNNING (v5.0.5) $this->odb_tables = $this->odb_utilities_obj->odb_get_tables(); // CREATE LOG TABLE (IF NOT EXISTS) - v4.6 $this->odb_logtable_name = $wpdb->base_prefix . 'odb_logs'; $found = false; for($i = 0; $i < count($this->odb_tables); $i++) { if ($this->odb_tables[$i][0] == $this->odb_logtable_name) { $found = true; } } // for($i = 0; $i < count($this->odb_tables); $i++) // v5.0.3 if (!$found) { $sql = ' CREATE TABLE IF NOT EXISTS `' . $this->odb_logtable_name . '` ( `odb_id` int(11) NOT NULL AUTO_INCREMENT, `odb_timestamp` varchar(20) NOT NULL, `odb_revisions` int(11) NOT NULL, `odb_trash` int(11) NOT NULL, `odb_spam` int(11) NOT NULL, `odb_tags` int(11) NOT NULL, `odb_transients` int(11) NOT NULL, `odb_pingbacks` int(11) NOT NULL, `odb_oembeds` int(11) NOT NULL, `odb_orphans` int(11) NOT NULL, `odb_tables` int(11) NOT NULL, `odb_before` varchar(20) NOT NULL, `odb_after` varchar(20) NOT NULL, `odb_savings` varchar(20) NOT NULL, PRIMARY KEY (`odb_id`) ) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; '; // CREATE TABLE $wpdb->query($sql); } // if (!$found) } // odb_create_log_table() /******************************************************************************* * * MAIN METHOD FOR CLEANING / OPTIMIZING * *******************************************************************************/ function odb_start($scheduler) { $this->odb_create_log_table(); // Ensure current user (if applicable) can view this page. if(!$scheduler) { if ( ! is_user_logged_in() || ! current_user_can( 'manage_options' ) ) { return; } } // PAGE LOAD TIMER $time = microtime(); $time = explode(' ', $time); $time = $time[1] + $time[0]; $this->odb_start_time = $time; $action = ''; if(isset($_REQUEST['action']) && isset($_REQUEST['page']) && 'rvg-optimize-database' === $_REQUEST['page']) { $action = $_REQUEST['action']; } if ( ! empty( $action ) && isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], 'rvg-optimize-database' ) ) { // v4.6 if($action == 'view_log') { // SHOW THE LOGS $this->odb_logger_obj->odb_view_log(); // v4.6.1 return; } else if($action == "clear_log") { // CLEAR THE LOG TABLE $this->odb_logger_obj->odb_clear_log(); // UPDATED MESSAGE // v4.6 echo ""; echo "

". __('Optimize Database after Deleting Revisions LOGS HAVE BEEN CLEARED', $this->odb_txt_domain); echo "

"; } // if($action == "clear_log") } // if(isset($_REQUEST['action'])) else { // Assume there is no action or the nonce failed verification. $action = ''; } if(!$scheduler) { // SHOW PAGE HEADER $this->odb_displayer_obj->display_header(); // v4.1.9: STARTING: SHOW RUNNING INDICATOR echo ""; // SHOW CURRENT SETTINGS $this->odb_displayer_obj->display_current_settings(); } // if(!$scheduler) if ($action != 'analyze_summary' && $action != 'analyze_detail' && $action != 'run_summary' && $action != 'run_detail' && !$scheduler) { /**************************************************************************************** * START SCREEN (SHOW SETTINGS + BUTTONS) ****************************************************************************************/ $this->odb_displayer_obj->display_start_buttons($action); } else { $analyze = ($action == 'analyze_summary' || $action == 'analyze_detail'); /**************************************************************************************** * RUN CLEANING AND OPTIMIZATION ****************************************************************************************/ $this->odb_displayer_obj->display_start_buttons($action); // DELETE REDUNDANT DATA $this->odb_cleaner_obj->odb_run_cleaner($scheduler, $action); if ($scheduler || $action == 'run_summary' || $action == 'run_detail') { // REGISTER THE LAST RUN $this->odb_rvg_options['last_run'] = current_time('M j, Y @ H:i', 0); // OPTIMIZE DATABASE TABLES $this->odb_cleaner_obj->odb_run_optimizer($scheduler, $action); // SHOW RESULTS $this->odb_cleaner_obj->odb_savings($scheduler, $action); } // if (!$analyze) // SHOW 'DONE' PARAGRAPH if (!$scheduler && !$analyze) $this->odb_cleaner_obj->odb_done($analyze); if ($analyze && $this->odb_cleaner_obj->grand_total > 0) { $msg1 = __("CLICK ONE OF THE 'OPTIMIZE' BUTTONS TO ACTUALLY DELETE THE FOUND ITEMS", $this->odb_txt_domain); $btn1 = __('Cancel', $this->odb_txt_domain); $btn2 = __('Optimize (summary)', $this->odb_txt_domain); $btn3 = __('Optimize (detail)', $this->odb_txt_domain); ?>

odb_txt_domain)?>




       

odb_rvg_options['last_run_seconds'] = $this->odb_last_run_seconds; $this->odb_multisite_obj->odb_ms_update_option('odb_rvg_options', $this->odb_rvg_options); } // if ($action != 'analyze_summary' && ... if(!defined('RUN_OPTIMIZE_DATABASE')) { // v4.8.0: DONE: HIDE RUNNING INDICATOR echo ""; } // if(!defined('RUN_OPTIMIZE_DATABASE')) } // odb_start() } // OptimizeDatabase // CREATE INSTANCE global $odb_class; $odb_class = new OptimizeDatabase(); } ); /******************************************************************************* * * PLUGIN DE-ACTIVATION * *******************************************************************************/ if ( ! function_exists( 'odb_deactivation_handler' ) ) { function odb_deactivation_handler() { // STOP SCHEDULER wp_clear_scheduled_hook('odb_scheduler'); } // odb_deactivation_handler() } register_deactivation_hook(__FILE__, 'odb_deactivation_handler'); /******************************************************************************* * * PLUGIN UN-INSTALLATION * *******************************************************************************/ if ( ! function_exists( 'odb_uninstallation_handler' ) ) { function odb_uninstallation_handler() { // STOP SCHEDULER wp_clear_scheduled_hook('odb_scheduler'); // DELETE THE OPTIONS delete_option('odb_rvg_options'); delete_option('odb_rvg_excluded_tabs'); delete_site_option('odb_rvg_options'); delete_site_option('odb_rvg_excluded_tabs'); // DROP THE LOG TABLE global $wpdb; $wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}odb_logs"); } // odb_uninstallation_handler() } register_uninstall_hook(__FILE__, 'odb_uninstallation_handler');