Settings'); return $links; } // odb_settings_link() add_filter('plugin_action_links_'.plugin_basename(__FILE__), 'odb_settings_link'); /******************************************************************************************** * * ADD THE '1 CLICK OPTIMIZE DATABASE' ITEM TO THE ADMIN BAR (IF ACTIVATED) * ********************************************************************************************/ function rvg_odb_admin_bar() { global $wp_admin_bar; if (!is_super_admin() || !is_admin_bar_showing()) return; $siteurl = site_url('/'); $wp_admin_bar->add_menu( array( 'id' => 'optimize', 'title' => __('Optimize DB (1 click)','rvg-optimize-database'), 'href' => $siteurl.'wp-admin/tools.php?page=rvg-optimize-db.php&action=run' )); } // rvg_odb_admin_bar() $rvg_odb_adminbar = rvg_odb_get_option('rvg_odb_adminbar'); if($rvg_odb_adminbar == "Y") add_action('wp_before_admin_bar_render', 'rvg_odb_admin_bar'); /******************************************************************************************** * * ACTIONS FOR THE SCHEDULER * * http://codex.wordpress.org/Plugin_API/Filter_Reference/cron_schedules * ********************************************************************************************/ function rvg_extra_schedules($schedules) { // ADD A WEEKLY SCHEDULE $schedules['weekly'] = array( 'interval' => 604800, 'display' => __('Once Weekly') ); return $schedules; } // rvg_extra_schedules() add_filter( 'cron_schedules', 'rvg_extra_schedules' ); add_action( 'rvg_optimize_database', 'rvg_optimize_db_cron' ); // REMOVE SCHEDULED TASK WHEN DEACTIVATED register_deactivation_hook( __FILE__, 'rvg_deactivate_plugin' ); function rvg_deactivate_plugin() { // CLEAR CURRENT SCHEDULE (IF ANY) wp_clear_scheduled_hook('rvg_optimize_database'); wp_clear_scheduled_hook('rvg_scheduled_run'); } // rvg_deactivate_plugin() // RE-SCHEDULE TASK WHEN RE-ACTIVATED (OR AFTER UPDATE) register_activation_hook( __FILE__, 'rvg_activate_plugin' ); function rvg_activate_plugin() { $rvg_odb_schedule = rvg_odb_get_option('rvg_odb_schedule'); if($rvg_odb_schedule) { // PLUGIN RE-ACTIVATED: START SCHEDULER if( !wp_next_scheduled( 'rvg_optimize_database' )) wp_schedule_event( time(), $rvg_odb_schedule, 'rvg_optimize_database' ); } } // rvg_activate_plugin() register_uninstall_hook( __FILE__, 'rvg_odb_uninstall'); function rvg_odb_uninstall() { global $wpdb, $odb_ms_prefixes; $tables = $wpdb->get_results("SHOW FULL TABLES FROM `".DB_NAME."` WHERE table_type = 'BASE TABLE'", ARRAY_N); // DELETE ALL POSSIBLY EXCLUDED TABLES FROM THE OPTIONS for ($i=0; $ibase_prefix; $odb_ms_blogids[0] = 1; if (function_exists('is_multisite') && is_multisite()) { $odb_blogids = $wpdb->get_col("SELECT blog_id FROM ".$wpdb->base_prefix."blogs"); // FOR INSTANCE: mywp_2_, mywp_3_ etc. for($i=1; $ibase_prefix.$odb_blogids[$i].'_'; $odb_ms_blogids[$i] = $odb_blogids[$i]; } } // if (function_exists('is_multisite') && is_multisite()) } // rvg_odb_network_info() /******************************************************************************************** * * GET AN OPTION FROM THE ROOT SITE OPTION TABLE * * Revision: v3.4.2 * ********************************************************************************************/ function rvg_odb_get_option($option, $default = false) { if(is_multisite() && function_exists('is_plugin_active_for_network') && is_plugin_active_for_network('rvg-optimize-db/rvg-optimize-db.php')) { return get_site_option($option, $default); } else { return get_option($option, $default); } } // rvg_odb_get_option() /******************************************************************************************** * * SAVE AN OPTION TO THE ROOT SITE OPTION TABLE * * Revision: v3.4.2 * ********************************************************************************************/ function rvg_odb_update_option($option, $value) { if(is_multisite() && function_exists('is_plugin_active_for_network') && is_plugin_active_for_network('rvg-optimize-db/rvg-optimize-db.php')) { return update_site_option( $option, $value); } else { return update_option( $option, $value); } } // rvg_odb_update_option() /******************************************************************************************** * * DELETE AN OPTION TO THE ROOT SITE OPTION TABLE * * Since: v3.4.2 * ********************************************************************************************/ function rvg_odb_delete_option($option) { if(is_multisite() && function_exists('is_plugin_active_for_network') && is_plugin_active_for_network('rvg-optimize-db/rvg-optimize-db.php')) { return delete_site_option($option); } else { return delete_option($option); } } // rvg_odb_delete_option() /******************************************************************************************** * * CREATE THE SETTINGS PAGE * ********************************************************************************************/ function rvg_odb_settings_page() { global $odb_version, $odb_release_date, $wpdb, $table_prefix, $odb_ms_prefixes; // v3.5.1 - SKIP VIEWS $tables = $wpdb->get_results("SHOW FULL TABLES FROM `".DB_NAME."` WHERE table_type = 'BASE TABLE'", ARRAY_N); // v3.3 - GET NETWORK INFORMATION (MULTISITE) rvg_odb_network_info(); // v3.3 - GET THE OPTIONS FROM THE TABLES OF THE MAIN SITE (IN CASE OF MULTISITE) $current_datetime = Date('YmdHis'); $current_date = substr($current_datetime, 0, 8); $current_hour = substr($current_datetime, 8, 2); if(isset($_REQUEST['delete_log'])) if($_REQUEST['delete_log'] == "Y") @unlink(dirname(__FILE__).'/rvg-optimize-db-log.html'); // SAVE THE SETTINGS if (isset($_POST['info_update'])) { // v2.8.3 check_admin_referer('odb_action', 'odb_nonce'); // DELETE ALL EXCLUDED TABLES for ($i=0; $i $value) { if(substr($key,0,3) == 'cb_') rvg_odb_update_option('rvg_ex_'.substr($key,3).'', 'excluded'); } if(isset($_POST['rvg_odb_number'])) { $rvg_odb_number = trim($_POST['rvg_odb_number']); rvg_odb_update_option('rvg_odb_number', $rvg_odb_number); } $rvg_clear_trash = 'N'; if(isset($_POST['rvg_clear_trash'])) $rvg_clear_trash = $_POST['rvg_clear_trash']; rvg_odb_update_option('rvg_clear_trash', $rvg_clear_trash); $rvg_clear_spam = 'N'; if(isset($_POST['rvg_clear_spam'])) $rvg_clear_spam = $_POST['rvg_clear_spam']; rvg_odb_update_option('rvg_clear_spam', $rvg_clear_spam); $rvg_clear_tags = 'N'; if(isset($_POST['rvg_clear_tags'])) $rvg_clear_tags = $_POST['rvg_clear_tags']; rvg_odb_update_option('rvg_clear_tags', $rvg_clear_tags); $rvg_clear_transients = 'N'; if(isset($_POST['rvg_clear_transients'])) $rvg_clear_transients = $_POST['rvg_clear_transients']; rvg_odb_update_option('rvg_clear_transients', $rvg_clear_transients); // v3.1 $rvg_clear_pingbacks = 'N'; if(isset($_POST['rvg_clear_pingbacks'])) $rvg_clear_pingbacks = $_POST['rvg_clear_pingbacks']; rvg_odb_update_option('rvg_clear_pingbacks', $rvg_clear_pingbacks); $rvg_odb_adminbar = 'N'; if(isset($_POST['rvg_odb_adminbar'])) $rvg_odb_adminbar = $_POST['rvg_odb_adminbar']; rvg_odb_update_option('rvg_odb_adminbar', $rvg_odb_adminbar); // v3.1.3 $rvg_odb_adminmenu = 'N'; if(isset($_POST['rvg_odb_adminmenu'])) $rvg_odb_adminmenu = $_POST['rvg_odb_adminmenu']; rvg_odb_update_option('rvg_odb_adminmenu', $rvg_odb_adminmenu); $rvg_odb_logging_on = 'N'; if(isset($_POST['rvg_odb_logging_on'])) $rvg_odb_logging_on = $_POST['rvg_odb_logging_on']; rvg_odb_update_option('rvg_odb_logging_on', $rvg_odb_logging_on); $rvg_odb_schedule = ''; if(isset($_POST['rvg_odb_schedule'])) $rvg_odb_schedule = $_POST['rvg_odb_schedule']; rvg_odb_update_option('rvg_odb_schedule', $rvg_odb_schedule); $rvg_odb_schedulehour = ''; // v3.3.1 if($rvg_odb_schedule == 'daily' || $rvg_odb_schedule == 'weekly') { if(isset($_POST['rvg_odb_schedulehour'])) $rvg_odb_schedulehour = $_POST['rvg_odb_schedulehour']; rvg_odb_update_option('rvg_odb_schedulehour', $rvg_odb_schedulehour); } else // WIPE THE HOUR rvg_odb_update_option('rvg_odb_schedulehour', ''); // CLEAR CURRENT SCHEDULE (IF ANY) wp_clear_scheduled_hook('rvg_optimize_database'); // HAS TO BE SCHEDULED if($rvg_odb_schedule != '') if( !wp_next_scheduled( 'rvg_optimize_database' )) { $time = 0; if($rvg_odb_schedulehour == '') // 'hourly', 'twicedaily' $time = time(); else { // 'daily', 'weekly' if($rvg_odb_schedulehour <= $current_hour) // NEXT RUN TOMORROW $newdatetime = date('YmdHis', strtotime($current_date.$rvg_odb_schedulehour.'0000'.' + 1 day')); else // NEXT RUN TODAY $newdatetime = $current_date.$rvg_odb_schedulehour.'0000'; // DATE TO UNIX TIMESTAMP (EPOCH) $time = strtotime($newdatetime); } // SCHEDULE THE EVENT wp_schedule_event( $time, $rvg_odb_schedule, 'rvg_optimize_database' ); } // UPDATED MESSAGE echo "

