| @@ -1,16 +1,16 @@ | ||
| 1 | 1 | <?php |
| 2 | 2 | /** |
| 3 | 3 | * @package Optimize Database after Deleting Revisions |
| 4 | - * @version 4.0.1 | |
| 4 | + * @version 5.2 | |
| 5 | 5 | */ |
| 6 | 6 | /* |
| 7 | 7 | Plugin Name: Optimize Database after Deleting Revisions |
| 8 | -Plugin URI: http://cagewebdev.com/index.php/optimize-database-after-deleting-revisions-wordpress-plugin/ | |
| 9 | -Description: Optimizes the Wordpress Database after Cleaning it out | |
| 10 | -Author: CAGE Web Design | Rolf van Gelder, Eindhoven, The Netherlands | |
| 11 | -Author URI: http://cagewebdev.com | |
| 12 | -Version: 4.0.1 | |
| 8 | +Description: One-click database optimization with precise revision cleanup and flexible scheduling. <a href="https://www.nerdpress.net/announcing-optimize-database/">Now managed by NerdPress!</a> | |
| 9 | +Author: NerdPress | |
| 10 | +Author URI: https://www..nerdpress.net | |
| 11 | +Network: True | |
| 12 | +Version: 5.2 | |
| 13 | 13 | */ |
| 14 | 14 | |
| 15 | 15 | /******************************************************************************************** |
| 16 | 16 | * |
| @@ -16,541 +16,806 @@ | ||
| 16 | 16 | * |
| 17 | 17 | * MAIN CLASS |
| 18 | 18 | * |
| 19 | 19 | ********************************************************************************************/ |
| 20 | -// CREATE INSTANCE | |
| 21 | -global $odb_class; | |
| 22 | -$odb_class = new OptimizeDatabase(); | |
| 23 | 20 | |
| 24 | -class OptimizeDatabase | |
| 25 | -{ | |
| 26 | - // VERSION | |
| 27 | - var $odb_version = '4.0.1'; | |
| 28 | - var $odb_release_date = '11/27/2015'; | |
| 21 | +add_action( 'plugins_loaded', function() { | |
| 22 | + //v5.0.10 | |
| 23 | + $action = ''; | |
| 24 | + if(isset($_REQUEST['action']) && isset($_REQUEST['page']) && 'rvg-optimize-database' === $_REQUEST['page']) { | |
| 25 | + $action = $_REQUEST['action']; | |
| 26 | + } | |
| 27 | + if ( | |
| 28 | + ! empty( $action ) | |
| 29 | + && isset( $_GET['_wpnonce'] ) | |
| 30 | + && current_user_can( 'manage_options' ) | |
| 31 | + && wp_verify_nonce( $_GET['_wpnonce'], 'rvg-optimize-database' ) | |
| 32 | + ) { | |
| 33 | + if ($action == 'analyze_summary' || | |
| 34 | + $action == 'analyze_detail' || | |
| 35 | + $action == 'run_summary' || | |
| 36 | + $action == 'run_detail') { | |
| 37 | + @set_time_limit(4*3600); | |
| 38 | + } else { | |
| 39 | + // GET DEFAULT VALUE FROM PHP.INI | |
| 40 | + $max = ini_get('max_execution_time'); | |
| 41 | + @set_time_limit($max); | |
| 42 | + } | |
| 43 | + } else { | |
| 44 | + // Possibly invalid nonce; assume NO action. | |
| 45 | + $action = ''; | |
| 46 | + } | |
| 29 | 47 | |
| 30 | - // PLUGIN OPTIONS | |
| 31 | - var $odb_rvg_options = array(); | |
| 32 | - | |
| 33 | - // EXCLUDED TABELS | |
| 34 | - var $odb_rvg_excluded_tabs = array(); | |
| 48 | + class OptimizeDatabase { | |
| 49 | + // VERSION | |
| 50 | + var $odb_version = '5.2'; | |
| 35 | 51 | |
| 36 | - // MULTISITE STRUCTURE | |
| 37 | - var $odb_ms_prefixes = array(); | |
| 38 | - var $odb_ms_blogids = array(); | |
| 39 | - | |
| 40 | - // DATABASE TABLES | |
| 41 | - var $odb_tables = array(); | |
| 42 | - | |
| 43 | - // MINIFYING? | |
| 44 | - var $odb_minify; | |
| 45 | - | |
| 46 | - // MAIN PLUGIN FILE | |
| 47 | - var $odb_main_file = 'rvg-optimize-database/rvg-optimize-database.php'; | |
| 48 | - | |
| 49 | - // LOCALIZATION | |
| 50 | - var $odb_txt_domain = 'rvg-optimize-database'; | |
| 51 | - | |
| 52 | - // PLUGIN | |
| 53 | - var $odb_plugin_url; | |
| 54 | - var $odb_plugin_path; | |
| 55 | - | |
| 56 | - // LOGGING | |
| 57 | - var $odb_logfile_url; | |
| 58 | - var $odb_logfile_path; | |
| 59 | - var $odb_log_arr = array(); | |
| 60 | - | |
| 61 | - // OBJECTS | |
| 62 | - var $odb_cleaner_obj; | |
| 63 | - var $odb_displayer_obj; | |
| 64 | - var $odb_logger_obj; | |
| 65 | - var $odb_multisite_obj; | |
| 66 | - var $odb_scheduler_obj; | |
| 67 | - var $odb_utilities_obj; | |
| 68 | - | |
| 69 | - // PAGE TIMER | |
| 70 | - var $odb_start_time; | |
| 52 | + // PLUGIN OPTIONS | |
| 53 | + var $odb_rvg_options = array(); | |
| 71 | 54 | |
| 55 | + // EXCLUDED TABLES | |
| 56 | + var $odb_rvg_excluded_tabs = array(); | |
| 72 | 57 | |
| 73 | - /******************************************************************************* | |
| 74 | - * CONSTRUCTOR | |
| 75 | - *******************************************************************************/ | |
| 76 | - function __construct() | |
| 77 | - { | |
| 78 | - // INITIALIZE PLUGIN | |
| 79 | - add_action('init', array(&$this, 'odb_init')); | |
| 80 | - } // __construct() | |
| 81 | - | |
| 82 | - | |
| 83 | - /******************************************************************************* | |
| 84 | - * INITIALIZE PLUGIN | |
| 85 | - *******************************************************************************/ | |
| 86 | - function odb_init() | |
| 87 | - { | |
| 88 | - // LOAD CLASSES | |
| 89 | - $this->odb_classes(); | |
| 58 | + // MULTISITE STRUCTURE | |
| 59 | + var $odb_ms_prefixes = array(); | |
| 90 | 60 | |
| 91 | - // URLS AND DIRECTORIES | |
| 92 | - $this->odb_urls_dirs(); | |
| 61 | + // DATABASE TABLES | |
| 62 | + var $odb_tables = array(); | |
| 93 | 63 | |
| 94 | - // GET (MULTI-SITE) NETWORK INFORMATION | |
| 95 | - $this->odb_multisite_obj->odb_ms_network_info(); | |
| 96 | - | |
| 97 | - // LOAD OPTIONS | |
| 98 | - $this->odb_load_options(); | |
| 99 | - | |
| 100 | - // INITIALIZE WORDPRESS HOOKS | |
| 101 | - $this->odb_init_hooks(); | |
| 102 | - | |
| 103 | - // GET THE DATABASE TABLES | |
| 104 | - $this->odb_tables = $this->odb_utilities_obj->odb_get_tables(); | |
| 105 | - | |
| 106 | - // GET EXCLUDED TABLES FROM SETTINGS | |
| 107 | - $this->odb_rvg_excluded_tabs = $this->odb_multisite_obj->odb_ms_get_option('odb_rvg_excluded_tabs'); | |
| 108 | - | |
| 109 | - // USE THE NON-MINIFIED VERSION OF SCRIPTS AND STYLE SHEETS WHILE DEBUGGING | |
| 110 | - $this->odb_minify = (defined('WP_DEBUG') && WP_DEBUG) ? '' : '.min'; | |
| 111 | - | |
| 112 | - // LOAD STYLE SHEET (ONLY ON RELEVANT PAGES) | |
| 113 | - $this_page = ''; | |
| 114 | - if(isset($_GET['page'])) $this_page = $_GET['page']; | |
| 115 | - if($this_page == 'odb_settings_page' || $this_page == 'rvg-optimize-database') | |
| 116 | - { wp_register_style('odb-style'.$this->odb_version, plugins_url('css/style'.$this->odb_minify.'.css', __FILE__)); | |
| 117 | - wp_enqueue_style('odb-style'.$this->odb_version); | |
| 118 | - } | |
| 119 | - } // odb_init() | |
| 64 | + // MINIFYING? | |
| 65 | + var $odb_minify; | |
| 120 | 66 | |
| 67 | + // MAIN PLUGIN FILE | |
| 68 | + var $odb_main_file = 'rvg-optimize-database/rvg-optimize-database.php'; | |
| 121 | 69 | |
| 122 | - /******************************************************************************* | |
| 123 | - * LOAD AND INITIALIZE CLASSES | |
| 124 | - *******************************************************************************/ | |
| 125 | - function odb_classes() | |
| 126 | - { | |
| 127 | - // LOAD CLASSES | |
| 128 | - include_once('classes/odb-cleaner.php'); | |
| 129 | - include_once('classes/odb-displayer.php'); | |
| 130 | - include_once('classes/odb-logger.php'); | |
| 131 | - include_once('classes/odb-multisite.php'); | |
| 132 | - include_once('classes/odb-scheduler.php'); | |
| 133 | - include_once('classes/odb-utilities.php'); | |
| 134 | - | |
| 135 | - // CREATE INSTANCES | |
| 136 | - $this->odb_cleaner_obj = new ODB_Cleaner(); | |
| 137 | - $this->odb_displayer_obj = new ODB_Displayer(); | |
| 138 | - $this->odb_logger_obj = new ODB_Logger(); | |
| 139 | - $this->odb_multisite_obj = new ODB_MultiSite(); | |
| 140 | - $this->odb_scheduler_obj = new ODB_Scheduler(); | |
| 141 | - $this->odb_utilities_obj = new ODB_Utilities(); | |
| 142 | - } // odb_classes() | |
| 70 | + // LOCALIZATION | |
| 71 | + var $odb_txt_domain = 'rvg-optimize-database'; | |
| 143 | 72 | |
| 73 | + // CURRENT SITE DATE (yyyymmddHHiiss) AND UNIX TIMESTAMP, BASED ON TIMEZONE OF THE SITE | |
| 74 | + // v4.4.3 | |
| 75 | + var $odb_current_date; | |
| 76 | + var $odb_timestamp; | |
| 77 | + var $odb_last_run_seconds; | |
| 144 | 78 | |
| 145 | - /******************************************************************************* | |
| 146 | - * INITIALIZE URLS AND DIRECTORIES | |
| 147 | - *******************************************************************************/ | |
| 148 | - function odb_urls_dirs() | |
| 149 | - { | |
| 150 | - $this->odb_plugin_url = plugins_url( '/', __FILE__ ); | |
| 151 | - $this->odb_plugin_path = plugin_dir_path(__FILE__); | |
| 152 | - $this->odb_logfile_url = $this->odb_plugin_url.'logs/rvg-optimize-db-log.html'; | |
| 153 | - $this->odb_logfile_path = $this->odb_plugin_path.'logs/rvg-optimize-db-log.html'; | |
| 154 | - $this->odb_logfile_debug_path = $this->odb_plugin_path.'logs/rvg-optimize-db-log.txt'; | |
| 155 | - } // odb_urls_dirs() | |
| 79 | + // PLUGIN | |
| 80 | + var $odb_plugin_url; | |
| 81 | + var $odb_plugin_path; | |
| 82 | + var $odb_logfile_debug_path; | |
| 156 | 83 | |
| 84 | + // DATABASE TABLE FOR LOGGING | |
| 85 | + // v4.6 | |
| 86 | + var $odb_logtable_name; | |
| 157 | 87 | |
| 158 | - /******************************************************************************* | |
| 159 | - * LOAD OPTIONS | |
| 160 | - *******************************************************************************/ | |
| 161 | - function odb_load_options() | |
| 162 | - { | |
| 163 | - // GET OPTIONS | |
| 164 | - $this->odb_rvg_options = $this->odb_multisite_obj->odb_ms_get_option('odb_rvg_options'); | |
| 165 | - | |
| 166 | - if(!isset($this->odb_rvg_options['version'])) | |
| 167 | - // THIS VERSION IS FROM BEFORE 4.0: CONVERT OPTIONS | |
| 168 | - $this->odb_convert_options(); | |
| 169 | - | |
| 170 | - if(!isset($this->odb_rvg_options['adminbar'])) | |
| 171 | - $this->odb_rvg_options['adminbar'] = 'N'; | |
| 172 | - if(!isset($this->odb_rvg_options['adminmenu'])) | |
| 173 | - $this->odb_rvg_options['adminmenu'] = 'N'; | |
| 174 | - if(!isset($this->odb_rvg_options['clear_pingbacks'])) | |
| 175 | - $this->odb_rvg_options['clear_pingbacks'] = 'N'; | |
| 176 | - if(!isset($this->odb_rvg_options['clear_spam'])) | |
| 177 | - $this->odb_rvg_options['clear_spam'] = 'N'; | |
| 178 | - if(!isset($this->odb_rvg_options['clear_tags'])) | |
| 179 | - $this->odb_rvg_options['clear_tags'] = 'N'; | |
| 180 | - if(!isset($this->odb_rvg_options['clear_transients'])) | |
| 181 | - $this->odb_rvg_options['clear_transients'] = 'N'; | |
| 182 | - if(!isset($this->odb_rvg_options['clear_trash'])) | |
| 183 | - $this->odb_rvg_options['clear_trash'] = 'N'; | |
| 184 | - if(!isset($this->odb_rvg_options['last_run'])) | |
| 185 | - $this->odb_rvg_options['last_run'] = ''; | |
| 186 | - if(!isset($this->odb_rvg_options['logging_on'])) | |
| 187 | - $this->odb_rvg_options['logging_on'] = 'N'; | |
| 188 | - if(!isset($this->odb_rvg_options['nr_of_revisions'])) | |
| 189 | - $this->odb_rvg_options['nr_of_revisions'] = (int)0; | |
| 190 | - if(!isset($this->odb_rvg_options['optimize_innodb'])) | |
| 191 | - $this->odb_rvg_options['optimize_innodb'] = 'N'; | |
| 192 | - if(!isset($this->odb_rvg_options['schedule_type'])) | |
| 193 | - $this->odb_rvg_options['schedule_type'] = ''; | |
| 194 | - if(!isset($this->odb_rvg_options['schedule_hour'])) | |
| 195 | - $this->odb_rvg_options['schedule_hour'] = ''; | |
| 196 | - if(!isset($this->odb_rvg_options['total_savings'])) | |
| 197 | - $this->odb_rvg_options['total_savings'] = (int)0; | |
| 198 | - if(!isset($this->odb_rvg_options['version'])) | |
| 199 | - $this->odb_rvg_options['version'] = $this->odb_version; | |
| 88 | + // OBJECTS | |
| 89 | + var $odb_cleaner_obj; | |
| 90 | + var $odb_displayer_obj; | |
| 91 | + var $odb_logger_obj; | |
| 92 | + var $odb_multisite_obj; | |
| 93 | + var $odb_scheduler_obj; | |
| 94 | + var $odb_utilities_obj; | |
| 200 | 95 | |
| 201 | - // UPDATE OPTIONS | |
| 202 | - $this->odb_multisite_obj->odb_ms_update_option('odb_rvg_options', $this->odb_rvg_options); | |
| 203 | - | |
| 204 | - // UPDATE SCHEDULER (IF NEEDED) | |
| 205 | - $this->odb_scheduler_obj->odb_update_scheduler(); | |
| 206 | - } // odb_load_options() | |
| 96 | + // PAGE TIMER | |
| 97 | + var $odb_start_time; | |
| 207 | 98 | |
| 99 | + /******************************************************************************* | |
| 100 | + * | |
| 101 | + * CONSTRUCTOR | |
| 102 | + * | |
| 103 | + *******************************************************************************/ | |
| 104 | + function __construct() { | |
| 105 | + // INITIALIZE PLUGIN | |
| 106 | + add_action('init', array(&$this, 'odb_init')); | |
| 107 | + } // __construct() | |
| 208 | 108 | |
| 209 | - /******************************************************************************* | |
| 210 | - * COPY AND DELETE OPTIONS FROM PREVIOUS VERSIONS (BEFORE 4.0) | |
| 211 | - *******************************************************************************/ | |
| 212 | - function odb_convert_options() | |
| 213 | - { | |
| 214 | - global $wpdb; | |
| 215 | - | |
| 216 | - // STOP OLD SCHEDULER | |
| 217 | - wp_clear_scheduled_hook('rvg_optimize_database'); | |
| 218 | - | |
| 219 | - $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_total_savings'); | |
| 220 | - if($setting) | |
| 221 | - { $this->odb_rvg_options['total_savings'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_total_savings'); | |
| 222 | - $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_total_savings'); | |
| 223 | - } | |
| 224 | - | |
| 225 | - $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_pingbacks'); | |
| 226 | - if($setting) | |
| 227 | - { $this->odb_rvg_options['clear_pingbacks'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_pingbacks'); | |
| 228 | - $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_pingbacks'); | |
| 229 | - } | |
| 230 | - | |
| 231 | - $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_spam'); | |
| 232 | - if($setting) | |
| 233 | - { $this->odb_rvg_options['clear_spam'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_spam'); | |
| 234 | - $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_spam'); | |
| 235 | - } | |
| 236 | - | |
| 237 | - $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_tags'); | |
| 238 | - if($setting) | |
| 239 | - { $this->odb_rvg_options['clear_tags'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_tags'); | |
| 240 | - $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_tags'); | |
| 241 | - } | |
| 242 | - | |
| 243 | - $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_transients'); | |
| 244 | - if($setting) | |
| 245 | - { $this->odb_rvg_options['clear_transients'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_transients'); | |
| 246 | - $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_transients'); | |
| 247 | - } | |
| 248 | 109 | |
| 249 | - $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_trash'); | |
| 250 | - if($setting) | |
| 251 | - { $this->odb_rvg_options['clear_trash'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_trash'); | |
| 252 | - $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_trash'); | |
| 253 | - } | |
| 254 | - | |
| 255 | - $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_adminbar'); | |
| 256 | - if($setting) | |
| 257 | - { $this->odb_rvg_options['adminbar'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_adminbar'); | |
| 258 | - $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_adminbar'); | |
| 259 | - } | |
| 110 | + /******************************************************************************* | |
| 111 | + * INITIALIZE PLUGIN | |
| 112 | + *******************************************************************************/ | |
| 113 | + function odb_init() { | |
| 114 | + // LOAD CLASSES | |
| 115 | + $this->odb_classes(); | |
| 260 | 116 | |
| 261 | - $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_adminmenu'); | |
| 262 | - if($setting) | |
| 263 | - { $this->odb_rvg_options['adminmenu'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_adminmenu'); | |
| 264 | - $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_adminmenu'); | |
| 265 | - } | |
| 266 | - | |
| 267 | - $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_logging_on'); | |
| 268 | - if($setting) | |
| 269 | - { $this->odb_rvg_options['logging_on'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_logging_on'); | |
| 270 | - $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_logging_on'); | |
| 271 | - } | |
| 272 | - | |
| 273 | - $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_number'); | |
| 274 | - if($setting) | |
| 275 | - $this->odb_rvg_options['nr_of_revisions'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_number'); | |
| 276 | - $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_number'); | |
| 277 | - | |
| 278 | - $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_schedule'); | |
| 279 | - if($setting) | |
| 280 | - $this->odb_rvg_options['schedule_type'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_schedule'); | |
| 281 | - $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_schedule'); | |
| 282 | - | |
| 283 | - $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_schedulehour'); | |
| 284 | - if($setting) | |
| 285 | - $this->odb_rvg_options['schedule_hour'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_schedulehour'); | |
| 286 | - $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_schedulehour'); | |
| 117 | + // URLS AND DIRECTORIES | |
| 118 | + $this->odb_urls_dirs(); | |
| 287 | 119 | |
| 288 | - // COPY EXCLUDED TABLES | |
| 289 | - for($i=0; $i<count($this->odb_ms_prefixes); $i++) | |
| 290 | - { | |
| 291 | - $sql = " | |
| 292 | - SELECT `option_name` | |
| 293 | - FROM ".$this->odb_ms_prefixes[$i]."options | |
| 294 | - WHERE `option_name` LIKE 'rvg_ex_%' | |
| 295 | - "; | |
| 120 | + // 5.0.8 THIS MAY NOT THIS MAY NOT EVEN BE NECESSARY ANYMORE | |
| 121 | + if ($this->odb_is_relevant_page()) { | |
| 122 | + $this->odb_create_log_table(); | |
| 123 | + } | |
| 296 | 124 | |
| 297 | - $res = $wpdb->get_results($sql, ARRAY_A); | |
| 298 | - for($j=0; $j<count($res); $j++) | |
| 299 | - { $option_name = $res[$j]['option_name']; | |
| 300 | - $option_name_new = substr($option_name, 7); | |
| 301 | - $this->odb_rvg_excluded_tabs[$option_name_new] = 'Y'; | |
| 302 | - $this->odb_multisite_obj->odb_ms_delete_option($option_name); | |
| 125 | + // GET (MULTI-SITE) NETWORK INFORMATION | |
| 126 | + $this->odb_multisite_obj->odb_ms_network_info(); | |
| 127 | + | |
| 128 | + // LOAD OPTIONS | |
| 129 | + $this->odb_load_options(); | |
| 130 | + | |
| 131 | + // INITIALIZE WORDPRESS HOOKS | |
| 132 | + $this->odb_init_hooks(); | |
| 133 | + | |
| 134 | + // GET EXCLUDED TABLES FROM SETTINGS | |
| 135 | + $this->odb_rvg_excluded_tabs = $this->odb_multisite_obj->odb_ms_get_option('odb_rvg_excluded_tabs'); | |
| 136 | + | |
| 137 | + // USE THE NON-MINIFIED VERSION OF SCRIPTS AND STYLE SHEETS WHILE DEBUGGING | |
| 138 | + $this->odb_minify = (defined('WP_DEBUG') && WP_DEBUG) ? '' : '.min'; | |
| 139 | + | |
| 140 | + // LOAD STYLE SHEET (ONLY ON RELEVANT PAGES) | |
| 141 | + // v4.0.3 | |
| 142 | + if($this->odb_is_relevant_page()) { | |
| 143 | + wp_register_style( | |
| 144 | + 'odb-style'.$this->odb_version, | |
| 145 | + plugins_url('css/style.css', __FILE__), | |
| 146 | + array(), | |
| 147 | + $this->odb_version | |
| 148 | + ); | |
| 149 | + wp_enqueue_style('odb-style'.$this->odb_version); | |
| 150 | + } // if($this->odb_is_relevant_page()) | |
| 151 | + | |
| 152 | + if(defined('RUN_OPTIMIZE_DATABASE') && RUN_OPTIMIZE_DATABASE == 1) $this->odb_start(true); | |
| 153 | + } // odb_init() | |
| 154 | + | |
| 155 | + | |
| 156 | + /******************************************************************************* | |
| 157 | + * | |
| 158 | + * LOAD AND INITIALIZE CLASSES | |
| 159 | + * | |
| 160 | + *******************************************************************************/ | |
| 161 | + function odb_classes() { | |
| 162 | + // LOAD CLASSES | |
| 163 | + include_once('classes/odb-cleaner.php'); | |
| 164 | + include_once('classes/odb-displayer.php'); | |
| 165 | + include_once('classes/odb-logger.php'); | |
| 166 | + include_once('classes/odb-multisite.php'); | |
| 167 | + include_once('classes/odb-scheduler.php'); | |
| 168 | + include_once('classes/odb-utilities.php'); | |
| 169 | + | |
| 170 | + // CREATE INSTANCES | |
| 171 | + $this->odb_cleaner_obj = new ODB_Cleaner(); | |
| 172 | + $this->odb_displayer_obj = new ODB_Displayer(); | |
| 173 | + $this->odb_logger_obj = new ODB_Logger(); | |
| 174 | + $this->odb_multisite_obj = new ODB_MultiSite(); | |
| 175 | + $this->odb_scheduler_obj = new ODB_Scheduler(); | |
| 176 | + $this->odb_utilities_obj = new ODB_Utilities(); | |
| 177 | + } // odb_classes() | |
| 178 | + | |
| 179 | + | |
| 180 | + /******************************************************************************* | |
| 181 | + * | |
| 182 | + * INITIALIZE URLS AND DIRECTORIES | |
| 183 | + * | |
| 184 | + *******************************************************************************/ | |
| 185 | + function odb_urls_dirs() { | |
| 186 | + $this->odb_plugin_url = plugins_url( '/', __FILE__ ); | |
| 187 | + $this->odb_plugin_path = plugin_dir_path(__FILE__); | |
| 188 | + $this->odb_logfile_debug_path = $this->odb_plugin_path.'logs/rvg-optimize-db-log.txt'; | |
| 189 | + } // odb_urls_dirs() | |
| 190 | + | |
| 191 | + | |
| 192 | + /******************************************************************************* | |
| 193 | + * | |
| 194 | + * LOAD OPTIONS | |
| 195 | + * | |
| 196 | + *******************************************************************************/ | |
| 197 | + function odb_load_options() { | |
| 198 | + // GET OPTIONS | |
| 199 | + $this->odb_rvg_options = $this->odb_multisite_obj->odb_ms_get_option('odb_rvg_options'); | |
| 200 | + | |
| 201 | + if(!isset($this->odb_rvg_options['version'])) | |
| 202 | + // THIS VERSION IS FROM BEFORE 4.0: CONVERT OPTIONS | |
| 203 | + $this->odb_convert_options(); | |
| 204 | + | |
| 205 | + if(!isset($this->odb_rvg_options['adminbar'])) | |
| 206 | + $this->odb_rvg_options['adminbar'] = 'N'; | |
| 207 | + if(!isset($this->odb_rvg_options['adminmenu'])) | |
| 208 | + $this->odb_rvg_options['adminmenu'] = 'N'; | |
| 209 | + if(!isset($this->odb_rvg_options['clear_pingbacks'])) | |
| 210 | + $this->odb_rvg_options['clear_pingbacks'] = 'N'; | |
| 211 | + if(!isset($this->odb_rvg_options['clear_oembed'])) | |
| 212 | + $this->odb_rvg_options['clear_oembed'] = 'N'; | |
| 213 | + if(!isset($this->odb_rvg_options['clear_orphans'])) | |
| 214 | + $this->odb_rvg_options['clear_orphans'] = 'N'; | |
| 215 | + if(!isset($this->odb_rvg_options['clear_spam'])) | |
| 216 | + $this->odb_rvg_options['clear_spam'] = 'N'; | |
| 217 | + if(!isset($this->odb_rvg_options['clear_tags'])) | |
| 218 | + $this->odb_rvg_options['clear_tags'] = 'N'; | |
| 219 | + if(!isset($this->odb_rvg_options['clear_transients'])) | |
| 220 | + $this->odb_rvg_options['clear_transients'] = 'N'; | |
| 221 | + if(!isset($this->odb_rvg_options['clear_trash'])) | |
| 222 | + $this->odb_rvg_options['clear_trash'] = 'N'; | |
| 223 | + if(!isset($this->odb_rvg_options['delete_older'])) | |
| 224 | + $this->odb_rvg_options['delete_older'] = 'N'; | |
| 225 | + if(!isset($this->odb_rvg_options['rvg_revisions'])) | |
| 226 | + $this->odb_rvg_options['rvg_revisions'] = 'N'; | |
| 227 | + | |
| 228 | + if(!isset($this->odb_rvg_options['last_run'])) | |
| 229 | + $this->odb_rvg_options['last_run'] = ''; | |
| 230 | + // v4.5.1 | |
| 231 | + if(!isset($this->odb_rvg_options['last_run_seconds'])) | |
| 232 | + $this->odb_rvg_options['last_run_seconds'] = ''; | |
| 233 | + if(!isset($this->odb_rvg_options['logging_on'])) | |
| 234 | + $this->odb_rvg_options['logging_on'] = 'N'; | |
| 235 | + if(!isset($this->odb_rvg_options['nr_of_revisions'])) | |
| 236 | + $this->odb_rvg_options['nr_of_revisions'] = ''; | |
| 237 | + // v4.1 | |
| 238 | + if(!isset($this->odb_rvg_options['older_than'])) | |
| 239 | + $this->odb_rvg_options['older_than'] = ''; | |
| 240 | + if(!isset($this->odb_rvg_options['optimize_innodb'])) | |
| 241 | + $this->odb_rvg_options['optimize_innodb'] = 'N'; | |
| 242 | + if(!isset($this->odb_rvg_options['schedule_type'])) | |
| 243 | + $this->odb_rvg_options['schedule_type'] = ''; | |
| 244 | + if(!isset($this->odb_rvg_options['schedule_hour'])) | |
| 245 | + $this->odb_rvg_options['schedule_hour'] = ''; | |
| 246 | + if(!isset($this->odb_rvg_options['total_savings'])) | |
| 247 | + $this->odb_rvg_options['total_savings'] = (int)0; | |
| 248 | + if(!isset($this->odb_rvg_options['version'])) | |
| 249 | + $this->odb_rvg_options['version'] = $this->odb_version; | |
| 250 | + | |
| 251 | + // CUSTOM POST TYPES (from v4.4) | |
| 252 | + if(!isset($this->odb_rvg_options['post_types'])) { | |
| 253 | + $this->odb_rvg_options['post_types'] = array(); | |
| 254 | + $relevant_pts = $this->odb_utilities_obj->odb_get_relevant_post_types(); | |
| 255 | + // (CUSTOM) POST TYPES ARE PER DEFAULT ENABLED | |
| 256 | + foreach($relevant_pts as $posttype) { | |
| 257 | + $this->odb_rvg_options['post_types'][$posttype] = "Y"; | |
| 258 | + } // foreach($relevant_pts as $posttype) | |
| 259 | + | |
| 260 | + if (isset($this->odb_rvg_options['rev_post_type'])) { | |
| 261 | + // UPGRADE FROM A VERSION < 4.4 | |
| 262 | + if ($this->odb_rvg_options['rev_post_type'] == 'page') { | |
| 263 | + // PAGES ONLY: DISABLE 'post' | |
| 264 | + $this->odb_rvg_options['post_types']['post'] = "N"; | |
| 265 | + } else if ($this->odb_rvg_options['rev_post_type'] == 'post') { | |
| 266 | + // POSTS ONLY: DISABLE 'page' | |
| 267 | + $this->odb_rvg_options['post_types']['page'] = "N"; | |
| 268 | + } | |
| 269 | + unset($this->odb_rvg_options['rev_post_type']); | |
| 270 | + } // if (isset($this->odb_rvg_options['rev_post_type'])) | |
| 271 | + } // if(!isset($this->odb_rvg_options['post_types'])) | |
| 272 | + | |
| 273 | + // UPDATE OPTIONS | |
| 274 | + $this->odb_multisite_obj->odb_ms_update_option('odb_rvg_options', $this->odb_rvg_options); | |
| 275 | + | |
| 276 | + // UPDATE SCHEDULER (IF NEEDED) | |
| 277 | + $this->odb_scheduler_obj->odb_update_scheduler(); | |
| 278 | + } // odb_load_options() | |
| 279 | + | |
| 280 | + | |
| 281 | + /******************************************************************************* | |
| 282 | + * | |
| 283 | + * COPY AND DELETE OPTIONS FROM PREVIOUS VERSIONS (BEFORE 4.0) | |
| 284 | + * | |
| 285 | + *******************************************************************************/ | |
| 286 | + function odb_convert_options() { | |
| 287 | + global $wpdb; | |
| 288 | + | |
| 289 | + // STOP OLD SCHEDULER | |
| 290 | + wp_clear_scheduled_hook('rvg_optimize_database'); | |
| 291 | + | |
| 292 | + $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_total_savings'); | |
| 293 | + if($setting) { | |
| 294 | + $this->odb_rvg_options['total_savings'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_total_savings'); | |
| 295 | + $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_total_savings'); | |
| 303 | 296 | } |
| 304 | - } | |
| 305 | - | |
| 306 | - // UPDATE EXCLUDED TABLES | |
| 307 | - $this->odb_multisite_obj->odb_ms_update_option('odb_rvg_excluded_tabs', $this->odb_rvg_excluded_tabs); | |
| 308 | - } // odb_convert_options() | |
| 309 | - | |
| 310 | 297 | |
| 311 | - /******************************************************************************* | |
| 312 | - * INITIALIZE WORDPRESS HOOKS | |
| 313 | - *******************************************************************************/ | |
| 314 | - function odb_init_hooks() | |
| 315 | - { | |
| 316 | - // ON DE-ACTIVATION | |
| 317 | - register_deactivation_hook(__FILE__, array('OptimizeDatabase', 'odb_deactivation_handler')); | |
| 318 | - | |
| 319 | - // ON UN-INSTALLATION | |
| 320 | - register_uninstall_hook(__FILE__, array('OptimizeDatabase', 'odb_uninstallation_handler')); | |
| 321 | - | |
| 322 | - // ADD ENTRY TO ADMIN TOOLS MENU | |
| 323 | - add_action('admin_menu', array(&$this, 'odb_admin_tools')); | |
| 324 | - add_action('admin_menu', array(&$this, 'odb_admin_settings')); | |
| 325 | - | |
| 326 | - // ICON MODE: ADD ICON TO ADMIN MENU | |
| 327 | - if ($this->odb_rvg_options['adminmenu'] == "Y") | |
| 328 | - { add_action('admin_menu', array(&$this, 'odb_admin_icon')); | |
| 329 | - add_action('admin_menu', array(&$this, 'odb_register_options')); | |
| 330 | - } | |
| 331 | - | |
| 332 | - // ADD 'SETTINGS' LINK TO THE MAIN PLUGIN PAGE | |
| 333 | - add_filter('plugin_action_links_'.plugin_basename(__FILE__), array(&$this, 'odb_settings_link')); | |
| 334 | - | |
| 335 | - // ADD THE '1 CLICK OPTIMIZE DATABASE' ITEM TO THE ADMIN BAR (IF ACTIVATED) | |
| 336 | - if($this->odb_rvg_options['adminbar'] == 'Y') | |
| 337 | - add_action('wp_before_admin_bar_render', array(&$this, 'odb_admin_bar')); | |
| 338 | - | |
| 339 | - // INITIALIZE LOCALIZATION | |
| 340 | - add_action('admin_menu', array(&$this, 'odb_i18n')); | |
| 341 | - } // odb_init_hooks() | |
| 298 | + $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_pingbacks'); | |
| 299 | + if($setting) { | |
| 300 | + $this->odb_rvg_options['clear_pingbacks'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_pingbacks'); | |
| 301 | + $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_pingbacks'); | |
| 302 | + } | |
| 342 | 303 | |
| 304 | + $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_oembed'); | |
| 305 | + if($setting) { | |
| 306 | + $this->odb_rvg_options['rvg_clear_oembed'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_oembed'); | |
| 307 | + $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_oembed'); | |
| 308 | + } | |
| 343 | 309 | |
| 344 | - /******************************************************************************* | |
| 345 | - * ADD ENTRY TO THE ADMIN TOOLS MENU | |
| 346 | - *******************************************************************************/ | |
| 347 | - function odb_admin_tools() | |
| 348 | - { if (function_exists('add_management_page')) | |
| 349 | - { add_management_page( | |
| 350 | - __('Optimize Database',$this->odb_txt_domain), // page title | |
| 351 | - __('Optimize Database',$this->odb_txt_domain), // menu title | |
| 352 | - 'manage_options', // capability | |
| 353 | - 'rvg-optimize-database', // menu slug | |
| 354 | - array(&$this, 'odb_start_manually')); // function | |
| 355 | - } // if (function_exists('add_management_page')) | |
| 356 | - } // odb_admin_tools() | |
| 357 | - | |
| 358 | - | |
| 359 | - /******************************************************************************* | |
| 360 | - * ADD ENTRY TO THE ADMIN SETTINGS MENU | |
| 361 | - *******************************************************************************/ | |
| 362 | - function odb_admin_settings() | |
| 363 | - { if (function_exists('add_options_page')) | |
| 364 | - add_options_page( | |
| 365 | - __('Optimize Database', $this->odb_txt_domain), // page title | |
| 366 | - __('Optimize Database', $this->odb_txt_domain), // menu title | |
| 367 | - 'manage_options', // capability | |
| 368 | - 'odb_settings_page', // menu slug | |
| 369 | - array(&$this, 'odb_settings_page') // function | |
| 310 | + $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_orphans'); | |
| 311 | + if($setting) { | |
| 312 | + $this->odb_rvg_options['rvg_clear_orphans'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_orphans'); | |
| 313 | + $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_orphans'); | |
| 314 | + } | |
| 315 | + | |
| 316 | + $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_spam'); | |
| 317 | + if($setting) { | |
| 318 | + $this->odb_rvg_options['clear_spam'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_spam'); | |
| 319 | + $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_spam'); | |
| 320 | + } | |
| 321 | + | |
| 322 | + $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_tags'); | |
| 323 | + if($setting) { | |
| 324 | + $this->odb_rvg_options['clear_tags'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_tags'); | |
| 325 | + $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_tags'); | |
| 326 | + } | |
| 327 | + | |
| 328 | + $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_transients'); | |
| 329 | + if($setting) { | |
| 330 | + $this->odb_rvg_options['clear_transients'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_transients'); | |
| 331 | + $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_transients'); | |
| 332 | + } | |
| 333 | + | |
| 334 | + $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_trash'); | |
| 335 | + if($setting) | |
| 336 | + { $this->odb_rvg_options['clear_trash'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_trash'); | |
| 337 | + $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_trash'); | |
| 338 | + } | |
| 339 | + | |
| 340 | + $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_adminbar'); | |
| 341 | + if($setting) { | |
| 342 | + $this->odb_rvg_options['adminbar'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_adminbar'); | |
| 343 | + $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_adminbar'); | |
| 344 | + } | |
| 345 | + | |
| 346 | + $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_adminmenu'); | |
| 347 | + if($setting) { | |
| 348 | + $this->odb_rvg_options['adminmenu'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_adminmenu'); | |
| 349 | + $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_adminmenu'); | |
| 350 | + } | |
| 351 | + | |
| 352 | + $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_logging_on'); | |
| 353 | + if($setting) { | |
| 354 | + $this->odb_rvg_options['logging_on'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_logging_on'); | |
| 355 | + $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_logging_on'); | |
| 356 | + } | |
| 357 | + | |
| 358 | + $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_number'); | |
| 359 | + if($setting) | |
| 360 | + $this->odb_rvg_options['nr_of_revisions'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_number'); | |
| 361 | + $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_number'); | |
| 362 | + | |
| 363 | + $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_schedule'); | |
| 364 | + if($setting) | |
| 365 | + $this->odb_rvg_options['schedule_type'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_schedule'); | |
| 366 | + $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_schedule'); | |
| 367 | + | |
| 368 | + $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_schedulehour'); | |
| 369 | + if($setting) | |
| 370 | + $this->odb_rvg_options['schedule_hour'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_schedulehour'); | |
| 371 | + $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_schedulehour'); | |
| 372 | + | |
| 373 | + // COPY EXCLUDED TABLES | |
| 374 | + for($i = 0; $i < count($this->odb_ms_prefixes); $i++) { | |
| 375 | + $sql = " | |
| 376 | + SELECT `option_name` | |
| 377 | + FROM ".$this->odb_ms_prefixes[$i]."options | |
| 378 | + WHERE `option_name` LIKE 'rvg_ex_%' | |
| 379 | + "; | |
| 380 | + | |
| 381 | + $res = $wpdb->get_results($sql, ARRAY_A); | |
| 382 | + for($j=0; $j<count($res); $j++) { | |
| 383 | + $option_name = $res[$j]['option_name']; | |
| 384 | + $option_name_new = substr($option_name, 7); | |
| 385 | + $this->odb_rvg_excluded_tabs[$option_name_new] = 'Y'; | |
| 386 | + $this->odb_multisite_obj->odb_ms_delete_option($option_name); | |
| 387 | + } // for($j=0; $j<count($res); $j++) | |
| 388 | + } // for($i = 0; $i < count($this->odb_ms_prefixes); $i++) | |
| 389 | + | |
| 390 | + // UPDATE EXCLUDED TABLES | |
| 391 | + $this->odb_multisite_obj->odb_ms_update_option('odb_rvg_excluded_tabs', $this->odb_rvg_excluded_tabs); | |
| 392 | + } // odb_convert_options() | |
| 393 | + | |
| 394 | + | |
| 395 | + /******************************************************************************* | |
| 396 | + * | |
| 397 | + * INITIALIZE WORDPRESS HOOKS | |
| 398 | + * | |
| 399 | + *******************************************************************************/ | |
| 400 | + function odb_init_hooks() { | |
| 401 | + global $blog_id; | |
| 402 | + | |
| 403 | + // ON DE-ACTIVATION | |
| 404 | + register_deactivation_hook(__FILE__, array('OptimizeDatabase', 'odb_deactivation_handler')); | |
| 405 | + | |
| 406 | + // ON UN-INSTALLATION | |
| 407 | + register_uninstall_hook(__FILE__, array('OptimizeDatabase', 'odb_uninstallation_handler')); | |
| 408 | + | |
| 409 | + // ADD ENTRY TO ADMIN TOOLS MENU | |
| 410 | + if (is_multisite()) { | |
| 411 | + if ($blog_id == 1) { | |
| 412 | + // v4.1: PLUGIN ONLY CAN BE USED ON THE MAIN SITE (NOT ON THE SUB SITES) | |
| 413 | + add_action('admin_menu', array(&$this, 'odb_admin_tools')); | |
| 414 | + add_action('admin_menu', array(&$this, 'odb_admin_settings')); | |
| 415 | + // ADD 'SETTINGS' LINK TO THE MAIN PLUGIN PAGE | |
| 416 | + add_filter('plugin_action_links_'.plugin_basename(__FILE__), array(&$this, 'odb_settings_link')); | |
| 417 | + } // if ($blog_id == 1) | |
| 418 | + } else { | |
| 419 | + add_action('admin_menu', array(&$this, 'odb_admin_tools')); | |
| 420 | + add_action('admin_menu', array(&$this, 'odb_admin_settings')); | |
| 421 | + // ADD 'SETTINGS' LINK TO THE MAIN PLUGIN PAGE | |
| 422 | + add_filter('plugin_action_links_'.plugin_basename(__FILE__), array(&$this, 'odb_settings_link')); | |
| 423 | + } // if (is_multisite()) | |
| 424 | + | |
| 425 | + // ICON MODE: ADD ICON TO ADMIN MENU | |
| 426 | + if ($this->odb_rvg_options['adminmenu'] == "Y") { | |
| 427 | + add_action('admin_menu', array(&$this, 'odb_admin_icon')); | |
| 428 | + add_action('admin_menu', array(&$this, 'odb_register_options')); | |
| 429 | + } | |
| 430 | + | |
| 431 | + // ADD THE '1 CLICK OPTIMIZE DATABASE' ITEM TO THE ADMIN BAR (IF ACTIVATED) | |
| 432 | + if($this->odb_rvg_options['adminbar'] == 'Y') | |
| 433 | + add_action('wp_before_admin_bar_render', array(&$this, 'odb_admin_bar')); | |
| 434 | + | |
| 435 | + // INITIALIZE LOCALIZATION | |
| 436 | + add_action('admin_menu', array(&$this, 'odb_i18n')); | |
| 437 | + } // odb_init_hooks() | |
| 438 | + | |
| 439 | + | |
| 440 | + /******************************************************************************* | |
| 441 | + * | |
| 442 | + * ADD ENTRY TO THE ADMIN TOOLS MENU | |
| 443 | + * | |
| 444 | + *******************************************************************************/ | |
| 445 | + function odb_admin_tools() { | |
| 446 | + if (function_exists('add_management_page')) { | |
| 447 | + add_management_page( | |
| 448 | + __('Optimize Database',$this->odb_txt_domain), // page title | |
| 449 | + __('Optimize Database',$this->odb_txt_domain), // menu title | |
| 450 | + 'manage_options', // capability | |
| 451 | + 'rvg-optimize-database', // menu slug | |
| 452 | + array(&$this, 'odb_start_manually')); // function | |
| 453 | + } // if (function_exists('add_management_page')) | |
| 454 | + } // odb_admin_tools() | |
| 455 | + | |
| 456 | + | |
| 457 | + /******************************************************************************* | |
| 458 | + * | |
| 459 | + * ADD ENTRY TO THE ADMIN SETTINGS MENU | |
| 460 | + * | |
| 461 | + *******************************************************************************/ | |
| 462 | + function odb_admin_settings() { | |
| 463 | + if (function_exists('add_options_page')) | |
| 464 | + add_options_page( | |
| 465 | + __('Optimize Database', $this->odb_txt_domain), // page title | |
| 466 | + __('Optimize Database', $this->odb_txt_domain), // menu title | |
| 467 | + 'manage_options', // capability | |
| 468 | + 'odb_settings_page', // menu slug | |
| 469 | + array(&$this, 'odb_settings_page') // function | |
| 470 | + ); | |
| 471 | + } // odb_admin_settings() | |
| 472 | + | |
| 473 | + | |
| 474 | + /******************************************************************************* | |
| 475 | + * | |
| 476 | + * ADD 'SETTINGS' LINK TO THE MAIN PLUGIN PAGE | |
| 477 | + * | |
| 478 | + *******************************************************************************/ | |
| 479 | + function odb_settings_link($links) { | |
| 480 | + array_unshift($links, '<a href="options-general.php?page=odb_settings_page">'.__('Settings', $this->odb_txt_domain).'</a>'); | |
| 481 | + return $links; | |
| 482 | + } // odb_settings_link() | |
| 483 | + | |
| 484 | + | |
| 485 | + /******************************************************************************************** | |
| 486 | + * | |
| 487 | + * ADD THE '1 CLICK OPTIMIZE DATABASE' ITEM TO THE ADMIN BAR (IF ACTIVATED) | |
| 488 | + * | |
| 489 | + ********************************************************************************************/ | |
| 490 | + function odb_admin_bar() { | |
| 491 | + global $wp_admin_bar; | |
| 492 | + | |
| 493 | + if (!is_super_admin() || !is_admin_bar_showing()) return; | |
| 494 | + | |
| 495 | + $siteurl = site_url('/'); | |
| 496 | + $wp_admin_bar->add_menu( | |
| 497 | + array( | |
| 498 | + 'id' => 'optimize', | |
| 499 | + 'title' => __('Optimize DB (1 click)', $this->odb_txt_domain), | |
| 500 | + 'href' => $siteurl.'wp-admin/tools.php?page=rvg-optimize-database&action=run_detail' )); | |
| 501 | + } // odb_admin_bar() | |
| 502 | + | |
| 503 | + | |
| 504 | + /******************************************************************************************** | |
| 505 | + * | |
| 506 | + * 'ICON MODE': ADD A LINK TO THE ADMIN MENU | |
| 507 | + * | |
| 508 | + ********************************************************************************************/ | |
| 509 | + function odb_admin_icon() { | |
| 510 | + if (function_exists('add_menu_page')) { | |
| 511 | + add_menu_page( | |
| 512 | + __('Optimize Database', $this->odb_txt_domain), // page title | |
| 513 | + __('Optimize Database', $this->odb_txt_domain), // menu title | |
| 514 | + 'administrator', // capability | |
| 515 | + 'rvg-optimize-database', // menu slug | |
| 516 | + array(&$this, 'odb_start_manually'), // function | |
| 517 | + $this->odb_plugin_url.'images/icon.png' // icon url | |
| 518 | + ); | |
| 519 | + } | |
| 520 | + } // odb_admin_icon() | |
| 521 | + | |
| 522 | + | |
| 523 | + /******************************************************************************************** | |
| 524 | + * | |
| 525 | + * 'ICON MODE': REGISTER OPTION PAGE BUT HIDE IT FROM THE ADMIN MENU | |
| 526 | + * | |
| 527 | + ********************************************************************************************/ | |
| 528 | + function odb_register_options() { | |
| 529 | + if (function_exists('add_submenu_page')) { | |
| 530 | + add_submenu_page( | |
| 531 | + null, // parent slug (NULL is hide from menu) | |
| 532 | + __('Optimize Database', $this->odb_txt_domain), // page title | |
| 533 | + __('Optimize Database', $this->odb_txt_domain), // menu title | |
| 534 | + 'manage_options', // capability | |
| 535 | + 'rvg_odb_admin', // menu slug | |
| 536 | + array(&$this, 'odb_settings_page') // function | |
| 537 | + ); | |
| 538 | + } // if (function_exists('add_submenu_page')) | |
| 539 | + } // odb_register_options() | |
| 540 | + | |
| 541 | + | |
| 542 | + /******************************************************************************* | |
| 543 | + * | |
| 544 | + * LOAD TEXT DOMAIN | |
| 545 | + * | |
| 546 | + *******************************************************************************/ | |
| 547 | + function odb_i18n() { | |
| 548 | + load_plugin_textdomain( | |
| 549 | + $this->odb_txt_domain, // domain | |
| 550 | + false, // abs rel path | |
| 551 | + dirname(plugin_basename( __FILE__ )).'/language/' // plugin rel path | |
| 370 | 552 | ); |
| 371 | - } // odb_admin_settings() | |
| 372 | - | |
| 373 | - | |
| 374 | - /******************************************************************************* | |
| 375 | - * ADD 'SETTINGS' LINK TO THE MAIN PLUGIN PAGE | |
| 376 | - *******************************************************************************/ | |
| 377 | - function odb_settings_link($links) | |
| 378 | - { array_unshift($links, '<a href="options-general.php?page=odb_settings_page">'.__('Settings', $this->odb_txt_domain).'</a>'); | |
| 379 | - return $links; | |
| 380 | - } // odb_settings_link() | |
| 381 | - | |
| 382 | - | |
| 383 | - /******************************************************************************************** | |
| 384 | - * ADD THE '1 CLICK OPTIMIZE DATABASE' ITEM TO THE ADMIN BAR (IF ACTIVATED) | |
| 385 | - ********************************************************************************************/ | |
| 386 | - function odb_admin_bar() | |
| 387 | - { global $wp_admin_bar; | |
| 388 | - | |
| 389 | - if (!is_super_admin() || !is_admin_bar_showing()) return; | |
| 390 | - | |
| 391 | - $siteurl = site_url('/'); | |
| 392 | - $wp_admin_bar->add_menu( | |
| 393 | - array( | |
| 394 | - 'id' => 'optimize', | |
| 395 | - 'title' => __('Optimize DB (1 click)', $this->odb_txt_domain), | |
| 396 | - 'href' => $siteurl.'wp-admin/tools.php?page=rvg-optimize-database&action=run' )); | |
| 397 | - } // odb_admin_bar() | |
| 553 | + } // odb_i18n() | |
| 398 | 554 | |
| 399 | 555 | |
| 400 | - /******************************************************************************************** | |
| 401 | - * 'ICON MODE': ADD A LINK TO THE ADMIN MENU | |
| 402 | - ********************************************************************************************/ | |
| 403 | - function odb_admin_icon() | |
| 404 | - { | |
| 405 | - if (function_exists('add_menu_page')) | |
| 406 | - { | |
| 407 | - add_menu_page( | |
| 408 | - __('Optimize Database', $this->odb_txt_domain), // page title | |
| 409 | - __('Optimize Database', $this->odb_txt_domain), // menu title | |
| 410 | - 'administrator', // capability | |
| 411 | - 'rvg-optimize-database', // menu slug | |
| 412 | - array(&$this, 'odb_start_manually'), // function | |
| 413 | - $this->odb_plugin_url.'images/icon.png' // icon url | |
| 414 | - ); | |
| 415 | - } | |
| 416 | - } // odb_admin_icon() | |
| 556 | + /******************************************************************************* | |
| 557 | + * | |
| 558 | + * ARE WE ON A, FOR THIS PLUGIN, RELEVANT PAGE? | |
| 559 | + * Since v4.0.3 | |
| 560 | + * | |
| 561 | + *******************************************************************************/ | |
| 562 | + function odb_is_relevant_page() { | |
| 563 | + $this_page = ''; | |
| 564 | + if(isset($_GET['page'])) { | |
| 565 | + $this_page = $_GET['page']; | |
| 566 | + return ($this_page == 'odb_settings_page' || $this_page == 'rvg-optimize-database'); | |
| 567 | + } | |
| 568 | + return false; | |
| 569 | + } // odb_is_relevant_page() | |
| 417 | 570 | |
| 418 | 571 | |
| 419 | - /******************************************************************************************** | |
| 420 | - * 'ICON MODE': REGISTER OPTION PAGE BUT HIDE IT FROM THE ADMIN MENU | |
| 421 | - ********************************************************************************************/ | |
| 422 | - function odb_register_options() | |
| 423 | - { | |
| 424 | - if (function_exists('add_submenu_page')) | |
| 425 | - { add_submenu_page( | |
| 426 | - null, // parent slug (NULL is hide from menu) | |
| 427 | - __('Optimize Database', $this->odb_txt_domain), // page title | |
| 428 | - __('Optimize Database', $this->odb_txt_domain), // menu title | |
| 429 | - 'manage_options', // capability | |
| 430 | - 'rvg_odb_admin', // menu slug | |
| 431 | - array(&$this, 'odb_settings_page') // function | |
| 432 | - ); | |
| 433 | - } | |
| 434 | - } // odb_register_options() | |
| 572 | + /******************************************************************************* | |
| 573 | + * | |
| 574 | + * PLUGIN DE-ACTIVATION | |
| 575 | + * | |
| 576 | + *******************************************************************************/ | |
| 577 | + public static function odb_deactivation_handler() { | |
| 578 | + // STOP SCHEDULER | |
| 579 | + wp_clear_scheduled_hook('odb_scheduler'); | |
| 580 | + } // odb_deactivation_handler() | |
| 435 | 581 | |
| 436 | 582 | |
| 437 | - /******************************************************************************* | |
| 438 | - * LOAD TEXT DOMAIN | |
| 439 | - *******************************************************************************/ | |
| 440 | - function odb_i18n() | |
| 441 | - { | |
| 442 | - load_plugin_textdomain( | |
| 443 | - $this->odb_txt_domain, // domain | |
| 444 | - false, // abs rel path | |
| 445 | - dirname(plugin_basename( __FILE__ )).'/language/' // plugin rel path | |
| 446 | - ); | |
| 447 | - } // odb_i18n() | |
| 583 | + /******************************************************************************* | |
| 584 | + * | |
| 585 | + * PLUGIN UN-INSTALLATION | |
| 586 | + * | |
| 587 | + *******************************************************************************/ | |
| 588 | + function odb_uninstallation_handler() { | |
| 589 | + // STOP SCHEDULER | |
| 590 | + wp_clear_scheduled_hook('odb_scheduler'); | |
| 448 | 591 | |
| 592 | + // DELETE THE OPTIONS | |
| 593 | + delete_option('odb_rvg_options'); | |
| 594 | + delete_option('odb_rvg_excluded_tabs'); | |
| 449 | 595 | |
| 450 | - /******************************************************************************* | |
| 451 | - * PLUGIN DE-ACTIVATION | |
| 452 | - *******************************************************************************/ | |
| 453 | - public static function odb_deactivation_handler() | |
| 454 | - { // STOP SCHEDULER | |
| 455 | - wp_clear_scheduled_hook('odb_scheduler'); | |
| 456 | - } // odb_deactivation_handler() | |
| 596 | + delete_site_option('odb_rvg_options'); | |
| 597 | + delete_site_option('odb_rvg_excluded_tabs'); | |
| 457 | 598 | |
| 599 | + // DROP THE LOG TABLE | |
| 600 | + global $wpdb; | |
| 601 | + $wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}odb_logs"); | |
| 602 | + } // odb_uninstallation_handler() | |
| 458 | 603 | |
| 459 | - /******************************************************************************* | |
| 460 | - * PLUGIN UN-INSTALLATION | |
| 461 | - *******************************************************************************/ | |
| 462 | - public static function odb_uninstallation_handler() | |
| 463 | - { // STOP SCHEDULER | |
| 464 | - wp_clear_scheduled_hook('odb_scheduler'); | |
| 465 | - | |
| 466 | - // DELETE OPTIONS FROM DATABASE | |
| 467 | - $this->odb_multisite_obj->odb_ms_delete_option('odb_rvg_excluded_tabs'); | |
| 468 | - $this->odb_multisite_obj->odb_ms_delete_option('odb_rvg_options'); | |
| 469 | - } // odb_uninstallation_handler() | |
| 470 | 604 | |
| 605 | + /******************************************************************************* | |
| 606 | + * | |
| 607 | + * LOAD SETTINGS (OPTIONS) PAGE | |
| 608 | + * | |
| 609 | + *******************************************************************************/ | |
| 610 | + function odb_settings_page() { | |
| 611 | + global $wpdb, $odb_rvg_excluded_tabs, $odb_ms_prefixes; | |
| 471 | 612 | |
| 472 | - /******************************************************************************* | |
| 473 | - * LOAD SETTINGS (OPTIONS) PAGE | |
| 474 | - *******************************************************************************/ | |
| 475 | - function odb_settings_page() | |
| 476 | - { global $wpdb, $odb_rvg_excluded_tabs, $odb_ms_prefixes; | |
| 477 | - | |
| 478 | - include_once(trailingslashit(dirname(__FILE__)).'/includes/settings-page.php'); | |
| 479 | - } // odb_settings_page() | |
| 480 | - | |
| 613 | + include_once(trailingslashit(dirname(__FILE__)).'/includes/settings-page.php'); | |
| 614 | + } // odb_settings_page() | |
| 481 | 615 | |
| 482 | - /******************************************************************************* | |
| 483 | - * START CLEANING / OPTIMIZATION (INITIATED BY THE USER, NOT FROM WP-CRON) | |
| 484 | - *******************************************************************************/ | |
| 485 | - function odb_start_manually() | |
| 486 | - { | |
| 487 | - $this->odb_start(false); | |
| 488 | - } // odb_start_manually() | |
| 489 | 616 | |
| 617 | + /******************************************************************************* | |
| 618 | + * | |
| 619 | + * START CLEANING / OPTIMIZATION (INITIATED BY THE USER, NOT FROM WP-CRON) | |
| 620 | + * | |
| 621 | + *******************************************************************************/ | |
| 622 | + function odb_start_manually() { | |
| 623 | + $this->odb_start(false); | |
| 624 | + } // odb_start_manually() | |
| 490 | 625 | |
| 491 | - /******************************************************************************* | |
| 492 | - * START CLEANING / OPTIMIZATION (FROM WP-CRON) | |
| 493 | - *******************************************************************************/ | |
| 494 | - function odb_start_scheduler() | |
| 495 | - { | |
| 496 | - $this->odb_start(true); | |
| 497 | - } // odb_start_scheduler() | |
| 498 | - | |
| 499 | 626 | |
| 500 | - /******************************************************************************* | |
| 501 | - * MAIN METHOD FOR CLEANING / OPTIMIZING | |
| 502 | - *******************************************************************************/ | |
| 503 | - function odb_start($scheduler) | |
| 504 | - { | |
| 505 | - // PAGE LOAD TIMER | |
| 506 | - $time = microtime(); | |
| 507 | - $time = explode(' ', $time); | |
| 508 | - $time = $time[1] + $time[0]; | |
| 509 | - $this->odb_start_time = $time; | |
| 510 | - | |
| 511 | - $action = ''; | |
| 512 | - if(isset($_REQUEST['action'])) | |
| 513 | - { $action = $_REQUEST['action']; | |
| 514 | - if($action == "delete_log") | |
| 515 | - { // DELETE LOG FILE | |
| 516 | - @unlink($this->odb_plugin_path.'logs/rvg-optimize-db-log.html'); | |
| 517 | - | |
| 518 | - // UPDATED MESSAGE | |
| 519 | - echo "<div class='updated odb-bold'><p>". | |
| 520 | - __('Optimize Database after Deleting Revisions LOG FILE HAS BEEN DELETED', $this->odb_txt_domain); | |
| 521 | - echo "</p></div>"; | |
| 627 | + /******************************************************************************* | |
| 628 | + * | |
| 629 | + * START CLEANING / OPTIMIZATION (FROM WP-CRON) | |
| 630 | + * | |
| 631 | + *******************************************************************************/ | |
| 632 | + function odb_start_scheduler() { | |
| 633 | + $this->odb_start(true); | |
| 634 | + } // odb_start_scheduler() | |
| 635 | + | |
| 636 | + | |
| 637 | + /******************************************************************************* | |
| 638 | + * | |
| 639 | + * CREATE THE LOG TABLE (IF NOT EXISTS) | |
| 640 | + * | |
| 641 | + *******************************************************************************/ | |
| 642 | + function odb_create_log_table() { | |
| 643 | + global $wpdb; | |
| 644 | + | |
| 645 | + // PLUGIN RUNNING (v5.0.5) | |
| 646 | + $this->odb_tables = $this->odb_utilities_obj->odb_get_tables(); | |
| 647 | + | |
| 648 | + // CREATE LOG TABLE (IF NOT EXISTS) - v4.6 | |
| 649 | + $this->odb_logtable_name = $wpdb->base_prefix . 'odb_logs'; | |
| 650 | + | |
| 651 | + $found = false; | |
| 652 | + for($i = 0; $i < count($this->odb_tables); $i++) { | |
| 653 | + if ($this->odb_tables[$i][0] == $this->odb_logtable_name) { | |
| 654 | + $found = true; | |
| 655 | + } | |
| 656 | + } // for($i = 0; $i < count($this->odb_tables); $i++) | |
| 657 | + | |
| 658 | + // v5.0.3 | |
| 659 | + if (!$found) { | |
| 660 | + $sql = ' | |
| 661 | + CREATE TABLE IF NOT EXISTS `' . $this->odb_logtable_name . '` ( | |
| 662 | + `odb_id` int(11) NOT NULL AUTO_INCREMENT, | |
| 663 | + `odb_timestamp` varchar(20) NOT NULL, | |
| 664 | + `odb_revisions` int(11) NOT NULL, | |
| 665 | + `odb_trash` int(11) NOT NULL, | |
| 666 | + `odb_spam` int(11) NOT NULL, | |
| 667 | + `odb_tags` int(11) NOT NULL, | |
| 668 | + `odb_transients` int(11) NOT NULL, | |
| 669 | + `odb_pingbacks` int(11) NOT NULL, | |
| 670 | + `odb_oembeds` int(11) NOT NULL, | |
| 671 | + `odb_orphans` int(11) NOT NULL, | |
| 672 | + `odb_tables` int(11) NOT NULL, | |
| 673 | + `odb_before` varchar(20) NOT NULL, | |
| 674 | + `odb_after` varchar(20) NOT NULL, | |
| 675 | + `odb_savings` varchar(20) NOT NULL, | |
| 676 | + PRIMARY KEY (`odb_id`) | |
| 677 | + ) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; | |
| 678 | + '; | |
| 679 | + | |
| 680 | + // CREATE TABLE | |
| 681 | + $wpdb->query($sql); | |
| 682 | + } // if (!$found) | |
| 683 | + } // odb_create_log_table() | |
| 684 | + | |
| 685 | + | |
| 686 | + /******************************************************************************* | |
| 687 | + * | |
| 688 | + * MAIN METHOD FOR CLEANING / OPTIMIZING | |
| 689 | + * | |
| 690 | + *******************************************************************************/ | |
| 691 | + function odb_start($scheduler) { | |
| 692 | + $this->odb_create_log_table(); | |
| 693 | + | |
| 694 | + // Ensure current user (if applicable) can view this page. | |
| 695 | + if(!$scheduler) { | |
| 696 | + if ( ! is_user_logged_in() || ! current_user_can( 'manage_options' ) ) { | |
| 697 | + return; | |
| 698 | + } | |
| 522 | 699 | } |
| 523 | - } // if(isset($_REQUEST['action'])) | |
| 524 | - | |
| 525 | - if(!$scheduler) | |
| 526 | - { // SHOW PAGE HEADER | |
| 527 | - $this->odb_displayer_obj->display_header(); | |
| 528 | - // SHOW CURRENT SETTINGS | |
| 529 | - $this->odb_displayer_obj->display_current_settings(); | |
| 530 | - } // if(!$scheduler) | |
| 531 | - | |
| 532 | - if ($action != 'run' && !$scheduler) | |
| 533 | - { /**************************************************************************************** | |
| 534 | - * START SCREEN (SHOW SETTINGS + BUTTONS) | |
| 535 | - ****************************************************************************************/ | |
| 536 | - $this->odb_displayer_obj->display_start_buttons(); | |
| 537 | - } | |
| 538 | - else | |
| 539 | - { /**************************************************************************************** | |
| 540 | - * RUN CLEANING AND OPTIMIZATION | |
| 541 | - ****************************************************************************************/ | |
| 542 | - // REGISTER THE LAST RUN | |
| 543 | - $this->odb_rvg_options['last_run'] = Date('M j, Y @ H:i'); | |
| 544 | - $this->odb_multisite_obj->odb_ms_update_option('odb_rvg_options', $this->odb_rvg_options); | |
| 545 | - // DELETE REDUNDANT DATA | |
| 546 | - $this->odb_cleaner_obj->odb_run_cleaner($scheduler); | |
| 547 | - // OPTIMIZE DATABASE TABLES | |
| 548 | - $this->odb_cleaner_obj->odb_run_optimizer($scheduler); | |
| 549 | - // SHOW RESULTS | |
| 550 | - $this->odb_cleaner_obj->odb_savings($scheduler); | |
| 551 | - // SHOW 'DONE' PARAGRAPH | |
| 552 | - if(!$scheduler) $this->odb_cleaner_obj->odb_done(); | |
| 553 | - } // if($action != 'run') | |
| 554 | - } // odb_start() | |
| 555 | -} // OptimizeDatabase | |
| 556 | -?> | |
| 700 | + | |
| 701 | + // PAGE LOAD TIMER | |
| 702 | + $time = microtime(); | |
| 703 | + $time = explode(' ', $time); | |
| 704 | + $time = $time[1] + $time[0]; | |
| 705 | + $this->odb_start_time = $time; | |
| 706 | + | |
| 707 | + $action = ''; | |
| 708 | + if(isset($_REQUEST['action']) && isset($_REQUEST['page']) && 'rvg-optimize-database' === $_REQUEST['page']) { | |
| 709 | + $action = $_REQUEST['action']; | |
| 710 | + } | |
| 711 | + if ( | |
| 712 | + ! empty( $action ) | |
| 713 | + && isset( $_GET['_wpnonce'] ) | |
| 714 | + && wp_verify_nonce( $_GET['_wpnonce'], 'rvg-optimize-database' ) | |
| 715 | + ) { | |
| 716 | + // v4.6 | |
| 717 | + if($action == 'view_log') { | |
| 718 | + // SHOW THE LOGS | |
| 719 | + $this->odb_logger_obj->odb_view_log(); | |
| 720 | + // v4.6.1 | |
| 721 | + return; | |
| 722 | + } else if($action == "clear_log") { | |
| 723 | + // CLEAR THE LOG TABLE | |
| 724 | + $this->odb_logger_obj->odb_clear_log(); | |
| 725 | + | |
| 726 | + // UPDATED MESSAGE | |
| 727 | + // v4.6 | |
| 728 | + echo "<script>jQuery('#odb-running').hide();</script>"; | |
| 729 | + echo "<div class='updated odb-bold'><p>". | |
| 730 | + __('Optimize Database after Deleting Revisions LOGS HAVE BEEN CLEARED', $this->odb_txt_domain); | |
| 731 | + echo "</p></div>"; | |
| 732 | + } // if($action == "clear_log") | |
| 733 | + } // if(isset($_REQUEST['action'])) | |
| 734 | + else { | |
| 735 | + // Assume there is no action or the nonce failed verification. | |
| 736 | + $action = ''; | |
| 737 | + } | |
| 738 | + | |
| 739 | + if(!$scheduler) { | |
| 740 | + // SHOW PAGE HEADER | |
| 741 | + $this->odb_displayer_obj->display_header(); | |
| 742 | + // v4.1.9: STARTING: SHOW RUNNING INDICATOR | |
| 743 | + echo "<script>jQuery('#odb-running').show();</script>"; | |
| 744 | + // SHOW CURRENT SETTINGS | |
| 745 | + $this->odb_displayer_obj->display_current_settings(); | |
| 746 | + } // if(!$scheduler) | |
| 747 | + | |
| 748 | + if ($action != 'analyze_summary' && | |
| 749 | + $action != 'analyze_detail' && | |
| 750 | + $action != 'run_summary' && | |
| 751 | + $action != 'run_detail' && | |
| 752 | + !$scheduler) { | |
| 753 | + /**************************************************************************************** | |
| 754 | + * START SCREEN (SHOW SETTINGS + BUTTONS) | |
| 755 | + ****************************************************************************************/ | |
| 756 | + $this->odb_displayer_obj->display_start_buttons($action); | |
| 757 | + } else { | |
| 758 | + $analyze = ($action == 'analyze_summary' || $action == 'analyze_detail'); | |
| 759 | + /**************************************************************************************** | |
| 760 | + * RUN CLEANING AND OPTIMIZATION | |
| 761 | + ****************************************************************************************/ | |
| 762 | + $this->odb_displayer_obj->display_start_buttons($action); | |
| 763 | + | |
| 764 | + // DELETE REDUNDANT DATA | |
| 765 | + $this->odb_cleaner_obj->odb_run_cleaner($scheduler, $action); | |
| 766 | + | |
| 767 | + if ($scheduler || $action == 'run_summary' || $action == 'run_detail') { | |
| 768 | + // REGISTER THE LAST RUN | |
| 769 | + $this->odb_rvg_options['last_run'] = current_time('M j, Y @ H:i', 0); | |
| 770 | + // OPTIMIZE DATABASE TABLES | |
| 771 | + $this->odb_cleaner_obj->odb_run_optimizer($scheduler, $action); | |
| 772 | + // SHOW RESULTS | |
| 773 | + $this->odb_cleaner_obj->odb_savings($scheduler, $action); | |
| 774 | + } // if (!$analyze) | |
| 775 | + | |
| 776 | + // SHOW 'DONE' PARAGRAPH | |
| 777 | + if (!$scheduler && !$analyze) | |
| 778 | + $this->odb_cleaner_obj->odb_done($analyze); | |
| 779 | + | |
| 780 | + if ($analyze && $this->odb_cleaner_obj->grand_total > 0) { | |
| 781 | + $msg1 = __("CLICK ONE OF THE 'OPTIMIZE' BUTTONS TO ACTUALLY DELETE THE FOUND ITEMS", $this->odb_txt_domain); | |
| 782 | + $btn1 = __('Cancel', $this->odb_txt_domain); | |
| 783 | + $btn2 = __('Optimize (summary)', $this->odb_txt_domain); | |
| 784 | + $btn3 = __('Optimize (detail)', $this->odb_txt_domain); | |
| 785 | + ?> | |
| 786 | + <div class="odb-title-bar"> | |
| 787 | + <h2><?php _e('Analysis Done!', $this->odb_txt_domain)?></h2> | |
| 788 | + </div> | |
| 789 | + <br><br> | |
| 790 | + <div id="odb-start-buttons" class="odb-padding-left"> | |
| 791 | + <p> | |
| 792 | + <h4 class="odb-red odb-bold"><?php echo $msg1?></h4> | |
| 793 | + <br> | |
| 794 | + <?php $nonce = wp_create_nonce( 'rvg-optimize-database' ); ?> | |
| 795 | + <input class="button odb-normal" type="button" name="cancel" value="<?php echo $btn1?>" onclick="self.location='tools.php?page=rvg-optimize-database'"> | |
| 796 | + | |
| 797 | + <input class="button-primary button-large" type="button" name="optimize_summary" value="<?php echo $btn2?>" onclick="self.location='tools.php?page=rvg-optimize-database&action=run_summary&_wpnonce=<?php echo esc_attr( $nonce ); ?>'" class="odb-bold"> | |
| 798 | + | |
| 799 | + <input class="button-primary button-large" type="button" name="optimize_detail" value="<?php echo $btn3?>" onclick="self.location='tools.php?page=rvg-optimize-database&action=run_detail&_wpnonce=<?php echo esc_attr( $nonce ); ?>'" class="odb-bold"> | |
| 800 | + | |
| 801 | + </p> | |
| 802 | + </div><!-- /odb-start-buttons --> | |
| 803 | + <?php | |
| 804 | + } // if ($analyze) | |
| 805 | + | |
| 806 | + $this->odb_rvg_options['last_run_seconds'] = $this->odb_last_run_seconds; | |
| 807 | + | |
| 808 | + $this->odb_multisite_obj->odb_ms_update_option('odb_rvg_options', $this->odb_rvg_options); | |
| 809 | + } // if ($action != 'analyze_summary' && ... | |
| 810 | + | |
| 811 | + if(!defined('RUN_OPTIMIZE_DATABASE')) { | |
| 812 | + // v4.8.0: DONE: HIDE RUNNING INDICATOR | |
| 813 | + echo "<script>jQuery('#odb-running').hide();</script>"; | |
| 814 | + } // if(!defined('RUN_OPTIMIZE_DATABASE')) | |
| 815 | + } // odb_start() | |
| 816 | + } // OptimizeDatabase | |
| 817 | + | |
| 818 | + // CREATE INSTANCE | |
| 819 | + global $odb_class; | |
| 820 | + $odb_class = new OptimizeDatabase(); | |
| 821 | +} ); | |