0) { $current_date = gmdate(sprintf(__('%s @ %s', 'wp-dbmanager'), get_option('date_format'), get_option('time_format')), (time() + (get_option('gmt_offset') * 3600))); $backup = array(); $backup['date'] = current_time('timestamp'); $backup['mysqldumppath'] = $backup_options['mysqldumppath']; $backup['mysqlpath'] = $backup_options['mysqlpath']; $backup['path'] = $backup_options['path']; $backup['command'] = ''; if(intval($backup_options['backup_gzip']) == 1) { $backup['filename'] = $backup['date'].'_-_'.DB_NAME.'.sql.gz'; $backup['filepath'] = $backup['path'].'/'.$backup['filename']; $backup['command'] = $backup['mysqldumppath'].' --host="'.DB_HOST.'" --user="'.DB_USER.'" --password="'.DB_PASSWORD.'" --add-drop-table --skip-lock-tables '.DB_NAME.' | gzip > '.$backup['filepath']; } else { $backup['filename'] = $backup['date'].'_-_'.DB_NAME.'.sql'; $backup['filepath'] = $backup['path'].'/'.$backup['filename']; $backup['command'] = $backup['mysqldumppath'].' --host="'.DB_HOST.'" --user="'.DB_USER.'" --password="'.DB_PASSWORD.'" --add-drop-table --skip-lock-tables '.DB_NAME.' > '.$backup['filepath']; } check_backup_files(); passthru($backup['command']); if(!empty($backup_email)) { // Get And Read The Database Backup File $file_path = $backup['filepath']; $file_size = format_size(filesize($file_path)); $file_date = gmdate(sprintf(__('%s @ %s', 'wp-dbmanager'), get_option('date_format'), get_option('time_format')), substr($backup['filename'], 0, 10)); $file = fopen($file_path,'rb'); $file_data = fread($file,filesize($file_path)); fclose($file); $file_data = chunk_split(base64_encode($file_data)); // Create Mail To, Mail Subject And Mail Header $mail_subject = sprintf(__('%s Database Backup File For %s', 'wp-dbmanager'), get_bloginfo('name'), $file_date); $mail_header = 'From: '.get_bloginfo('name').' Administrator <'.get_option('admin_email').'>'; // MIME Boundary $random_time = md5(time()); $mime_boundary = "==WP-DBManager- $random_time"; // Create Mail Header And Mail Message $mail_header .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; $mail_message = __('Website Name:', 'wp-dbmanager').' '.get_bloginfo('name')."\n". __('Website URL:', 'wp-dbmanager').' '.get_bloginfo('siteurl')."\n". __('Backup File Name:', 'wp-dbmanager').' '.$backup['filename']."\n". __('Backup File Date:', 'wp-dbmanager').' '.$file_date."\n". __('Backup File Size:', 'wp-dbmanager').' '.$file_size."\n\n". __('With Regards,', 'wp-dbmanager')."\n". get_bloginfo('name').' '. __('Administrator', 'wp-dbmanager')."\n". get_bloginfo('siteurl'); $mail_message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"utf-8\"\n" . "Content-Transfer-Encoding: 7bit\n\n".$mail_message."\n\n"; $mail_message .= "--{$mime_boundary}\n" . "Content-Type: application/octet-stream;\n" . " name=\"{$backup['filename']}\"\n" . "Content-Disposition: attachment;\n" . " filename=\"{$backup['filename']}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $file_data."\n\n--{$mime_boundary}--\n"; mail($backup_email, $mail_subject, $mail_message, $mail_header); } } return; } function cron_dbmanager_optimize() { global $wpdb; $backup_options = get_option('dbmanager_options'); $optimize = intval($backup_options['optimize']); $optimize_period = intval($backup_options['optimize_period']); if($optimize_period > 0) { $optimize_tables = array(); $tables = $wpdb->get_col("SHOW TABLES"); foreach($tables as $table_name) { $optimize_tables[] = $table_name; } $wpdb->query('OPTIMIZE TABLE '.implode(',', $optimize_tables)); } return; } function cron_dbmanager_reccurences() { $backup_options = get_option('dbmanager_options'); $backup = intval($backup_options['backup'])*intval($backup_options['backup_period']); $optimize = intval($backup_options['optimize'])*intval($backup_options['optimize_period']); if($backup == 0) { $backup = 31536000; } if($optimize == 0) { $optimize = 31536000; } return array( 'dbmanager_backup' => array('interval' => $backup, 'display' => __('WP-DBManager Backup Schedule', 'wp-dbmanager')), 'dbmanager_optimize' => array('interval' => $optimize, 'display' => __('WP-DBManager Optimize Schedule', 'wp-dbmanager')) ); } ### Function: Auto Detect MYSQL and MYSQL Dump Paths function detect_mysql() { global $wpdb; $paths = array('mysq' => '', 'mysqldump' => ''); if(substr(PHP_OS,0,3) == 'WIN') { $mysql_install = $wpdb->get_row("SHOW VARIABLES LIKE 'basedir'"); if($mysql_install) { $install_path = str_replace('\\', '/', $mysql_install->Value); $paths['mysql'] = $install_path.'bin/mysql.exe'; $paths['mysqldump'] = $install_path.'bin/mysqldump.exe'; } else { $paths['mysql'] = 'mysql.exe'; $paths['mysqldump'] = 'mysqldump.exe'; } } else { if(function_exists('exec')) { $paths['mysql'] = exec('which mysql'); $paths['mysqldump'] = exec('which mysqldump'); } else { $paths['mysql'] = 'mysql'; $paths['mysqldump'] = 'mysqldump'; } } return $paths; } ### Function: Format Bytes Into KB/MB if(!function_exists('format_size')) { function format_size($rawSize) { if($rawSize / 1073741824 > 1) return round($rawSize/1048576, 1) . ' GB'; else if ($rawSize / 1048576 > 1) return round($rawSize/1048576, 1) . ' MB'; else if ($rawSize / 1024 > 1) return round($rawSize/1024, 1) . ' KB'; else return round($rawSize, 1) . ' bytes'; } } ### Function: Get File Extension if(!function_exists('file_ext')) { function file_ext($file_name) { return substr(strrchr($file_name, '.'), 1); } } ### Function: Check Folder Whether There Is Any File Inside if(!function_exists('is_emtpy_folder')) { function is_emtpy_folder($folder){ if(is_dir($folder) ){ $handle = opendir($folder); while( (gettype( $name = readdir($handle)) != 'boolean')){ $name_array[] = $name; } foreach($name_array as $temp) $folder_content .= $temp; if($folder_content == '...') return true; else return false; closedir($handle); } else return true; } } ### Function: Make Sure Maximum Number Of Database Backup Files Does Not Exceed function check_backup_files() { $backup_options = get_option('dbmanager_options'); $database_files = array(); if(!is_emtpy_folder($backup_options['path'])) { if ($handle = opendir($backup_options['path'])) { while (false !== ($file = readdir($handle))) { if ($file != '.' && $file != '..' && (file_ext($file) == 'sql' || file_ext($file) == 'gz')) { $database_files[] = $file; } } closedir($handle); sort($database_files); } } if(sizeof($database_files) >= $backup_options['max_backup']) { @unlink($backup_options['path'].'/'.$database_files[0]); } } ### Function: Database Manager Role add_action('activate_dbmanager/dbmanager.php', 'dbmanager_init'); function dbmanager_init() { global $wpdb; $auto = detect_mysql(); // Add Options $backup_options = array(); $backup_options['mysqldumppath'] = $auto['mysqldump']; $backup_options['mysqlpath'] = $auto['mysql']; $backup_options['path'] = str_replace('\\', '/', ABSPATH).'wp-content/backup-db'; $backup_options['max_backup'] = 10; $backup_options['backup'] = 1; $backup_options['backup_gzip'] = 0; $backup_options['backup_period'] = 604800; $backup_options['backup_email'] = get_option('admin_email'); $backup_options['optimize'] = 3; $backup_options['optimize_period'] = 86400; add_option('dbmanager_options', $backup_options, 'WP-DBManager Options'); // Create Backup Folder if(!is_dir(ABSPATH.'wp-content/backup-db')) { mkdir(ABSPATH.'wp-content/backup-db'); } // Set 'manage_database' Capabilities To Administrator $role = get_role('administrator'); if(!$role->has_cap('manage_database')) { $role->add_cap('manage_database'); } } ### Function: Download Database add_action('init', 'download_database'); function download_database() { if($_POST['do'] == 'Download' && !empty($_POST['database_file'])) { if(strpos($_SERVER['HTTP_REFERER'], get_option('siteurl').'/wp-admin/admin.php?page=dbmanager/database-manage.php') !== false) { $backup_options = get_option('dbmanager_options'); $file_path = $backup_options['path'].'/'.$_POST['database_file']; header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header("Content-Disposition: attachment; filename=".basename($file_path).";"); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($file_path)); @readfile($file_path); } exit(); } } ### Function: Database Options function dbmanager_options() { global $wpdb; $text = ''; $backup_options = array(); $backup_options = get_option('dbmanager_options'); if($_POST['Submit']) { $backup_options['mysqldumppath'] = trim($_POST['db_mysqldumppath']); $backup_options['mysqlpath'] = trim($_POST['db_mysqlpath']); $backup_options['path'] = trim($_POST['db_path']); $backup_options['max_backup'] = intval($_POST['db_max_backup']); $backup_options['backup'] = intval($_POST['db_backup']); $backup_options['backup_gzip'] = intval($_POST['db_backup_gzip']); $backup_options['backup_period'] = intval($_POST['db_backup_period']); $backup_options['backup_email'] = trim(addslashes($_POST['db_backup_email'])); $backup_options['optimize'] = intval($_POST['db_optimize']); $backup_options['optimize_period'] = intval($_POST['db_optimize_period']); $update_db_options = update_option('dbmanager_options', $backup_options); if($update_db_options) { $text = ''.__('Database Options Updated', 'wp-dbmanager').''; } if(empty($text)) { $text = ''.__('No Database Option Updated', 'wp-dbmanager').''; } wp_clear_scheduled_hook('dbmanager_cron_backup'); if($backup_options['backup_period'] > 0) { if (!wp_next_scheduled('dbmanager_cron_backup')) { wp_schedule_event(time(), 'dbmanager_backup', 'dbmanager_cron_backup'); } } wp_clear_scheduled_hook('dbmanager_cron_optimize'); if($backup_options['optimize_period'] > 0) { if (!wp_next_scheduled('dbmanager_cron_optimize')) { wp_schedule_event(time(), 'dbmanager_optimize', 'dbmanager_cron_optimize'); } } } $path = detect_mysql(); ?>

'.$text.'

'; } ?>

  

  


mysqldump.exe\'.', 'wp-dbmanager'); ?>
mysql.exe\'.', 'wp-dbmanager'); ?>


mysqldump\'.', 'wp-dbmanager'); ?>
mysql\'.', 'wp-dbmanager'); ?>


 

'.gmdate(sprintf(__('%s @ %s', 'wp-dbmanager'), get_option('date_format'), get_option('time_format')), (wp_next_scheduled('dbmanager_cron_backup') + (get_option('gmt_offset') * 3600))).''; } else { _e('N/A', 'wp-dbmanager'); } ?>

      

   

'.gmdate(sprintf(__('%s @ %s', 'wp-dbmanager'), get_option('date_format'), get_option('time_format')), (wp_next_scheduled('dbmanager_cron_optimize') + (get_option('gmt_offset') * 3600))).''; } else { _e('N/A', 'wp-dbmanager'); } ?>