". __('Optimize Database after Deleting Revisions SETTINGS UPDATED','rvg-optimize-database'). " - "; _e('Click HERE to run the optimization','rvg-optimize-database'); echo "

"; } // if (isset($_POST['info_update'])) $rvg_odb_number = rvg_odb_get_option('rvg_odb_number'); if(!$rvg_odb_number) $rvg_odb_number = '0'; $rvg_clear_trash = rvg_odb_get_option('rvg_clear_trash'); if(!$rvg_clear_trash) $rvg_clear_trash = 'N'; $rvg_clear_spam = rvg_odb_get_option('rvg_clear_spam'); if(!$rvg_clear_spam) $rvg_clear_spam = 'N'; $rvg_clear_tags = rvg_odb_get_option('rvg_clear_tags'); if(!$rvg_clear_tags) $rvg_clear_tags = 'N'; $rvg_clear_transients = rvg_odb_get_option('rvg_clear_transients'); if(!$rvg_clear_transients) $rvg_clear_transients = 'N'; // v3.1 $rvg_clear_pingbacks = rvg_odb_get_option('rvg_clear_pingbacks'); if(!$rvg_clear_pingbacks) $rvg_clear_pingbacks = 'N'; $rvg_odb_logging_on = rvg_odb_get_option('rvg_odb_logging_on'); if(!$rvg_odb_logging_on) $rvg_odb_logging_on = 'N'; $rvg_odb_schedule = rvg_odb_get_option('rvg_odb_schedule'); if(!$rvg_odb_schedule) $rvg_odb_schedule = ''; $rvg_odb_schedulehour = rvg_odb_get_option('rvg_odb_schedulehour'); $rvg_odb_adminbar = rvg_odb_get_option('rvg_odb_adminbar'); if(!$rvg_odb_adminbar) $rvg_odb_adminbar = 'N'; $rvg_odb_adminmenu = rvg_odb_get_option('rvg_odb_adminmenu'); if(!$rvg_odb_adminmenu) $rvg_odb_adminmenu = 'N'; ?> v3.5

