Optimize Database after Deleting Revisions - Version 4.0.1

Version Description

[11/27/2015] = * NEW: New option: optimize InnoDB tables too * BUG FIX: Localization fixed for extra cron schedules * BUG FIX: De-activation issue on update fixed

Download this release

Release Info

Developer cageehv
Plugin Icon 128x128 Optimize Database after Deleting Revisions
Version 4.0.1
Comparing to
See all releases

Code changes from version 4.0 to 4.0.1

classes/odb-cleaner.php CHANGED
@@ -1036,7 +1036,7 @@ class ODB_Cleaner
1036
  ";
1037
  $table_info = $wpdb->get_results($sql);
1038
 
1039
- if(strtolower($table_info[0]->engine) == 'innodb')
1040
  { // SKIP InnoDB tables
1041
  $msg = __('InnoDB table: skipped...', 'rvg-optimize-database');
1042
  }
@@ -1046,6 +1046,8 @@ class ODB_Cleaner
1046
  $msg = $result[0]->Msg_text;
1047
  $msg = str_replace('OK', __('<span class="odb-optimized">TABLE OPTIMIZED</span>', 'rvg-optimize-database'), $msg);
1048
  $msg = str_replace('Table is already up to date', __('Table is already up to date', 'rvg-optimize-database'), $msg);
 
 
1049
  }
1050
 
1051
  if (!$scheduler)
1036
  ";
1037
  $table_info = $wpdb->get_results($sql);
1038
 
1039
+ if($odb_class->odb_rvg_options["optimize_innodb"] == 'N' && strtolower($table_info[0]->engine) == 'innodb')
1040
  { // SKIP InnoDB tables
1041
  $msg = __('InnoDB table: skipped...', 'rvg-optimize-database');
1042
  }
1046
  $msg = $result[0]->Msg_text;
1047
  $msg = str_replace('OK', __('<span class="odb-optimized">TABLE OPTIMIZED</span>', 'rvg-optimize-database'), $msg);
1048
  $msg = str_replace('Table is already up to date', __('Table is already up to date', 'rvg-optimize-database'), $msg);
1049
+ $msg = str_replace('Table does not support optimize, doing recreate + analyze instead', __('<span class="odb-optimized">TABLE OPTIMIZED</span>', 'rvg-optimize-database'), $msg);
1050
+
1051
  }
1052
 
1053
  if (!$scheduler)
classes/odb-displayer.php CHANGED
@@ -29,12 +29,13 @@ class ODB_Displayer
29
  $n = __('NO', $odb_class->odb_txt_domain);
30
 
31
  // CURRENT SETTINGS
32
- $trash = ($odb_class->odb_rvg_options['clear_trash'] == 'Y') ? $y : $n;
33
- $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;
36
- $ping = ($odb_class->odb_rvg_options['clear_pingbacks'] == 'Y') ? $y : $n;
37
- $log = ($odb_class->odb_rvg_options['logging_on'] == 'Y') ? $y : $n;
 
38
 
39
  if($odb_class->odb_rvg_options['schedule_type'] == 'fiveminutes')
40
  $schedule = __('EVERY FIVE MINUTES',$odb_class->odb_txt_domain);
@@ -61,6 +62,7 @@ class ODB_Displayer
61
  <span class="odb-bold">'.__('Delete expired transients', $odb_class->odb_txt_domain).':</span> <span class="odb-bold odb-blue">'.$trans.'</span><br />
62
  <span class="odb-bold">'.__('Delete pingbacks and trackbacks', $odb_class->odb_txt_domain).':</span> <span class="odb-bold odb-blue">'.$ping.'</span><br />
63
  <span class="odb-bold">'.__('Keep a log', $odb_class->odb_txt_domain).':</span> <span class="odb-bold odb-blue">'.$log.'</span><br />
 
64
  <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 />
65
  <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 />
66
  <span class="odb-bold">'.__('Scheduler', $odb_class->odb_txt_domain).':</span> <span class="odb-bold odb-blue">'.$schedule.'</span><br />
29
  $n = __('NO', $odb_class->odb_txt_domain);
30
 
31
  // CURRENT SETTINGS
32
+ $trash = ($odb_class->odb_rvg_options['clear_trash'] == 'Y') ? $y : $n;
33
+ $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;
36
+ $ping = ($odb_class->odb_rvg_options['clear_pingbacks'] == 'Y') ? $y : $n;
37
+ $log = ($odb_class->odb_rvg_options['logging_on'] == 'Y') ? $y : $n;
38
+ $innodb = ($odb_class->odb_rvg_options['optimize_innodb'] == 'Y') ? $y : $n;
39
 
40
  if($odb_class->odb_rvg_options['schedule_type'] == 'fiveminutes')
41
  $schedule = __('EVERY FIVE MINUTES',$odb_class->odb_txt_domain);
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 />
classes/odb-multisite.php CHANGED
@@ -41,9 +41,11 @@ class ODB_MultiSite
41
  ********************************************************************************************/
42
  function odb_ms_get_option($option, $default = false)
