' . __('Settings', 'advanced-db-cleaner') . ''; array_unshift($links, $adc_settings_link); return $links; } /******************************************************************** * Add 'Database Cleaner' to Wordpress settings menu ********************************************************************/ add_action('admin_menu', 'adv_db_cleaner_add_admin_menu'); function adv_db_cleaner_add_admin_menu() { $hook_adv_db_cleaner = add_options_page('Advanced DB Cleaner Options', 'Database Cleaner','manage_options', __FILE__, 'adv_db_cleaner_page'); add_action('admin_print_styles-' . $hook_adv_db_cleaner, 'adv_db_cleaner_enqueue_styles'); } /******************************************************************** * Register stylesheet ********************************************************************/ add_action('admin_init', 'adv_db_cleaner_register_styles' ); function adv_db_cleaner_register_styles() { wp_register_style('adv_db_cleaner_css', ADB_CLEANER_PLUGIN_DIR . '/css/style.css'); } /******************************************************************** * Enqueue stylesheet ********************************************************************/ function adv_db_cleaner_enqueue_styles() { wp_enqueue_style( 'adv_db_cleaner_css' ); } /****************************************************************************************** * The scheduler * Get more info here: http://codex.wordpress.org/Plugin_API/Filter_Reference/cron_schedules ******************************************************************************************/ add_filter('cron_schedules', 'aDBc_additional_schedules'); function aDBc_additional_schedules($schedules){ // Add weekly schedule $schedules['weekly'] = array( 'interval' => 604800, 'display' => __('Once Weekly') ); // Add monthly schedule $schedules['monthly'] = array( 'interval' => 2635200, 'display' => __('Once a month') ); 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', 'adv_db_cleaner_optimize'); add_action('aDBc_clean_scheduler', 'aDBc_cleanAll'); function aDBc_activate_plugin($network_wide){ global $wpdb; if(function_exists('is_multisite') && is_multisite() && $network_wide){ $blogs_ids = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs"); foreach($blogs_ids as $blog_id){ switch_to_blog($blog_id); $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'); } $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'); } restore_current_blog(); } }else{ $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'); } $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'); } } } /******************************************************************** * Clear current scheduled tasks (if any) when deactivated ********************************************************************/ register_deactivation_hook(__FILE__, 'aDBc_deactivate_plugin' ); function aDBc_deactivate_plugin($network_wide){ global $wpdb; if(function_exists('is_multisite') && is_multisite() && $network_wide){ $blogs_ids = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs"); foreach($blogs_ids as $blog_id){ switch_to_blog($blog_id); wp_clear_scheduled_hook('aDBc_optimize_scheduler'); wp_clear_scheduled_hook('aDBc_clean_scheduler'); restore_current_blog(); } }else{ 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(){ global $wpdb; if(function_exists('is_multisite') && is_multisite()){ $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(); } }else{ delete_option('aDBc_optimize_schedule'); delete_option('aDBc_clean_schedule'); wp_clear_scheduled_hook('aDBc_optimize_scheduler'); wp_clear_scheduled_hook('aDBc_clean_scheduler'); } } /******************************************************************** * The admin page content ********************************************************************/ function adv_db_cleaner_page(){ ?>

Advanced DB Cleaner

' . $adv_db_cleaner_message . '

'; } ?>
"aDBc-clean", "title"=>__('Clean Database', 'advanced-db-cleaner')), array("id"=>"aDBc-optimize", "title"=>__('Optimize Database', 'advanced-db-cleaner')), array("id"=>"aDBc-reset", "title"=>__('Reset Database', 'advanced-db-cleaner')) ); foreach ($aDBc_tab_list as $key => $value){ $checked = ""; if($value["id"] == "aDBc-clean" || (isset($_POST["aDBc_optimize_form"]) && $value["id"] == "aDBc-optimize") || (isset($_POST["aDBc_optimize_schedule_form"]) && $value["id"] == "aDBc-optimize") || (isset($_POST["aDBc_reset_form"]) && $value["id"] == "aDBc-reset")){ $checked = 'checked = "checked"'; } echo ''."\n"; echo ''."\n"; } ?>
"; _e('Sorry! The reset can be executed from the main site in your Network only!', 'advanced-db-cleaner'); echo "
"; } ?>