PluginProbe
WP-DBManager / 2.50
WP-DBManager v2.50
4.0.0 trunk 1.00 2.00 2.01 2.02 2.03 2.04 2.05 2.10 2.11 2.20 2.30 2.31 2.40 2.50 2.65 2.70 2.71 2.72 2.73 2.74 2.75 2.76 2.78 All 40 releases
wp-dbmanager / wp-dbmanager.php

wp-dbmanager.php in WP-DBManager 2.50, at wp-dbmanager.php

525 lines 25.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 Plugin Name: WP-DBManager
4 Plugin URI: http://lesterchan.net/portfolio/programming/php/
5 Description: Manages your Wordpress database. Allows you to optimize database, repair database, backup database, restore database, delete backup database , drop/empty tables and run selected queries. Supports automatic scheduling of backing up and optimizing of database.
6 Version: 2.50
7 Author: Lester 'GaMerZ' Chan
8 Author URI: http://lesterchan.net
9 */
10
11
12 /*
13 Copyright 2009 Lester Chan (email : lesterchan@gmail.com)
14
15 This program is free software; you can redistribute it and/or modify
16 it under the terms of the GNU General Public License as published by
17 the Free Software Foundation; either version 2 of the License, or
18 (at your option) any later version.
19
20 This program is distributed in the hope that it will be useful,
21 but WITHOUT ANY WARRANTY; without even the implied warranty of
22 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 GNU General Public License for more details.
24
25 You should have received a copy of the GNU General Public License
26 along with this program; if not, write to the Free Software
27 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28 */
29
30
31 ### Create Text Domain For Translations
32 add_action('init', 'dbmanager_textdomain');
33 function dbmanager_textdomain() {
34 load_plugin_textdomain('wp-dbmanager', false, 'wp-dbmanager');
35 }
36
37
38 ### Function: Database Manager Menu
39 add_action('admin_menu', 'dbmanager_menu');
40 function dbmanager_menu() {
41 if (function_exists('add_menu_page')) {
42 add_menu_page(__('Database', 'wp-dbmanager'), __('Database', 'wp-dbmanager'), 'manage_database', 'wp-dbmanager/database-manager.php', '', plugins_url('wp-dbmanager/images/database.png'));
43 }
44 if (function_exists('add_submenu_page')) {
45 add_submenu_page('wp-dbmanager/database-manager.php', __('Backup DB', 'wp-dbmanager'), __('Backup DB', 'wp-dbmanager'), 'manage_database', 'wp-dbmanager/database-backup.php');
46 add_submenu_page('wp-dbmanager/database-manager.php', __('Manage Backup DB', 'wp-dbmanager'), __('Manage Backup DB', 'wp-dbmanager'), 'manage_database', 'wp-dbmanager/database-manage.php');
47 add_submenu_page('wp-dbmanager/database-manager.php', __('Optimize DB', 'wp-dbmanager'), __('Optimize DB', 'wp-dbmanager'), 'manage_database', 'wp-dbmanager/database-optimize.php');
48 add_submenu_page('wp-dbmanager/database-manager.php', __('Repair DB', 'wp-dbmanager'), __('Repair DB', 'wp-dbmanager'), 'manage_database', 'wp-dbmanager/database-repair.php');
49 add_submenu_page('wp-dbmanager/database-manager.php', __('Empty/Drop Tables', 'wp-dbmanager'), __('Empty/Drop Tables', 'wp-dbmanager'), 'manage_database', 'wp-dbmanager/database-empty.php');
50 add_submenu_page('wp-dbmanager/database-manager.php', __('Run SQL Query', 'wp-dbmanager'), __('Run SQL Query', 'wp-dbmanager'), 'manage_database', 'wp-dbmanager/database-run.php');
51 add_submenu_page('wp-dbmanager/database-manager.php', __('DB Options', 'wp-dbmanager'), __('DB Options', 'wp-dbmanager'), 'manage_database', 'wp-dbmanager/wp-dbmanager.php', 'dbmanager_options');
52 add_submenu_page('wp-dbmanager/database-manager.php', __('Uninstall WP-DBManager', 'wp-dbmanager'), __('Uninstall WP-DBManager', 'wp-dbmanager'), 'manage_database', 'wp-dbmanager/database-uninstall.php');
53 }
54 }
55
56
57 ### Function: Displays DBManager Header In WP-Admin
58 add_action('admin_enqueue_scripts', 'dbmanager_stylesheets_admin');
59 function dbmanager_stylesheets_admin($hook_suffix) {
60 $dbmanager_admin_pages = array('wp-dbmanager/database-manager.php', 'wp-dbmanager/database-backup.php', 'wp-dbmanager/database-manage.php', 'wp-dbmanager/database-optimize.php', 'wp-dbmanager/database-repair.php', 'wp-dbmanager/database-empty.php', 'wp-dbmanager/database-run.php', 'database_page_wp-dbmanager/wp-dbmanager', 'wp-dbmanager/database-uninstall.php');
61 if(in_array($hook_suffix, $dbmanager_admin_pages)) {
62 wp_enqueue_style('wp-dbmanager-admin', plugins_url('wp-dbmanager/database-admin-css.css'), false, '2.50', 'all');
63 }
64 }
65
66
67 ### Funcion: Database Manager Cron
68 add_filter('cron_schedules', 'cron_dbmanager_reccurences');
69 add_action('dbmanager_cron_backup', 'cron_dbmanager_backup');
70 add_action('dbmanager_cron_optimize', 'cron_dbmanager_optimize');
71 function cron_dbmanager_backup() {
72 global $wpdb;
73 $backup_options = get_option('dbmanager_options');
74 $backup_email = stripslashes($backup_options['backup_email']);
75 if(intval($backup_options['backup_period']) > 0) {
76 $current_date = mysql2date(sprintf(__('%s @ %s', 'wp-dbmanager'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', current_time('timestamp')));
77 $backup = array();
78 $backup['date'] = current_time('timestamp');
79 $backup['mysqldumppath'] = $backup_options['mysqldumppath'];
80 $backup['mysqlpath'] = $backup_options['mysqlpath'];
81 $backup['path'] = $backup_options['path'];
82 $backup['command'] = '';
83 if(intval($backup_options['backup_gzip']) == 1) {
84 $backup['filename'] = $backup['date'].'_-_'.DB_NAME.'.sql.gz';
85 $backup['filepath'] = $backup['path'].'/'.$backup['filename'];
86 $backup['command'] = $backup['mysqldumppath'].' --host="'.DB_HOST.'" --user="'.DB_USER.'" --password="'.DB_PASSWORD.'" --add-drop-table --skip-lock-tables '.DB_NAME.' | gzip > '.$backup['filepath'];
87 } else {
88 $backup['filename'] = $backup['date'].'_-_'.DB_NAME.'.sql';
89 $backup['filepath'] = $backup['path'].'/'.$backup['filename'];
90 $backup['command'] = $backup['mysqldumppath'].' --host="'.DB_HOST.'" --user="'.DB_USER.'" --password="'.DB_PASSWORD.'" --add-drop-table --skip-lock-tables '.DB_NAME.' > '.$backup['filepath'];
91 }
92 execute_backup($backup['command']);
93 if(!empty($backup_email)) {
94 // Get And Read The Database Backup File
95 $file_path = $backup['filepath'];
96 $file_size = format_size(filesize($file_path));
97 $file_date = mysql2date(sprintf(__('%s @ %s', 'wp-dbmanager'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', substr($backup['filename'], 0, 10)));
98 $file = fopen($file_path,'rb');
99 $file_data = fread($file,filesize($file_path));
100 fclose($file);
101 $file_data = chunk_split(base64_encode($file_data));
102 // Create Mail To, Mail Subject And Mail Header
103 $mail_subject = sprintf(__('%s Database Backup File For %s', 'wp-dbmanager'), get_bloginfo('name'), $file_date);
104 $mail_header = 'From: '.get_bloginfo('name').' Administrator <'.get_option('admin_email').'>';
105 // MIME Boundary
106 $random_time = md5(time());
107 $mime_boundary = "==WP-DBManager- $random_time";
108 // Create Mail Header And Mail Message
109 $mail_header .= "\nMIME-Version: 1.0\n" .
110 "Content-Type: multipart/mixed;\n" .
111 " boundary=\"{$mime_boundary}\"";
112 $mail_message = __('Website Name:', 'wp-dbmanager').' '.get_bloginfo('name')."\n".
113 __('Website URL:', 'wp-dbmanager').' '.get_bloginfo('siteurl')."\n".
114 __('Backup File Name:', 'wp-dbmanager').' '.$backup['filename']."\n".
115 __('Backup File Date:', 'wp-dbmanager').' '.$file_date."\n".
116 __('Backup File Size:', 'wp-dbmanager').' '.$file_size."\n\n".
117 __('With Regards,', 'wp-dbmanager')."\n".
118 get_bloginfo('name').' '. __('Administrator', 'wp-dbmanager')."\n".
119 get_bloginfo('siteurl');
120 $mail_message = "This is a multi-part message in MIME format.\n\n" .
121 "--{$mime_boundary}\n" .
122 "Content-Type: text/plain; charset=\"utf-8\"\n" .
123 "Content-Transfer-Encoding: 7bit\n\n".$mail_message."\n\n";
124 $mail_message .= "--{$mime_boundary}\n" .
125 "Content-Type: application/octet-stream;\n" .
126 " name=\"{$backup['filename']}\"\n" .
127 "Content-Disposition: attachment;\n" .
128 " filename=\"{$backup['filename']}\"\n" .
129 "Content-Transfer-Encoding: base64\n\n" .
130 $file_data."\n\n--{$mime_boundary}--\n";
131 mail($backup_email, $mail_subject, $mail_message, $mail_header);
132 }
133 }
134 return;
135 }
136 function cron_dbmanager_optimize() {
137 global $wpdb;
138 $backup_options = get_option('dbmanager_options');
139 $optimize = intval($backup_options['optimize']);
140 $optimize_period = intval($backup_options['optimize_period']);
141 if($optimize_period > 0) {
142 $optimize_tables = array();
143 $tables = $wpdb->get_col("SHOW TABLES");
144 foreach($tables as $table_name) {
145 $optimize_tables[] = '`'.$table_name.'`';
146 }
147 $wpdb->query('OPTIMIZE TABLE '.implode(',', $optimize_tables));
148 }
149 return;
150 }
151 function cron_dbmanager_reccurences($schedules) {
152 $backup_options = get_option('dbmanager_options');
153 $backup = intval($backup_options['backup'])*intval($backup_options['backup_period']);
154 $optimize = intval($backup_options['optimize'])*intval($backup_options['optimize_period']);
155 if($backup == 0) {
156 $backup = 31536000;
157 }
158 if($optimize == 0) {
159 $optimize = 31536000;
160 }
161 $schedules['dbmanager_backup'] = array('interval' => $backup, 'display' => __('WP-DBManager Backup Schedule', 'wp-dbmanager'));
162 $schedules['dbmanager_optimize'] = array('interval' => $optimize, 'display' => __('WP-DBManager Optimize Schedule', 'wp-dbmanager'));
163 return $schedules;
164 }
165
166
167 ### Function: Ensure .htaccess Is In The Backup Folder
168 add_action('admin_notices', 'dbmanager_admin_notices');
169 function dbmanager_admin_notices() {
170 $backup_options = get_option('dbmanager_options');
171 if(!@file_exists($backup_options['path'].'/.htaccess')) {
172 echo '<div class="error" style="text-align: center;"><p style="color: red; font-size: 14px; font-weight: bold;">'.__('Your backup folder MIGHT be visible to the public', 'wp-postratings').'</p><p>'.sprintf(__('To correct this issue, move the <strong>.htaccess</strong> file from <strong>wp-content/plugins/wp-dbmanager</strong> to <strong>%s</strong>', 'wp-postratings'), $backup_options['path']).'</p></div>';
173 }
174 }
175
176
177 ### Function: Auto Detect MYSQL and MYSQL Dump Paths
178 function detect_mysql() {
179 global $wpdb;
180 $paths = array('mysq' => '', 'mysqldump' => '');
181 if(substr(PHP_OS,0,3) == 'WIN') {
182 $mysql_install = $wpdb->get_row("SHOW VARIABLES LIKE 'basedir'");
183 if($mysql_install) {
184 $install_path = str_replace('\\', '/', $mysql_install->Value);
185 $paths['mysql'] = $install_path.'bin/mysql.exe';
186 $paths['mysqldump'] = $install_path.'bin/mysqldump.exe';
187 } else {
188 $paths['mysql'] = 'mysql.exe';
189 $paths['mysqldump'] = 'mysqldump.exe';
190 }
191 } else {
192 if(function_exists('exec')) {
193 $paths['mysql'] = @exec('which mysql');
194 $paths['mysqldump'] = @exec('which mysqldump');
195 } else {
196 $paths['mysql'] = 'mysql';
197 $paths['mysqldump'] = 'mysqldump';
198 }
199 }
200 return $paths;
201 }
202
203
204 ### Executes OS-Dependent mysqldump Command (By: Vlad Sharanhovich)
205 function execute_backup($command) {
206 $backup_options = get_option('dbmanager_options');
207 check_backup_files();
208 if(substr(PHP_OS, 0, 3) == 'WIN') {
209 $writable_dir = $backup_options['path'];
210 $tmpnam = $writable_dir.'/wp-dbmanager.bat';
211 $fp = fopen($tmpnam, 'w');
212 fwrite($fp, $command);
213 fclose($fp);
214 system($tmpnam.' > NUL', $error);
215 unlink($tmpnam);
216 } else {
217 passthru($command, $error);
218 }
219 return $error;
220 }
221
222
223 ### Function: Format Bytes Into KB/MB
224 if(!function_exists('format_size')) {
225 function format_size($rawSize) {
226 if($rawSize / 1073741824 > 1)
227 return number_format_i18n($rawSize/1048576, 1) . ' '.__('GiB', 'wp-dbmanager');
228 else if ($rawSize / 1048576 > 1)
229 return number_format_i18n($rawSize/1048576, 1) . ' '.__('MiB', 'wp-dbmanager');
230 else if ($rawSize / 1024 > 1)
231 return number_format_i18n($rawSize/1024, 1) . ' '.__('KiB', 'wp-dbmanager');
232 else
233 return number_format_i18n($rawSize, 0) . ' '.__('bytes', 'wp-dbmanager');
234 }
235 }
236
237
238 ### Function: Get File Extension
239 if(!function_exists('file_ext')) {
240 function file_ext($file_name) {
241 return substr(strrchr($file_name, '.'), 1);
242 }
243 }
244
245
246 ### Function: Check Folder Whether There Is Any File Inside
247 if(!function_exists('is_emtpy_folder')) {
248 function is_emtpy_folder($folder){
249 if(is_dir($folder) ){
250 $handle = opendir($folder);
251 while( (gettype( $name = readdir($handle)) != 'boolean')){
252 if($name != '.htaccess') {
253 $name_array[] = $name;
254 }
255 }
256 foreach($name_array as $temp)
257 $folder_content .= $temp;
258
259 if($folder_content == '...')
260 return true;
261 else
262 return false;
263 closedir($handle);
264 }
265 else
266 return true;
267 }
268 }
269
270
271 ### Function: Make Sure Maximum Number Of Database Backup Files Does Not Exceed
272 function check_backup_files() {
273 $backup_options = get_option('dbmanager_options');
274 $database_files = array();
275 if(!is_emtpy_folder($backup_options['path'])) {
276 if ($handle = opendir($backup_options['path'])) {
277 while (false !== ($file = readdir($handle))) {
278 if ($file != '.' && $file != '..' && (file_ext($file) == 'sql' || file_ext($file) == 'gz')) {
279 $database_files[] = $file;
280 }
281 }
282 closedir($handle);
283 sort($database_files);
284 }
285 }
286 if(sizeof($database_files) >= $backup_options['max_backup']) {
287 @unlink($backup_options['path'].'/'.$database_files[0]);
288 }
289 }
290
291
292 ### Function: Database Manager Role
293 add_action('activate_wp-dbmanager/wp-dbmanager.php', 'dbmanager_init');
294 function dbmanager_init() {
295 global $wpdb;
296 $auto = detect_mysql();
297 // Add Options
298 $backup_options = array();
299 $backup_options['mysqldumppath'] = $auto['mysqldump'];
300 $backup_options['mysqlpath'] = $auto['mysql'];
301 $backup_options['path'] = str_replace('\\', '/', WP_CONTENT_DIR).'/backup-db';
302 $backup_options['max_backup'] = 10;
303 $backup_options['backup'] = 1;
304 $backup_options['backup_gzip'] = 0;
305 $backup_options['backup_period'] = 604800;
306 $backup_options['backup_email'] = get_option('admin_email');
307 $backup_options['optimize'] = 3;
308 $backup_options['optimize_period'] = 86400;
309 add_option('dbmanager_options', $backup_options, 'WP-DBManager Options');
310
311 // Create Backup Folder
312 if(!is_dir(WP_CONTENT_DIR.'/backup-db')) {
313 mkdir(WP_CONTENT_DIR.'/backup-db');
314 chmod(WP_CONTENT_DIR.'/backup-db', 0750);
315 }
316
317 // Set 'manage_database' Capabilities To Administrator
318 $role = get_role('administrator');
319 if(!$role->has_cap('manage_database')) {
320 $role->add_cap('manage_database');
321 }
322 }
323
324
325 ### Function: Download Database
326 add_action('init', 'download_database');
327 function download_database() {
328 if(isset($_POST['do']) && $_POST['do'] == __('Download', 'wp-dbmanager') && !empty($_POST['database_file'])) {
329 if(strpos($_SERVER['HTTP_REFERER'], admin_url('admin.php?page=wp-dbmanager/database-manage.php')) !== false) {
330 $backup_options = get_option('dbmanager_options');
331 $file_path = $backup_options['path'].'/'.$_POST['database_file'];
332 header("Pragma: public");
333 header("Expires: 0");
334 header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
335 header("Content-Type: application/force-download");
336 header("Content-Type: application/octet-stream");
337 header("Content-Type: application/download");
338 header("Content-Disposition: attachment; filename=".basename($file_path).";");
339 header("Content-Transfer-Encoding: binary");
340 header("Content-Length: ".filesize($file_path));
341 @readfile($file_path);
342 }
343 exit();
344 }
345 }
346
347
348 ### Function: Database Options
349 function dbmanager_options() {
350 global $wpdb;
351 $text = '';
352 $backup_options = array();
353 $backup_options = get_option('dbmanager_options');
354 if($_POST['Submit']) {
355 $backup_options['mysqldumppath'] = trim($_POST['db_mysqldumppath']);
356 $backup_options['mysqlpath'] = trim($_POST['db_mysqlpath']);
357 $backup_options['path'] = trim($_POST['db_path']);
358 $backup_options['max_backup'] = intval($_POST['db_max_backup']);
359 $backup_options['backup'] = intval($_POST['db_backup']);
360 $backup_options['backup_gzip'] = intval($_POST['db_backup_gzip']);
361 $backup_options['backup_period'] = intval($_POST['db_backup_period']);
362 $backup_options['backup_email'] = trim(addslashes($_POST['db_backup_email']));
363 $backup_options['optimize'] = intval($_POST['db_optimize']);
364 $backup_options['optimize_period'] = intval($_POST['db_optimize_period']);
365 $update_db_options = update_option('dbmanager_options', $backup_options);
366 if($update_db_options) {
367 $text = '<font color="green">'.__('Database Options Updated', 'wp-dbmanager').'</font>';
368 }
369 if(empty($text)) {
370 $text = '<font color="red">'.__('No Database Option Updated', 'wp-dbmanager').'</font>';
371 }
372 wp_clear_scheduled_hook('dbmanager_cron_backup');
373 if($backup_options['backup_period'] > 0) {
374 if (!wp_next_scheduled('dbmanager_cron_backup')) {
375 wp_schedule_event(time(), 'dbmanager_backup', 'dbmanager_cron_backup');
376 }
377 }
378 wp_clear_scheduled_hook('dbmanager_cron_optimize');
379 if($backup_options['optimize_period'] > 0) {
380 if (!wp_next_scheduled('dbmanager_cron_optimize')) {
381 wp_schedule_event(time(), 'dbmanager_optimize', 'dbmanager_cron_optimize');
382 }
383 }
384 }
385 $path = detect_mysql();
386 ?>
387 <script type="text/javascript">
388 /* <![CDATA[*/
389 function mysqlpath() {
390 jQuery("#db_mysqlpath").val("<?php echo $path['mysql']; ?>");
391 }
392 function mysqldumppath() {
393 jQuery("#db_mysqldumppath").val("<?php echo $path['mysqldump']; ?>");
394 }
395 /* ]]> */
396 </script>
397 <?php if(!empty($text)) { echo '<!-- Last Action --><div id="message" class="updated fade"><p>'.$text.'</p></div>'; } ?>
398 <!-- Database Options -->
399 <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?page=<?php echo plugin_basename(__FILE__); ?>">
400 <div class="wrap">
401 <div id="icon-wp-dbmanager" class="icon32"><br /></div>
402 <h2><?php _e('Database Options', 'wp-dbmanager'); ?></h2>
403 <h3><?php _e('Paths', 'wp-dbmanager'); ?></h3>
404 <table class="form-table">
405 <tr>
406 <td width="20%" valign="top"><strong><?php _e('Path To mysqldump:', 'wp-dbmanager'); ?></strong></td>
407 <td width="80%">
408 <input type="text" id="db_mysqldumppath" name="db_mysqldumppath" size="60" maxlength="100" value="<?php echo stripslashes($backup_options['mysqldumppath']); ?>" dir="ltr" />&nbsp;&nbsp;<input type="button" value="<?php _e('Auto Detect', 'wp-dbmanager'); ?>" onclick="mysqldumppath();" />
409 <p><?php _e('The absolute path to mysqldump without trailing slash. If unsure, please email your server administrator about this.', 'wp-dbmanager'); ?></p>
410 </td>
411 </tr>
412 <tr>
413 <td valign="top"><strong><?php _e('Path To mysql:', 'wp-dbmanager'); ?></strong></td>
414 <td>
415 <input type="text" id="db_mysqlpath" name="db_mysqlpath" size="60" maxlength="100" value="<?php echo stripslashes($backup_options['mysqlpath']); ?>" dir="ltr" />&nbsp;&nbsp;<input type="button" value="<?php _e('Auto Detect', 'wp-dbmanager'); ?>" onclick="mysqlpath();" />
416 <p><?php _e('The absolute path to mysql without trailing slash. If unsure, please email your server administrator about this.', 'wp-dbmanager'); ?></p>
417 </td>
418 </tr>
419 <tr>
420 <td valign="top"><strong><?php _e('Path To Backup:', 'wp-dbmanager'); ?></strong></td>
421 <td>
422 <input type="text" name="db_path" size="60" maxlength="100" value="<?php echo stripslashes($backup_options['path']); ?>" dir="ltr" />
423 <p><?php _e('The absolute path to your database backup folder without trailing slash. Make sure the folder is writable.', 'wp-dbmanager'); ?></p>
424 </td>
425 </tr>
426 <tr>
427 <td valign="top"><strong><?php _e('Maximum Backup Files:', 'wp-dbmanager'); ?></strong></td>
428 <td>
429 <input type="text" name="db_max_backup" size="5" maxlength="5" value="<?php echo stripslashes($backup_options['max_backup']); ?>" />
430 <p><?php _e('The maximum number of database backup files that is allowed in the backup folder as stated above. The oldest database backup file is always deleted in order to maintain this value. This is to prevent the backup folder from getting too large.', 'wp-dbmanager'); ?></p>
431 </td>
432 </tr>
433 </table>
434
435 <h3><?php _e('Note', 'wp-dbmanager'); ?></h3>
436 <table class="form-table">
437 <tr>
438 <td>
439 <strong><?php _e('Windows Server', 'wp-dbmanager'); ?></strong><br />
440 <?php _e('For mysqldump path, you can try \'<strong>mysqldump.exe</strong>\'.', 'wp-dbmanager'); ?><br />
441 <?php _e('For mysql path, you can try \'<strong>mysql.exe</strong>\'.', 'wp-dbmanager'); ?>
442 </td>
443 </tr>
444 <tr>
445 <td>
446 <strong><?php _e('Linux Server', 'wp-dbmanager'); ?></strong><br />
447 <?php _e('For mysqldump path, normally is just \'<strong>mysqldump</strong>\'.', 'wp-dbmanager'); ?><br />
448 <?php _e('For mysql path, normally is just \'<strong>mysql</strong>\'.', 'wp-dbmanager'); ?>
449 </td>
450 </tr>
451 <tr>
452 <td>
453 <strong><?php _e('Note', 'wp-dbmanager'); ?></strong><br />
454 <?php _e('The \'Auto Detect\' function does not work for some servers. If it does not work for you, please contact your server administrator for the MYSQL and MYSQL DUMP paths.', 'wp-dbmanager'); ?>
455 </td>
456 </tr>
457 </table>
458
459 <h3><?php _e('Automatic Scheduling', 'wp-dbmanager'); ?></h3>
460 <table class="form-table">
461 <tr>
462 <td valign="top"><strong><?php _e('Automatic Backing Up Of DB:', 'wp-dbmanager'); ?></strong></td>
463 <td>
464 <?php
465 _e('Next backup date: ', 'wp-dbmanager');
466 if(wp_next_scheduled('dbmanager_cron_backup')) {
467 echo '<strong>'.mysql2date(sprintf(__('%s @ %s', 'wp-dbmanager'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', (wp_next_scheduled('dbmanager_cron_backup') + (get_option('gmt_offset') * 3600)))).'</strong>';
468 } else {
469 _e('N/A', 'wp-dbmanager');
470 }
471 ?>
472 <p>
473 <?php _e('Every', 'wp-dbmanager'); ?>&nbsp;<input type="text" name="db_backup" size="3" maxlength="5" value="<?php echo intval($backup_options['backup']); ?>" />&nbsp;
474 <select name="db_backup_period" size="1">
475 <option value="0"<?php selected('0', $backup_options['backup_period']); ?>><?php _e('Disable', 'wp-dbmanager'); ?></option>
476 <option value="60"<?php selected('60', $backup_options['backup_period']); ?>><?php _e('Minutes(s)', 'wp-dbmanager'); ?></option>
477 <option value="3600"<?php selected('3600', $backup_options['backup_period']); ?>><?php _e('Hour(s)', 'wp-dbmanager'); ?></option>
478 <option value="86400"<?php selected('86400', $backup_options['backup_period']); ?>><?php _e('Day(s)', 'wp-dbmanager'); ?></option>
479 <option value="604800"<?php selected('604800', $backup_options['backup_period']); ?>><?php _e('Week(s)', 'wp-dbmanager'); ?></option>
480 <option value="18144000"<?php selected('18144000', $backup_options['backup_period']); ?>><?php _e('Month(s)', 'wp-dbmanager'); ?></option>
481 </select>&nbsp;&nbsp;&nbsp;
482 <?php _e('Gzip', 'wp-dbmanager'); ?>
483 <select name="db_backup_gzip" size="1">
484 <option value="0"<?php selected('0', $backup_options['backup_gzip']); ?>><?php _e('No', 'wp-dbmanager'); ?></option>
485 <option value="1"<?php selected('1', $backup_options['backup_gzip']); ?>><?php _e('Yes', 'wp-dbmanager'); ?></option>
486 </select>
487 </p>
488 <p><?php _e('E-mail backup to:', 'wp-dbmanager'); ?> <input type="text" name="db_backup_email" size="30" maxlength="50" value="<?php echo stripslashes($backup_options['backup_email']) ?>" dir="ltr" />&nbsp;&nbsp;&nbsp;<?php _e('(Leave blank to disable this feature)', 'wp-dbmanager'); ?></p>
489 <p><?php _e('WP-DBManager can automatically backup your database after a certain period.', 'wp-dbmanager'); ?></p>
490 </td>
491 </tr>
492 <tr>
493 <td valign="top"><strong><?php _e('Automatic Optimizing Of DB:', 'wp-dbmanager'); ?></strong></td>
494 <td>
495 <?php
496 _e('Next optimize date: ', 'wp-dbmanager');
497 if(wp_next_scheduled('dbmanager_cron_optimize')) {
498 echo '<strong>'.mysql2date(sprintf(__('%s @ %s', 'wp-dbmanager'), get_option('date_format'), get_option('time_format')), gmdate('Y-m-d H:i:s', (wp_next_scheduled('dbmanager_cron_optimize') + (get_option('gmt_offset') * 3600)))).'</strong>';
499 } else {
500 _e('N/A', 'wp-dbmanager');
501 }
502 ?>
503 <p>
504 <?php _e('Every', 'wp-dbmanager'); ?>&nbsp;<input type="text" name="db_optimize" size="3" maxlength="5" value="<?php echo intval($backup_options['optimize']); ?>" />&nbsp;
505 <select name="db_optimize_period" size="1">
506 <option value="0"<?php selected('0', $backup_options['optimize_period']); ?>><?php _e('Disable', 'wp-dbmanager'); ?></option>
507 <option value="60"<?php selected('60', $backup_options['optimize_period']); ?>><?php _e('Minutes(s)', 'wp-dbmanager'); ?></option>
508 <option value="3600"<?php selected('3600', $backup_options['optimize_period']); ?>><?php _e('Hour(s)', 'wp-dbmanager'); ?></option>
509 <option value="86400"<?php selected('86400', $backup_options['optimize_period']); ?>><?php _e('Day(s)', 'wp-dbmanager'); ?></option>
510 <option value="604800"<?php selected('604800', $backup_options['optimize_period']); ?>><?php _e('Week(s)', 'wp-dbmanager'); ?></option>
511 <option value="18144000"<?php selected('18144000', $backup_options['optimize_period']); ?>><?php _e('Month(s)', 'wp-dbmanager'); ?></option>
512 </select>
513 </p>
514 <p><?php _e('WP-DBManager can automatically optimize your database after a certain period.', 'wp-dbmanager'); ?></p>
515 </td>
516 </tr>
517 </table>
518 <p class="submit">
519 <input type="submit" name="Submit" class="button" value="<?php _e('Save Changes', 'wp-dbmanager'); ?>" />
520 </p>
521 </div>
522 </form>
523 <?php
524 }
525 ?>