604800, 'display' => __('Once weekly', 'advanced-database-cleaner') ); // Add monthly schedule $schedules['monthly'] = array( 'interval' => 2635200, 'display' => __('Once monthly', 'advanced-database-cleaner') ); return $schedules; } /******************************************************************** * * (RE)-schedule tasks after (RE)-activation or update of the plugin * ********************************************************************/ register_activation_hook(__FILE__, 'aDBc_activate_plugin'); add_action('aDBc_optimize_scheduler', 'aDBc_optimize_tables'); add_action('aDBc_clean_scheduler', 'aDBc_clean_all_elements'); function aDBc_activate_plugin(){ // Add scheduled task for optimization if option exists $aDBc_optimize_schedule = get_option('aDBc_optimize_schedule'); if($aDBc_optimize_schedule && $aDBc_optimize_schedule != 'no_schedule'){ if(!wp_next_scheduled('aDBc_optimize_scheduler')) wp_schedule_event(time()+60, $aDBc_optimize_schedule, 'aDBc_optimize_scheduler'); } // Add scheduled task for clean-up if option exists $aDBc_clean_schedule = get_option('aDBc_clean_schedule'); if($aDBc_clean_schedule && $aDBc_clean_schedule != 'no_schedule'){ if(!wp_next_scheduled('aDBc_clean_scheduler')) wp_schedule_event(time()+60, $aDBc_clean_schedule, 'aDBc_clean_scheduler'); } // Add default settings if not exists $aDBc_settings = get_option('aDBc_settings'); if(empty($aDBc_settings)){ $aDBc_settings['left_menu'] = "1"; $aDBc_settings['top_main_msg'] = "1"; $aDBc_settings['tables_cleanup_warning'] = "1"; update_option('aDBc_settings', $aDBc_settings); } // When activating version >= 2.0.0, delete all options and tasks created by older versions in MU sites since only the main site can clean the network now if(function_exists('is_multisite') && is_multisite()){ global $wpdb; $blogs_ids = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs"); foreach($blogs_ids as $blog_id){ switch_to_blog($blog_id); if(!is_main_site()){ delete_option('aDBc_optimize_schedule'); delete_option('aDBc_clean_schedule'); wp_clear_scheduled_hook('aDBc_optimize_scheduler'); wp_clear_scheduled_hook('aDBc_clean_scheduler'); } restore_current_blog(); } } } /******************************************************************** * * Clear current scheduled tasks (if any) when deactivated * ********************************************************************/ register_deactivation_hook(__FILE__, 'aDBc_deactivate_plugin'); function aDBc_deactivate_plugin($network_wide){ wp_clear_scheduled_hook('aDBc_optimize_scheduler'); wp_clear_scheduled_hook('aDBc_clean_scheduler'); } /******************************************************************** * * Clear scheduled tasks + options if UNINSTALL * ********************************************************************/ register_uninstall_hook(__FILE__, 'aDBc_uninstall'); function aDBc_uninstall(){ // Delete options delete_option('aDBc_optimize_schedule'); delete_option('aDBc_clean_schedule'); delete_option('aDBc_settings'); // Clear scheduled tasks wp_clear_scheduled_hook('aDBc_optimize_scheduler'); wp_clear_scheduled_hook('aDBc_clean_scheduler'); // Testing for MU is useful to delete options and tasks created by older versions of the plugin ( < 2.0.0 ) in network sites if(function_exists('is_multisite') && is_multisite()){ global $wpdb; $blogs_ids = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs"); foreach($blogs_ids as $blog_id){ switch_to_blog($blog_id); delete_option('aDBc_optimize_schedule'); delete_option('aDBc_clean_schedule'); wp_clear_scheduled_hook('aDBc_optimize_scheduler'); wp_clear_scheduled_hook('aDBc_clean_scheduler'); restore_current_blog(); } } } /******************************************************************** * * The admin page of the plugin * ********************************************************************/ function aDBc_main_page_callback(){ ?>

Advanced Database Cleaner


__('General clean-up', 'advanced-database-cleaner'), 'optimize' => __('Optimize', 'advanced-database-cleaner'), 'tables' => __('Tables', 'advanced-database-cleaner'), 'options' => __('Options', 'advanced-database-cleaner'), 'cron' => __('Scheduled tasks', 'advanced-database-cleaner'), 'overview' => __('Overview & Settings', 'advanced-database-cleaner'), 'premium' => __('Premium', 'advanced-database-cleaner') ); $current_tab = isset($_GET['aDBc_tab']) ? $_GET['aDBc_tab'] : 'general'; echo ''; echo '
'; switch ($current_tab){ case 'general' : include_once 'includes/clean_db.php'; break; case 'optimize' : include_once 'includes/class_optimize_tables.php'; break; case 'tables' : include_once 'includes/class_clean_tables.php'; break; case 'options' : include_once 'includes/class_clean_options.php'; break; case 'cron' : include_once 'includes/class_clean_cron.php'; break; case 'overview' : include_once 'includes/overview_settings.php'; break; case 'premium' : include_once 'includes/premium_page.php'; break; } echo '
'; ?>