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 | classes/odb-displayer.php +191 -91 4.0.15.2 View file →
@@ -1,147 +1,247 @@
1 1 <?php
2 2 /************************************************************************************************
3 3 *
4 - * DISPLAYER CLASS: DISPLAY CURRENT SETTINGS, BUTTONS, HEADERS
4 + * DISPLAYER CLASS: DISPLAY HEADERS, CURRENT SETTINGS, BUTTONS
5 5 *
6 6 ************************************************************************************************/
7 7 ?>
8 8 <?php
9 -class ODB_Displayer
10 -{
9 +class ODB_Displayer {
11 10 /********************************************************************************************
12 11 * CONSTRUCTOR
13 - ********************************************************************************************/
14 - function __construct()
15 - {
12 + ********************************************************************************************/
13 + function __construct() {
16 14 } // __construct()
17 15
18 16
19 17 /********************************************************************************************
18 + * DISPLAY THE PAGE HEADER
19 + ********************************************************************************************/
20 + function display_header() {
21 + global $odb_class;
22 +
23 + // V4.1.9: RUNNING INDICATOR ADDED
24 + echo '
25 +<div id="odb-running" style="display:none"></div>
26 +<div id="odb-header" class="odb-padding-left">
27 + <div id="odb-options-opening">
28 + <div class="odb-title-bar">
29 + <h2>'.__('Optimize Database after Deleting Revisions','rvg-optimize-database').'</h2>
30 + </div>
31 + <div class="odb-subheader-container">
32 + <div class="odb-subheader-left">
33 + <p class="odb-bold"> <em>'.__('One-click database optimization with precise revision cleanup and flexible scheduling.', 'rvg-optimize-database').'</em> </p>
34 + <span>Now maintained and supported by <a href="https://www.nerdpress.net/?utm_source=odadr&utm_medium=plugin&utm_campaign=odadr-header">NerdPress</a>! <a href="https://www.nerdpress.net/announcing-optimize-database/?utm_source=odadr&utm_medium=plugin&utm_campaign=odadr-header">Read the announcement</a>.
35 + </span>
36 + </div>
37 + <!--odb-subheader-left-->
38 + <div class="odb-subheader-right"></div>
39 + <!-- odb-subheader-right -->
40 + </div>
41 + <!--odb-subheader-container-->
42 + </div>
43 + <!-- odb-options-opening -->
44 +</div>
45 +<!-- /odb-header -->
46 + ';
47 + } // display_header
48 +
49 +
50 + /********************************************************************************************
20 51 * DISPLAY THE CURRENT SETTINGS
21 52 ********************************************************************************************/
22 - function display_current_settings()
23 - {
53 + function display_current_settings() {
24 54 global $odb_class;
25 -
26 - $current_hour = Date('H:i');
27 -
28 - $y = __('YES', $odb_class->odb_txt_domain);
29 - $n = __('NO', $odb_class->odb_txt_domain);
30 -
55 +
56 + $y = __('YES', 'rvg-optimize-database');
57 + $n = __('NO', 'rvg-optimize-database');
58 +
31 59 // CURRENT SETTINGS
32 60 $trash = ($odb_class->odb_rvg_options['clear_trash'] == 'Y') ? $y : $n;
33 61 $spam = ($odb_class->odb_rvg_options['clear_spam'] == 'Y') ? $y : $n;
34 - $tag = ($odb_class->odb_rvg_options['clear_tags'] == 'Y') ? $y : $n;
35 - $trans = ($odb_class->odb_rvg_options['clear_transients'] == 'Y') ? $y : $n;
62 + $tag = ($odb_class->odb_rvg_options['clear_tags'] == 'Y') ? $y : $n;
63 +
64 + if($odb_class->odb_rvg_options['clear_transients'] == 'Y') {
65 + $trans = __('DELETE EXPIRED TRANSIENTS', 'rvg-optimize-database');
66 + } else if ($odb_class->odb_rvg_options['clear_transients'] == 'A') {
67 + $trans = __('DELETE ALL TRANSIENTS', 'rvg-optimize-database');
68 + } else {
69 + $trans = $n;
70 + }
71 +
72 + //$trans = ($odb_class->odb_rvg_options['clear_transients'] == 'Y') ? $y : $n;
36 73 $ping = ($odb_class->odb_rvg_options['clear_pingbacks'] == 'Y') ? $y : $n;
74 + $oembed = ($odb_class->odb_rvg_options['clear_oembed'] == 'Y') ? $y : $n;
37 75 $log = ($odb_class->odb_rvg_options['logging_on'] == 'Y') ? $y : $n;
38 76 $innodb = ($odb_class->odb_rvg_options['optimize_innodb'] == 'Y') ? $y : $n;
39 -
77 +
40 78 if($odb_class->odb_rvg_options['schedule_type'] == 'fiveminutes')
41 - $schedule = __('EVERY FIVE MINUTES',$odb_class->odb_txt_domain);
79 + $schedule = __('EVERY FIVE MINUTES','rvg-optimize-database');
42 80 else if($odb_class->odb_rvg_options['schedule_type'] == 'hourly')
43 - $schedule = __('ONCE HOURLY',$odb_class->odb_txt_domain);
81 + $schedule = __('ONCE HOURLY','rvg-optimize-database');
44 82 else if($odb_class->odb_rvg_options['schedule_type'] == 'twicedaily')
45 - $schedule = __('TWICE DAILY',$odb_class->odb_txt_domain);
83 + $schedule = __('TWICE DAILY','rvg-optimize-database');
46 84 else if($odb_class->odb_rvg_options['schedule_type'] == 'daily')
47 - $schedule = __('ONCE DAILY',$odb_class->odb_txt_domain);
85 + $schedule = __('ONCE DAILY','rvg-optimize-database');
48 86 else if($odb_class->odb_rvg_options['schedule_type'] == 'weekly')
49 - $schedule = __('ONCE WEEKLY',$odb_class->odb_txt_domain);
50 - else $schedule = __('NOT SCHEDULED',$odb_class->odb_txt_domain);
51 -
87 + $schedule = __('ONCE WEEKLY','rvg-optimize-database');
88 + else if($odb_class->odb_rvg_options['schedule_type'] == 'monthly')
89 + $schedule = __('ONCE MONTHLY','rvg-optimize-database');
90 + else $schedule = __('NOT SCHEDULED','rvg-optimize-database');
91 +
52 92 echo '
53 93 <div id="odb-current-settings" class="odb-padding-left">
54 94 <div class="odb-title-bar">
55 - <h2>'.__('Current settings',$odb_class->odb_txt_domain).'</h2>
95 + <h2>'.__('Current settings','rvg-optimize-database').'</h2>
56 96 </div>
57 97 <br><br>
58 - <span class="odb-bold">'.__('Maximum number of - most recent - revisions to keep per post / page', $odb_class->odb_txt_domain).':</span> <span class="odb-bold odb-blue">'.$odb_class->odb_rvg_options['nr_of_revisions'].'</span><br />
59 - <span class="odb-bold">'.__('Delete trashed items', $odb_class->odb_txt_domain).':</span> <span class="odb-bold odb-blue">'.$trash.'</span><br />
60 - <span class="odb-bold">'.__('Delete spammed items', $odb_class->odb_txt_domain).':</span> <span class="odb-bold odb-blue">'.$spam.'</span><br />
61 - <span class="odb-bold">'.__('Delete unused tags', $odb_class->odb_txt_domain).':</span> <span class="odb-bold odb-blue">'.$tag.'</span><br />
62 - <span class="odb-bold">'.__('Delete expired transients', $odb_class->odb_txt_domain).':</span> <span class="odb-bold odb-blue">'.$trans.'</span><br />
63 - <span class="odb-bold">'.__('Delete pingbacks and trackbacks', $odb_class->odb_txt_domain).':</span> <span class="odb-bold odb-blue">'.$ping.'</span><br />
64 - <span class="odb-bold">'.__('Keep a log', $odb_class->odb_txt_domain).':</span> <span class="odb-bold odb-blue">'.$log.'</span><br />
65 - <span class="odb-bold">'.__('Optimize InnoDB tables', $odb_class->odb_txt_domain).':</span> <span class="odb-bold odb-blue">'.$innodb.'</span><br />
66 - <span class="odb-bold">'.__('Last run', $odb_class->odb_txt_domain).':</span> <span class="odb-bold odb-blue">'.$odb_class->odb_rvg_options['last_run'].' '.__('hrs', $odb_class->odb_txt_domain).'</span><br />
67 - <span class="odb-bold">'.__('Number of excluded tables', $odb_class->odb_txt_domain).':</span> <span class="odb-bold odb-blue">'.count($odb_class->odb_rvg_excluded_tabs).'</span><br />
68 - <span class="odb-bold">'.__('Scheduler', $odb_class->odb_txt_domain).':</span> <span class="odb-bold odb-blue">'.$schedule.'</span><br />
98 + ';
99 +
100 + // CUSTOM POST TYPES (from v4.4)
101 + $rel_posttypes = $odb_class->odb_rvg_options['post_types'];
102 + $rpt = '';
103 + foreach ($rel_posttypes as $posttype => $value) {
104 + if ($value == 'Y') {
105 + if ($rpt != '') $rpt .= ', ';
106 + $rpt .= strtoupper($posttype);
107 + } // if ($value == 'Y')
108 + } // foreach($rel_posttypes as $posttypes)
109 +
110 + if ($rpt == '') $rpt = '(' . __('NONE', 'rvg-optimize-database') . ')';
111 +
112 + echo '<span class="odb-bold">'.__('Delete revisions of', 'rvg-optimize-database').':</span> <span class="odb-bold odb-blue">'.$rpt.'</span><br>';
113 +
114 + if($odb_class->odb_rvg_options['delete_older'] == 'Y') {
115 + echo '<span class="odb-bold">'.__('Delete revisions older than', 'rvg-optimize-database').':</span> <span class="odb-bold odb-blue">'.$odb_class->odb_rvg_options['older_than'].' '.__("days", 'rvg-optimize-database').'</span><br>';
116 + }
117 +
118 + if($odb_class->odb_rvg_options['rvg_revisions'] == 'Y') {
119 + echo '<span class="odb-bold">'.__('Maximum number of - most recent - revisions to keep per post / page', 'rvg-optimize-database').':</span> <span class="odb-bold odb-blue">'.$odb_class->odb_rvg_options['nr_of_revisions'].'</span><br>';
120 + }
121 +
122 + // v4.8.6
123 + $lastrun = '';
124 + if ($odb_class->odb_rvg_options['last_run_seconds'] == '') {
125 + $lastrun = '<span class="odb-bold">' . __('Last run', 'rvg-optimize-database') . ':</span> <span class="odb-bold odb-blue">' . $odb_class->odb_rvg_options['last_run'] . '</span><br>';
126 + } else {
127 + $lastrun = '<span class="odb-bold">' . __('Last run', 'rvg-optimize-database') . ':</span> <span class="odb-bold odb-blue">' . $odb_class->odb_rvg_options['last_run'] . ' ' . __('hrs', 'rvg-optimize-database') . ' (' . __('in', 'rvg-optimize-database') . ' ' .$odb_class->odb_rvg_options['last_run_seconds'] . ' ' . __('seconds', 'rvg-optimize-database') . ')</span><br>';
128 + }
129 +
130 + echo '
131 + <span class="odb-bold">'.__('Delete trashed items', 'rvg-optimize-database').':</span> <span class="odb-bold odb-blue">'.$trash.'</span><br>
132 + <span class="odb-bold">'.__('Delete spammed items', 'rvg-optimize-database').':</span> <span class="odb-bold odb-blue">'.$spam.'</span><br>
133 + <span class="odb-bold">'.__('Delete unused tags', 'rvg-optimize-database').':</span> <span class="odb-bold odb-blue">'.$tag.'</span><br>
134 + <span class="odb-bold">'.__('Delete transients', 'rvg-optimize-database').':</span> <span class="odb-bold odb-blue">'.$trans.'</span><br>
135 + <span class="odb-bold">'.__('Delete pingbacks and trackbacks', 'rvg-optimize-database').':</span> <span class="odb-bold odb-blue">'.$ping.'</span><br>
136 + <span class="odb-bold">'.__('Clear oEmbed cache', 'rvg-optimize-database').':</span> <span class="odb-bold odb-blue">'.$oembed.'</span><br>
137 + <span class="odb-bold">'.__('Keep a log', 'rvg-optimize-database').':</span> <span class="odb-bold odb-blue">'.$log.'</span><br>
138 + <span class="odb-bold">'.__('Optimize InnoDB tables', 'rvg-optimize-database').':</span> <span class="odb-bold odb-blue">'.$innodb.'</span><br>
139 + <span class="odb-bold">'.__('Number of excluded tables', 'rvg-optimize-database').':</span> <span class="odb-bold odb-blue">'.count($odb_class->odb_rvg_excluded_tabs).'</span><br>
140 + ' . $lastrun . '
141 + <span class="odb-bold">' . __('Scheduler', 'rvg-optimize-database') . ':</span> <span class="odb-bold odb-blue">' . $schedule . '</span><br>
69 142 ';
70 -
71 - if($odb_class->odb_rvg_options['schedule_type'] != '')
72 - { $timestamp = wp_next_scheduled('odb_scheduler');
73 - $nextrun = Date('M j, Y @ H:i', $timestamp);
143 +
144 + if($odb_class->odb_rvg_options['schedule_type'] != '') {
145 + // v4.5
146 + $current_timestamp = current_time('timestamp', 1);
147 + $cron_timestamp = wp_next_scheduled('odb_scheduler');
148 + $diff_secs = $cron_timestamp - $current_timestamp;
149 + $nextrun = $this->secondsToTime($diff_secs) . '<br>';
74 150 echo '
75 - <span class="odb-bold">'.__('Next scheduled run',$odb_class->odb_txt_domain).':</span> <span class="odb-bold odb-blue">'.$nextrun.' '.__('hrs', $odb_class->odb_txt_domain).' ('.__('current server time', $odb_class->odb_txt_domain).': '.$current_hour.' '.__('hrs', $odb_class->odb_txt_domain).')</span><br>
151 + <span class="odb-bold">'.__('Next scheduled run','rvg-optimize-database').':</span> <span class="odb-bold odb-blue">'.$nextrun.'</span><br>
76 152 ';
77 153 } // if($odb_class->odb_rvg_options['schedule_type'] != '')
78 -
154 +
79 155 echo '
80 - <span class="odb-bold">'.__('Total savings since the first run', $odb_class->odb_txt_domain).':</span> <span class="odb-bold odb-blue">'.$odb_class->odb_utilities_obj->odb_format_size($odb_class->odb_rvg_options['total_savings']).'</span>
156 + <span class="odb-bold">'.__('Total savings since the first run', 'rvg-optimize-database').':</span> <span class="odb-bold odb-blue">'.$odb_class->odb_utilities_obj->odb_format_size($odb_class->odb_rvg_options['total_savings']).'</span>
81 157 </div><!-- /odb-current-settings -->
82 - ';
158 + ';
83 159 } // display_current_settings()
84 160
85 161
86 162 /********************************************************************************************
87 - * DISPLAY THE PAGE HEADER
88 - ********************************************************************************************/
89 - function display_header()
90 - {
163 + * CONVERT SECONDS TO DAYS, HOURS, MINUTES AND SECONDS
164 + ********************************************************************************************/
165 + private function secondsToTime($seconds) {
91 166 global $odb_class;
92 -
93 - echo '
94 - <div id="odb-header" class="odb-padding-left">
95 - <div id="odb-options-opening">
96 - <div class="odb-title-bar">
97 - <h2>'.__('Optimize Database after Deleting Revisions',$odb_class->odb_txt_domain).'</h2>
98 - </div>
99 - <p class="odb-bold">
100 - <em>'.__('A popular \'one-click\' plugin to clean and optimize your WordPress database.', $odb_class->odb_txt_domain).'</em>
101 - </p>
102 - <span class="odb-bold">
103 - '.__('Plugin version', $odb_class->odb_txt_domain).': v'.$odb_class->odb_version.' ['.$odb_class->odb_release_date.'] -
104 - <a href="http://cagewebdev.com/index.php/optimize-database-after-deleting-revisions-wordpress-plugin/" target="_blank">'.__('Plugin page', $odb_class->odb_txt_domain).'</a> -
105 - <a href="http://wordpress.org/plugins/rvg-optimize-database/" target="_blank">'.__('Download page', $odb_class->odb_txt_domain).'</a> -
106 - <a href="http://rvg.cage.nl/" target="_blank">'.__('Author', $odb_class->odb_txt_domain).'</a> -
107 - <a href="http://cagewebdev.com/" target="_blank">'.__('Company', $odb_class->odb_txt_domain).'</a> -
108 - <a href="http://cagewebdev.com/index.php/donations-odb/" target="_blank">'.__('Donation page', $odb_class->odb_txt_domain).'</a>
109 - </span>
110 - </div><!-- odb-options-opening -->
111 - </div><!-- /odb-header -->
112 - ';
113 - } // display_header
114 167
168 + $dtF = new \DateTime('@0');
169 + $dtT = new \DateTime("@$seconds");
170 + // v4.5.2
171 + $d = __('days', 'rvg-optimize-database');
172 + $h = __('hours', 'rvg-optimize-database');
173 + $i = __('minutes', 'rvg-optimize-database');
174 + $a = __('and', 'rvg-optimize-database');
175 + $s = __('seconds', 'rvg-optimize-database');
176 + return $dtF->diff($dtT)->format('%a ' . $d . ', %h ' . $h . ', %i ' . $i . ' ' . $a . ' %s ' . $s);
177 + } // secondsToTime()
115 178
179 +
116 180 /********************************************************************************************
117 181 * DISPLAY THE START BUTTONS
118 - ********************************************************************************************/
119 - function display_start_buttons()
120 - {
182 + ********************************************************************************************/
183 + function display_start_buttons($action) {
121 184 global $odb_class;
122 -
123 - echo '
185 +
186 + $nonce = wp_create_nonce( 'rvg-optimize-database' );
187 +
188 + if(!defined('RUN_OPTIMIZE_DATABASE')) {
189 + echo '
124 190 <div id="odb-start-buttons" class="odb-padding-left">
191 + <br>
125 192 <p>
126 - <input class="button odb-normal" type="button" name="change_options" value="'.__('Change Settings', $odb_class->odb_txt_domain).'" onclick="self.location=\'options-general.php?page=odb_settings_page\'">
127 - ';
128 -
129 - if(file_exists($odb_class->odb_plugin_path.'logs/rvg-optimize-db-log.html'))
130 - { // THERE IS A LOG FILE
131 - echo '
193 + <input class="button odb-normal" type="button" name="change_options" value="'.__('Change Settings', 'rvg-optimize-database').'" onclick="self.location=\'options-general.php?page=odb_settings_page\'">
194 + <br><br>
195 + ';
196 +
197 + // v4.6
198 + if($odb_class->odb_logger_obj->odb_log_count() > 0) {
199 + // THERE IS A LOG FILE
200 + // v4.6.2
201 + $msg = str_replace("'", "\'", __('Clear the log?', 'rvg-optimize-database'));
202 +
203 + echo "
204 +<script>
205 +function odb_confirm_delete() {
206 + if(confirm('" . $msg . "')) {
207 + self.location = 'tools.php?page=rvg-optimize-database&action=clear_log&_wpnonce=<?php echo esc_js( $nonce ); ?>'
208 + return;
209 + }
210 +} // odb_confirm_delete()
211 +</script>
212 + ";
213 + } // if(file_exists($this->odb_plugin_path.'logs/rvg-optimize-db-log.html'))
214 +
215 + if($action != 'run') {
216 + // NOT RUNNING: SHOW LOG- AND START BUTTONS
217 + if($odb_class->odb_logger_obj->odb_log_count() > 0) {
218 + echo '
219 + <input class="button odb-normal" type="button" name="view_log" value="'.__('View Log', 'rvg-optimize-database').'" onclick="self.location=\'tools.php?page=rvg-optimize-database&action=view_log&_wpnonce=' . $nonce . '\'">
132 220 &nbsp;
133 - <input class="button odb-normal" type="button" name="view_log" value="'.__('View Log File', $odb_class->odb_txt_domain).'" onclick="window.open(\''.$odb_class->odb_logfile_url.'\')">
221 + <input class="button odb-normal" type="button" name="clear_log" value="'.__('Clear Log', 'rvg-optimize-database').'" onclick="return odb_confirm_delete();">
222 + <br><br>
223 + ';
224 + } // if($odb_class->odb_logger_obj->odb_log_count() > 0)
225 +
226 + // v4.8.0
227 + echo '
228 + <input class="button-primary button-large" type="button" name="analyze_summary" value="'.__('Analyze (summary)', 'rvg-optimize-database').'" onclick="self.location=\'tools.php?page=rvg-optimize-database&action=analyze_summary&_wpnonce=' . $nonce . '\'" class="odb-bold">
229 + &nbsp;
230 + <input class="button-primary button-large" type="button" name="analyze_detail" value="'.__('Analyze (detail)', 'rvg-optimize-database').'" onclick="self.location=\'tools.php?page=rvg-optimize-database&action=analyze_detail&_wpnonce=' . $nonce . '\'" class="odb-bold">
231 + <br><br>
232 + <input class="button-primary button-large" type="button" name="run_summary" value="'.__('Optimize (summary)', 'rvg-optimize-database').'" onclick="self.location=\'tools.php?page=rvg-optimize-database&action=run_summary&_wpnonce=' . $nonce . '\'" class="odb-bold">
134 233 &nbsp;
135 - <input class="button odb-normal" type="button" name="delete_log" value="'.__('Delete Log File', $odb_class->odb_txt_domain).'" onclick="self.location=\'tools.php?page=rvg-optimize-database&action=delete_log\'">
136 - ';
137 - } // if(file_exists($this->odb_plugin_path.'logs/rvg-optimize-db-log.html'))
138 -
139 - echo '
140 - &nbsp;
141 - <input class="button-primary button-large" type="button" name="start_optimization" value="'.__('Start Optimization', $odb_class->odb_txt_domain).'" onclick="self.location=\'tools.php?page=rvg-optimize-database&action=run\'" class="odb-bold" />
234 + <input class="button-primary button-large" type="button" name="run_detail" value="'.__('Optimize (detail)', 'rvg-optimize-database').'" onclick="self.location=\'tools.php?page=rvg-optimize-database&action=run_detail&_wpnonce=' . $nonce . '\'" class="odb-bold">
235 + ';
236 + } // if($odb_class->odb_logger_obj->odb_log_count() > 0)
237 +
238 + echo '
142 239 </p>
143 240 </div><!-- /odb-start-buttons -->
144 - ';
241 + ';
242 + } else if (RUN_OPTIMIZE_DATABASE) {
243 + echo 'Database optimized!';
244 + } // if(!defined('RUN_OPTIMIZE_DATABASE'))
145 245 } // display_start_buttons()
146 246 } // ODB_Displayer
147 -?>
247 +?>