PluginProbe
Optimize Database after Deleting Revisions / 5.2
Optimize Database after Deleting Revisions v5.2
3.4.7 3.4.8 3.4.9 3.5 3.5.1 4.0 4.0.1 4.0.2 4.0.3 4.1 4.1.1 4.1.10 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.3 All 144 releases
← All changes | rvg-optimize-database.php +766 -501 4.0.15.2 View file →
@@ -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 + &nbsp;
797 + &nbsp;<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 + &nbsp;
799 + &nbsp;<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 +} );