'Optimize Database after Deleting Revisions '

: v [] - - - - -



to keep per post / page','rvg-optimize-database');?>   ALL revisions)','rvg-optimize-database');?>
/>
/>
/>
/>
/>
/>
/>
/>

CHECKED TABLES WON\'T BE OPTIMIZED!','rvg-optimize-database');?>
| |
/>

' class="odb-bold" />  

options WHERE option_name LIKE 'rvg_ex_%' "; $results = $wpdb->get_results($sql); $number_excluded = $results[0]->cnt; ?> v3.5

Optimize Database after Deleting Revisions - LOG FILE DELETED

'; ?>

: v [] - - - - -

:
:
:
:
:
:
:
:
:
:
: hrs (current server time: )
:

     



substr($current_datetime, 0, 10).'
'.substr($current_datetime,10)); // FIND REVISIONS $results = rvg_get_revisions($max_revisions); $total_deleted = 0; if(count($results)>0) { // WE HAVE REVISIONS TO DELETE! ?>
#
0) // NUMBER OF DELETED REVISIONS FOR LOG FILE $log_arr["revisions"] = $total_deleted; /**************************************************************************************** * * DELETE TRASHED ITEMS * ****************************************************************************************/ if($clear_trash == 'Y') { // GET TRASHED POSTS / PAGES AND COMMENTS $results = rvg_get_trash(); $total_deleted = 0; if(count($results)>0) { // WE HAVE TRASH TO DELETE! ?>
#
0) // NUMBER OF DELETED TRASH FOR LOG FILE $log_arr["trash"] = $total_deleted; } // if($clear_trash == 'Y') /**************************************************************************************** * * DELETE SPAMMED ITEMS * ****************************************************************************************/ if($clear_spam == 'Y') { // GET SPAMMED COMMENTS $results = rvg_get_spam(); $total_deleted = 0; if(count($results)>0) { // WE HAVE SPAM TO DELETE! ?>
#
0) } // if($clear_spam == 'Y') // NUMBER OF SPAM DELETED FOR LOG FILE $log_arr["spam"] = $total_deleted; /**************************************************************************************** * * DELETE UNUSED TAGS * ****************************************************************************************/ if($clear_tags == 'Y') { // DELETE UNUSED TAGS $total_deleted = rvg_delete_tags(); if($total_deleted>0) { // TAGS DELETED ?>
:
0) } // if($clear_tags == 'Y') // NUMBER OF tags DELETED FOR LOG FILE $log_arr["tags"] = $total_deleted; /**************************************************************************************** * * DELETE EXPIRED TRANSIENTS * ****************************************************************************************/ if($clear_transients == 'Y') { // DELETE UNUSED TAGS $total_deleted = rvg_delete_transients(); if($total_deleted>0) { // TRANSIENTS DELETED ?>
:
0) } // if($clear_transients == 'Y') // NUMBER OF transients DELETED FOR LOG FILE $log_arr["transients"] = $total_deleted; /**************************************************************************************** * * DELETE PINGBACKS AND TRACKBACKS (v3.1) * ****************************************************************************************/ if($clear_pingbacks == 'Y') { // DELETE UNUSED TAGS $total_deleted = rvg_delete_pingbacks(); if($total_deleted>0) { // PINGBACKS / TRACKBACKS DELETED ?>
:
0) } // if($clear_pingbacks == 'Y') // NUMBER OF pingbacks / trackbacks DELETED (FOR LOG FILE) $log_arr["pingbacks"] = $total_deleted; /**************************************************************************************** * * DELETE ORPHANS * ****************************************************************************************/ $total_deleted = rvg_delete_orphans(true); if($total_deleted > 0) { ?>
:



