PluginProbe
Optimize Database after Deleting Revisions / 4.1
Optimize Database after Deleting Revisions v4.1
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
rvg-optimize-database / rvg-optimize-database.php

rvg-optimize-database.php in Optimize Database after Deleting Revisions 4.1, at rvg-optimize-database.php

583 lines 22.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * @package Optimize Database after Deleting Revisions
4 * @version 4.1
5 */
6 /*
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.1
13 */
14
15 /********************************************************************************************
16 *
17 * MAIN CLASS
18 *
19 ********************************************************************************************/
20 // CREATE INSTANCE
21 global $odb_class;
22 $odb_class = new OptimizeDatabase();
23
24 class OptimizeDatabase
25 {
26 // VERSION
27 var $odb_version = '4.1';
28 var $odb_release_date = '01/14/2016';
29
30 // PLUGIN OPTIONS
31 var $odb_rvg_options = array();
32
33 // EXCLUDED TABELS
34 var $odb_rvg_excluded_tabs = array();
35
36 // MULTISITE STRUCTURE
37 var $odb_ms_prefixes = array();
38
39 // DATABASE TABLES
40 var $odb_tables = array();
41
42 // MINIFYING?
43 var $odb_minify;
44
45 // MAIN PLUGIN FILE
46 var $odb_main_file = 'rvg-optimize-database/rvg-optimize-database.php';
47
48 // LOCALIZATION
49 var $odb_txt_domain = 'rvg-optimize-database';
50
51 // PLUGIN
52 var $odb_plugin_url;
53 var $odb_plugin_path;
54
55 // LOGGING
56 var $odb_logfile_url;
57 var $odb_logfile_path;
58
59 // OBJECTS
60 var $odb_cleaner_obj;
61 var $odb_displayer_obj;
62 var $odb_logger_obj;
63 var $odb_multisite_obj;
64 var $odb_scheduler_obj;
65 var $odb_utilities_obj;
66
67 // PAGE TIMER
68 var $odb_start_time;
69
70
71 /*******************************************************************************
72 * CONSTRUCTOR
73 *******************************************************************************/
74 function __construct()
75 {
76 // INITIALIZE PLUGIN
77 add_action('init', array(&$this, 'odb_init'));
78 } // __construct()
79
80
81 /*******************************************************************************
82 * INITIALIZE PLUGIN
83 *******************************************************************************/
84 function odb_init()
85 {
86 // LOAD CLASSES
87 $this->odb_classes();
88
89 // URLS AND DIRECTORIES
90 $this->odb_urls_dirs();
91
92 // GET (MULTI-SITE) NETWORK INFORMATION
93 $this->odb_multisite_obj->odb_ms_network_info();
94
95 // LOAD OPTIONS
96 $this->odb_load_options();
97
98 // INITIALIZE WORDPRESS HOOKS
99 $this->odb_init_hooks();
100
101 // GET THE DATABASE TABLES
102 $this->odb_tables = $this->odb_utilities_obj->odb_get_tables();
103
104 // GET EXCLUDED TABLES FROM SETTINGS
105 $this->odb_rvg_excluded_tabs = $this->odb_multisite_obj->odb_ms_get_option('odb_rvg_excluded_tabs');
106
107 // USE THE NON-MINIFIED VERSION OF SCRIPTS AND STYLE SHEETS WHILE DEBUGGING
108 $this->odb_minify = (defined('WP_DEBUG') && WP_DEBUG) ? '' : '.min';
109
110 // LOAD STYLE SHEET (ONLY ON RELEVANT PAGES)
111 $this_page = '';
112 if(isset($_GET['page'])) $this_page = $_GET['page'];
113 // v4.0.3
114 if($this->odb_is_relevant_page())
115 { wp_register_style('odb-style'.$this->odb_version, plugins_url('css/style'.$this->odb_minify.'.css', __FILE__));
116 wp_enqueue_style('odb-style'.$this->odb_version);
117 }
118 } // odb_init()
119
120
121 /*******************************************************************************
122 * LOAD AND INITIALIZE CLASSES
123 *******************************************************************************/
124 function odb_classes()
125 {
126 // LOAD CLASSES
127 include_once('classes/odb-cleaner.php');
128 include_once('classes/odb-displayer.php');
129 include_once('classes/odb-logger.php');
130 include_once('classes/odb-multisite.php');
131 include_once('classes/odb-scheduler.php');
132 include_once('classes/odb-utilities.php');
133
134 // CREATE INSTANCES
135 $this->odb_cleaner_obj = new ODB_Cleaner();
136 $this->odb_displayer_obj = new ODB_Displayer();
137 $this->odb_logger_obj = new ODB_Logger();
138 $this->odb_multisite_obj = new ODB_MultiSite();
139 $this->odb_scheduler_obj = new ODB_Scheduler();
140 $this->odb_utilities_obj = new ODB_Utilities();
141 } // odb_classes()
142
143
144 /*******************************************************************************
145 * INITIALIZE URLS AND DIRECTORIES
146 *******************************************************************************/
147 function odb_urls_dirs()
148 {
149 $this->odb_plugin_url = plugins_url( '/', __FILE__ );
150 $this->odb_plugin_path = plugin_dir_path(__FILE__);
151 $this->odb_logfile_url = $this->odb_plugin_url.'logs/rvg-optimize-db-log.html';
152 $this->odb_logfile_path = $this->odb_plugin_path.'logs/rvg-optimize-db-log.html';
153 $this->odb_logfile_debug_path = $this->odb_plugin_path.'logs/rvg-optimize-db-log.txt';
154 } // odb_urls_dirs()
155
156
157 /*******************************************************************************
158 * LOAD OPTIONS
159 *******************************************************************************/
160 function odb_load_options()
161 {
162 // GET OPTIONS
163 $this->odb_rvg_options = $this->odb_multisite_obj->odb_ms_get_option('odb_rvg_options');
164
165 if(!isset($this->odb_rvg_options['version']))
166 // THIS VERSION IS FROM BEFORE 4.0: CONVERT OPTIONS
167 $this->odb_convert_options();
168
169 if(!isset($this->odb_rvg_options['adminbar']))
170 $this->odb_rvg_options['adminbar'] = 'N';
171 if(!isset($this->odb_rvg_options['adminmenu']))
172 $this->odb_rvg_options['adminmenu'] = 'N';
173 if(!isset($this->odb_rvg_options['clear_pingbacks']))
174 $this->odb_rvg_options['clear_pingbacks'] = 'N';
175 if(!isset($this->odb_rvg_options['clear_spam']))
176 $this->odb_rvg_options['clear_spam'] = 'N';
177 if(!isset($this->odb_rvg_options['clear_tags']))
178 $this->odb_rvg_options['clear_tags'] = 'N';
179 if(!isset($this->odb_rvg_options['clear_transients']))
180 $this->odb_rvg_options['clear_transients'] = 'N';
181 if(!isset($this->odb_rvg_options['clear_trash']))
182 $this->odb_rvg_options['clear_trash'] = 'N';
183 if(!isset($this->odb_rvg_options['last_run']))
184 $this->odb_rvg_options['last_run'] = '';
185 if(!isset($this->odb_rvg_options['logging_on']))
186 $this->odb_rvg_options['logging_on'] = 'N';
187 if(!isset($this->odb_rvg_options['nr_of_revisions']))
188 $this->odb_rvg_options['nr_of_revisions'] = (int)0;
189 // v4.1
190 if(!isset($this->odb_rvg_options['older_than']))
191 $this->odb_rvg_options['older_than'] = '';
192 if(!isset($this->odb_rvg_options['optimize_innodb']))
193 $this->odb_rvg_options['optimize_innodb'] = 'N';
194 // v4.1
195 if(!isset($this->odb_rvg_options['revision_mode']))
196 $this->odb_rvg_options['revision_mode'] = 1;
197 if(!isset($this->odb_rvg_options['schedule_type']))
198 $this->odb_rvg_options['schedule_type'] = '';
199 if(!isset($this->odb_rvg_options['schedule_hour']))
200 $this->odb_rvg_options['schedule_hour'] = '';
201 if(!isset($this->odb_rvg_options['total_savings']))
202 $this->odb_rvg_options['total_savings'] = (int)0;
203 if(!isset($this->odb_rvg_options['version']))
204 $this->odb_rvg_options['version'] = $this->odb_version;
205
206 // UPDATE OPTIONS
207 $this->odb_multisite_obj->odb_ms_update_option('odb_rvg_options', $this->odb_rvg_options);
208
209 // UPDATE SCHEDULER (IF NEEDED)
210 $this->odb_scheduler_obj->odb_update_scheduler();
211 } // odb_load_options()
212
213
214 /*******************************************************************************
215 * COPY AND DELETE OPTIONS FROM PREVIOUS VERSIONS (BEFORE 4.0)
216 *******************************************************************************/
217 function odb_convert_options()
218 {
219 global $wpdb;
220
221 // STOP OLD SCHEDULER
222 wp_clear_scheduled_hook('rvg_optimize_database');
223
224 $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_total_savings');
225 if($setting)
226 { $this->odb_rvg_options['total_savings'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_total_savings');
227 $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_total_savings');
228 }
229
230 $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_pingbacks');
231 if($setting)
232 { $this->odb_rvg_options['clear_pingbacks'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_pingbacks');
233 $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_pingbacks');
234 }
235
236 $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_spam');
237 if($setting)
238 { $this->odb_rvg_options['clear_spam'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_spam');
239 $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_spam');
240 }
241
242 $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_tags');
243 if($setting)
244 { $this->odb_rvg_options['clear_tags'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_tags');
245 $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_tags');
246 }
247
248 $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_transients');
249 if($setting)
250 { $this->odb_rvg_options['clear_transients'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_transients');
251 $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_transients');
252 }
253
254 $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_trash');
255 if($setting)
256 { $this->odb_rvg_options['clear_trash'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_clear_trash');
257 $this->odb_multisite_obj->odb_ms_delete_option('rvg_clear_trash');
258 }
259
260 $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_adminbar');
261 if($setting)
262 { $this->odb_rvg_options['adminbar'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_adminbar');
263 $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_adminbar');
264 }
265
266 $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_adminmenu');
267 if($setting)
268 { $this->odb_rvg_options['adminmenu'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_adminmenu');
269 $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_adminmenu');
270 }
271
272 $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_logging_on');
273 if($setting)
274 { $this->odb_rvg_options['logging_on'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_logging_on');
275 $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_logging_on');
276 }
277
278 $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_number');
279 if($setting)
280 $this->odb_rvg_options['nr_of_revisions'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_number');
281 $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_number');
282
283 $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_schedule');
284 if($setting)
285 $this->odb_rvg_options['schedule_type'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_schedule');
286 $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_schedule');
287
288 $setting = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_schedulehour');
289 if($setting)
290 $this->odb_rvg_options['schedule_hour'] = $this->odb_multisite_obj->odb_ms_get_option('rvg_odb_schedulehour');
291 $this->odb_multisite_obj->odb_ms_delete_option('rvg_odb_schedulehour');
292
293 // COPY EXCLUDED TABLES
294 for($i=0; $i<count($this->odb_ms_prefixes); $i++)
295 {
296 $sql = "
297 SELECT `option_name`
298 FROM ".$this->odb_ms_prefixes[$i]."options
299 WHERE `option_name` LIKE 'rvg_ex_%'
300 ";
301
302 $res = $wpdb->get_results($sql, ARRAY_A);
303 for($j=0; $j<count($res); $j++)
304 { $option_name = $res[$j]['option_name'];
305 $option_name_new = substr($option_name, 7);
306 $this->odb_rvg_excluded_tabs[$option_name_new] = 'Y';
307 $this->odb_multisite_obj->odb_ms_delete_option($option_name);
308 }
309 }
310
311 // UPDATE EXCLUDED TABLES
312 $this->odb_multisite_obj->odb_ms_update_option('odb_rvg_excluded_tabs', $this->odb_rvg_excluded_tabs);
313 } // odb_convert_options()
314
315
316 /*******************************************************************************
317 * INITIALIZE WORDPRESS HOOKS
318 *******************************************************************************/
319 function odb_init_hooks()
320 {
321 global $blog_id;
322
323 // ON DE-ACTIVATION
324 register_deactivation_hook(__FILE__, array('OptimizeDatabase', 'odb_deactivation_handler'));
325
326 // ON UN-INSTALLATION
327 register_uninstall_hook(__FILE__, array('OptimizeDatabase', 'odb_uninstallation_handler'));
328
329 // ADD ENTRY TO ADMIN TOOLS MENU
330 if (is_multisite())
331 { if ($blog_id == 1)
332 { // v4.1: PLUGIN ONLY CAN BE USED ON THE MAIN SITE (NOT ON THE SUB SITES)
333 add_action('admin_menu', array(&$this, 'odb_admin_tools'));
334 add_action('admin_menu', array(&$this, 'odb_admin_settings'));
335 }
336 }
337 else
338 {
339 add_action('admin_menu', array(&$this, 'odb_admin_tools'));
340 add_action('admin_menu', array(&$this, 'odb_admin_settings'));
341 }
342
343 // ICON MODE: ADD ICON TO ADMIN MENU
344 if ($this->odb_rvg_options['adminmenu'] == "Y")
345 { add_action('admin_menu', array(&$this, 'odb_admin_icon'));
346 add_action('admin_menu', array(&$this, 'odb_register_options'));
347 }
348
349 // ADD 'SETTINGS' LINK TO THE MAIN PLUGIN PAGE
350 add_filter('plugin_action_links_'.plugin_basename(__FILE__), array(&$this, 'odb_settings_link'));
351
352 // ADD THE '1 CLICK OPTIMIZE DATABASE' ITEM TO THE ADMIN BAR (IF ACTIVATED)
353 if($this->odb_rvg_options['adminbar'] == 'Y')
354 add_action('wp_before_admin_bar_render', array(&$this, 'odb_admin_bar'));
355
356 // INITIALIZE LOCALIZATION
357 add_action('admin_menu', array(&$this, 'odb_i18n'));
358 } // odb_init_hooks()
359
360
361 /*******************************************************************************
362 * ADD ENTRY TO THE ADMIN TOOLS MENU
363 *******************************************************************************/
364 function odb_admin_tools()
365 { if (function_exists('add_management_page'))
366 { add_management_page(
367 __('Optimize Database',$this->odb_txt_domain), // page title
368 __('Optimize Database',$this->odb_txt_domain), // menu title
369 'manage_options', // capability
370 'rvg-optimize-database', // menu slug
371 array(&$this, 'odb_start_manually')); // function
372 } // if (function_exists('add_management_page'))
373 } // odb_admin_tools()
374
375
376 /*******************************************************************************
377 * ADD ENTRY TO THE ADMIN SETTINGS MENU
378 *******************************************************************************/
379 function odb_admin_settings()
380 { if (function_exists('add_options_page'))
381 add_options_page(
382 __('Optimize Database', $this->odb_txt_domain), // page title
383 __('Optimize Database', $this->odb_txt_domain), // menu title
384 'manage_options', // capability
385 'odb_settings_page', // menu slug
386 array(&$this, 'odb_settings_page') // function
387 );
388 } // odb_admin_settings()
389
390
391 /*******************************************************************************
392 * ADD 'SETTINGS' LINK TO THE MAIN PLUGIN PAGE
393 *******************************************************************************/
394 function odb_settings_link($links)
395 { array_unshift($links, '<a href="options-general.php?page=odb_settings_page">'.__('Settings', $this->odb_txt_domain).'</a>');
396 return $links;
397 } // odb_settings_link()
398
399
400 /********************************************************************************************
401 * ADD THE '1 CLICK OPTIMIZE DATABASE' ITEM TO THE ADMIN BAR (IF ACTIVATED)
402 ********************************************************************************************/
403 function odb_admin_bar()
404 { global $wp_admin_bar;
405
406 if (!is_super_admin() || !is_admin_bar_showing()) return;
407
408 $siteurl = site_url('/');
409 $wp_admin_bar->add_menu(
410 array(
411 'id' => 'optimize',
412 'title' => __('Optimize DB (1 click)', $this->odb_txt_domain),
413 'href' => $siteurl.'wp-admin/tools.php?page=rvg-optimize-database&action=run' ));
414 } // odb_admin_bar()
415
416
417 /********************************************************************************************
418 * 'ICON MODE': ADD A LINK TO THE ADMIN MENU
419 ********************************************************************************************/
420 function odb_admin_icon()
421 {
422 if (function_exists('add_menu_page'))
423 {
424 add_menu_page(
425 __('Optimize Database', $this->odb_txt_domain), // page title
426 __('Optimize Database', $this->odb_txt_domain), // menu title
427 'administrator', // capability
428 'rvg-optimize-database', // menu slug
429 array(&$this, 'odb_start_manually'), // function
430 $this->odb_plugin_url.'images/icon.png' // icon url
431 );
432 }
433 } // odb_admin_icon()
434
435
436 /********************************************************************************************
437 * 'ICON MODE': REGISTER OPTION PAGE BUT HIDE IT FROM THE ADMIN MENU
438 ********************************************************************************************/
439 function odb_register_options()
440 {
441 if (function_exists('add_submenu_page'))
442 { add_submenu_page(
443 null, // parent slug (NULL is hide from menu)
444 __('Optimize Database', $this->odb_txt_domain), // page title
445 __('Optimize Database', $this->odb_txt_domain), // menu title
446 'manage_options', // capability
447 'rvg_odb_admin', // menu slug
448 array(&$this, 'odb_settings_page') // function
449 );
450 }
451 } // odb_register_options()
452
453
454 /*******************************************************************************
455 * LOAD TEXT DOMAIN
456 *******************************************************************************/
457 function odb_i18n()
458 {
459 load_plugin_textdomain(
460 $this->odb_txt_domain, // domain
461 false, // abs rel path
462 dirname(plugin_basename( __FILE__ )).'/language/' // plugin rel path
463 );
464 } // odb_i18n()
465
466
467 /*******************************************************************************
468 * ARE WE ON A, FOR THIS PLUGIN, RELEVANT PAGE?
469 * Since v4.0.3
470 *******************************************************************************/
471 function odb_is_relevant_page()
472 {
473 $this_page = '';
474 if(isset($_GET['page'])) $this_page = $_GET['page'];
475 return ($this_page == 'odb_settings_page' || $this_page == 'rvg-optimize-database');
476 } // odb_is_relevant_page()
477
478
479 /*******************************************************************************
480 * PLUGIN DE-ACTIVATION
481 *******************************************************************************/
482 public static function odb_deactivation_handler()
483 { // STOP SCHEDULER
484 wp_clear_scheduled_hook('odb_scheduler');
485 } // odb_deactivation_handler()
486
487
488 /*******************************************************************************
489 * PLUGIN UN-INSTALLATION
490 *******************************************************************************/
491 public static function odb_uninstallation_handler()
492 { // STOP SCHEDULER
493 wp_clear_scheduled_hook('odb_scheduler');
494 } // odb_uninstallation_handler()
495
496
497 /*******************************************************************************
498 * LOAD SETTINGS (OPTIONS) PAGE
499 *******************************************************************************/
500 function odb_settings_page()
501 { global $wpdb, $odb_rvg_excluded_tabs, $odb_ms_prefixes;
502
503 include_once(trailingslashit(dirname(__FILE__)).'/includes/settings-page.php');
504 } // odb_settings_page()
505
506
507 /*******************************************************************************
508 * START CLEANING / OPTIMIZATION (INITIATED BY THE USER, NOT FROM WP-CRON)
509 *******************************************************************************/
510 function odb_start_manually()
511 {
512 $this->odb_start(false);
513 } // odb_start_manually()
514
515
516 /*******************************************************************************
517 * START CLEANING / OPTIMIZATION (FROM WP-CRON)
518 *******************************************************************************/
519 function odb_start_scheduler()
520 {
521 $this->odb_start(true);
522 } // odb_start_scheduler()
523
524
525 /*******************************************************************************
526 * MAIN METHOD FOR CLEANING / OPTIMIZING
527 *******************************************************************************/
528 function odb_start($scheduler)
529 {
530 // PAGE LOAD TIMER
531 $time = microtime();
532 $time = explode(' ', $time);
533 $time = $time[1] + $time[0];
534 $this->odb_start_time = $time;
535
536 $action = '';
537 if(isset($_REQUEST['action']))
538 { $action = $_REQUEST['action'];
539 if($action == "delete_log")
540 { // DELETE LOG FILE
541 @unlink($this->odb_plugin_path.'logs/rvg-optimize-db-log.html');
542
543 // UPDATED MESSAGE
544 echo "<div class='updated odb-bold'><p>".
545 __('Optimize Database after Deleting Revisions LOG FILE HAS BEEN DELETED', $this->odb_txt_domain);
546 echo "</p></div>";
547 }
548 } // if(isset($_REQUEST['action']))
549
550 if(!$scheduler)
551 { // SHOW PAGE HEADER
552 $this->odb_displayer_obj->display_header();
553 // SHOW CURRENT SETTINGS
554 $this->odb_displayer_obj->display_current_settings();
555 } // if(!$scheduler)
556
557 if ($action != 'run' && !$scheduler)
558 { /****************************************************************************************
559 * START SCREEN (SHOW SETTINGS + BUTTONS)
560 ****************************************************************************************/
561 $this->odb_displayer_obj->display_start_buttons($action);
562 }
563 else
564 { /****************************************************************************************
565 * RUN CLEANING AND OPTIMIZATION
566 ****************************************************************************************/
567 $this->odb_displayer_obj->display_start_buttons($action);
568
569 // REGISTER THE LAST RUN
570 $this->odb_rvg_options['last_run'] = Date('M j, Y @ H:i');
571 $this->odb_multisite_obj->odb_ms_update_option('odb_rvg_options', $this->odb_rvg_options);
572 // DELETE REDUNDANT DATA
573 $this->odb_cleaner_obj->odb_run_cleaner($scheduler);
574 // OPTIMIZE DATABASE TABLES
575 $this->odb_cleaner_obj->odb_run_optimizer($scheduler);
576 // SHOW RESULTS
577 $this->odb_cleaner_obj->odb_savings($scheduler);
578 // SHOW 'DONE' PARAGRAPH
579 if(!$scheduler) $this->odb_cleaner_obj->odb_done();
580 } // if($action != 'run')
581 } // odb_start()
582 } // OptimizeDatabase
583 ?>