43
  {
 
 
44
  if(is_multisite() &&
45
  function_exists('is_plugin_active_for_network') &&
46
- is_plugin_active_for_network('rvg-optimize-database/rvg-optimize-database.php'))
47
  return get_site_option($option, $default);
48
  else
49
  return get_option($option, $default);
@@ -57,7 +59,7 @@ class ODB_MultiSite
57
  {
58
  if(is_multisite() &&
59
  function_exists('is_plugin_active_for_network') &&
60
- is_plugin_active_for_network('rvg-optimize-database/rvg-optimize-database.php'))
61
  return update_site_option( $option, $value);
62
  else
63
  return update_option( $option, $value);
@@ -71,7 +73,7 @@ class ODB_MultiSite
71
  {
72
  if(is_multisite() &&
73
  function_exists('is_plugin_active_for_network') &&
74
- is_plugin_active_for_network('rvg-optimize-database/rvg-optimize-database.php'))
75
  return delete_site_option($option);
76
  else
77
  return delete_option($option);
41
  ********************************************************************************************/
42
  function odb_ms_get_option($option, $default = false)
43
  {
44
+ global $odb_class;
45
+
46
  if(is_multisite() &&
47
  function_exists('is_plugin_active_for_network') &&
48
+ is_plugin_active_for_network($odb_class->odb_main_file))
49
  return get_site_option($option, $default);
50
  else
51
  return get_option($option, $default);
59
  {
60
  if(is_multisite() &&
61
  function_exists('is_plugin_active_for_network') &&
62
+ is_plugin_active_for_network($odb_class->odb_main_file))
63
  return update_site_option( $option, $value);
64
  else
65
  return update_option( $option, $value);
73
  {
74
  if(is_multisite() &&
75
  function_exists('is_plugin_active_for_network') &&
76
+ is_plugin_active_for_network($odb_class->odb_main_file))
77
  return delete_site_option($option);
78
  else
79
  return delete_option($option);
classes/odb-scheduler.php CHANGED
@@ -26,17 +26,21 @@ class ODB_Scheduler
26
  /*******************************************************************************
27
  * ADD EXTRA SCHEDULE FOR THE CRONTAB
28
  * http://codex.wordpress.org/Plugin_API/Filter_Reference/cron_schedules
 
 
29
  *******************************************************************************/
30
  function odb_extra_cron_schedules()
31
- {
 
 
32
  $schedules['weekly'] = array(
33
  'interval' => 604800,
34
- 'display' => __('Once Weekly')
35
  );
36
  // FOR DEBUGGING
37
  $schedules['fiveminutes'] = array(
38
  'interval' => 300,
39
- 'display' => __('Every Five Minutes')
40
  );
41
  return $schedules;
42
  } // odb_extra_cron_schedules()
26
  /*******************************************************************************
27
  * ADD EXTRA SCHEDULE FOR THE CRONTAB
28
  * http://codex.wordpress.org/Plugin_API/Filter_Reference/cron_schedules
29
+ *
30
+ * v4.0.1 Localization fixed
31
  *******************************************************************************/
32
  function odb_extra_cron_schedules()
33
+ {
34
+ global $odb_class;
35
+
36
  $schedules['weekly'] = array(
37
  'interval' => 604800,
38
+ 'display' => __('Once Weekly', $odb_class->odb_txt_domain)
39
  );
40
  // FOR DEBUGGING
41
  $schedules['fiveminutes'] = array(
42
  'interval' => 300,
43
+ 'display' => __('Every Five Minutes', $odb_class->odb_txt_domain)
44
  );
45
  return $schedules;
46
  } // odb_extra_cron_schedules()
includes/settings-page.php CHANGED
@@ -70,6 +70,9 @@ if (isset($_POST['info_update']))
70
  if(isset($_POST['rvg_odb_adminmenu'])) $this->odb_rvg_options['adminmenu'] = $_POST['rvg_odb_adminmenu'];
71
  else $this->odb_rvg_options['adminmenu'] = 'N';
72
 
 
 
 
73
  $this->odb_multisite_obj->odb_ms_update_option('odb_rvg_options', $this->odb_rvg_options);
74
 
75
  // UPDATE EXCLUDED TABLES
@@ -102,14 +105,15 @@ function schedule_changed()
102
  <?php
103
  // CHECKBOXES
104
  $c = ' checked';
105
- $cb_trash = ($this->odb_rvg_options['clear_trash'] == "Y") ? $c : '';
106
- $cb_spam = ($this->odb_rvg_options['clear_spam'] == "Y") ? $c : '';
107
- $cb_tags = ($this->odb_rvg_options['clear_tags'] == "Y") ? $c : '';
108
- $cb_trans = ($this->odb_rvg_options['clear_transients'] == "Y") ? $c : '';
109
- $cb_ping = ($this->odb_rvg_options['clear_pingbacks'] == "Y") ? $c : '';
110
- $cb_logging = ($this->odb_rvg_options['logging_on'] == "Y") ? $c : '';
111
- $cb_adminbar = ($this->odb_rvg_options['adminbar'] == "Y") ? $c : '';
112
- $cb_adminmenu = ($this->odb_rvg_options['adminmenu'] == "Y") ? $c : '';
 
113
 
114
  // DISPLAY HEADER
115
  $this->odb_displayer_obj->display_header();
@@ -170,7 +174,12 @@ echo '
170
  </span></td>
171
  <td width="50%" valign="top"><input name="rvg_odb_logging_on" type="checkbox" value="Y" '.$cb_logging.'></td>
172
  </tr>
173
-
 
 
 
 
 
174
  <tr>
175
  <td width="50%" align="right"><span class="odb-bold">
176
  '.__('Scheduler',$this->odb_txt_domain).'
@@ -220,7 +229,7 @@ echo '
220
  </div>
221
  </td>
222
  </tr>
223
- <script type="text/javascript">schedule_changed();</script>
224
  <tr>
225
  <td align="right" valign="top"><span class="odb-bold">
226
  '.__('Show \'1-click\' link in Admin Bar',$this->odb_txt_domain).'*
@@ -232,7 +241,7 @@ echo '
232
  '. __('Show an icon in the Admin Menu',$this->odb_txt_domain).'*
233
  </span></td>
234
  <td valign="top"><input name="rvg_odb_adminmenu" type="checkbox" value="Y" '.$cb_adminmenu.'></td>
235
- </tr>
236
  </table>
237
  <div align="center"><em>* '.__('change will be visible after loading the next page', $this->odb_txt_domain).'</em></div>
238
  <br>
70
  if(isset($_POST['rvg_odb_adminmenu'])) $this->odb_rvg_options['adminmenu'] = $_POST['rvg_odb_adminmenu'];
71
  else $this->odb_rvg_options['adminmenu'] = 'N';
72
 
73
+ if(isset($_POST['rvg_odb_optimize_innodb'])) $this->odb_rvg_options['optimize_innodb'] = $_POST['rvg_odb_optimize_innodb'];
74
+ else $this->odb_rvg_options['optimize_innodb'] = 'N';
75
+
76
  $this->odb_multisite_obj->odb_ms_update_option('odb_rvg_options', $this->odb_rvg_options);
77
 
78
  // UPDATE EXCLUDED TABLES
105
  <?php
106
  // CHECKBOXES
107
  $c = ' checked';
108
+ $cb_trash = ($this->odb_rvg_options['clear_trash'] == "Y") ? $c : '';
109
+ $cb_spam = ($this->odb_rvg_options['clear_spam'] == "Y") ? $c : '';
110
+ $cb_tags = ($this->odb_rvg_options['clear_tags'] == "Y") ? $c : '';
111
+ $cb_trans = ($this->odb_rvg_options['clear_transients'] == "Y") ? $c : '';
112
+ $cb_ping = ($this->odb_rvg_options['clear_pingbacks'] == "Y") ? $c : '';
113
+ $cb_logging = ($this->odb_rvg_options['logging_on'] == "Y") ? $c : '';
114
+ $cb_adminbar = ($this->odb_rvg_options['adminbar'] == "Y") ? $c : '';
115
+ $cb_adminmenu = ($this->odb_rvg_options['adminmenu'] == "Y") ? $c : '';
116
+ $cb_optimize_innodb = ($this->odb_rvg_options['optimize_innodb'] == "Y") ? $c : '';
117
 
118
  // DISPLAY HEADER
119
  $this->odb_displayer_obj->display_header();
174
  </span></td>
175
  <td width="50%" valign="top"><input name="rvg_odb_logging_on" type="checkbox" value="Y" '.$cb_logging.'></td>
176
  </tr>
177
+ <tr>
178
+ <td align="right" valign="top"><span class="odb-bold">
179
+ '. __('Optimize InnoDB tables too',$this->odb_txt_domain).'
180
+ </span></td>
181
+ <td valign="top"><input name="rvg_odb_optimize_innodb" type="checkbox" value="Y" '.$cb_optimize_innodb.'></td>
182
+ </tr>
183
  <tr>
184
  <td width="50%" align="right"><span class="odb-bold">
185
  '.__('Scheduler',$this->odb_txt_domain).'
229
  </div>
230
  </td>
231
  </tr>
232
+ <script type="text/javascript">schedule_changed();</script>
233
  <tr>
234
  <td align="right" valign="top"><span class="odb-bold">
235
  '.__('Show \'1-click\' link in Admin Bar',$this->odb_txt_domain).'*
241
  '. __('Show an icon in the Admin Menu',$this->odb_txt_domain).'*
242
  </span></td>
243
  <td valign="top"><input name="rvg_odb_adminmenu" type="checkbox" value="Y" '.$cb_adminmenu.'></td>
244
+ </tr>
245
  </table>
246
  <div align="center"><em>* '.__('change will be visible after loading the next page', $this->odb_txt_domain).'</em></div>
247
  <br>
language/rvg-optimize-database-nl_NL.mo CHANGED
Binary file
language/rvg-optimize-database-nl_NL.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Optimize Database after Deleting Revisions v2.8.3\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2015-11-20 17:04+0100\n"
6
- "PO-Revision-Date: 2015-11-20 17:04+0100\n"
7
  "Last-Translator: Rolf van Gelder <info@cagewebdev.com>\n"
8
  "Language-Team: CAGE <info@cagewebdev.com>\n"
9
  "Language: nl_NL\n"
@@ -193,11 +193,11 @@ msgstr "Optimalizatie duurde"
193
  msgid "seconds"
194
  msgstr "seconden"
195
 
196
- #: classes/odb-cleaner.php:514 classes/odb-displayer.php:131
197
  msgid "View Log File"
198
  msgstr "Bekijk Logbestand"
199
 
200
- #: classes/odb-cleaner.php:516 classes/odb-displayer.php:133
201
  msgid "Delete Log File"
202
  msgstr "Verwijder Logbestand"
203
 
@@ -205,7 +205,7 @@ msgstr "Verwijder Logbestand"
205
  msgid "InnoDB table: skipped..."
206
  msgstr "InnoDB tabel overgeslagen..."
207
 
208
- #: classes/odb-cleaner.php:1047
209
  msgid "<span class=\"odb-optimized\">TABLE OPTIMIZED</span>"
210
  msgstr "<span class=\"odb-optimized\">TABEL GEOPTIMALISEERD</span>"
211
 
@@ -221,133 +221,137 @@ msgstr "JA"
221
  msgid "NO"
222
  msgstr "NEE"
223
 
224
- #: classes/odb-displayer.php:40
225
  msgid "EVERY FIVE MINUTES"
226
  msgstr "IEDERE VIJF MINUTEN"
227
 
228
- #: classes/odb-displayer.php:42
229
  msgid "ONCE HOURLY"
230
  msgstr "ELK UUR"
231
 
232
- #: classes/odb-displayer.php:44
233
  msgid "TWICE DAILY"
234
  msgstr "TWEEMAAL DAAGS"
235
 
236
- #: classes/odb-displayer.php:46
237
  msgid "ONCE DAILY"
238
  msgstr "DAGELIJKS"
239
 
240
- #: classes/odb-displayer.php:48
241
  msgid "ONCE WEEKLY"
242
  msgstr "WEKELIJKS"
243
 
244
- #: classes/odb-displayer.php:49 includes/settings-page.php:174
245
  msgid "NOT SCHEDULED"
246
  msgstr "NIET GEPLAND"
247
 
248
- #: classes/odb-displayer.php:54
249
  msgid "Current settings"
250
  msgstr "Huidige instellingen"
251
 
252
- #: classes/odb-displayer.php:57
253
  msgid "Maximum number of - most recent - revisions to keep per post / page"
254
  msgstr ""
255
  "Maximaal aantal (meest recente) revisies die bewaard worden per bericht / "
256
  "pagina"
257
 
258
- #: classes/odb-displayer.php:58 includes/settings-page.php:133
259
  msgid "Delete trashed items"
260
  msgstr "Verwijder trashed items"
261
 
262
- #: classes/odb-displayer.php:59 includes/settings-page.php:139
263
  msgid "Delete spammed items"
264
  msgstr "Verwijder spammed items"
265
 
266
- #: classes/odb-displayer.php:60 includes/settings-page.php:145
267
  msgid "Delete unused tags"
268
  msgstr "Verwijder ongebruikte tags"
269
 
270
- #: classes/odb-displayer.php:61 includes/settings-page.php:151
271
  msgid "Delete expired transients"
272
  msgstr "Verwijder verlopen transiënts"
273
 
274
- #: classes/odb-displayer.php:62 includes/settings-page.php:157
275
  msgid "Delete pingbacks and trackbacks"
276
  msgstr "Verwijder pingback en trackbacks"
277
 
278
- #: classes/odb-displayer.php:63 includes/settings-page.php:163
279
  msgid "Keep a log"
280
  msgstr "Gebruik een logbestand"
281
 
282
- #: classes/odb-displayer.php:64
 
 
 
 
283
  msgid "Last run"
284
  msgstr "Laatste uitvoering"
285
 
286
- #: classes/odb-displayer.php:64 classes/odb-displayer.php:73
287
- #: includes/settings-page.php:204
288
  msgid "hrs"
289
  msgstr "uur"
290
 
291
- #: classes/odb-displayer.php:65
292
  msgid "Number of excluded tables"
293
  msgstr "Aantal uitgesloten tabellen"
294
 
295
- #: classes/odb-displayer.php:66 includes/settings-page.php:170
296
  msgid "Scheduler"
297
  msgstr "Planner"
298
 
299
- #: classes/odb-displayer.php:73
300
  msgid "Next scheduled run"
301
  msgstr "Volgende geplande uitvoering"
302
 
303
- #: classes/odb-displayer.php:73
304
  msgid "current server time"
305
  msgstr "huidige systeemtijd"
306
 
307
- #: classes/odb-displayer.php:78
308
  msgid "Total savings since the first run"
309
  msgstr "Totale besparing sinds de eerste uitvoering"
310
 
311
- #: classes/odb-displayer.php:95
312
  msgid "Optimize Database after Deleting Revisions"
313
  msgstr "Optimize Database after Deleting Revisions"
314
 
315
- #: classes/odb-displayer.php:98
316
  msgid ""
317
  "A popular 'one-click' plugin to clean and optimize your WordPress database."
318
  msgstr ""
319
  "Een populaire 'one-click' plugin om de WordPress database op te schonen en "
320
  "te optimaliseren."
321
 
322
- #: classes/odb-displayer.php:101
323
  msgid "Plugin version"
324
  msgstr "Plugin versie"
325
 
326
- #: classes/odb-displayer.php:102
327
  msgid "Plugin page"
328
  msgstr "Pluginpagina"
329
 
330
- #: classes/odb-displayer.php:103
331
  msgid "Download page"
332
  msgstr "Downloadpagina"
333
 
334
- #: classes/odb-displayer.php:104
335
  msgid "Author"
336
  msgstr "Auteur"
337
 
338
- #: classes/odb-displayer.php:105
339
  msgid "Company"
340
  msgstr "Bedrijf"
341
 
342
- #: classes/odb-displayer.php:106
343
  msgid "Donation page"
344
  msgstr "Donatiepagina"
345
 
346
- #: classes/odb-displayer.php:124
347
  msgid "Change Settings"
348
  msgstr "Wijzig instellingen"
349
 
350
- #: classes/odb-displayer.php:139
351
  msgid "Start Optimization"
352
  msgstr "Start Optimalisatie"
353
 
@@ -409,19 +413,19 @@ msgid "SAVINGS"
409
  msgstr "BESPARINGEN"
410
 
411
  # @ default
412
- #: classes/odb-scheduler.php:34
413
  msgid "Once Weekly"
414
  msgstr "Eenmaal per week"
415
 
416
- #: classes/odb-scheduler.php:39
417
  msgid "Every Five Minutes"
418
- msgstr "Iedere Vijf Minuten"
419
 
420
- #: includes/settings-page.php:82
421
  msgid "Optimize Database after Deleting Revisions SETTINGS UPDATED"
422
  msgstr "Optimize Database after Deleting Revisions INSTELLINGEN AANGEPAST"
423
 
424
- #: includes/settings-page.php:84
425
  msgid ""
426
  "Click <a href=\"tools.php?page=rvg-optimize-database\" class=\"odb-bold"
427
  "\">HERE</a> to run the optimization"
@@ -429,52 +433,56 @@ msgstr ""
429
  "Klik <a href=\"tools.php?page=rvg-optimize-database\" class=\"odb-bold"
430
  "\">HIER</a> om de optimalisatie te starten"
431
 
432
- #: includes/settings-page.php:120 rvg-optimize-db.php:257
433
  msgid "Settings"
434
  msgstr "Instellingen"
435
 
436
- #: includes/settings-page.php:125
437
  msgid "Maximum number of - most recent - revisions<br>to keep per post / page"
438
  msgstr ""
439
  "Maximaal aantal - meest recente - revisies<br>om te bewaren per post/pagina"
440
 
441
- #: includes/settings-page.php:129
442
  msgid "('0' means: delete <u>ALL</u> revisions)"
443
  msgstr "('0' betekent: verwijder <u>ALLE</u> revisies)"
444
 
445
- #: includes/settings-page.php:177
 
 
 
 
446
  msgid "run optimization HOURLY"
447
  msgstr "voer de optimalisatie ELK UUR uit"
448
 
449
- #: includes/settings-page.php:180
450
  msgid "run optimization TWICE A DAY"
451
  msgstr "voer de optimalisatie TWEE KEER PER DAG uit"
452
 
453
- #: includes/settings-page.php:183
454
  msgid "run optimization DAILY"
455
  msgstr "voer de optimalisatie DAGELIJKS uit"
456
 
457
- #: includes/settings-page.php:186
458
  msgid "run optimization WEEKLY"
459
  msgstr "voer de optimalisatie WEKELIJKS uit"
460
 
461
- #: includes/settings-page.php:195
462
  msgid "Time"
463
  msgstr "Tijd"
464
 
465
- #: includes/settings-page.php:220
466
  msgid "Show '1-click' link in Admin Bar"
467
  msgstr "Toon de '1-klik' link in de Admin Balk"
468
 
469
- #: includes/settings-page.php:226
470
  msgid "Show an icon in the Admin Menu"
471
  msgstr "Toon een icon in het Admin Menu"
472
 
473
- #: includes/settings-page.php:231
474
  msgid "change will be visible after loading the next page"
475
  msgstr "wijziging wordt pas zichtbaar na het laden van de volgende pagina"
476
 
477
- #: includes/settings-page.php:235
478
  msgid ""
479
  "EXCLUDE DATABASE TABLES FROM OPTIMIZATION:<br><span class=\"odb-underline-red"
480
  "\">CHECKED</span> TABLES <span class=\"odb-underline-red\">WON'T</span> BE "
@@ -484,39 +492,40 @@ msgstr ""
484
  "underline-red\">AANGEVINKTE</span> TABELLEN ZULLEN <span class=\"odb-"
485
  "underline-red\">NIET</span> GEOPTIMALISEERD WORDEN!</span>"
486
 
487
- #: includes/settings-page.php:241
488
  msgid "check all tables"
489
  msgstr "vink alle tabellen aan"
490
 
491
- #: includes/settings-page.php:243
492
  msgid "uncheck all tables"
493
  msgstr "vink alle tabellen uit"
494
 
495
- #: includes/settings-page.php:245
496
  msgid "check all NON-WordPress tables"
497
  msgstr "vink alle NIET-WordPress tabellen aan"
498
 
499
- #: includes/settings-page.php:272
500
  msgid "Save Settings"
501
  msgstr "Bewaar instellingen"
502
 
503
- #: includes/settings-page.php:274
504
  msgid "Go To Optimizer"
505
  msgstr "Ga naar Optimalisatie"
506
 
507
  # @ rvg-optimize-database
508
- #: rvg-optimize-db.php:229 rvg-optimize-db.php:230 rvg-optimize-db.php:244
509
- #: rvg-optimize-db.php:245 rvg-optimize-db.php:286 rvg-optimize-db.php:287
510
- #: rvg-optimize-db.php:305 rvg-optimize-db.php:306
 
511
  msgid "Optimize Database"
512
  msgstr "Optimaliseer Database"
513
 
514
  # @ optimize_db
515
- #: rvg-optimize-db.php:273
516
  msgid "Optimize DB (1 click)"
517
  msgstr "Optimaliseer DB (1 klik)"
518
 
519
- #: rvg-optimize-db.php:451
520
  msgid "Optimize Database after Deleting Revisions LOG FILE HAS BEEN DELETED"
521
  msgstr "Optimize Database after Deleting Revisions LOGBESTAND VERWIJDERD"
522
 
2
  msgstr ""
3
  "Project-Id-Version: Optimize Database after Deleting Revisions v2.8.3\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2015-11-25 18:44+0100\n"
6
+ "PO-Revision-Date: 2015-11-25 18:45+0100\n"
7
  "Last-Translator: Rolf van Gelder <info@cagewebdev.com>\n"
8
  "Language-Team: CAGE <info@cagewebdev.com>\n"
9
  "Language: nl_NL\n"
193
  msgid "seconds"
194
  msgstr "seconden"
195
 
196
+ #: classes/odb-cleaner.php:514 classes/odb-displayer.php:133
197
  msgid "View Log File"
198
  msgstr "Bekijk Logbestand"
199
 
200
+ #: classes/odb-cleaner.php:516 classes/odb-displayer.php:135
201
  msgid "Delete Log File"
202
  msgstr "Verwijder Logbestand"
203
 
205
  msgid "InnoDB table: skipped..."
206
  msgstr "InnoDB tabel overgeslagen..."
207
 
208
+ #: classes/odb-cleaner.php:1047 classes/odb-cleaner.php:1049
209
  msgid "<span class=\"odb-optimized\">TABLE OPTIMIZED</span>"
210
  msgstr "<span class=\"odb-optimized\">TABEL GEOPTIMALISEERD</span>"
211
 
221
  msgid "NO"
222
  msgstr "NEE"
223
 
224
+ #: classes/odb-displayer.php:41
225
  msgid "EVERY FIVE MINUTES"
226
  msgstr "IEDERE VIJF MINUTEN"
227
 
228
+ #: classes/odb-displayer.php:43
229
  msgid "ONCE HOURLY"
230
  msgstr "ELK UUR"
231
 
232
+ #: classes/odb-displayer.php:45
233
  msgid "TWICE DAILY"
234
  msgstr "TWEEMAAL DAAGS"
235
 
236
+ #: classes/odb-displayer.php:47
237
  msgid "ONCE DAILY"
238
  msgstr "DAGELIJKS"
239
 
240
+ #: classes/odb-displayer.php:49
241
  msgid "ONCE WEEKLY"
242
  msgstr "WEKELIJKS"
243
 
244
+ #: classes/odb-displayer.php:50 includes/settings-page.php:189
245
  msgid "NOT SCHEDULED"
246
  msgstr "NIET GEPLAND"
247
 
248
+ #: classes/odb-displayer.php:55
249
  msgid "Current settings"
250
  msgstr "Huidige instellingen"
251
 
252
+ #: classes/odb-displayer.php:58
253
  msgid "Maximum number of - most recent - revisions to keep per post / page"
254
  msgstr ""
255
  "Maximaal aantal (meest recente) revisies die bewaard worden per bericht / "
256
  "pagina"
257
 
258
+ #: classes/odb-displayer.php:59 includes/settings-page.php:143
259
  msgid "Delete trashed items"
260
  msgstr "Verwijder trashed items"
261
 
262
+ #: classes/odb-displayer.php:60 includes/settings-page.php:149
263
  msgid "Delete spammed items"
264
  msgstr "Verwijder spammed items"
265
 
266
+ #: classes/odb-displayer.php:61 includes/settings-page.php:155
267
  msgid "Delete unused tags"
268
  msgstr "Verwijder ongebruikte tags"
269
 
270
+ #: classes/odb-displayer.php:62 includes/settings-page.php:161
271
  msgid "Delete expired transients"
272
  msgstr "Verwijder verlopen transiënts"
273
 
274
+ #: classes/odb-displayer.php:63 includes/settings-page.php:167
275
  msgid "Delete pingbacks and trackbacks"
276
  msgstr "Verwijder pingback en trackbacks"
277
 
278
+ #: classes/odb-displayer.php:64 includes/settings-page.php:173
279
  msgid "Keep a log"
280
  msgstr "Gebruik een logbestand"
281
 
282
+ #: classes/odb-displayer.php:65
283
+ msgid "Optimize InnoDB tables"
284
+ msgstr "Optimaliseer InnoDB tabellen"
285
+
286
+ #: classes/odb-displayer.php:66
287
  msgid "Last run"
288
  msgstr "Laatste uitvoering"
289
 
290
+ #: classes/odb-displayer.php:66 classes/odb-displayer.php:75
291
+ #: includes/settings-page.php:219
292
  msgid "hrs"
293
  msgstr "uur"
294
 
295
+ #: classes/odb-displayer.php:67
296
  msgid "Number of excluded tables"
297
  msgstr "Aantal uitgesloten tabellen"
298
 
299
+ #: classes/odb-displayer.php:68 includes/settings-page.php:185
300
  msgid "Scheduler"
301
  msgstr "Planner"
302
 
303
+ #: classes/odb-displayer.php:75
304
  msgid "Next scheduled run"
305
  msgstr "Volgende geplande uitvoering"
306
 
307
+ #: classes/odb-displayer.php:75
308
  msgid "current server time"
309
  msgstr "huidige systeemtijd"
310
 
311
+ #: classes/odb-displayer.php:80
312
  msgid "Total savings since the first run"
313
  msgstr "Totale besparing sinds de eerste uitvoering"
314
 
315
+ #: classes/odb-displayer.php:97
316
  msgid "Optimize Database after Deleting Revisions"
317
  msgstr "Optimize Database after Deleting Revisions"
318
 
319
+ #: classes/odb-displayer.php:100
320
  msgid ""
321
  "A popular 'one-click' plugin to clean and optimize your WordPress database."
322
  msgstr ""
323
  "Een populaire 'one-click' plugin om de WordPress database op te schonen en "
324
  "te optimaliseren."
325
 
326
+ #: classes/odb-displayer.php:103
327
  msgid "Plugin version"
328
  msgstr "Plugin versie"
329
 
330
+ #: classes/odb-displayer.php:104
331
  msgid "Plugin page"
332
  msgstr "Pluginpagina"
333
 
334
+ #: classes/odb-displayer.php:105
335
  msgid "Download page"
336
  msgstr "Downloadpagina"
337
 
338
+ #: classes/odb-displayer.php:106
339
  msgid "Author"
340
  msgstr "Auteur"
341
 
342
+ #: classes/odb-displayer.php:107
343
  msgid "Company"
344
  msgstr "Bedrijf"
345
 
346
+ #: classes/odb-displayer.php:108
347
  msgid "Donation page"
348
  msgstr "Donatiepagina"
349
 
350
+ #: classes/odb-displayer.php:126
351
  msgid "Change Settings"
352
  msgstr "Wijzig instellingen"
353
 
354
+ #: classes/odb-displayer.php:141
355
  msgid "Start Optimization"
356
  msgstr "Start Optimalisatie"
357
 
413
  msgstr "BESPARINGEN"
414
 
415
  # @ default
416
+ #: classes/odb-scheduler.php:38
417
  msgid "Once Weekly"
418
  msgstr "Eenmaal per week"
419
 
420
+ #: classes/odb-scheduler.php:43
421
  msgid "Every Five Minutes"
422
+ msgstr "Iedere vijf minuten"
423
 
424
+ #: includes/settings-page.php:91
425
  msgid "Optimize Database after Deleting Revisions SETTINGS UPDATED"
426
  msgstr "Optimize Database after Deleting Revisions INSTELLINGEN AANGEPAST"
427
 
428
+ #: includes/settings-page.php:93
429
  msgid ""
430
  "Click <a href=\"tools.php?page=rvg-optimize-database\" class=\"odb-bold"
431
  "\">HERE</a> to run the optimization"
433
  "Klik <a href=\"tools.php?page=rvg-optimize-database\" class=\"odb-bold"
434
  "\">HIER</a> om de optimalisatie te starten"
435
 
436
+ #: includes/settings-page.php:130 rvg-optimize-database.php:375
437
  msgid "Settings"
438
  msgstr "Instellingen"
439
 
440
+ #: includes/settings-page.php:135
441
  msgid "Maximum number of - most recent - revisions<br>to keep per post / page"
442
  msgstr ""
443
  "Maximaal aantal - meest recente - revisies<br>om te bewaren per post/pagina"
444
 
445
+ #: includes/settings-page.php:139
446
  msgid "('0' means: delete <u>ALL</u> revisions)"
447
  msgstr "('0' betekent: verwijder <u>ALLE</u> revisies)"
448
 
449
+ #: includes/settings-page.php:179
450
+ msgid "Optimize InnoDB tables too"
451
+ msgstr "Optimiliseer ook InnoDB tabellen"
452
+
453
+ #: includes/settings-page.php:192
454
  msgid "run optimization HOURLY"
455
  msgstr "voer de optimalisatie ELK UUR uit"
456
 
457
+ #: includes/settings-page.php:195
458
  msgid "run optimization TWICE A DAY"
459
  msgstr "voer de optimalisatie TWEE KEER PER DAG uit"
460
 
461
+ #: includes/settings-page.php:198
462
  msgid "run optimization DAILY"
463
  msgstr "voer de optimalisatie DAGELIJKS uit"
464
 
465
+ #: includes/settings-page.php:201
466
  msgid "run optimization WEEKLY"
467
  msgstr "voer de optimalisatie WEKELIJKS uit"
468
 
469
+ #: includes/settings-page.php:210
470
  msgid "Time"
471
  msgstr "Tijd"
472
 
473
+ #: includes/settings-page.php:235
474
  msgid "Show '1-click' link in Admin Bar"
475
  msgstr "Toon de '1-klik' link in de Admin Balk"
476
 
477
+ #: includes/settings-page.php:241
478
  msgid "Show an icon in the Admin Menu"
479
  msgstr "Toon een icon in het Admin Menu"
480
 
481
+ #: includes/settings-page.php:246
482
  msgid "change will be visible after loading the next page"
483
  msgstr "wijziging wordt pas zichtbaar na het laden van de volgende pagina"
484
 
485
+ #: includes/settings-page.php:250
486
  msgid ""
487
  "EXCLUDE DATABASE TABLES FROM OPTIMIZATION:<br><span class=\"odb-underline-red"
488
  "\">CHECKED</span> TABLES <span class=\"odb-underline-red\">WON'T</span> BE "
492
  "underline-red\">AANGEVINKTE</span> TABELLEN ZULLEN <span class=\"odb-"
493
  "underline-red\">NIET</span> GEOPTIMALISEERD WORDEN!</span>"
494
 
495
+ #: includes/settings-page.php:256
496
  msgid "check all tables"
497
  msgstr "vink alle tabellen aan"
498
 
499
+ #: includes/settings-page.php:258
500
  msgid "uncheck all tables"
501
  msgstr "vink alle tabellen uit"
502
 
503
+ #: includes/settings-page.php:260
504
  msgid "check all NON-WordPress tables"
505
  msgstr "vink alle NIET-WordPress tabellen aan"
506
 
507
+ #: includes/settings-page.php:287
508
  msgid "Save Settings"
509
  msgstr "Bewaar instellingen"
510
 
511
+ #: includes/settings-page.php:289
512
  msgid "Go To Optimizer"
513
  msgstr "Ga naar Optimalisatie"
514
 
515
  # @ rvg-optimize-database
516
+ #: rvg-optimize-database.php:347 rvg-optimize-database.php:348
517
+ #: rvg-optimize-database.php:362 rvg-optimize-database.php:363
518
+ #: rvg-optimize-database.php:405 rvg-optimize-database.php:406
519
+ #: rvg-optimize-database.php:424 rvg-optimize-database.php:425
520
  msgid "Optimize Database"
521
  msgstr "Optimaliseer Database"
522
 
523
  # @ optimize_db
524
+ #: rvg-optimize-database.php:392
525
  msgid "Optimize DB (1 click)"
526
  msgstr "Optimaliseer DB (1 klik)"
527
 
528
+ #: rvg-optimize-database.php:517
529
  msgid "Optimize Database after Deleting Revisions LOG FILE HAS BEEN DELETED"
530
  msgstr "Optimize Database after Deleting Revisions LOGBESTAND VERWIJDERD"
531
 
readme.txt CHANGED
@@ -8,8 +8,8 @@ Author URI: http://cagewebdev.com
8
  Author: CAGE Web Design | Rolf van Gelder, Eindhoven, The Netherlands
9
  Requires at least: 2.8
10
  Tested up to: 4.4
11
- Stable tag: 4.0
12
- Version: 4.0
13
  License: GPLv2 or later
14
 
15
  == Description ==
@@ -86,6 +86,11 @@ http://cagewebdev.com/index.php/wordpress-plugins/
86
  * If you run the plugin from any of the sites, it will cleanup ALL the sites in the network!
87
 
88
  == Changelog ==
 
 
 
 
 
89
  = 4.0 [11/22/2015] =
90
  * NEW: Total rewrite of the code (OO code)
91
  * CHANGE: Many changes and bug fixes
@@ -348,6 +353,7 @@ http://cagewebdev.com/index.php/wordpress-plugins/
348
 
349
  = Why do I see 'InnoDB table: skipped...'? =
350
  * That's because optimizing InnoDB tables is not really efficient, so change the table type to MyISAM to have them being optimized.
 
351
 
352
  = I scheduled the optimization for 8pm but it runs at 6pm (my local time) =
353
  * The scheduler uses the local time of the web server which can differ from your own local time
8
  Author: CAGE Web Design | Rolf van Gelder, Eindhoven, The Netherlands
9
  Requires at least: 2.8
10
  Tested up to: 4.4
11
+ Stable tag: 4.0.1
12
+ Version: 4.0.1
13
  License: GPLv2 or later
14
 
15
  == Description ==
86
  * If you run the plugin from any of the sites, it will cleanup ALL the sites in the network!
87
 
88
  == Changelog ==
89
+ = 4.0.1 [11/27/2015] =
90
+ * NEW: New option: optimize InnoDB tables too
91
+ * BUG FIX: Localization fixed for extra cron schedules
92
+ * BUG FIX: De-activation issue on update fixed
93
+
94
  = 4.0 [11/22/2015] =
95
  * NEW: Total rewrite of the code (OO code)
96
  * CHANGE: Many changes and bug fixes
353
 
354
  = Why do I see 'InnoDB table: skipped...'? =
355
  * That's because optimizing InnoDB tables is not really efficient, so change the table type to MyISAM to have them being optimized.
356
+ * Update: if you want to optimize your InnoDB tables too, just check the 'Optimize InnoDB tables too' option on the settings page
357
 
358
  = I scheduled the optimization for 8pm but it runs at 6pm (my local time) =
359
  * The scheduler uses the local time of the web server which can differ from your own local time
rvg-optimize-database.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * @package Optimize Database after Deleting Revisions
4
- * @version 4.0
5
  */
6
  /*
7
  Plugin Name: Optimize Database after Deleting Revisions
@@ -9,7 +9,7 @@ Plugin URI: http://cagewebdev.com/index.php/optimize-database-after-deleting-rev
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
13
  */
14
 
15
  /********************************************************************************************
@@ -24,8 +24,8 @@ $odb_class = new OptimizeDatabase();
24
  class OptimizeDatabase
25
  {
26
  // VERSION
27
- var $odb_version = '4.0';
28
- var $odb_release_date = '11/22/2015';
29
 
30
  // PLUGIN OPTIONS
31
  var $odb_rvg_options = array();
@@ -43,6 +43,9 @@ class OptimizeDatabase
43
  // MINIFYING?
44
  var $odb_minify;
45
 
 
 
 
46
  // LOCALIZATION
47
  var $odb_txt_domain = 'rvg-optimize-database';
48
 
@@ -184,6 +187,8 @@ class OptimizeDatabase
184
  $this->odb_rvg_options['logging_on'] = 'N';
185
  if(!isset($this->odb_rvg_options['nr_of_revisions']))
186
  $this->odb_rvg_options['nr_of_revisions'] = (int)0;
 
 
187
  if(!isset($this->odb_rvg_options['schedule_type']))
188
  $this->odb_rvg_options['schedule_type'] = '';
189
  if(!isset($this->odb_rvg_options['schedule_hour']))
1
  <?php
2
  /**
3
  * @package Optimize Database after Deleting Revisions
4
+ * @version 4.0.1
5
  */
6
  /*
7
  Plugin Name: Optimize Database after Deleting Revisions
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
13
  */
14
 
15
  /********************************************************************************************
24
  class OptimizeDatabase
25
  {
26
  // VERSION
27
+ var $odb_version = '4.0.1';
28
+ var $odb_release_date = '11/27/2015';
29
 
30
  // PLUGIN OPTIONS
31
  var $odb_rvg_options = array();
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
 
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']))
rvg-optimize-db.php ADDED
@@ -0,0 +1,2164 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /********************************************************************************************
3
+ *
4
+ * THIS FILE IS JUST HERE TO FIX THE RE-ACTIVATION ISSUE AFTER UPDATE
5
+ *
6
+ ********************************************************************************************/
7
+ $odb_version = '3.5.1';
8
+ $odb_release_date = '11/01/2015';
9
+
10
+ // v3.3 - MULTISITE
11
+ $odb_ms_prefixes = array();
12
+ $odb_ms_blogids = array();
13
+
14
+
15
+ /********************************************************************************************
16
+ *
17
+ * ADD THE LANGUAGE SUPPORT (LOCALIZATION)
18
+ *
19
+ * Since: v2.9
20
+ *
21
+ ********************************************************************************************/
22
+ function rvg_odb_action_init()
23
+ {
24
+ // TEXT DOMAIN v3.1.1: language files moved to the '/language' directory
25
+ load_plugin_textdomain('rvg-optimize-database', false, dirname(plugin_basename(__FILE__)).'/language');
26
+ }
27
+ // INIT HOOK
28
+ add_action('init', 'rvg_odb_action_init');
29
+
30
+
31
+ /********************************************************************************************
32
+ *
33
+ * ADD THE 'OPTIMIZE DATABASE' ITEM TO THE TOOLS MENU
34
+ *
35
+ ********************************************************************************************/
36
+ function optimize_db_main()
37
+ { if (function_exists('add_management_page'))
38
+ { add_management_page(
39
+ __('Optimize Database','rvg-optimize-database'),
40
+ __('Optimize Database','rvg-optimize-database'),
41
+ 'administrator',
42
+ 'rvg-optimize-db.php',
43
+ 'rvg_optimize_db');
44
+ }
45
+ }
46
+ if(rvg_odb_get_option('rvg_odb_adminmenu') != "Y") add_action('admin_menu', 'optimize_db_main');
47
+
48
+
49
+ /********************************************************************************************
50
+ *
51
+ * 'ICON MODE': ADD A LINK TO THE ADMIN MENU
52
+ *
53
+ * Since: v3.1.1
54
+ *
55
+ ********************************************************************************************/
56
+ function rvg_add_menu_page()
57
+ {
58
+ if (function_exists('add_menu_page'))
59
+ {
60
+ add_menu_page(
61
+ __('Optimize Database','rvg-optimize-database'),
62
+ __('Optimize Database','rvg-optimize-database'),
63
+ 'administrator',
64
+ 'rvg-optimize-db.php',
65
+ 'rvg_optimize_db',
66
+ plugins_url('rvg-optimize-database/images/icon.png')
67
+ );
68
+ }
69
+ } // rvg_add_menu_page()
70
+ if(rvg_odb_get_option('rvg_odb_adminmenu') == "Y") add_action('admin_menu', 'rvg_add_menu_page');
71
+
72
+
73
+ /********************************************************************************************
74
+ *
75
+ * ADD THE 'OPTIMIZE DB SETTINGS' ITEM TO THE SETTINGS MENU (v3.1.3)
76
+ *
77
+ ********************************************************************************************/
78
+ function rvg_odb_admin_menu()
79
+ {
80
+ if (function_exists('add_options_page'))
81
+ { add_options_page(
82
+ __('Optimize Database', 'rvg-optimize-database'),
83
+ __('Optimize Database', 'rvg-optimize-database'),
84
+ 'manage_options',
85
+ 'rvg_odb_admin',
86
+ 'rvg_odb_settings_page');
87
+ }
88
+ } // rvg_odb_admin_menu()
89
+ if(rvg_odb_get_option('rvg_odb_adminmenu') != "Y") add_action('admin_menu', 'rvg_odb_admin_menu');
90
+
91
+
92
+ /********************************************************************************************
93
+ *
94
+ * 'ICON MODE': REGISTER OPTION PAGE BUT HIDE IT FROM THE ADMIN MENU (v3.1.3)
95
+ *
96
+ ********************************************************************************************/
97
+ function register_odb_options()
98
+ {
99
+ if (function_exists('add_submenu_page'))
100
+ { add_submenu_page(
101
+ null, // HIDE FROM MENU!
102
+ __('Optimize Database', 'rvg-optimize-database'),
103
+ __('Optimize Database', 'rvg-optimize-database'),
104
+ 'manage_options',
105
+ 'rvg_odb_admin',
106
+ 'rvg_odb_settings_page'
107
+ );
108
+ }
109
+ } // register_odb_options()
110
+ if(rvg_odb_get_option('rvg_odb_adminmenu') == "Y") add_action('admin_menu', 'register_odb_options');
111
+
112
+
113
+ /********************************************************************************************
114
+ *
115
+ * SHOW A LINK TO THE PLUGIN SETTINGS ON THE MAIN PLUGINS PAGE
116
+ *
117
+ * Since: v3.1
118
+ *
119
+ ********************************************************************************************/
120
+ function odb_settings_link($links)
121
+ {
122
+ array_unshift($links, '<a href="options-general.php?page=rvg_odb_admin">Settings</a>');
123
+ return $links;
124
+ } // odb_settings_link()
125
+ add_filter('plugin_action_links_'.plugin_basename(__FILE__), 'odb_settings_link');
126
+
127
+
128
+ /********************************************************************************************
129
+ *
130
+ * ADD THE '1 CLICK OPTIMIZE DATABASE' ITEM TO THE ADMIN BAR (IF ACTIVATED)
131
+ *
132
+ ********************************************************************************************/
133
+ function rvg_odb_admin_bar()
134
+ { global $wp_admin_bar;
135
+ if (!is_super_admin() || !is_admin_bar_showing()) return;
136
+
137
+ $siteurl = site_url('/');
138
+ $wp_admin_bar->add_menu(
139
+ array(
140
+ 'id' => 'optimize',
141
+ 'title' => __('Optimize DB (1 click)','rvg-optimize-database'),
142
+ 'href' => $siteurl.'wp-admin/tools.php?page=rvg-optimize-db.php&action=run' ));
143
+ } // rvg_odb_admin_bar()
144
+ $rvg_odb_adminbar = rvg_odb_get_option('rvg_odb_adminbar');
145
+ if($rvg_odb_adminbar == "Y") add_action('wp_before_admin_bar_render', 'rvg_odb_admin_bar');
146
+
147
+
148
+ /********************************************************************************************
149
+ *
150
+ * ACTIONS FOR THE SCHEDULER
151
+ *
152
+ * http://codex.wordpress.org/Plugin_API/Filter_Reference/cron_schedules
153
+ *
154
+ ********************************************************************************************/
155
+ function rvg_extra_schedules($schedules)
156
+ { // ADD A WEEKLY SCHEDULE
157
+ $schedules['weekly'] = array(
158
+ 'interval' => 604800,
159
+ 'display' => __('Once Weekly')
160
+ );
161
+ return $schedules;
162
+ } // rvg_extra_schedules()
163
+ add_filter( 'cron_schedules', 'rvg_extra_schedules' );
164
+
165
+ add_action( 'rvg_optimize_database', 'rvg_optimize_db_cron' );
166
+
167
+ // REMOVE SCHEDULED TASK WHEN DEACTIVATED
168
+ register_deactivation_hook( __FILE__, 'rvg_deactivate_plugin' );
169
+ function rvg_deactivate_plugin()
170
+ { // CLEAR CURRENT SCHEDULE (IF ANY)
171
+ wp_clear_scheduled_hook('rvg_optimize_database');
172
+ wp_clear_scheduled_hook('rvg_scheduled_run');
173
+ } // rvg_deactivate_plugin()
174
+
175
+ // RE-SCHEDULE TASK WHEN RE-ACTIVATED (OR AFTER UPDATE)
176
+ register_activation_hook( __FILE__, 'rvg_activate_plugin' );
177
+ function rvg_activate_plugin()
178
+ { $rvg_odb_schedule = rvg_odb_get_option('rvg_odb_schedule');
179
+ if($rvg_odb_schedule)
180
+ { // PLUGIN RE-ACTIVATED: START SCHEDULER
181
+ if( !wp_next_scheduled( 'rvg_optimize_database' ))
182
+ wp_schedule_event( time(), $rvg_odb_schedule, 'rvg_optimize_database' );
183
+ }
184
+ } // rvg_activate_plugin()
185
+
186
+ register_uninstall_hook( __FILE__, 'rvg_odb_uninstall');
187
+ function rvg_odb_uninstall()
188
+ {
189
+ global $wpdb, $odb_ms_prefixes;
190
+
191
+ $tables = $wpdb->get_results("SHOW FULL TABLES FROM `".DB_NAME."` WHERE table_type = 'BASE TABLE'", ARRAY_N);
192
+
193
+ // DELETE ALL POSSIBLY EXCLUDED TABLES FROM THE OPTIONS
194
+ for ($i=0; $i<count($tables); $i++) rvg_odb_delete_option('rvg_ex_'.$tables[$i][0].'');
195
+
196
+ // DELETE THE OTHER OPTIONS
197
+ rvg_odb_delete_option('rvg_clear_pingbacks');
198
+ rvg_odb_delete_option('rvg_clear_spam');
199
+ rvg_odb_delete_option('rvg_clear_tags');
200
+ rvg_odb_delete_option('rvg_clear_transients');
201
+ rvg_odb_delete_option('rvg_clear_trash');
202
+ rvg_odb_delete_option('rvg_odb_adminbar');
203
+ rvg_odb_delete_option('rvg_odb_adminmenu');
204
+ rvg_odb_delete_option('rvg_odb_logging_on');
205
+ rvg_odb_delete_option('rvg_odb_number');
206
+ rvg_odb_delete_option('rvg_odb_schedule');
207
+ rvg_odb_delete_option('rvg_odb_schedulehour');
208
+ rvg_odb_delete_option('rvg_odb_total_savings');
209
+ } // rvg_odb_uninstall()
210
+
211
+
212
+ /********************************************************************************************
213
+ *
214
+ * GET NETWORK INFORMATION (MULTISITE)
215
+ *
216
+ * Since: v3.3
217
+ *
218
+ ********************************************************************************************/
219
+ function rvg_odb_network_info()
220
+ {
221
+ global $wpdb, $odb_ms_prefixes, $odb_ms_blogids;
222
+
223
+ // v3.2 - GET MULTISITE INFORMATION
224
+ $odb_ms_prefixes[0] = $wpdb->base_prefix;
225
+ $odb_ms_blogids[0] = 1;
226
+ if (function_exists('is_multisite') && is_multisite())
227
+ { $odb_blogids = $wpdb->get_col("SELECT blog_id FROM ".$wpdb->base_prefix."blogs");
228
+ // FOR INSTANCE: mywp_2_, mywp_3_ etc.
229
+ for($i=1; $i<count($odb_blogids); $i++)
230
+ { $odb_ms_prefixes[$i] = $wpdb->base_prefix.$odb_blogids[$i].'_';
231
+ $odb_ms_blogids[$i] = $odb_blogids[$i];
232
+ }
233
+ } // if (function_exists('is_multisite') && is_multisite())
234
+ } // rvg_odb_network_info()
235
+
236
+
237
+ /********************************************************************************************
238
+ *
239
+ * GET AN OPTION FROM THE ROOT SITE OPTION TABLE
240
+ *
241
+ * Revision: v3.4.2
242
+ *
243
+ ********************************************************************************************/
244
+ function rvg_odb_get_option($option, $default = false)
245
+ {
246
+ if(is_multisite() &&
247
+ function_exists('is_plugin_active_for_network') &&
248
+ is_plugin_active_for_network('rvg-optimize-db/rvg-optimize-db.php'))
249
+ {
250
+ return get_site_option($option, $default);
251
+ } else
252
+ {
253
+ return get_option($option, $default);
254
+ }
255
+ } // rvg_odb_get_option()
256
+
257
+
258
+ /********************************************************************************************
259
+ *
260
+ * SAVE AN OPTION TO THE ROOT SITE OPTION TABLE
261
+ *
262
+ * Revision: v3.4.2
263
+ *
264
+ ********************************************************************************************/
265
+ function rvg_odb_update_option($option, $value)
266
+ {
267
+ if(is_multisite() &&
268
+ function_exists('is_plugin_active_for_network') &&
269
+ is_plugin_active_for_network('rvg-optimize-db/rvg-optimize-db.php'))
270
+ {
271
+ return update_site_option( $option, $value);
272
+ } else
273
+ {
274
+ return update_option( $option, $value);
275
+ }
276
+ } // rvg_odb_update_option()
277
+
278
+
279
+ /********************************************************************************************
280
+ *
281
+ * DELETE AN OPTION TO THE ROOT SITE OPTION TABLE
282
+ *
283
+ * Since: v3.4.2
284
+ *
285
+ ********************************************************************************************/
286
+ function rvg_odb_delete_option($option)
287
+ {
288
+ if(is_multisite() && function_exists('is_plugin_active_for_network') &&
289
+ is_plugin_active_for_network('rvg-optimize-db/rvg-optimize-db.php'))
290
+ {
291
+ return delete_site_option($option);
292
+ } else
293
+ {
294
+ return delete_option($option);
295
+ }
296
+ } // rvg_odb_delete_option()
297
+
298
+
299
+ /********************************************************************************************
300
+ *
301
+ * CREATE THE SETTINGS PAGE
302
+ *
303
+ ********************************************************************************************/
304
+ function rvg_odb_settings_page()
305
+ {
306
+ global $odb_version, $odb_release_date, $wpdb, $table_prefix, $odb_ms_prefixes;
307
+
308
+ // v3.5.1 - SKIP VIEWS
309
+ $tables = $wpdb->get_results("SHOW FULL TABLES FROM `".DB_NAME."` WHERE table_type = 'BASE TABLE'", ARRAY_N);
310
+
311
+ // v3.3 - GET NETWORK INFORMATION (MULTISITE)
312
+ rvg_odb_network_info();
313
+
314
+ // v3.3 - GET THE OPTIONS FROM THE TABLES OF THE MAIN SITE (IN CASE OF MULTISITE)
315
+ $current_datetime = Date('YmdHis');
316
+ $current_date = substr($current_datetime, 0, 8);
317
+ $current_hour = substr($current_datetime, 8, 2);
318
+
319
+ if(isset($_REQUEST['delete_log']))
320
+ if($_REQUEST['delete_log'] == "Y") @unlink(dirname(__FILE__).'/rvg-optimize-db-log.html');
321
+
322
+ // SAVE THE SETTINGS
323
+ if (isset($_POST['info_update']))
324
+ {
325
+ // v2.8.3
326
+ check_admin_referer('odb_action', 'odb_nonce');
327
+
328
+ // DELETE ALL EXCLUDED TABLES
329
+ for ($i=0; $i<count($tables); $i++)
330
+ rvg_odb_delete_option('rvg_ex_'.$tables[$i][0].'');
331
+
332
+ // ADD EXCLUDED TABLES
333
+ foreach ($_POST as $key => $value)
334
+ { if(substr($key,0,3) == 'cb_')
335
+ rvg_odb_update_option('rvg_ex_'.substr($key,3).'', 'excluded');
336
+ }
337
+
338
+ if(isset($_POST['rvg_odb_number']))
339
+ { $rvg_odb_number = trim($_POST['rvg_odb_number']);
340
+ rvg_odb_update_option('rvg_odb_number', $rvg_odb_number);
341
+ }
342
+
343
+ $rvg_clear_trash = 'N';
344
+ if(isset($_POST['rvg_clear_trash']))
345
+ $rvg_clear_trash = $_POST['rvg_clear_trash'];
346
+ rvg_odb_update_option('rvg_clear_trash', $rvg_clear_trash);
347
+
348
+ $rvg_clear_spam = 'N';
349
+ if(isset($_POST['rvg_clear_spam']))
350
+ $rvg_clear_spam = $_POST['rvg_clear_spam'];
351
+ rvg_odb_update_option('rvg_clear_spam', $rvg_clear_spam);
352
+
353
+ $rvg_clear_tags = 'N';
354
+ if(isset($_POST['rvg_clear_tags']))
355
+ $rvg_clear_tags = $_POST['rvg_clear_tags'];
356
+ rvg_odb_update_option('rvg_clear_tags', $rvg_clear_tags);
357
+
358
+ $rvg_clear_transients = 'N';
359
+ if(isset($_POST['rvg_clear_transients']))
360
+ $rvg_clear_transients = $_POST['rvg_clear_transients'];
361
+ rvg_odb_update_option('rvg_clear_transients', $rvg_clear_transients);
362
+
363
+ // v3.1
364
+ $rvg_clear_pingbacks = 'N';
365
+ if(isset($_POST['rvg_clear_pingbacks']))
366
+ $rvg_clear_pingbacks = $_POST['rvg_clear_pingbacks'];
367
+ rvg_odb_update_option('rvg_clear_pingbacks', $rvg_clear_pingbacks);
368
+
369
+ $rvg_odb_adminbar = 'N';
370
+ if(isset($_POST['rvg_odb_adminbar']))
371
+ $rvg_odb_adminbar = $_POST['rvg_odb_adminbar'];
372
+ rvg_odb_update_option('rvg_odb_adminbar', $rvg_odb_adminbar);
373
+
374
+ // v3.1.3
375
+ $rvg_odb_adminmenu = 'N';
376
+ if(isset($_POST['rvg_odb_adminmenu']))
377
+ $rvg_odb_adminmenu = $_POST['rvg_odb_adminmenu'];
378
+ rvg_odb_update_option('rvg_odb_adminmenu', $rvg_odb_adminmenu);
379
+
380
+ $rvg_odb_logging_on = 'N';
381
+ if(isset($_POST['rvg_odb_logging_on']))
382
+ $rvg_odb_logging_on = $_POST['rvg_odb_logging_on'];
383
+ rvg_odb_update_option('rvg_odb_logging_on', $rvg_odb_logging_on);
384
+
385
+ $rvg_odb_schedule = '';
386
+ if(isset($_POST['rvg_odb_schedule']))
387
+ $rvg_odb_schedule = $_POST['rvg_odb_schedule'];
388
+ rvg_odb_update_option('rvg_odb_schedule', $rvg_odb_schedule);
389
+
390
+ $rvg_odb_schedulehour = '';
391
+ // v3.3.1
392
+ if($rvg_odb_schedule == 'daily' || $rvg_odb_schedule == 'weekly')
393
+ {
394
+ if(isset($_POST['rvg_odb_schedulehour']))
395
+ $rvg_odb_schedulehour = $_POST['rvg_odb_schedulehour'];
396
+ rvg_odb_update_option('rvg_odb_schedulehour', $rvg_odb_schedulehour);
397
+ }
398
+ else
399
+ // WIPE THE HOUR
400
+ rvg_odb_update_option('rvg_odb_schedulehour', '');
401
+
402
+ // CLEAR CURRENT SCHEDULE (IF ANY)
403
+ wp_clear_scheduled_hook('rvg_optimize_database');
404
+
405
+ // HAS TO BE SCHEDULED
406
+ if($rvg_odb_schedule != '')
407
+ if( !wp_next_scheduled( 'rvg_optimize_database' ))
408
+ {
409
+ $time = 0;
410
+ if($rvg_odb_schedulehour == '')
411
+ // 'hourly', 'twicedaily'
412
+ $time = time();
413
+ else
414
+ {
415
+ // 'daily', 'weekly'
416
+ if($rvg_odb_schedulehour <= $current_hour)
417
+ // NEXT RUN TOMORROW
418
+ $newdatetime = date('YmdHis', strtotime($current_date.$rvg_odb_schedulehour.'0000'.' + 1 day'));
419
+ else
420
+ // NEXT RUN TODAY
421
+ $newdatetime = $current_date.$rvg_odb_schedulehour.'0000';
422
+ // DATE TO UNIX TIMESTAMP (EPOCH)
423
+ $time = strtotime($newdatetime);
424
+ }
425
+ // SCHEDULE THE EVENT
426
+ wp_schedule_event( $time, $rvg_odb_schedule, 'rvg_optimize_database' );
427
+ }
428
+
429
+ // UPDATED MESSAGE
430
+ echo "<div class='updated odb-bold'><p>".
431
+ __('Optimize Database after Deleting Revisions SETTINGS UPDATED','rvg-optimize-database').
432
+ " - ";
433
+ _e('Click <a href="tools.php?page=rvg-optimize-db.php" class="odb-bold">HERE</a> to run the optimization','rvg-optimize-database');
434
+ echo "</p></div>";
435
+ } // if (isset($_POST['info_update']))
436
+
437
+ $rvg_odb_number = rvg_odb_get_option('rvg_odb_number');
438
+ if(!$rvg_odb_number) $rvg_odb_number = '0';
439
+
440
+ $rvg_clear_trash = rvg_odb_get_option('rvg_clear_trash');
441
+ if(!$rvg_clear_trash) $rvg_clear_trash = 'N';
442
+
443
+ $rvg_clear_spam = rvg_odb_get_option('rvg_clear_spam');
444
+ if(!$rvg_clear_spam) $rvg_clear_spam = 'N';
445
+
446
+ $rvg_clear_tags = rvg_odb_get_option('rvg_clear_tags');
447
+ if(!$rvg_clear_tags) $rvg_clear_tags = 'N';
448
+
449
+ $rvg_clear_transients = rvg_odb_get_option('rvg_clear_transients');
450
+ if(!$rvg_clear_transients) $rvg_clear_transients = 'N';
451
+
452
+ // v3.1
453
+ $rvg_clear_pingbacks = rvg_odb_get_option('rvg_clear_pingbacks');
454
+ if(!$rvg_clear_pingbacks) $rvg_clear_pingbacks = 'N';
455
+
456
+ $rvg_odb_logging_on = rvg_odb_get_option('rvg_odb_logging_on');
457
+ if(!$rvg_odb_logging_on) $rvg_odb_logging_on = 'N';
458
+
459
+ $rvg_odb_schedule = rvg_odb_get_option('rvg_odb_schedule');
460
+ if(!$rvg_odb_schedule) $rvg_odb_schedule = '';
461
+
462
+ $rvg_odb_schedulehour = rvg_odb_get_option('rvg_odb_schedulehour');
463
+
464
+ $rvg_odb_adminbar = rvg_odb_get_option('rvg_odb_adminbar');
465
+ if(!$rvg_odb_adminbar) $rvg_odb_adminbar = 'N';
466
+
467
+ $rvg_odb_adminmenu = rvg_odb_get_option('rvg_odb_adminmenu');
468
+ if(!$rvg_odb_adminmenu) $rvg_odb_adminmenu = 'N';
469
+
470
+ ?>
471
+ <?php /*?>v3.5<?php */?>
472
+ <link rel="stylesheet" type="text/css" media="all" href="<?php echo plugin_dir_url(__FILE__).'css/style.css'?>" />
473
+ <script type="text/javascript">
474
+ function schedule_changed()
475
+ { // v3.1.4
476
+ if(jQuery("#rvg_odb_schedule").val() == 'daily' || jQuery("#rvg_odb_schedule").val() == 'weekly')
477
+ jQuery("#schedulehour").show();
478
+ else
479
+ jQuery("#schedulehour").hide();
480
+ }
481
+ </script>
482
+ <?php
483
+ if($rvg_odb_adminbar == 'Y') $rvg_odb_adminbar_checked = ' checked="checked"'; else $rvg_odb_adminbar_checked = '';
484
+ if($rvg_odb_adminmenu == 'Y') $rvg_odb_adminmenu_checked = ' checked="checked"'; else $rvg_odb_adminmenu_checked = '';
485
+ if($rvg_clear_trash == 'Y') $rvg_clear_trash_checked = ' checked="checked"'; else $rvg_clear_trash_checked = '';
486
+ if($rvg_clear_spam == 'Y') $rvg_clear_spam_checked = ' checked="checked"'; else $rvg_clear_spam_checked = '';
487
+ if($rvg_clear_tags == 'Y') $rvg_clear_tags_checked = ' checked="checked"'; else $rvg_clear_tags_checked = '';
488
+ if($rvg_clear_transients == 'Y') $rvg_clear_transients_checked = ' checked="checked"'; else $rvg_clear_transients_checked = '';
489
+ // v3.1
490
+ if($rvg_clear_pingbacks == 'Y') $rvg_clear_pingbacks_checked = ' checked="checked"'; else $rvg_clear_pingbacks_checked = '';
491
+ if($rvg_odb_logging_on == 'Y') $rvg_odb_logging_on_checked = ' checked="checked"'; else $rvg_odb_logging_on_checked = '';
492
+ ?>
493
+ <div id="odb-options-form">
494
+ <form name="options" method="post" action="">
495
+ <?php // v2.8.3 ?>
496
+ <?php wp_nonce_field( 'odb_action','odb_nonce' ); ?>
497
+ <div id="odb-options-wrap">
498
+ <div id="odb-options-opening">
499
+ <div class="odb-title-bar">
500
+ <h2>
501
+ <?php _e('Optimize Database after Deleting Revisions','rvg-optimize-database');?>
502
+ </h2>
503
+ </div>
504
+ <p class="odb-bold">'<span class="odb-italic">Optimize Database after Deleting Revisions</span> '
505
+ <?php _e('is an one-click plugin to clean and optimize your WordPress database','rvg-optimize-database');?>
506
+ </p>
507
+ <span class="odb-bold">
508
+ <?php _e( 'Plugin version', 'rvg-optimize-database' ); ?>: v<?php echo $odb_version?> [<?php echo $odb_release_date?>] - <a href="http://cagewebdev.com/index.php/optimize-database-after-deleting-revisions-wordpress-plugin/" target="_blank">
509
+ <?php _e( 'Plugin page', 'rvg-optimize-database' ); ?></a> - <a href="http://wordpress.org/plugins/rvg-optimize-database/" target="_blank">
510
+ <?php _e( 'Download page', 'rvg-optimize-database' ); ?></a> - <a href="http://rvg.cage.nl/" target="_blank">
511
+ <?php _e( 'Author', 'rvg-optimize-database' ); ?></a> - <a href="http://cagewebdev.com/" target="_blank">
512
+ <?php _e( 'Company', 'rvg-optimize-database' ); ?></a> - <a href="http://cagewebdev.com/index.php/donations-odb/" target="_blank">
513
+ <?php _e( 'Donation page', 'rvg-optimize-database' ); ?></a><br />
514
+ </span>
515
+ </div>
516
+ <div id="odb-options-settings">
517
+ <div class="odb-title-bar">
518
+ <h2>
519
+ <?php _e('Settings','rvg-optimize-database');?>
520
+ </h2>
521
+ </div>
522
+ <br />
523
+ <br />
524
+ <table border="0" cellspacing="2" cellpadding="5" class="editform" align="center">
525
+ <tr>
526
+ <td width="50%" align="right" valign="top"><span class="odb-bold">
527
+ <?php _e('Maximum number of - most recent - revisions<br />to keep per post / page','rvg-optimize-database');?>
528
+ </span></td>
529
+ <td width="50%" valign="top"><input type="text" size="5" name="rvg_odb_number" id="rvg_odb_number" value="<?php echo $rvg_odb_number?>" class="odb-bold odb-blue" />
530
+ &nbsp;
531
+ <?php _e('(\'0\' means: delete <u>ALL</u> revisions)','rvg-optimize-database');?></td>
532
+ </tr>
533
+ <tr>
534
+ <td width="50%" align="right" valign="top"><span class="odb-bold">
535
+ <?php _e('Delete trashed items','rvg-optimize-database');?>
536
+ </span></td>
537
+ <td width="50%" valign="top"><input name="rvg_clear_trash" type="checkbox" value="Y" <?php echo $rvg_clear_trash_checked?> /></td>
538
+ </tr>
539
+ <tr>
540
+ <td width="50%" align="right" valign="top"><span class="odb-bold">
541
+ <?php _e('Delete spammed items','rvg-optimize-database');?>
542
+ </span></td>
543
+ <td width="50%" valign="top"><input name="rvg_clear_spam" type="checkbox" value="Y" <?php echo $rvg_clear_spam_checked?> /></td>
544
+ </tr>
545
+ <tr>
546
+ <td width="50%" align="right" valign="top"><span class="odb-bold">
547
+ <?php _e('Delete unused tags','rvg-optimize-database');?>
548
+ </span></td>
549
+ <td width="50%" valign="top"><input name="rvg_clear_tags" type="checkbox" value="Y" <?php echo $rvg_clear_tags_checked?> /></td>
550
+ </tr>
551
+ <tr>
552
+ <td width="50%" align="right" valign="top"><span class="odb-bold">
553
+ <?php _e('Delete expired transients','rvg-optimize-database');?>
554
+ </span></td>
555
+ <td width="50%" valign="top"><input name="rvg_clear_transients" type="checkbox" value="Y" <?php echo $rvg_clear_transients_checked?> /></td>
556
+ </tr>
557
+ <tr>
558
+ <td width="50%" align="right" valign="top"><span class="odb-bold">
559
+ <?php _e('Delete pingbacks and trackbacks','rvg-optimize-database');?>
560
+ </span></td>
561
+ <td width="50%" valign="top"><input name="rvg_clear_pingbacks" type="checkbox" value="Y" <?php echo $rvg_clear_pingbacks_checked?> /></td>
562
+ </tr>
563
+ <tr>
564
+ <td width="50%" align="right" valign="top"><span class="odb-bold">
565
+ <?php _e('Keep a log','rvg-optimize-database');?>
566
+ </span></td>
567
+ <td width="50%" valign="top"><input name="rvg_odb_logging_on" type="checkbox" value="Y" <?php echo $rvg_odb_logging_on_checked?> /></td>
568
+ </tr>
569
+ <tr>
570
+ <td width="50%" align="right"><span class="odb-bold">
571
+ <?php _e('Scheduler','rvg-optimize-database');?>
572
+ </span></td>
573
+ <td width="50%"><select name="rvg_odb_schedule" id="rvg_odb_schedule" class="odb-schedule-select" onchange="schedule_changed();">
574
+ <option selected="selected" value="">
575
+ <?php _e('NOT SCHEDULED','rvg-optimize-database');?>
576
+ </option>
577
+ <option value="hourly">
578
+ <?php _e('run optimization HOURLY','rvg-optimize-database');?>
579
+ </option>
580
+ <option value="twicedaily">
581
+ <?php _e('run optimization TWICE A DAY','rvg-optimize-database');?>
582
+ </option>
583
+ <option value="daily">
584
+ <?php _e('run optimization DAILY','rvg-optimize-database');?>
585
+ </option>
586
+ <option value="weekly">
587
+ <?php _e('run optimization WEEKLY','rvg-optimize-database');?>
588
+ </option>
589
+ <?php /*?><option value="test">run optimization TEST</option><?php */?>
590
+ </select>
591
+ <script type="text/javascript">
592
+ jQuery("#rvg_odb_schedule").val('<?php echo $rvg_odb_schedule; ?>');
593
+ </script>
594
+ <span id="schedulehour" class="odb-schedulehour"> <span class="odb-bold">
595
+ <?php _e('Time','rvg-optimize-database');?>
596
+ </span>
597
+ <select name="rvg_odb_schedulehour" id="rvg_odb_schedulehour" class="odb-schedulehour-select">
598
+ <?php
599
+ for($i=0; $i<=23; $i++)
600
+ { if($i<10) $i = '0'.$i;
601
+ ?>
602
+ <option value="<?php echo $i?>"><?php echo $i.':00 '.__('hrs','rvg-optimize-database')?></option>
603
+ <?php
604
+ }
605
+ ?>
606
+ </select>
607
+ <script type="text/javascript">
608
+ jQuery("#rvg_odb_schedulehour").val('<?php echo $rvg_odb_schedulehour; ?>');
609
+ </script>
610
+ </span>
611
+ <script type="text/javascript">schedule_changed();</script></td>
612
+ </tr>
613
+ <tr>
614
+ <td align="right" valign="top"><span class="odb-bold">
615
+ <?php _e('Show \'1-click\' link in Admin Bar','rvg-optimize-database');?>
616
+ </span></td>
617
+ <td valign="top"><input name="rvg_odb_adminbar" type="checkbox" value="Y" <?php echo $rvg_odb_adminbar_checked?> />
618
+ <?php _e('(change will be visible after loading the next page)','rvg-optimize-database');?></td>
619
+ </tr>
620
+ <tr>
621
+ <td align="right" valign="top"><span class="odb-bold">
622
+ <?php _e('Show an icon in the Admin Menu','rvg-optimize-database');?>
623
+ </span></td>
624
+ <td valign="top"><input name="rvg_odb_adminmenu" type="checkbox" value="Y" <?php echo $rvg_odb_adminmenu_checked?> />
625
+ <?php _e('(change will be visible after loading the next page)','rvg-optimize-database');?></td>
626
+ </tr>
627
+ </table>
628
+ <br />
629
+ <div align="center"> <span class="odb-bold">
630
+ <?php _e('EXCLUDE DATABASE TABLES FROM OPTIMIZATION: <span class="odb-underline-red">CHECKED</span> TABLES <span class="odb-underline-red">WON\'T</span> BE OPTIMIZED!</span>','rvg-optimize-database');?>
631
+ <br />
632
+ <a href="javascript:;" onclick="jQuery('[id^=cb_]').attr('checked',true);">
633
+ <?php _e('check all tables','rvg-optimize-database');?>
634
+ </a> | <a href="javascript:;" onclick="jQuery('[id^=cb_]').attr('checked',false);">
635
+ <?php _e('uncheck all tables','rvg-optimize-database');?>
636
+ </a> | <a href="javascript:;" onclick="jQuery(':not([id^=cb_<?php echo $odb_ms_prefixes[0]; ?>])').filter('[id^=cb_]').attr('checked',true);">
637
+ <?php _e('check all NON-WordPress tables','rvg-optimize-database');?>
638
+ </a></span>
639
+ <div id="odb-options-tables-container">
640
+ <div id="odb-options-tables-wrapper">
641
+ <?php
642
+ for ($i=0; $i<count($tables); $i++)
643
+ { $class = '';
644
+ // WORDPRESS TABLE? v3.3 (MULTISITE)
645
+ for($j=0; $j<count($odb_ms_prefixes); $j++)
646
+ if(substr($tables[$i][0], 0, strlen($odb_ms_prefixes[$j])) == $odb_ms_prefixes[$j]) $class = ' odb-wp-table';
647
+ $cb_checked = '';
648
+ $excluded = rvg_odb_get_option('rvg_ex_'.$tables[$i][0].'');
649
+ if($excluded == 'excluded') $cb_checked = ' checked';
650
+ ?>
651
+ <div class="odb-options-table<?php echo $class;?>" title="<?php echo $tables[$i][0];?>">
652
+ <input id="cb_<?php echo $tables[$i][0];?>" name="cb_<?php echo $tables[$i][0];?>" type="checkbox" value="1"<?php echo $cb_checked; ?> />
653
+ <?php echo $tables[$i][0];?></span></div>
654
+ <?php
655
+ }
656
+ ?>
657
+ </div>
658
+ <!-- odb-options-tables-wrapper -->
659
+ <div align="center">
660
+ <p>
661
+ <input class="button-primary button-large" type='submit' name='info_update' value='<?php _e('Save Settings','rvg-optimize-database');?>' class="odb-bold" />
662
+ &nbsp;
663
+ <input class="button odb-normal" type="button" name="optimizer" value="<?php _e('Go To Optimizer','rvg-optimize-database');?>" onclick="self.location='tools.php?page=rvg-optimize-db.php'" />
664
+ </p>
665
+ </div>
666
+ <!-- odb-options-buttons -->
667
+ </div>
668
+ <!-- odb-options-tables-container -->
669
+ </div>
670
+ <!-- center -->
671
+ </div>
672
+ <!-- odb-options-settings -->
673
+ </div>
674
+ <!-- odb-options-wrap -->
675
+ </form>
676
+ </div>
677
+ <!-- odb-options-form -->
678
+ <?php
679
+ } // rvg_odb_settings_page()
680
+
681
+
682
+ /********************************************************************************************
683
+ *
684
+ * MAIN FUNCTION
685
+ * FOR DELETING UNWANTED ITEMS AND OPTIMIZING DATABASE TABLES
686
+ *
687
+ ********************************************************************************************/
688
+ function rvg_optimize_db()
689
+ {
690
+ global $wpdb, $odb_version, $odb_release_date, $odb_ms_prefixes;
691
+
692
+ // v3.3 - GET NETWORK INFORMATION (MULTISITE)
693
+ rvg_odb_network_info();
694
+
695
+ // PAGE LOAD COUNTER
696
+ $time = microtime();
697
+ $time = explode(' ', $time);
698
+ $time = $time[1] + $time[0];
699
+ $odb_start_time = $time;
700
+
701
+ $current_hour = Date('H:i');
702
+
703
+ if(isset($_REQUEST['action']))
704
+ if($_REQUEST['action'] == "delete_log")
705
+ @unlink(dirname(__FILE__).'/rvg-optimize-db-log.html');
706
+
707
+ /****************************************************************************************
708
+ *
709
+ * DELETE UNWANTED ITEMS
710
+ *
711
+ ****************************************************************************************/
712
+
713
+ // GET SETTINGS AND SET DEFAULT VALUES
714
+ $max_revisions = rvg_odb_get_option('rvg_odb_number');
715
+ if(!$max_revisions)
716
+ { $max_revisions = 0;
717
+ rvg_odb_update_option('rvg_odb_number', $max_revisions);
718
+ }
719
+
720
+ $clear_trash = rvg_odb_get_option('rvg_clear_trash');
721
+ if(!$clear_trash)
722
+ { $clear_trash = 'N';
723
+ rvg_odb_update_option('rvg_clear_trash', $clear_trash);
724
+ }
725
+ $clear_trash_yn = ($clear_trash == 'N') ? __('NO','rvg-optimize-database') : __('YES','rvg-optimize-database');
726
+
727
+ $clear_spam = rvg_odb_get_option('rvg_clear_spam');
728
+ if(!$clear_spam)
729
+ { $clear_spam = 'N';
730
+ rvg_odb_update_option('rvg_clear_spam', $clear_spam);
731
+ }
732
+ $clear_spam_yn = ($clear_spam == 'N') ? __('NO','rvg-optimize-database') : __('YES','rvg-optimize-database');
733
+
734
+ $clear_tags = rvg_odb_get_option('rvg_clear_tags');
735
+ if(!$clear_tags)
736
+ { $clear_tags = 'N';
737
+ rvg_odb_update_option('rvg_clear_tags', $clear_tags);
738
+ }
739
+ $clear_tags_yn = ($clear_tags == 'N') ? __('NO','rvg-optimize-database') : __('YES','rvg-optimize-database');
740
+
741
+ $clear_transients = rvg_odb_get_option('rvg_clear_transients');
742
+ if(!$clear_transients)
743
+ { $clear_transients = 'N';
744
+ rvg_odb_update_option('rvg_clear_transients', $clear_transients);
745
+ }
746
+ $clear_transients_yn = ($clear_transients == 'N') ? __('NO','rvg-optimize-database') : __('YES','rvg-optimize-database');
747
+
748
+ // v3.1
749
+ $clear_pingbacks = rvg_odb_get_option('rvg_clear_pingbacks');
750
+ if(!$clear_pingbacks)
751
+ { $clear_pingbacks = 'N';
752
+ rvg_odb_update_option('rvg_clear_pingbacks', $clear_pingbacks);
753
+ }
754
+ $clear_pingbacks_yn = ($clear_pingbacks == 'N') ? __('NO','rvg-optimize-database') : __('YES','rvg-optimize-database');
755
+
756
+ $rvg_odb_logging_on = rvg_odb_get_option('rvg_odb_logging_on');
757
+ if(!$rvg_odb_logging_on)
758
+ { $rvg_odb_logging_on = 'N';
759
+ rvg_odb_update_option('rvg_odb_logging_on', $rvg_odb_logging_on);
760
+ }
761
+ $rvg_odb_logging_on_yn = ($rvg_odb_logging_on == 'N') ? __('NO','rvg-optimize-database') : __('YES','rvg-optimize-database');
762
+
763
+ $rvg_odb_schedule = rvg_odb_get_option('rvg_odb_schedule');
764
+ if(!$rvg_odb_schedule)
765
+ { $rvg_odb_schedule = '';
766
+ rvg_odb_update_option('rvg_odb_schedule', $rvg_odb_schedule);
767
+ }
768
+
769
+ if($rvg_odb_schedule == 'hourly')
770
+ $rvg_odb_schedule_txt = __('ONCE HOURLY','rvg-optimize-database');
771
+ else if($rvg_odb_schedule == 'twicedaily')
772
+ $rvg_odb_schedule_txt = __('TWICE DAILY','rvg-optimize-database');
773
+ else if($rvg_odb_schedule == 'daily')
774
+ $rvg_odb_schedule_txt = __('ONCE DAILY','rvg-optimize-database');
775
+ else if($rvg_odb_schedule == 'weekly')
776
+ $rvg_odb_schedule_txt = __('ONCE WEEKLY','rvg-optimize-database');
777
+ else if($rvg_odb_schedule == 'test')
778
+ $rvg_odb_schedule_txt = 'TEST';
779
+
780
+ $nextrun = '';
781
+ if(!isset($rvg_odb_schedule_txt))
782
+ { $rvg_odb_schedule_txt = __('NOT SCHEDULED','rvg-optimize-database');
783
+ }
784
+ else
785
+ { $timestamp = wp_next_scheduled('rvg_optimize_database');
786
+ $nextrun = Date('M j, Y @ H:i', $timestamp);
787
+ }
788
+
789
+ $total_savings = rvg_odb_get_option('rvg_odb_total_savings');
790
+
791
+ $log_url = plugins_url().'/rvg-optimize-database/rvg-optimize-db-log.html';
792
+
793
+ $sql = "
794
+ SELECT COUNT(*) cnt
795
+ FROM $wpdb->options
796
+ WHERE option_name LIKE 'rvg_ex_%'
797
+ ";
798
+ $results = $wpdb->get_results($sql);
799
+ $number_excluded = $results[0]->cnt;
800
+ ?>
801
+ <?php /*?>v3.5<?php */?>
802
+ <link rel="stylesheet" type="text/css" media="all" href="<?php echo plugin_dir_url(__FILE__).'css/style.css'?>" />
803
+ <div class="odb-padding-left">
804
+ <div class="odb-title-bar">
805
+ <h2>
806
+ <?php _e('Optimize your WordPress Database','rvg-optimize-database');?>
807
+ </h2>
808
+ </div>
809
+ <?php
810
+ if(isset($_REQUEST['action']))
811
+ if($_REQUEST['action'] == "delete_log")
812
+ echo '<div class="updated odb-updated"><p><span class="odb-bold">Optimize Database after Deleting Revisions - LOG FILE DELETED</span></p></div>';
813
+ ?>
814
+ <p>
815
+ <span class="odb-bold">
816
+ <?php _e( 'Plugin version', 'rvg-optimize-database' ); ?>: v<?php echo $odb_version?> [<?php echo $odb_release_date?>] - <a href="http://cagewebdev.com/index.php/optimize-database-after-deleting-revisions-wordpress-plugin/" target="_blank">
817
+ <?php _e( 'Plugin page', 'rvg-optimize-database' ); ?></a> - <a href="http://wordpress.org/plugins/rvg-optimize-database/" target="_blank">
818
+ <?php _e( 'Download page', 'rvg-optimize-database' ); ?></a> - <a href="http://rvg.cage.nl/" target="_blank">
819
+ <?php _e( 'Author', 'rvg-optimize-database' ); ?></a> - <a href="http://cagewebdev.com/" target="_blank">
820
+ <?php _e( 'Company', 'rvg-optimize-database' ); ?></a> - <a href="http://cagewebdev.com/index.php/donations-odb/" target="_blank">
821
+ <?php _e( 'Donation page', 'rvg-optimize-database' ); ?></a><br />
822
+ </span>
823
+ </p>
824
+ <p>
825
+ <?php _e('Current settings','rvg-optimize-database');?>:<br />
826
+ <span class="odb-bold">
827
+ <?php _e('Maximum number of - most recent - revisions to keep per post / page','rvg-optimize-database');?>:</span> <span class="odb-bold odb-blue"><?php echo $max_revisions?></span><br />
828
+ <span class="odb-bold">
829
+ <?php _e('Delete trashed items','rvg-optimize-database');?>:</span> <span class="odb-bold odb-blue"><?php echo $clear_trash_yn?></span><br />
830
+ <span class="odb-bold">
831
+ <?php _e('Delete spammed items','rvg-optimize-database');?>:</span> <span class="odb-bold odb-blue"><?php echo $clear_spam_yn?></span><br />
832
+ <span class="odb-bold">
833
+ <?php _e('Delete unused tags','rvg-optimize-database');?>:</span> <span class="odb-bold odb-blue"><?php echo $clear_tags_yn?></span><br />
834
+ <span class="odb-bold">
835
+ <?php _e('Delete expired transients','rvg-optimize-database');?>:</span> <span class="odb-bold odb-blue"><?php echo $clear_transients_yn?></span><br />
836
+ <span class="odb-bold">
837
+ <?php _e('Delete pingbacks and trackbacks','rvg-optimize-database');?>:</span> <span class="odb-bold odb-blue"><?php echo $clear_pingbacks_yn?></span><br />
838
+ <span class="odb-bold">
839
+ <?php _e('Keep a log','rvg-optimize-database');?>:</span> <span class="odb-bold odb-blue"><?php echo $rvg_odb_logging_on_yn?></span><br />
840
+ <span class="odb-bold">
841
+ <?php _e('Number of excluded tables','rvg-optimize-database');?>:</span> <span class="odb-bold odb-blue"><?php echo $number_excluded?></span><br />
842
+ <span class="odb-bold">
843
+ <?php _e('Scheduler','rvg-optimize-database');?>:</span> <span class="odb-bold odb-blue"><?php echo $rvg_odb_schedule_txt?></span>
844
+ <?php
845
+ if($nextrun)
846
+ {
847
+ ?>
848
+ <br />
849
+ <span class="odb-bold">
850
+ <?php _e('Next scheduled run','rvg-optimize-database');?>:</span> <span class="odb-bold odb-blue"><?php echo $nextrun?> hrs (current server time: <?php echo $current_hour?>)</span>
851
+ <?php
852
+ }
853
+ if($total_savings)
854
+ {
855
+ ?>
856
+ <br />
857
+ <span class="odb-bold">
858
+ <?php _e('Total savings since the first run','rvg-optimize-database');?>:</span> <span class="odb-bold odb-blue"><?php echo rvg_format_size($total_savings); ?></span>
859
+ <?php
860
+ }
861
+ ?>
862
+
863
+ <p class="submit">
864
+ <input class="button odb-normal" type="button" name="change_options" value="<?php _e('Change Settings','rvg-optimize-database');?>" onclick="self.location='options-general.php?page=rvg_odb_admin'" />
865
+ <?php
866
+ if(file_exists(dirname(__FILE__).'/rvg-optimize-db-log.html'))
867
+ {
868
+ ?>
869
+ &nbsp;
870
+ <input class="button odb-normal" type="button" name="view_log" value="<?php _e('View Log File','rvg-optimize-database');?>" onclick="window.open('<?php echo $log_url?>')" />
871
+ &nbsp;
872
+ <input class="button odb-normal" type="button" name="delete_log" value="<?php _e('Delete Log File','rvg-optimize-database');?>" onclick="self.location='tools.php?page=rvg-optimize-db.php&action=delete_log'" />
873
+ <?php
874
+ }
875
+ $action = '';
876
+ if(isset($_REQUEST['action'])) $action = $_REQUEST['action'];
877
+ if($action != 'run')
878
+ {
879
+ ?>
880
+ &nbsp;
881
+ <input class="button-primary button-large" type="button" name="start_optimization" value="<?php _e('Start Optimization','rvg-optimize-database');?>" onclick="self.location='tools.php?page=rvg-optimize-db.php&action=run'" class="odb-bold" />
882
+ <?php
883
+ }
884
+ ?>
885
+ </p>
886
+ </div>
887
+ <?php
888
+ $action = '';
889
+ if(isset($_REQUEST['action'])) $action = $_REQUEST['action'];
890
+ if($action != 'run') return;
891
+ ?>
892
+ <div class="odb-title-bar">
893
+ <h2>
894
+ <?php _e('Cleaning Database','rvg-optimize-database');?>
895
+ </h2>
896
+ </div>
897
+ <br />
898
+ <br />
899
+ <?php
900
+ // GET THE SIZE OF THE DATABASE BEFORE OPTIMIZATION
901
+ $start_size = rvg_get_db_size();
902
+
903
+ // TIMESTAMP FOR LOG FILE
904
+ $current_datetime = Date('m/d/YH:i:s');
905
+ $log_arr = array("time" => substr($current_datetime, 0, 10).'<br />'.substr($current_datetime,10));
906
+
907
+ // FIND REVISIONS
908
+ $results = rvg_get_revisions($max_revisions);
909
+
910
+ $total_deleted = 0;
911
+ if(count($results)>0)
912
+ { // WE HAVE REVISIONS TO DELETE!
913
+ ?>
914
+ <table border="0" cellspacing="8" cellpadding="2" class="odb-result-table">
915
+ <tr>
916
+ <td colspan="4"><div class="odb-found">
917
+ <?php _e('DELETED REVISIONS','rvg-optimize-database');?>
918
+ </div></td>
919
+ </tr>
920
+ <tr>
921
+ <th align="right" class="odb-border-bottom">#</th>
922
+ <th align="left" class="odb-border-bottom"><?php _e('prefix', 'rvg-optimize-database');?></th>
923
+ <th align="left" class="odb-border-bottom"><?php _e('post / page','rvg-optimize-database');?></th>
924
+ <th align="left" class="odb-border-bottom"><?php _e('revision date','rvg-optimize-database');?></th>
925
+ <th align="right" class="odb-border-bottom"><?php _e('revisions deleted','rvg-optimize-database');?></th>
926
+ </tr>
927
+ <?php
928
+ // LOOP THROUGH THE REVISIONS AND DELETE THEM
929
+ $total_deleted = rvg_delete_revisions($results, true, $max_revisions);
930
+ ?>
931
+ <tr>
932
+ <td colspan="4" align="right" class="odb-border-top odb-bold"><?php _e('total number of revisions deleted','rvg-optimize-database');?></td>
933
+ <td align="right" class="odb-border-top odb-bold"><?php echo $total_deleted?></td>
934
+ </tr>
935
+ </table>
936
+ <?php
937
+ }
938
+ else
939
+ {
940
+ ?>
941
+ <div class="odb-not-found">
942
+ <?php _e('No REVISIONS found to delete','rvg-optimize-database');?>
943
+ </div>
944
+ <?php
945
+ } // if(count($results)>0)
946
+
947
+ // NUMBER OF DELETED REVISIONS FOR LOG FILE
948
+ $log_arr["revisions"] = $total_deleted;
949
+
950
+
951
+ /****************************************************************************************
952
+ *
953
+ * DELETE TRASHED ITEMS
954
+ *
955
+ ****************************************************************************************/
956
+ if($clear_trash == 'Y')
957
+ {
958
+ // GET TRASHED POSTS / PAGES AND COMMENTS
959
+ $results = rvg_get_trash();
960
+
961
+ $total_deleted = 0;
962
+ if(count($results)>0)
963
+ { // WE HAVE TRASH TO DELETE!
964
+ ?>
965
+ <table border="0" cellspacing="8" cellpadding="2" class="odb-result-table">
966
+ <tr>
967
+ <td colspan="4"><div class="odb-found">
968
+ <?php _e('DELETED TRASHED ITEMS','rvg-optimize-database');?>
969
+ </div></td>
970
+ </tr>
971
+ <tr>
972
+ <th align="right" class="odb-border-bottom">#</th>
973
+ <th align="left" class="odb-border-bottom"><?php _e('prefix', 'rvg-optimize-database');?></th>
974
+ <th align="left" class="odb-border-bottom"><?php _e('type','rvg-optimize-database');?></th>
975
+ <th align="left" class="odb-border-bottom"><?php _e('IP address / title','rvg-optimize-database');?></th>
976
+ <th align="left" nowrap="nowrap" class="odb-border-bottom"><?php _e('date','rvg-optimize-database');?></th>
977
+ </tr>
978
+ <?php
979
+ // LOOP THROUGH THE TRASHED ITEMS AND DELETE THEM
980
+ $total_deleted = rvg_delete_trash($results, true);
981
+ ?>
982
+ <tr>
983
+ <td colspan="4" align="right" class="odb-border-top odb-bold"><?php _e('total number of trashed items deleted','rvg-optimize-database');?></td>
984
+ <td align="right" class="odb-border-top odb-bold"><?php echo $total_deleted?></td>
985
+ </tr>
986
+ </table>
987
+ <?php
988
+ }
989
+ else
990
+ {
991
+ ?>
992
+ <div class="odb-not-found">
993
+ <?php _e('No TRASHED ITEMS found to delete','rvg-optimize-database');?>
994
+ </div>
995
+ <?php
996
+ } // if(count($results)>0)
997
+
998
+ // NUMBER OF DELETED TRASH FOR LOG FILE
999
+ $log_arr["trash"] = $total_deleted;
1000
+ } // if($clear_trash == 'Y')
1001
+
1002
+
1003
+ /****************************************************************************************
1004
+ *
1005
+ * DELETE SPAMMED ITEMS
1006
+ *
1007
+ ****************************************************************************************/
1008
+ if($clear_spam == 'Y')
1009
+ {
1010
+ // GET SPAMMED COMMENTS
1011
+ $results = rvg_get_spam();
1012
+
1013
+ $total_deleted = 0;
1014
+ if(count($results)>0)
1015
+ { // WE HAVE SPAM TO DELETE!
1016
+ ?>
1017
+ <table border="0" cellspacing="8" cellpadding="2" class="odb-result-table">
1018
+ <tr>
1019
+ <td colspan="4"><div class="odb-found">
1020
+ <?php _e('DELETEED SPAMMED ITEMS','rvg-optimize-database');?>
1021
+ </div></td>
1022
+ </tr>
1023
+ <tr>
1024
+ <th align="right" class="odb-border-bottom">#</th>
1025
+ <th align="left" class="odb-border-bottom"><?php _e('prefix', 'rvg-optimize-database');?></th>
1026
+ <th align="left" class="odb-border-bottom"><?php _e('comment author','rvg-optimize-database');?></th>
1027
+ <th align="left" class="odb-border-bottom"><?php _e('comment author email','rvg-optimize-database');?></th>
1028
+ <th align="left" nowrap="nowrap" class="odb-border-bottom"><?php _e('comment date','rvg-optimize-database');?></th>
1029
+ </tr>
1030
+ <?php
1031
+ // LOOP THROUGH SPAMMED ITEMS AND DELETE THEM
1032
+ $total_deleted = rvg_delete_spam($results, true);
1033
+ ?>
1034
+ <tr>
1035
+ <td colspan="4" align="right" class="odb-border-top odb-bold"><?php _e('total number of spammed items deleted','rvg-optimize-database');?></td>
1036
+ <td align="right" class="odb-border-top odb-bold"><?php echo $total_deleted?></td>
1037
+ </tr>
1038
+ </table>
1039
+ <?php
1040
+ }
1041
+ else
1042
+ {
1043
+ ?>
1044
+ <div class="odb-not-found">
1045
+ <?php _e('No SPAMMED ITEMS found to delete','rvg-optimize-database');?>
1046
+ </div>
1047
+ <?php
1048
+ } // if(count($results)>0)
1049
+
1050
+ } // if($clear_spam == 'Y')
1051
+
1052
+ // NUMBER OF SPAM DELETED FOR LOG FILE
1053
+ $log_arr["spam"] = $total_deleted;
1054
+
1055
+
1056
+ /****************************************************************************************
1057
+ *
1058
+ * DELETE UNUSED TAGS
1059
+ *
1060
+ ****************************************************************************************/
1061
+ if($clear_tags == 'Y')
1062
+ {
1063
+ // DELETE UNUSED TAGS
1064
+ $total_deleted = rvg_delete_tags();
1065
+ if($total_deleted>0)
1066
+ { // TAGS DELETED
1067
+ ?>
1068
+ <div class="odb-found-number">
1069
+ <?php _e('NUMBER OF UNUSED TAGS DELETED','rvg-optimize-database');?>
1070
+ : <span class="odb-blue"><?php echo $total_deleted;?></span> </div>
1071
+ <?php
1072
+ }
1073
+ else
1074
+ {
1075
+ ?>
1076
+ <div class="odb-not-found">
1077
+ <?php _e('No UNUSED TAGS found to delete','rvg-optimize-database');?>
1078
+ </div>
1079
+ <?php
1080
+ } // if(count($results)>0)
1081
+
1082
+ } // if($clear_tags == 'Y')
1083
+
1084
+ // NUMBER OF tags DELETED FOR LOG FILE
1085
+ $log_arr["tags"] = $total_deleted;
1086
+
1087
+
1088
+ /****************************************************************************************
1089
+ *
1090
+ * DELETE EXPIRED TRANSIENTS
1091
+ *
1092
+ ****************************************************************************************/
1093
+ if($clear_transients == 'Y')
1094
+ {
1095
+ // DELETE UNUSED TAGS
1096
+ $total_deleted = rvg_delete_transients();
1097
+ if($total_deleted>0)
1098
+ { // TRANSIENTS DELETED
1099
+ ?>
1100
+ <div class="odb-found-number">
1101
+ <?php _e('NUMBER OF EXPIRED TRANSIENTS DELETED','rvg-optimize-database');?>
1102
+ : <span class="odb-blue"><?php echo $total_deleted;?></span> </div>
1103
+ <?php
1104
+ }
1105
+ else
1106
+ {
1107
+ ?>
1108
+ <div class="odb-not-found">
1109
+ <?php _e('No EXPIRED TRANSIENTS found to delete','rvg-optimize-database');?>
1110
+ </div>
1111
+ <?php
1112
+ } // if(count($results)>0)
1113
+
1114
+ } // if($clear_transients == 'Y')
1115
+
1116
+ // NUMBER OF transients DELETED FOR LOG FILE
1117
+ $log_arr["transients"] = $total_deleted;
1118
+
1119
+
1120
+ /****************************************************************************************
1121
+ *
1122
+ * DELETE PINGBACKS AND TRACKBACKS (v3.1)
1123
+ *
1124
+ ****************************************************************************************/
1125
+ if($clear_pingbacks == 'Y')
1126
+ {
1127
+ // DELETE UNUSED TAGS
1128
+ $total_deleted = rvg_delete_pingbacks();
1129
+ if($total_deleted>0)
1130
+ { // PINGBACKS / TRACKBACKS DELETED
1131
+ ?>
1132
+ <div class="odb-found-number">
1133
+ <?php _e('NUMBER OF PINGBACKS AND TRACKBACKS DELETED','rvg-optimize-database');?>
1134
+ : <span class="odb-blue"><?php echo $total_deleted;?></span> </div>
1135
+ <?php
1136
+ }
1137
+ else
1138
+ {
1139
+ ?>
1140
+ <div class="odb-not-found">
1141
+ <?php _e('No PINGBACKS nor TRACKBACKS found to delete','rvg-optimize-database');?>
1142
+ </div>
1143
+ <?php
1144
+ } // if(count($results)>0)
1145
+
1146
+ } // if($clear_pingbacks == 'Y')
1147
+
1148
+ // NUMBER OF pingbacks / trackbacks DELETED (FOR LOG FILE)
1149
+ $log_arr["pingbacks"] = $total_deleted;
1150
+
1151
+
1152
+ /****************************************************************************************
1153
+ *
1154
+ * DELETE ORPHANS
1155
+ *
1156
+ ****************************************************************************************/
1157
+ $total_deleted = rvg_delete_orphans(true);
1158
+ if($total_deleted > 0)
1159
+ {
1160
+ ?>
1161
+ <div class="odb-found-number">
1162
+ <?php _e('NUMBER OF POSTMETA ORPHANS DELETED','rvg-optimize-database');?>
1163
+ : <span class="odb-blue"><?php echo $total_deleted;?></span> </div>
1164
+ <?php
1165
+ }
1166
+ else
1167
+ {
1168
+ ?>
1169
+ <div class="odb-not-found">
1170
+ <?php _e('No POSTMETA ORPHANS found to delete','rvg-optimize-database');?>
1171
+ </div>
1172
+ <?php
1173
+ }
1174
+ // FOR LOG FILE
1175
+ $log_arr["orphans"] = $total_deleted;
1176
+
1177
+
1178
+ /****************************************************************************************
1179
+ *
1180
+ * OPTIMIZE DATABASE TABLES
1181
+ *
1182
+ ****************************************************************************************/
1183
+ ?>
1184
+ <div class="odb-optimizing-table">
1185
+ <div class="odb-title-bar">
1186
+ <h2>
1187
+ <?php _e('Optimizing Database Tables','rvg-optimize-database');?>
1188
+ </h2>
1189
+ </div>
1190
+ <br />
1191
+ <br />
1192
+ <table border="0" cellspacing="8" cellpadding="2">
1193
+ <tr>
1194
+ <th class="odb-border-bottom" align="right">#</th>
1195
+ <th class="odb-border-bottom" align="left"><?php _e('table name','rvg-optimize-database');?></th>
1196
+ <th class="odb-border-bottom" align="left"><?php _e('optimization result','rvg-optimize-database');?></th>
1197
+ <th class="odb-border-bottom" align="left"><?php _e('engine','rvg-optimize-database');?></th>
1198
+ <th class="odb-border-bottom" align="right"><?php _e('table rows','rvg-optimize-database');?></th>
1199
+ <th class="odb-border-bottom" align="right"><?php _e('table size','rvg-optimize-database');?></th>
1200
+ </tr>
1201
+ <?php
1202
+ # OPTIMIZE THE DATABASE TABLES
1203
+ $cnt = rvg_optimize_tables(true);
1204
+ ?>
1205
+ </table>
1206
+ <?php
1207
+ // NUMBER OF TABLES
1208
+ $log_arr["tables"] = $cnt;
1209
+ // DATABASE SIZE BEFORE OPTIMIZATION
1210
+ $log_arr["before"] = rvg_format_size($start_size,3);
1211
+ // DATABASE SIZE AFTER OPTIMIZATION
1212
+ $end_size = rvg_get_db_size();
1213
+ $log_arr["after"] = rvg_format_size($end_size,3);
1214
+ // TOTAL SAVING
1215
+ $log_arr["savings"] = rvg_format_size(($start_size - $end_size),3);
1216
+ // WRITE RESULTS TO LOG FILE
1217
+ rvg_write_log($log_arr);
1218
+
1219
+ $total_savings = rvg_odb_get_option('rvg_odb_total_savings');
1220
+ $total_savings += ($start_size - $end_size);
1221
+ rvg_odb_update_option('rvg_odb_total_savings',$total_savings);
1222
+ ?>
1223
+ <div class="odb-title-bar">
1224
+ <h2>
1225
+ <?php _e('Savings','rvg-optimize-database');?>
1226
+ </h2>
1227
+ </div>
1228
+ <br />
1229
+ <br />
1230
+ <table border="0" cellspacing="8" cellpadding="2">
1231
+ <tr>
1232
+ <th>&nbsp;</th>
1233
+ <th class="odb-border-bottom"><?php _e('size of the database','rvg-optimize-database');?></th>
1234
+ </tr>
1235
+ <tr>
1236
+ <td align="right"><?php _e('BEFORE optimization','rvg-optimize-database');?></td>
1237
+ <td align="right" class="odb-bold"><?php echo rvg_format_size($start_size,3); ?></td>
1238
+ </tr>
1239
+ <tr>
1240
+ <td align="right"><?php _e('AFTER optimization','rvg-optimize-database');?></td>
1241
+ <td align="right" class="odb-bold"><?php echo rvg_format_size($end_size,3); ?></td>
1242
+ </tr>
1243
+ <tr>
1244
+ <td align="right" class="odb-bold"><?php _e('SAVINGS THIS TIME','rvg-optimize-database');?></td>
1245
+ <td align="right" class="odb-border-top odb-bold"><?php echo rvg_format_size(($start_size - $end_size),3); ?></td>
1246
+ </tr>
1247
+ <tr>
1248
+ <td align="right" class="odb-bold"><?php _e('TOTAL SAVINGS SINCE THE FIRST RUN','rvg-optimize-database');?></td>
1249
+ <td align="right" class="odb-border-top odb-bold"><?php echo rvg_format_size($total_savings,3); ?></td>
1250
+ </tr>
1251
+ </table>
1252
+ </div>
1253
+ <?php
1254
+ $time = microtime();
1255
+ $time = explode(' ', $time);
1256
+ $time = $time[1] + $time[0];
1257
+ $finish = $time;
1258
+
1259
+ $total_time = round(($finish - $odb_start_time), 4);
1260
+ ?>
1261
+ <div class="odb-title-bar">
1262
+ <h2>
1263
+ <?php _e('DONE!','rvg-optimize-database');?>
1264
+ </h2>
1265
+ </div>
1266
+ <br />
1267
+ <br />
1268
+ <span class="odb-padding-left">
1269
+ <?php _e('Optimization took', 'rvg-optimize-database')?>
1270
+ &nbsp;<strong><?php echo $total_time;?></strong>&nbsp;
1271
+ <?php _e('seconds', 'rvg-optimize-database')?>
1272
+ .</span>
1273
+ <?php
1274
+ if(file_exists(dirname(__FILE__).'/rvg-optimize-db-log.html'))
1275
+ {
1276
+ ?>
1277
+ <br />
1278
+ <br />
1279
+ &nbsp;
1280
+ <input class="button odb-normal" type="button" name="view_log" value="<?php _e('View Log File','rvg-optimize-database');?>" onclick="window.open('<?php echo $log_url?>')" />
1281
+ &nbsp;
1282
+ <input class="button odb-normal" type="button" name="delete_log" value="<?php _e('Delete Log File','rvg-optimize-database');?>" onclick="self.location='tools.php?page=rvg-optimize-db.php&action=delete_log'" />
1283
+ <?php
1284
+ }
1285
+ } // rvg_optimize_db()
1286
+
1287
+
1288
+ /********************************************************************************************
1289
+ *
1290
+ * EXECUTE OPTIMIZATION VIA CRON JOB
1291
+ *
1292
+ ********************************************************************************************/
1293
+ function rvg_optimize_db_cron()
1294
+ {
1295
+ global $wpdb, $odb_version, $odb_ms_prefixes;
1296
+
1297
+ // v3.3.1 - GET NETWORK INFORMATION (MULTISITE)
1298
+ rvg_odb_network_info();
1299
+
1300
+ // GET SETTINGS AND SET DEFAULT VALUES
1301
+ $max_revisions = rvg_odb_get_option('rvg_odb_number');
1302
+ if(!$max_revisions)
1303
+ { $max_revisions = 0;
1304
+ rvg_odb_update_option('rvg_odb_number', $max_revisions);
1305
+ }
1306
+
1307
+ $clear_trash = rvg_odb_get_option('rvg_clear_trash');
1308
+ if(!$clear_trash)
1309
+ { $clear_trash = 'N';
1310
+ rvg_odb_update_option('rvg_clear_trash', $clear_trash);
1311
+ }
1312
+
1313
+ $clear_spam = rvg_odb_get_option('rvg_clear_spam');
1314
+ if(!$clear_spam)
1315
+ { $clear_spam = 'N';
1316
+ rvg_odb_update_option('rvg_clear_spam', $clear_spam);
1317
+ }
1318
+
1319
+ $clear_tags = rvg_odb_get_option('rvg_clear_tags');
1320
+ if(!$clear_tags)
1321
+ { $clear_tags = 'N';
1322
+ rvg_odb_update_option('rvg_clear_tags', $clear_tags);
1323
+ }
1324
+
1325
+ $clear_transients = rvg_odb_get_option('rvg_clear_transients');
1326
+ if(!$clear_transients)
1327
+ { $clear_transients = 'N';
1328
+ rvg_odb_update_option('rvg_clear_transients', $clear_transients);
1329
+ }
1330
+
1331
+ // v3.1
1332
+ $clear_pingbacks = rvg_odb_get_option('rvg_clear_pingbacks');
1333
+ if(!$clear_pingbacks)
1334
+ { $clear_pingbacks = 'N';
1335
+ rvg_odb_update_option('rvg_clear_pingbacks', $clear_pingbacks);
1336
+ }
1337
+
1338
+ // GET THE SIZE OF THE DATABASE BEFORE OPTIMIZATION
1339
+ $start_size = rvg_get_db_size();
1340
+
1341
+ // TIMESTAMP FOR LOG FILE
1342
+ $log_arr = array("time" => date("m/d/Y").'<br />'.date("H:i:s"));
1343
+
1344
+ // FIND THE REVISIONS
1345
+ $results = rvg_get_revisions($max_revisions);
1346
+
1347
+ $total_deleted = 0;
1348
+ if(count($results)>0)
1349
+ // WE HAVE REVISIONS TO DELETE!
1350
+ $total_deleted = rvg_delete_revisions($results, false, $max_revisions);
1351
+
1352
+ // NUMBER OF DELETED REVISIONS FOR LOG FILE
1353
+ $log_arr["revisions"] = $total_deleted;
1354
+
1355
+ $total_deleted = 0;
1356
+ if($clear_trash == 'Y')
1357
+ {
1358
+ // GET TRASHED POSTS / PAGES AND COMMENTS
1359
+ $results = rvg_get_trash();
1360
+
1361
+ if(count($results)>0)
1362
+ // WE HAVE TRASH TO DELETE!
1363
+ $total_deleted = rvg_delete_trash($results, false, $max_revisions);
1364
+
1365
+ } // if($clear_trash == 'Y')
1366
+
1367
+ // NUMBER OF DELETED TRASH FOR LOG FILE
1368
+ $log_arr["trash"] = $total_deleted;
1369
+
1370
+ $total_deleted = 0;
1371
+ if($clear_spam == 'Y')
1372
+ {
1373
+ // GET SPAMMED COMMENTS
1374
+ $results = rvg_get_spam();
1375
+
1376
+ if(count($results)>0)
1377
+ // WE HAVE SPAM TO DELETE!
1378
+ $total_deleted = rvg_delete_spam($results, false);
1379
+
1380
+ } // if($clear_spam == 'Y')
1381
+
1382
+ // NUMBER OF SPAM DELETED FOR LOG FILE
1383
+ $log_arr["spam"] = $total_deleted;
1384
+
1385
+ if($clear_tags == "Y")
1386
+ { // DELETE UNUSED TAGS
1387
+ $total_deleted = rvg_delete_tags();
1388
+ }
1389
+
1390
+ // NUMBER OF DELETE TAGS FOR LOG FILE
1391
+ $log_arr["tags"] = $total_deleted;
1392
+
1393
+ if($clear_transients == "Y")
1394
+ { // DELETE TRANSIENTS
1395
+ $total_deleted = rvg_delete_transients();
1396
+ }
1397
+
1398
+ // NUMBER OF DELETED TAGS FOR LOG FILE
1399
+ $log_arr["transients"] = $total_deleted;
1400
+
1401
+ // PINGBACKS AND TRACKBACKS (v3.1)
1402
+ if($clear_pingbacks == "Y")
1403
+ { // DELETE PINGBACKS AND TRACKBACKS
1404
+ $total_deleted = rvg_delete_pingbacks();
1405
+ }
1406
+ // NUMBER OF DELETED PINGBACKS AND TRACKBACKS FOR LOG FILE
1407
+ $log_arr["pingbacks"] = $total_deleted;
1408
+
1409
+ // DELETE ORPHANS
1410
+ $total_deleted = rvg_delete_orphans(false);
1411
+ // NUMBER OF ORPHANS DELETED (FOR LOG FILE)
1412
+ $log_arr["orphans"] = $total_deleted;
1413
+
1414
+ // OPTIMIZE DATABASE TABLES
1415
+ $cnt = rvg_optimize_tables(false);
1416
+
1417
+ // NUMBER OF TABLES
1418
+ $log_arr["tables"] = $cnt;
1419
+ // DATABASE SIZE BEFORE OPTIMIZATION
1420
+ $log_arr["before"] = rvg_format_size($start_size,3);
1421
+ // DATABASE SIZE AFTER OPTIMIZATION
1422
+ $end_size = rvg_get_db_size();
1423
+ $log_arr["after"] = rvg_format_size($end_size,3);
1424
+ // TOTAL SAVING
1425
+ $log_arr["savings"] = rvg_format_size(($start_size - $end_size),3);
1426
+ // WRITE RESULTS TO LOG FILE
1427
+ rvg_write_log($log_arr);
1428
+
1429
+ $total_savings = rvg_odb_get_option('rvg_odb_total_savings');
1430
+ $total_savings += ($start_size - $end_size);
1431
+ rvg_odb_update_option('rvg_odb_total_savings',$total_savings);
1432
+
1433
+ } // rvg_optimize_db_cron()
1434
+
1435
+
1436
+ /********************************************************************************************
1437
+ *
1438
+ * DELETE THE REVISIONS
1439
+ *
1440
+ * v3.2: MULTISITE
1441
+ *
1442
+ ********************************************************************************************/
1443
+ function rvg_delete_revisions($results, $display, $max_revisions)
1444
+ {
1445
+ global $wpdb;
1446
+
1447
+ $nr = 1;
1448
+ $total_deleted = 0;
1449
+
1450
+ for($i=0; $i<count($results); $i++)
1451
+ { $nr_to_delete = $results[$i]['cnt'] - $max_revisions;
1452
+ $total_deleted += $nr_to_delete;
1453
+
1454
+ if($display)
1455
+ {
1456
+ ?>
1457
+ <tr>
1458
+ <td align="right" valign="top"><?php echo $nr?>.</td>
1459
+ <td align="left" valign="top"><?php echo $results[$i]['site']?></td>
1460
+ <td valign="top" class="odb-bold"><?php echo $results[$i]['post_title']?></td>
1461
+ <td valign="top"><?php
1462
+ } // if($display)
1463
+
1464
+ $sql_get_posts = "
1465
+ SELECT `ID`, `post_modified`
1466
+ FROM ".$results[$i]['site']."posts
1467
+ WHERE `post_parent`=".$results[$i]['post_parent']."
1468
+ AND `post_type`='revision'
1469
+ ORDER BY `post_modified` ASC
1470
+ ";
1471
+
1472
+ $results_get_posts = $wpdb->get_results($sql_get_posts);
1473
+
1474
+ for($j=0; $j<$nr_to_delete; $j++)
1475
+ {
1476
+ if($display) echo $results_get_posts[$j]->post_modified.'<br />';
1477
+
1478
+ $sql_delete = "
1479
+ DELETE FROM ".$results[$i]['site']."posts
1480
+ WHERE `ID` = ".$results_get_posts[$j]->ID."
1481
+ ";
1482
+ $wpdb->get_results($sql_delete);
1483
+
1484
+ } // for($j=0; $j<$nr_to_delete; $j++)
1485
+
1486
+ $nr++;
1487
+ if($display)
1488
+ {
1489
+ ?></td>
1490
+ <td align="right" valign="top" class="odb-bold"><?php echo $nr_to_delete?></td>
1491
+ </tr>
1492
+ <?php
1493
+ } // if($display)
1494
+ } // for($i=0; $i<count($results); $i++)
1495
+
1496
+ return $total_deleted;
1497
+ } // rvg_delete_revisions()
1498
+
1499
+
1500
+ /********************************************************************************************
1501
+ *
1502
+ * DELETE TRASHED POSTS AND PAGES
1503
+ *
1504
+ * v3.2: MULTISITE
1505
+ *
1506
+ ********************************************************************************************/
1507
+ function rvg_delete_trash($results, $display)
1508
+ {
1509
+ global $wpdb;
1510
+
1511
+ $nr = 1;
1512
+ $total_deleted = count($results);
1513
+
1514
+ for($i=0; $i<$total_deleted; $i++)
1515
+ { if($display)
1516
+ {
1517
+ ?>
1518
+ <tr>
1519
+ <td align="right" valign="top"><?php echo $nr; ?></td>
1520
+ <td align="left" valign="top"><?php echo $results[$i]['site']?></td>
1521
+ <td valign="top"><?php echo $results[$i]['post_type']; ?></td>
1522
+ <td valign="top"><?php echo $results[$i]['title']; ?></td>
1523
+ <td valign="top" nowrap="nowrap"><?php echo $results[$i]['modified']; ?></td>
1524
+ </tr>
1525
+ <?php
1526
+ }
1527
+
1528
+ if($results[$i]['post_type'] == 'comment')
1529
+ { // DELETE META DATA (IF ANY...)
1530
+ $sql_delete = "
1531
+ DELETE FROM ".$results[$i]['site']."commentmeta
1532
+ WHERE `comment_id` = ".$results[$i]['id']."
1533
+ ";
1534
+ $wpdb->get_results($sql_delete);
1535
+ }
1536
+
1537
+ // DELETE TRASHED POSTS / PAGES
1538
+ $sql_delete = "
1539
+ DELETE FROM ".$results[$i]['site']."posts
1540
+ WHERE `post_status` = 'trash'
1541
+ ";
1542
+ $wpdb->get_results($sql_delete);
1543
+
1544
+ // DELETE TRASHED COMMENTS
1545
+ $sql_delete = "
1546
+ DELETE FROM ".$results[$i]['site']."comments
1547
+ WHERE `comment_approved` = 'trash'
1548
+ ";
1549
+ $wpdb->get_results($sql_delete);
1550
+
1551
+ $nr++;
1552
+ } // for($i=0; $i<count($results); $i++)
1553
+
1554
+ return $total_deleted;
1555
+
1556
+ } // rvg_delete_trash()
1557
+
1558
+
1559
+ /********************************************************************************************
1560
+ *
1561
+ * DELETE SPAMMED ITEMS
1562
+ *
1563
+ * v3.2: MULTISITE
1564
+ *
1565
+ ********************************************************************************************/
1566
+ function rvg_delete_spam($results, $display)
1567
+ {
1568
+ global $wpdb;
1569
+
1570
+ $nr = 1;
1571
+ $total_deleted = count($results);
1572
+ for($i=0; $i<count($results); $i++)
1573
+ { if($display)
1574
+ {
1575
+ ?>
1576
+ <tr>
1577
+ <td align="right" valign="top"><?php echo $nr; ?></td>
1578
+ <td align="left" valign="top"><?php echo $results[$i]['site']?></td>
1579
+ <td valign="top"><?php echo $results[$i]['comment_author']; ?></td>
1580
+ <td valign="top"><?php echo $results[$i]['comment_author_email']; ?></td>
1581
+ <td valign="top" nowrap="nowrap"><?php echo $results[$i]['comment_date']; ?></td>
1582
+ </tr>
1583
+ <?php
1584
+ } // if($display)
1585
+
1586
+ $sql_delete = "
1587
+ DELETE FROM ".$results[$i]['site']."commentmeta
1588
+ WHERE `comment_id` = ".$results[$i]['comment_ID']."
1589
+ ";
1590
+ $wpdb->get_results($sql_delete);
1591
+
1592
+ $sql_delete = "
1593
+ DELETE FROM ".$results[$i]['site']."comments
1594
+ WHERE `comment_approved` = 'spam'
1595
+ ";
1596
+ $wpdb->get_results($sql_delete);
1597
+
1598
+ $nr++;
1599
+ } // for($i=0; $i<count($results); $i++)
1600
+
1601
+ return $total_deleted;
1602
+
1603
+ } // rvg_delete_spam()
1604
+
1605
+
1606
+ /********************************************************************************************
1607
+ *
1608
+ * DELETE UNUSED TAGS
1609
+ *
1610
+ * v3.2: MULTISITE
1611
+ * v3.4.9: BUG FIX ($i should have been $j)
1612
+ *
1613
+ ********************************************************************************************/
1614
+ function rvg_delete_tags()
1615
+ {
1616
+ global $odb_ms_blogids, $odb_ms_prefixes;
1617
+
1618
+ $total_deleted = 0;
1619
+
1620
+ // LOOP THROUGH THE NETWORK
1621
+ for($i=0; $i<count($odb_ms_blogids); $i++)
1622
+ {
1623
+ $tags = get_terms('post_tag', array('hide_empty' => 0));
1624
+ for($j=0; $j<count($tags); $j++)
1625
+ {
1626
+ if($tags[$j]->count < 1)
1627
+ { if(!rvg_delete_tags_is_scheduled($tags[$j]->term_id, $odb_ms_prefixes[$i]))
1628
+ { // v3.0: TAG NOT USED IN SCHEDULED POSTS: CAN BE DELETED
1629
+ $total_deleted++;
1630
+ wp_delete_term($tags[$j]->term_id, 'post_tag');
1631
+ }
1632
+ }
1633
+ } // for($j=0; $j<count($tags); $j++)
1634
+ } // for($i=0; $i<count($odb_ms_blogids); $i++)
1635
+
1636
+ return $total_deleted;
1637
+ } // rvg_delete_tags()
1638
+
1639
+
1640
+ /********************************************************************************************
1641
+ *
1642
+ * IS THE UNUSED TAG USED IN ONE OR MORE SCHEDULED POSTS?
1643
+ *
1644
+ * Since: v3.0
1645
+ *
1646
+ * v3.2: MULTISITE
1647
+ *
1648
+ ********************************************************************************************/
1649
+ function rvg_delete_tags_is_scheduled($term_id, $odb_prefix)
1650
+ {
1651
+ global $wpdb;
1652
+
1653
+ $sql_get_posts = "
1654
+ SELECT p.post_status
1655
+ FROM ".$odb_prefix."term_relationships t, ".$odb_prefix."posts p
1656
+ WHERE t.term_taxonomy_id = '".$term_id."'
1657
+ AND t.object_id = p.ID
1658
+ ";
1659
+
1660
+ $results_get_posts = $wpdb->get_results($sql_get_posts);
1661
+ for($i=0; $i<count($results_get_posts); $i++)
1662
+ if($results_get_posts[$i]->post_status == 'future') return true;
1663
+
1664
+ return false;
1665
+
1666
+ } // rvg_delete_tags_is_scheduled()
1667
+
1668
+
1669
+ /********************************************************************************************
1670
+ *
1671
+ * DELETE EXPIRED TRANSIENTS
1672
+ *
1673
+ * v3.2: MULTISITE
1674
+ * v3.4.7: from now on it uses the delete_transient() and delete_site_transients() functions
1675
+ *
1676
+ ********************************************************************************************/
1677
+ function rvg_delete_transients()
1678
+ {
1679
+ global $wpdb, $odb_ms_prefixes;
1680
+
1681
+ $delay = time() - 60; // ONE MINUTE DELAY
1682
+
1683
+ $total_deleted = 0;
1684
+
1685
+ // LOOP THROUGH THE NETWORK
1686
+ for($i=0; $i<count($odb_ms_prefixes); $i++)
1687
+ {
1688
+ // FIND EXPIRED TRANSIENTS
1689
+ $sql = "
1690
+ SELECT `option_name`
1691
+ FROM ".$odb_ms_prefixes[$i]."options
1692
+ WHERE (
1693
+ option_name LIKE '_transient_timeout_%'
1694
+ OR option_name LIKE '_site_transient_timeout_%'
1695
+ )
1696
+ AND option_value < '$delay'
1697
+ ";
1698
+
1699
+ $results = $wpdb->get_results($sql);
1700
+ $total_deleted += count($results);
1701
+
1702
+ // LOOP THROUGH THE RESULTS
1703
+ for($j=0; $j<count($results); $j++)
1704
+ {
1705
+ if(substr($results[$j]->option_name, 0, 19) == '_transient_timeout_')
1706
+ { // _transient_timeout_%
1707
+ $transient = substr($results[$j]->option_name, 19);
1708
+ // DELETE THE TRANSIENT
1709
+ delete_transient($transient);
1710
+ }
1711
+ else
1712
+ { // _site_transient_timeout_%
1713
+ $transient = substr($results[$j]->option_name, 24);
1714
+ // DELETE THE TRANSIENT
1715
+ delete_site_transient($transient);
1716
+ }
1717
+ } // for($j=0; $j<count($results); $j++)
1718
+
1719
+ } // for($i=0; $i<count($odb_ms_prefixes); $i++)
1720
+ return $total_deleted;
1721
+ } // rvg_delete_transients()
1722
+
1723
+
1724
+ /********************************************************************************************
1725
+ *
1726
+ * DELETE PINGBACKS AND TRACKBACKS
1727
+ *
1728
+ * Since: v3.1
1729
+ *
1730
+ * v3.2: MULTISITE
1731
+ *
1732
+ ********************************************************************************************/
1733
+ function rvg_delete_pingbacks()
1734
+ {
1735
+ global $wpdb, $odb_ms_prefixes;
1736
+
1737
+ $total_deleted = 0;
1738
+
1739
+ // LOOP THROUGH THE NETWORK
1740
+ for($i=0; $i<count($odb_ms_prefixes); $i++)
1741
+ {
1742
+ $sql = "
1743
+ SELECT `comment_ID`
1744
+ FROM ".$odb_ms_prefixes[$i]."comments
1745
+ WHERE (
1746
+ `comment_type` = 'pingback'
1747
+ OR `comment_type` = 'trackback'
1748
+ )
1749
+ ";
1750
+
1751
+ $results = $wpdb->get_results($sql);
1752
+ $total_deleted = count($results);
1753
+
1754
+ for($j=0; $j<count($results); $j++)
1755
+ { // DELETE METADATA FOR THIS COMMENT (IF ANY)
1756
+ $sql_delete_meta = "
1757
+ DELETE FROM ".$odb_ms_prefixes[$i]."commentmeta
1758
+ WHERE `comment_id` = ".$results[$j]->comment_ID."
1759
+ ";
1760
+ $wpdb->get_results($sql_delete_meta);
1761
+ }
1762
+
1763
+ // DELETE COMMENTS
1764
+ $sql_delete_comments = "
1765
+ DELETE FROM ".$odb_ms_prefixes[$i]."comments
1766
+ WHERE (
1767
+ `comment_type` = 'pingback'
1768
+ OR `comment_type` = 'trackback'
1769
+ )
1770
+ ";
1771
+ $wpdb->get_results($sql_delete_comments);
1772
+ }
1773
+
1774
+ return $total_deleted;
1775
+ } // rvg_delete_pingbacks()
1776
+
1777
+
1778
+ /********************************************************************************************
1779
+ *
1780
+ * DELETE ORPHAN POSTMETA RECORDS
1781
+ *
1782
+ * Since: v2.2.7
1783
+ *
1784
+ * v3.2: MULTISITE
1785
+ *
1786
+ ********************************************************************************************/
1787
+ function rvg_delete_orphans($display)
1788
+ {
1789
+ global $wpdb, $odb_ms_prefixes;
1790
+
1791
+ $meta_orphans = 0;
1792
+ $post_orphans = 0;
1793
+
1794
+ // LOOP THROUGH THE NETWORK
1795
+ for($i=0; $i<count($odb_ms_prefixes); $i++)
1796
+ {
1797
+ // DELETE POST ORPHANS (AUTO DRAFTS)
1798
+ $sql_delete = "
1799
+ SELECT COUNT(*) cnt
1800
+ FROM ".$odb_ms_prefixes[$i]."posts
1801
+ WHERE ID NOT IN (SELECT post_id FROM ".$odb_ms_prefixes[$i]."postmeta)
1802
+ AND post_status = 'auto-draft'
1803
+ ";
1804
+
1805
+ $results = $wpdb->get_results($sql_delete);
1806
+
1807
+ $post_orphans = $results[0]->cnt;
1808
+
1809
+ if($post_orphans > 0)
1810
+ { $sql_delete = "
1811
+ DELETE FROM ".$odb_ms_prefixes[$i]."posts
1812
+ WHERE ID NOT IN (SELECT post_id FROM ".$odb_ms_prefixes[$i]."postmeta)
1813
+ AND post_status = 'auto-draft'
1814
+ ";
1815
+ $wpdb->get_results($sql_delete);
1816
+ }
1817
+
1818
+ // DELETE POSTMETA ORPHANS
1819
+ $sql_delete = "
1820
+ SELECT COUNT(*) cnt
1821
+ FROM ".$odb_ms_prefixes[$i]."postmeta
1822
+ WHERE post_id NOT IN (SELECT ID FROM ".$odb_ms_prefixes[$i]."posts)
1823
+ ";
1824
+
1825
+ $results = $wpdb->get_results($sql_delete);
1826
+
1827
+ $meta_orphans = $results[0]->cnt;
1828
+
1829
+ if($meta_orphans > 0)
1830
+ { $sql_delete = "
1831
+ DELETE FROM ".$odb_ms_prefixes[$i]."postmeta
1832
+ WHERE post_id NOT IN (SELECT ID FROM ".$odb_ms_prefixes[$i]."posts)
1833
+ ";
1834
+ $wpdb->get_results($sql_delete);
1835
+ }
1836
+ }
1837
+
1838
+ return ($meta_orphans + $post_orphans);
1839
+
1840
+ } // rvg_delete_orphans()
1841
+
1842
+
1843
+ /********************************************************************************************
1844
+ *
1845
+ * OPTIMIZE DATABASE TABLES
1846
+ *
1847
+ ********************************************************************************************/
1848
+ function rvg_optimize_tables($display)
1849
+ {
1850
+ global $wpdb;
1851
+
1852
+ # v3.5.1 - SKIP VIEWS
1853
+ $tables = $wpdb->get_results("SHOW FULL TABLES FROM `".DB_NAME."` WHERE table_type = 'BASE TABLE'", ARRAY_N);
1854
+ // print_r($tables);
1855
+
1856
+ $cnt = 0;
1857
+ for ($i=0; $i<count($tables); $i++)
1858
+ {
1859
+ $excluded = rvg_odb_get_option('rvg_ex_'.$tables[$i][0]);
1860
+
1861
+ if(!$excluded)
1862
+ { # TABLE NOT EXCLUDED
1863
+ $cnt++;
1864
+
1865
+ // v3.1.4
1866
+ $sql = "
1867
+ SELECT engine, (data_length + index_length) AS size, table_rows
1868
+ FROM information_schema.TABLES
1869
+ WHERE table_schema = '".DB_NAME."'
1870
+ AND table_name = '".$tables[$i][0]."'
1871
+ ";
1872
+ $table_info = $wpdb->get_results($sql);
1873
+
1874
+ // v3.1.4
1875
+ if(strtolower($table_info[0]->engine) == 'innodb')
1876
+ { // SKIP InnoDB tables
1877
+ $msg = __('InnoDB table: skipped...', 'rvg-optimize-database');
1878
+ }
1879
+ else
1880
+ { $query = "OPTIMIZE TABLE ".$tables[$i][0];
1881
+ $result = $wpdb->get_results($query);
1882
+ $msg = $result[0]->Msg_text;
1883
+ $msg = str_replace('OK', __('<span class="odb-optimized">TABLE OPTIMIZED</span>', 'rvg-optimize-database'), $msg);
1884
+ $msg = str_replace('Table is already up to date', __('Table is already up to date', 'rvg-optimize-database'), $msg);
1885
+ }
1886
+
1887
+ if($display)
1888
+ { // NOT FROM THE SCEDULER
1889
+ ?>
1890
+ <tr>
1891
+ <td align="right" valign="top"><?php echo $cnt?>.</td>
1892
+ <td valign="top" class="odb-bold"><?php echo $tables[$i][0] ?></td>
1893
+ <td valign="top"><?php echo $msg ?></td>
1894
+ <td valign="top"><?php echo $table_info[0]->engine ?></td>
1895
+ <td align="right" valign="top"><?php echo $table_info[0]->table_rows ?></td>
1896
+ <td align="right" valign="top"><?php echo rvg_format_size($table_info[0]->size) ?></td>
1897
+ </tr>
1898
+ <?php
1899
+ } // if($display)
1900
+ } // if(!$excluded)
1901
+ } // for ($i=0; $i<count($tables); $i++)
1902
+ return $cnt;
1903
+
1904
+ } // rvg_optimize_tables()
1905
+
1906
+
1907
+ /********************************************************************************************
1908
+ *
1909
+ * WRITE LINE TO LOG FILE
1910
+ *
1911
+ ********************************************************************************************/
1912
+ function rvg_write_log($log_arr)
1913
+ {
1914
+ global $odb_version;
1915
+
1916
+ $rvg_odb_logging_on = rvg_odb_get_option('rvg_odb_logging_on');
1917
+ if(!$rvg_odb_logging_on)
1918
+ { $rvg_odb_logging_on = 'N';
1919
+ rvg_odb_update_option('rvg_odb_logging_on', $rvg_odb_logging_on);
1920
+ }
1921
+
1922
+ if($rvg_odb_logging_on == "Y")
1923
+ { $file = dirname(__FILE__).'/rvg-optimize-db-log.html';
1924
+ if(!file_exists($file))
1925
+ {
1926
+ // NEW LOG FILE
1927
+ $html = '
1928
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
1929
+ <html xmlns="http://www.w3.org/1999/xhtml">
1930
+ <head>
1931
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
1932
+ <title>Optimize Database after Deleting Revisions v'.$odb_version.' - LOG</title>
1933
+ <style type="text/css">
1934
+ body, td, th {
1935
+ font-family: Arial, Helvetica, sans-serif;
1936
+ font-size: 12px;
1937
+ }
1938
+ th {
1939
+ border-top:solid 1px #000;
1940
+ border-bottom:solid 1px #000;
1941
+ }
1942
+ td {
1943
+ padding-bottom:4px;
1944
+ border-bottom:dotted 1px #CCC;
1945
+ }
1946
+ #header {
1947
+ margin-left:6px;
1948
+ margin-bottom:8px;
1949
+ }
1950
+ #header a {
1951
+ text-decoration:none;
1952
+ font-weight:bold;
1953
+ }
1954
+ </style>
1955
+ </head>
1956
+ <body>
1957
+ <div id="header">
1958
+ <h2><a href="https://wordpress.org/plugins/rvg-optimize-database/" target="_blank">Optimize Database after Deleting Revisions v'.$odb_version.'</a></h2>
1959
+ '.__('A WordPress Plugin by','rvg-optimize-database').' <a href="http://cagewebdev.com" target="_blank"><span class="odb-bold">CAGE Web Design</span></a> | <a href="http://rvg.cage.nl" target="_blank"><span class="odb-bold">Rolf van Gelder</span></a>, Eindhoven, '.__('The Netherlands','rvg-optimize-database').'</span>
1960
+ </div>
1961
+ <table width="100%" border="0" cellspacing="6" cellpadding="1">
1962
+ <tr>
1963
+ <th width="8%" align="left" valign="top">'.__('time','rvg-optimize-database').'</th>
1964
+ <th width="8%" align="right" valign="top">'.__('deleted<br />revisions','rvg-optimize-database').'</th>
1965
+ <th width="8%" align="right" valign="top">'.__('deleted<br />trash','rvg-optimize-database').'</th>
1966
+ <th width="8%" align="right" valign="top">'.__('deleted<br />spam','rvg-optimize-database').'</th>
1967
+ <th width="8%" align="right" valign="top">'.__('deleted<br />tags','rvg-optimize-database').'</th>
1968
+ <th width="8%" align="right" valign="top">'.__('deleted<br />transients','rvg-optimize-database').'</th>
1969
+ <th width="8%" align="right" valign="top">'.__('deleted<br />pingbacks<br />trackbacks','rvg-optimize-database').'</th>
1970
+ <th width="8%" align="right" valign="top">'.__('deleted<br />orphans','rvg-optimize-database').'</th>
1971
+ <th width="8%" align="right" valign="top">'.__('nr of optimized tables','rvg-optimize-database').'</th>
1972
+ <th width="8%" align="right" valign="top">'.__('database size BEFORE','rvg-optimize-database').'</th>
1973
+ <th width="8%" align="right" valign="top">'.__('database size AFTER','rvg-optimize-database').'</th>
1974
+ <th width="8%" align="right" valign="top">'.__('SAVINGS','rvg-optimize-database').'</th>
1975
+ </tr>
1976
+ </table>
1977
+ ';
1978
+
1979
+ file_put_contents($file,$html,FILE_APPEND);
1980
+ }
1981
+
1982
+ $html = '
1983
+ <table width="100%" border="0" cellspacing="6" cellpadding="0">
1984
+ <tr>
1985
+ <td width="8%" valign="top"><span class="odb-bold">'.$log_arr["time"].'</span></td>
1986
+ <td width="8%" align="right" valign="top">'.$log_arr["revisions"].'</td>
1987
+ <td width="8%" align="right" valign="top">'.$log_arr["trash"].'</td>
1988
+ <td width="8%" align="right" valign="top">'.$log_arr["spam"].'</td>
1989
+ <td width="8%" align="right" valign="top">'.$log_arr["tags"].'</td>
1990
+ <td width="8%" align="right" valign="top">'.$log_arr["transients"].'</td>
1991
+ <td width="8%" align="right" valign="top">'.$log_arr["pingbacks"].'</td>
1992
+ <td width="8%" align="right" valign="top">'.$log_arr["orphans"].'</td>
1993
+ <td width="8%" align="right" valign="top">'.$log_arr["tables"].'</td>
1994
+ <td width="8%" align="right" valign="top">'.$log_arr["before"].'</td>
1995
+ <td width="8%" align="right" valign="top">'.$log_arr["after"].'</td>
1996
+ <td width="8%" align="right" valign="top">'.$log_arr["savings"].'</td>
1997
+ </tr>
1998
+ </table>
1999
+ ';
2000
+
2001
+ // print_r($log_arr);
2002
+ file_put_contents($file,$html,FILE_APPEND);
2003
+ }
2004
+
2005
+ } // rvg_write_log()
2006
+
2007
+
2008
+ /********************************************************************************************
2009
+ *
2010
+ * GET REVISIONS
2011
+ *
2012
+ * V3.2: MULTISITE
2013
+ *
2014
+ ********************************************************************************************/
2015
+ function rvg_get_revisions($max_revisions)
2016
+ {
2017
+ global $wpdb, $odb_ms_prefixes;
2018
+
2019
+ $res_arr = array();
2020
+
2021
+ $index = 0;
2022
+ for($i=0; $i<count($odb_ms_prefixes); $i++)
2023
+ { $sql = "
2024
+ SELECT `post_parent`, `post_title`, COUNT(*) cnt
2025
+ FROM ".$odb_ms_prefixes[$i]."posts
2026
+ WHERE `post_type` = 'revision'
2027
+ GROUP BY `post_parent`
2028
+ HAVING COUNT(*) > ".$max_revisions."
2029
+ ORDER BY UCASE(`post_title`)
2030
+ ";
2031
+ $res = $wpdb->get_results($sql, ARRAY_A);
2032
+
2033
+ for($j=0; $j<count($res); $j++)
2034
+ { if(isset($res[$j]))
2035
+ { $res_arr[$index] = $res[$j];
2036
+ $res_arr[$index]['site'] = $odb_ms_prefixes[$i];
2037
+ $index++;
2038
+ }
2039
+ }
2040
+ }
2041
+
2042
+ return $res_arr;
2043
+
2044
+ } // rvg_get_revisions()
2045
+
2046
+
2047
+ /********************************************************************************************
2048
+ *
2049
+ * GET TRASHED POSTS / PAGES AND COMMENTS
2050
+ *
2051
+ * v3.2: MULTISITE
2052
+ *
2053
+ ********************************************************************************************/
2054
+ function rvg_get_trash()
2055
+ {
2056
+ global $wpdb, $odb_ms_prefixes;
2057
+
2058
+ $res_arr = array();
2059
+
2060
+ $index = 0;
2061
+
2062
+ // LOOP TROUGH SITES
2063
+ for($i=0; $i<count($odb_ms_prefixes); $i++)
2064
+ {
2065
+ $sql = "
2066
+ SELECT `ID` AS id, 'post' AS post_type, `post_title` AS title, `post_modified` AS modified
2067
+ FROM ".$odb_ms_prefixes[$i]."posts
2068
+ WHERE `post_status` = 'trash'
2069
+ UNION ALL
2070
+ SELECT `comment_ID` AS id, 'comment' AS post_type, `comment_author_IP` AS title, `comment_date` AS modified
2071
+ FROM ".$odb_ms_prefixes[$i]."comments
2072
+ WHERE `comment_approved` = 'trash'
2073
+ ORDER BY post_type, UCASE(title)
2074
+ ";
2075
+ $res = $wpdb->get_results($sql, ARRAY_A);
2076
+
2077
+ if($res != null)
2078
+ { $res_arr[$index] = $res[0];
2079
+ $res_arr[$index]['site'] = $odb_ms_prefixes[$i];
2080
+ $index++;
2081
+ }
2082
+ }
2083
+
2084
+ return $res_arr;
2085
+
2086
+ } // rvg_get_trash()
2087
+
2088
+
2089
+ /********************************************************************************************
2090
+ *
2091
+ * GET SPAMMED COMMENTS
2092
+ *
2093
+ * v3.2: MULTISITE
2094
+ *
2095
+ ********************************************************************************************/
2096
+ function rvg_get_spam()
2097
+ {
2098
+ global $wpdb, $odb_ms_prefixes;
2099
+
2100
+ $res_arr = array();
2101
+
2102
+ $index = 0;
2103
+ // LOOP THROUGH SITES
2104
+ for($i=0; $i<count($odb_ms_prefixes); $i++)
2105
+ {
2106
+ $sql = "
2107
+ SELECT `comment_ID`, `comment_author`, `comment_author_email`, `comment_date`
2108
+ FROM ".$odb_ms_prefixes[$i]."comments
2109
+ WHERE `comment_approved` = 'spam'
2110
+ ORDER BY UCASE(`comment_author`)
2111
+ ";
2112
+ $res = $wpdb->get_results($sql, ARRAY_A);
2113
+
2114
+ if($res != null)
2115
+ { $res_arr[$index] = $res[0];
2116
+ $res_arr[$index]['site'] = $odb_ms_prefixes[$i];
2117
+ $index++;
2118
+ }
2119
+ }
2120
+
2121
+ return $res_arr;
2122
+
2123
+ } // rvg_get_spam()
2124
+
2125
+
2126
+ /********************************************************************************************
2127
+ *
2128
+ * CALCULATE THE SIZE OF THE WORDPRESS DATABASE (IN BYTES)
2129
+ *
2130
+ ********************************************************************************************/
2131
+ function rvg_get_db_size()
2132
+ {
2133
+ global $wpdb;
2134
+
2135
+ // v3.1.4
2136
+ $sql = "
2137
+ SELECT SUM(data_length + index_length) AS size
2138
+ FROM information_schema.TABLES
2139
+ WHERE table_schema = '".DB_NAME."'
2140
+ GROUP BY table_schema
2141
+ ";
2142
+
2143
+ $res = $wpdb->get_results($sql);
2144
+
2145
+ return $res[0]->size;
2146
+
2147
+ } // rvg_get_db_size()
2148
+
2149
+
2150
+ /********************************************************************************************
2151
+ *
2152
+ * FORMAT SIZES FROM BYTES TO KB OR MB
2153
+ *
2154
+ ********************************************************************************************/
2155
+ function rvg_format_size($size, $precision=1)
2156
+ {
2157
+ if($size>1024*1024)
2158
+ $table_size = (round($size/(1024*1024),$precision)).' MB';
2159
+ else
2160
+ $table_size = (round($size/1024,$precision)).' KB';
2161
+
2162
+ return $table_size;
2163
+ } // rvg_format_size()
2164
+ ?>