#



 



   .

    date("m/d/Y").'
'.date("H:i:s")); // FIND THE REVISIONS $results = rvg_get_revisions($max_revisions); $total_deleted = 0; if(count($results)>0) // WE HAVE REVISIONS TO DELETE! $total_deleted = rvg_delete_revisions($results, false, $max_revisions); // NUMBER OF DELETED REVISIONS FOR LOG FILE $log_arr["revisions"] = $total_deleted; $total_deleted = 0; if($clear_trash == 'Y') { // GET TRASHED POSTS / PAGES AND COMMENTS $results = rvg_get_trash(); if(count($results)>0) // WE HAVE TRASH TO DELETE! $total_deleted = rvg_delete_trash($results, false, $max_revisions); } // if($clear_trash == 'Y') // NUMBER OF DELETED TRASH FOR LOG FILE $log_arr["trash"] = $total_deleted; $total_deleted = 0; if($clear_spam == 'Y') { // GET SPAMMED COMMENTS $results = rvg_get_spam(); if(count($results)>0) // WE HAVE SPAM TO DELETE! $total_deleted = rvg_delete_spam($results, false); } // if($clear_spam == 'Y') // NUMBER OF SPAM DELETED FOR LOG FILE $log_arr["spam"] = $total_deleted; if($clear_tags == "Y") { // DELETE UNUSED TAGS $total_deleted = rvg_delete_tags(); } // NUMBER OF DELETE TAGS FOR LOG FILE $log_arr["tags"] = $total_deleted; if($clear_transients == "Y") { // DELETE TRANSIENTS $total_deleted = rvg_delete_transients(); } // NUMBER OF DELETED TAGS FOR LOG FILE $log_arr["transients"] = $total_deleted; // PINGBACKS AND TRACKBACKS (v3.1) if($clear_pingbacks == "Y") { // DELETE PINGBACKS AND TRACKBACKS $total_deleted = rvg_delete_pingbacks(); } // NUMBER OF DELETED PINGBACKS AND TRACKBACKS FOR LOG FILE $log_arr["pingbacks"] = $total_deleted; // DELETE ORPHANS $total_deleted = rvg_delete_orphans(false); // NUMBER OF ORPHANS DELETED (FOR LOG FILE) $log_arr["orphans"] = $total_deleted; // OPTIMIZE DATABASE TABLES $cnt = rvg_optimize_tables(false); // NUMBER OF TABLES $log_arr["tables"] = $cnt; // DATABASE SIZE BEFORE OPTIMIZATION $log_arr["before"] = rvg_format_size($start_size,3); // DATABASE SIZE AFTER OPTIMIZATION $end_size = rvg_get_db_size(); $log_arr["after"] = rvg_format_size($end_size,3); // TOTAL SAVING $log_arr["savings"] = rvg_format_size(($start_size - $end_size),3); // WRITE RESULTS TO LOG FILE rvg_write_log($log_arr); $total_savings = rvg_odb_get_option('rvg_odb_total_savings'); $total_savings += ($start_size - $end_size); rvg_odb_update_option('rvg_odb_total_savings',$total_savings); } // rvg_optimize_db_cron() /******************************************************************************************** * * DELETE THE REVISIONS * * v3.2: MULTISITE * ********************************************************************************************/ function rvg_delete_revisions($results, $display, $max_revisions) { global $wpdb; $nr = 1; $total_deleted = 0; for($i=0; $i . get_results($sql_get_posts); for($j=0; $j<$nr_to_delete; $j++) { if($display) echo $results_get_posts[$j]->post_modified.'
'; $sql_delete = " DELETE FROM ".$results[$i]['site']."posts WHERE `ID` = ".$results_get_posts[$j]->ID." "; $wpdb->get_results($sql_delete); } // for($j=0; $j<$nr_to_delete; $j++) $nr++; if($display) { ?> get_results($sql_delete); } // DELETE TRASHED POSTS / PAGES $sql_delete = " DELETE FROM ".$results[$i]['site']."posts WHERE `post_status` = 'trash' "; $wpdb->get_results($sql_delete); // DELETE TRASHED COMMENTS $sql_delete = " DELETE FROM ".$results[$i]['site']."comments WHERE `comment_approved` = 'trash' "; $wpdb->get_results($sql_delete); $nr++; } // for($i=0; $i get_results($sql_delete); $sql_delete = " DELETE FROM ".$results[$i]['site']."comments WHERE `comment_approved` = 'spam' "; $wpdb->get_results($sql_delete); $nr++; } // for($i=0; $i 0)); for($j=0; $jcount < 1) { if(!rvg_delete_tags_is_scheduled($tags[$j]->term_id, $odb_ms_prefixes[$i])) { // v3.0: TAG NOT USED IN SCHEDULED POSTS: CAN BE DELETED $total_deleted++; wp_delete_term($tags[$j]->term_id, 'post_tag'); } } } // for($j=0; $jget_results($sql_get_posts); for($i=0; $ipost_status == 'future') return true; return false; } // rvg_delete_tags_is_scheduled() /******************************************************************************************** * * DELETE EXPIRED TRANSIENTS * * v3.2: MULTISITE * v3.4.7: from now on it uses the delete_transient() and delete_site_transients() functions * ********************************************************************************************/ function rvg_delete_transients() { global $wpdb, $odb_ms_prefixes; $delay = time() - 60; // ONE MINUTE DELAY $total_deleted = 0; // LOOP THROUGH THE NETWORK for($i=0; $iget_results($sql); $total_deleted += count($results); // LOOP THROUGH THE RESULTS for($j=0; $joption_name, 0, 19) == '_transient_timeout_') { // _transient_timeout_% $transient = substr($results[$j]->option_name, 19); // DELETE THE TRANSIENT delete_transient($transient); } else { // _site_transient_timeout_% $transient = substr($results[$j]->option_name, 24); // DELETE THE TRANSIENT delete_site_transient($transient); } } // for($j=0; $jget_results($sql); $total_deleted = count($results); for($j=0; $jget_results($sql_delete_meta); } // DELETE COMMENTS $sql_delete_comments = " DELETE FROM ".$odb_ms_prefixes[$i]."comments WHERE ( `comment_type` = 'pingback' OR `comment_type` = 'trackback' ) "; $wpdb->get_results($sql_delete_comments); } return $total_deleted; } // rvg_delete_pingbacks() /******************************************************************************************** * * DELETE ORPHAN POSTMETA RECORDS * * Since: v2.2.7 * * v3.2: MULTISITE * ********************************************************************************************/ function rvg_delete_orphans($display) { global $wpdb, $odb_ms_prefixes; $meta_orphans = 0; $post_orphans = 0; // LOOP THROUGH THE NETWORK for($i=0; $iget_results($sql_delete); $post_orphans = $results[0]->cnt; if($post_orphans > 0) { $sql_delete = " DELETE FROM ".$odb_ms_prefixes[$i]."posts WHERE ID NOT IN (SELECT post_id FROM ".$odb_ms_prefixes[$i]."postmeta) AND post_status = 'auto-draft' "; $wpdb->get_results($sql_delete); } // DELETE POSTMETA ORPHANS $sql_delete = " SELECT COUNT(*) cnt FROM ".$odb_ms_prefixes[$i]."postmeta WHERE post_id NOT IN (SELECT ID FROM ".$odb_ms_prefixes[$i]."posts) "; $results = $wpdb->get_results($sql_delete); $meta_orphans = $results[0]->cnt; if($meta_orphans > 0) { $sql_delete = " DELETE FROM ".$odb_ms_prefixes[$i]."postmeta WHERE post_id NOT IN (SELECT ID FROM ".$odb_ms_prefixes[$i]."posts) "; $wpdb->get_results($sql_delete); } } return ($meta_orphans + $post_orphans); } // rvg_delete_orphans() /******************************************************************************************** * * OPTIMIZE DATABASE TABLES * ********************************************************************************************/ function rvg_optimize_tables($display) { global $wpdb; # v3.5.1 - SKIP VIEWS $tables = $wpdb->get_results("SHOW FULL TABLES FROM `".DB_NAME."` WHERE table_type = 'BASE TABLE'", ARRAY_N); // print_r($tables); $cnt = 0; for ($i=0; $iget_results($sql); // v3.1.4 if(strtolower($table_info[0]->engine) == 'innodb') { // SKIP InnoDB tables $msg = __('InnoDB table: skipped...', 'rvg-optimize-database'); } else { $query = "OPTIMIZE TABLE ".$tables[$i][0]; $result = $wpdb->get_results($query); $msg = $result[0]->Msg_text; $msg = str_replace('OK', __('TABLE OPTIMIZED', 'rvg-optimize-database'), $msg); $msg = str_replace('Table is already up to date', __('Table is already up to date', 'rvg-optimize-database'), $msg); } if($display) { // NOT FROM THE SCEDULER ?> . engine ?> table_rows ?> size) ?> Optimize Database after Deleting Revisions v'.$odb_version.' - LOG
'.__('time','rvg-optimize-database').' '.__('deleted
revisions','rvg-optimize-database').'
'.__('deleted
trash','rvg-optimize-database').'
'.__('deleted
spam','rvg-optimize-database').'
'.__('deleted
tags','rvg-optimize-database').'
'.__('deleted
transients','rvg-optimize-database').'
'.__('deleted
pingbacks
trackbacks','rvg-optimize-database').'
'.__('deleted
orphans','rvg-optimize-database').'
'.__('nr of optimized tables','rvg-optimize-database').' '.__('database size BEFORE','rvg-optimize-database').' '.__('database size AFTER','rvg-optimize-database').' '.__('SAVINGS','rvg-optimize-database').'
'; file_put_contents($file,$html,FILE_APPEND); } $html = '
'.$log_arr["time"].' '.$log_arr["revisions"].' '.$log_arr["trash"].' '.$log_arr["spam"].' '.$log_arr["tags"].' '.$log_arr["transients"].' '.$log_arr["pingbacks"].' '.$log_arr["orphans"].' '.$log_arr["tables"].' '.$log_arr["before"].' '.$log_arr["after"].' '.$log_arr["savings"].'
'; // print_r($log_arr); file_put_contents($file,$html,FILE_APPEND); } } // rvg_write_log() /******************************************************************************************** * * GET REVISIONS * * V3.2: MULTISITE * ********************************************************************************************/ function rvg_get_revisions($max_revisions) { global $wpdb, $odb_ms_prefixes; $res_arr = array(); $index = 0; for($i=0; $i ".$max_revisions." ORDER BY UCASE(`post_title`) "; $res = $wpdb->get_results($sql, ARRAY_A); for($j=0; $jget_results($sql, ARRAY_A); if($res != null) { $res_arr[$index] = $res[0]; $res_arr[$index]['site'] = $odb_ms_prefixes[$i]; $index++; } } return $res_arr; } // rvg_get_trash() /******************************************************************************************** * * GET SPAMMED COMMENTS * * v3.2: MULTISITE * ********************************************************************************************/ function rvg_get_spam() { global $wpdb, $odb_ms_prefixes; $res_arr = array(); $index = 0; // LOOP THROUGH SITES for($i=0; $iget_results($sql, ARRAY_A); if($res != null) { $res_arr[$index] = $res[0]; $res_arr[$index]['site'] = $odb_ms_prefixes[$i]; $index++; } } return $res_arr; } // rvg_get_spam() /******************************************************************************************** * * CALCULATE THE SIZE OF THE WORDPRESS DATABASE (IN BYTES) * ********************************************************************************************/ function rvg_get_db_size() { global $wpdb; // v3.1.4 $sql = " SELECT SUM(data_length + index_length) AS size FROM information_schema.TABLES WHERE table_schema = '".DB_NAME."' GROUP BY table_schema "; $res = $wpdb->get_results($sql); return $res[0]->size; } // rvg_get_db_size() /******************************************************************************************** * * FORMAT SIZES FROM BYTES TO KB OR MB * ********************************************************************************************/ function rvg_format_size($size, $precision=1) { if($size>1024*1024) $table_size = (round($size/(1024*1024),$precision)).' MB'; else $table_size = (round($size/1024,$precision)).' KB'; return $table_size; } // rvg_format_size() ?>