Ticket #2509: wp-db-backup.php.diff
| File wp-db-backup.php.diff, 21.4 KB (added by Sewar, 7 years ago) |
|---|
-
wp-db-backup.php
4 4 Plugin URI: http://www.skippy.net/blog/plugins/ 5 5 Description: On-demand backup of your WordPress database. 6 6 Author: Scott Merrill 7 Author URI: http://www.skippy.net/ 7 8 Version: 1.7 8 Author URI: http://www.skippy.net/9 9 10 10 Much of this was modified from Mark Ghosh's One Click Backup, which 11 11 in turn was derived from phpMyAdmin. … … 17 17 // CHANGE THIS IF YOU WANT TO USE A 18 18 // DIFFERENT BACKUP LOCATION 19 19 20 load_plugin_textdomain('wp-db-backup'); 21 20 22 $rand = substr( md5( md5( DB_PASSWORD ) ), -5 ); 21 23 22 24 define('WP_BACKUP_DIR', 'wp-content/backup-' . $rand); … … 44 46 $this->basename = preg_replace('/^.*wp-content[\\\\\/]plugins[\\\\\/]/', '', __FILE__); 45 47 46 48 if (isset($_POST['do_backup'])) { 47 if ( !current_user_can('import') ) die(__('You are not allowed to perform backups.' ));49 if ( !current_user_can('import') ) die(__('You are not allowed to perform backups.', 'wp-db-backup')); 48 50 switch($_POST['do_backup']) { 49 51 case 'backup': 50 52 $this->perform_backup(); … … 54 56 break; 55 57 } 56 58 } elseif (isset($_GET['fragment'] )) { 57 if ( !current_user_can('import') ) die(__('You are not allowed to perform backups.' ));59 if ( !current_user_can('import') ) die(__('You are not allowed to perform backups.', 'wp-db-backup')); 58 60 add_action('init', array(&$this, 'init')); 59 61 } elseif (isset($_GET['backup'] )) { 60 if ( !current_user_can('import') ) die(__('You are not allowed to perform backups.' ));62 if ( !current_user_can('import') ) die(__('You are not allowed to perform backups.', 'wp-db-backup')); 61 63 add_action('init', array(&$this, 'init')); 62 64 } else { 63 65 add_action('admin_menu', array(&$this, 'admin_menu')); … … 65 67 } 66 68 67 69 function init() { 68 if ( !current_user_can('import') ) die(__('You are not allowed to perform backups.' ));70 if ( !current_user_can('import') ) die(__('You are not allowed to perform backups.', 'wp-db-backup')); 69 71 70 72 if (isset($_GET['backup'])) { 71 73 $via = isset($_GET['via']) ? $_GET['via'] : 'http'; … … 87 89 } 88 90 } 89 91 echo ' 90 alert("' . __('Backup Complete!' ) . '");92 alert("' . __('Backup Complete!', 'wp-db-backup') . '"); 91 93 </script> 92 94 '; 93 95 break; … … 114 116 115 117 echo "<div class='wrap'>"; 116 118 //echo "<pre>" . print_r($_POST, 1) . "</pre>"; 117 echo '<h2>' . __('Backup' ) . '</h2>118 <fieldset class="options"><legend>' . __('Progress' ) . '</legend>119 echo '<h2>' . __('Backup', 'wp-db-backup') . '</h2> 120 <fieldset class="options"><legend>' . __('Progress', 'wp-db-backup') . '</legend> 119 121 <p><strong>' . 120 __('DO NOT DO THE FOLLOWING AS IT WILL CAUSE YOUR BACKUP TO FAIL:' ).122 __('DO NOT DO THE FOLLOWING AS IT WILL CAUSE YOUR BACKUP TO FAIL:', 'wp-db-backup'). 121 123 '</strong></p> 122 124 <ol> 123 <li>'.__('Close this browser' ).'</li>124 <li>'.__('Reload this page' ).'</li>125 <li>'.__('Click the Stop or Back buttons in your browser' ).'</li>125 <li>'.__('Close this browser', 'wp-db-backup').'</li> 126 <li>'.__('Reload this page', 'wp-db-backup').'</li> 127 <li>'.__('Click the Stop or Back buttons in your browser', 'wp-db-backup').'</li> 126 128 </ol> 127 <p><strong>' . __('Progress:' ) . '</strong></p>129 <p><strong>' . __('Progress:', 'wp-db-backup') . '</strong></p> 128 130 <div id="meterbox" style="height:11px;width:80%;padding:3px;border:1px solid #659fff;"><div id="meter" style="height:11px;background-color:#659fff;width:0%;text-align:center;font-size:6pt;"> </div></div> 129 131 <div id="progress_message"></div> 130 132 <div id="errors"></div> … … 167 169 switch($_POST['deliver']) { 168 170 case 'http': 169 171 echo ' 170 setProgress("' . sprintf(__("Backup complete, preparing <a href=\\\"%s\\\">backup</a> for download..." ), $download_uri) . '");172 setProgress("' . sprintf(__("Backup complete, preparing <a href=\\\"%s\\\">backup</a> for download...", 'wp-db-backup'), $download_uri) . '"); 171 173 fram.src = "' . $download_uri . '"; 172 174 '; 173 175 break; 174 176 case 'smtp': 175 177 echo ' 176 setProgress("' . sprintf(__("Backup complete, sending <a href=\\\"%s\\\">backup</a> via email..." ), $download_uri) . '");178 setProgress("' . sprintf(__("Backup complete, sending <a href=\\\"%s\\\">backup</a> via email...", 'wp-db-backup'), $download_uri) . '"); 177 179 fram.src = "' . $download_uri . '&via=email&recipient=' . $_POST['backup_recipient'] . '"; 178 180 '; 179 181 break; 180 182 default: 181 183 echo ' 182 setProgress("' . sprintf(__("Backup complete, download <a href=\\\"%s\\\">here</a>." ), $download_uri) . '");184 setProgress("' . sprintf(__("Backup complete, download <a href=\\\"%s\\\">here</a>.", 'wp-db-backup'), $download_uri) . '"); 183 185 '; 184 186 } 185 187 … … 231 233 echo "$table:$segment:$filename"; 232 234 233 235 if($table == '') { 234 $msg = __('Creating backup file...' );236 $msg = __('Creating backup file...', 'wp-db-backup'); 235 237 } else { 236 238 if($segment == -1) { 237 $msg = sprintf(__('Finished backing up table \\"%s\\".' ), $table);239 $msg = sprintf(__('Finished backing up table \\"%s\\".', 'wp-db-backup'), $table); 238 240 } else { 239 $msg = sprintf(__('Backing up table \\"%s\\"...' ), $table);241 $msg = sprintf(__('Backing up table \\"%s\\"...', 'wp-db-backup'), $table); 240 242 } 241 243 } 242 244 … … 248 250 if (is_writable(ABSPATH . $this->backup_dir)) { 249 251 $this->fp = $this->open(ABSPATH . $this->backup_dir . $filename, 'a'); 250 252 if(!$this->fp) { 251 $this->backup_error(__('Could not open the backup file for writing!' ));252 $this->fatal_error = __('The backup file could not be saved. Please check the permissions for writing to your backup directory and try again.' );253 $this->backup_error(__('Could not open the backup file for writing!', 'wp-db-backup')); 254 $this->fatal_error = __('The backup file could not be saved. Please check the permissions for writing to your backup directory and try again.', 'wp-db-backup'); 253 255 } 254 256 else { 255 257 if($table == '') { … … 274 276 } 275 277 } 276 278 } else { 277 $this->backup_error(__('The backup directory is not writeable!' ));278 $this->fatal_error = __('The backup directory is not writeable! Please check the permissions for writing to your backup directory and try again.' );279 $this->backup_error(__('The backup directory is not writeable!', 'wp-db-backup')); 280 $this->fatal_error = __('The backup directory is not writeable! Please check the permissions for writing to your backup directory and try again.', 'wp-db-backup'); 279 281 } 280 282 281 283 if($this->fp) $this->close($this->fp); … … 324 326 325 327 /////////////////////////////// 326 328 function admin_menu() { 327 add_management_page(__('Backup' ), __('Backup'), 'import', basename(__FILE__), array(&$this, 'backup_menu'));329 add_management_page(__('Backup', 'wp-db-backup'), __('Backup', 'wp-db-backup'), 'import', basename(__FILE__), array(&$this, 'backup_menu')); 328 330 } 329 331 330 332 function fragment_menu() { 331 add_management_page(__('Backup' ), __('Backup'), 'import', basename(__FILE__), array(&$this, 'build_backup_script'));333 add_management_page(__('Backup', 'wp-db-backup'), __('Backup', 'wp-db-backup'), 'import', basename(__FILE__), array(&$this, 'build_backup_script')); 332 334 } 333 335 334 336 ///////////////////////////////////////////////////////// … … 395 397 function stow($query_line) { 396 398 if ($this->gzip()) { 397 399 if(@gzwrite($this->fp, $query_line) === FALSE) { 398 backup_error(__('There was an error writing a line to the backup script:' ));400 backup_error(__('There was an error writing a line to the backup script:', 'wp-db-backup')); 399 401 backup_error(' ' . $query_line); 400 402 } 401 403 } else { 402 404 if(@fwrite($this->fp, $query_line) === FALSE) { 403 backup_error(__('There was an error writing a line to the backup script:' ));405 backup_error(__('There was an error writing a line to the backup script:', 'wp-db-backup')); 404 406 backup_error(' ' . $query_line); 405 407 } 406 408 } … … 410 412 if(count($this->backup_errors) < 20) { 411 413 $this->backup_errors[] = $err; 412 414 } elseif(count($this->backup_errors) == 20) { 413 $this->backup_errors[] = __('Subsequent errors have been omitted from this log.' );415 $this->backup_errors[] = __('Subsequent errors have been omitted from this log.', 'wp-db-backup'); 414 416 } 415 417 } 416 418 … … 429 431 430 432 $table_structure = $wpdb->get_results("DESCRIBE $table"); 431 433 if (! $table_structure) { 432 backup_errors(__('Error getting table details' ) . ": $table");434 backup_errors(__('Error getting table details', 'wp-db-backup') . ": $table"); 433 435 return FALSE; 434 436 } 435 437 … … 454 456 455 457 $create_table = $wpdb->get_results("SHOW CREATE TABLE $table", ARRAY_N); 456 458 if (FALSE === $create_table) { 457 $this->backup_error(sprintf(__("Error with SHOW CREATE TABLE for %s." ), $table));459 $this->backup_error(sprintf(__("Error with SHOW CREATE TABLE for %s.", 'wp-db-backup'), $table)); 458 460 $this->stow("#\n# Error with SHOW CREATE TABLE for $table!\n#\n"); 459 461 } 460 462 $this->stow($create_table[0][1] . ' ;'); 461 463 462 464 if (FALSE === $table_structure) { 463 $this->backup_error(sprintf(__("Error getting table structure of %s" ), $table));465 $this->backup_error(sprintf(__("Error getting table structure of %s", 'wp-db-backup'), $table)); 464 466 $this->stow("#\n# Error getting table structure of $table!\n#\n"); 465 467 } 466 468 … … 569 571 if (is_writable(ABSPATH . $this->backup_dir)) { 570 572 $this->fp = $this->open(ABSPATH . $this->backup_dir . $wp_backup_filename); 571 573 if(!$this->fp) { 572 $this->backup_error(__('Could not open the backup file for writing!' ));574 $this->backup_error(__('Could not open the backup file for writing!', 'wp-db-backup')); 573 575 return false; 574 576 } 575 577 } else { 576 $this->backup_error(__('The backup directory is not writeable!' ));578 $this->backup_error(__('The backup directory is not writeable!', 'wp-db-backup')); 577 579 return false; 578 580 } 579 581 … … 617 619 $diskfile = ABSPATH . $this->backup_dir . $filename; 618 620 if ('http' == $delivery) { 619 621 if (! file_exists($diskfile)) { 620 $msg = sprintf(__('File not found:%s' ), "<br /><strong>$filename</strong><br />");622 $msg = sprintf(__('File not found:%s', 'wp-db-backup'), "<br /><strong>$filename</strong><br />"); 621 623 $this_basename = preg_replace('/^.*wp-content[\\\\\/]plugins[\\\\\/]/', '', __FILE__); 622 $msg .= '<br /><a href="' . get_settings('siteurl') . "/wp-admin/edit.php?page={$this_basename}" . '">' . __('Return to Backup' );624 $msg .= '<br /><a href="' . get_settings('siteurl') . "/wp-admin/edit.php?page={$this_basename}" . '">' . __('Return to Backup', 'wp-db-backup'); 623 625 die($msg); 624 626 } 625 627 header('Content-Description: File Transfer'); … … 644 646 $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\n"; 645 647 $headers .= 'From: ' . get_settings('admin_email') . "\n"; 646 648 647 $message = sprintf(__("Attached to this email is\n %1s\n Size:%2s kilobytes\n" ), $filename, round(filesize($diskfile)/1024));649 $message = sprintf(__("Attached to this email is\n %1s\n Size:%2s kilobytes\n", 'wp-db-backup'), $filename, round(filesize($diskfile)/1024)); 648 650 // Add a multipart boundary above the plain message 649 651 $message = "This is a multi-part message in MIME format.\n\n" . 650 652 "--{$boundary}\n" . … … 663 665 "--{$boundary}--\n"; 664 666 665 667 if (function_exists('wp_mail')) { 666 wp_mail ($recipient, get_bloginfo('name') . ' ' . __('Database Backup' ), $message, $headers);668 wp_mail ($recipient, get_bloginfo('name') . ' ' . __('Database Backup', 'wp-db-backup'), $message, $headers); 667 669 } else { 668 mail ($recipient, get_bloginfo('name') . ' ' . __('Database Backup' ), $message, $headers);670 mail ($recipient, get_bloginfo('name') . ' ' . __('Database Backup', 'wp-db-backup'), $message, $headers); 669 671 } 670 672 671 673 unlink($diskfile); … … 681 683 682 684 // did we just do a backup? If so, let's report the status 683 685 if ( $this->backup_complete ) { 684 $feedback = '<div class="updated"><p>' . __('Backup Successful' ) . '!';686 $feedback = '<div class="updated"><p>' . __('Backup Successful', 'wp-db-backup') . '!'; 685 687 $file = $this->backup_file; 686 688 switch($_POST['deliver']) { 687 689 case 'http': 688 $feedback .= '<br />' . sprintf(__('Your backup file: <a href="%1s">%2s</a> should begin downloading shortly.' ), get_settings('siteurl') . "/{$this->backup_dir}{$this->backup_file}", $this->backup_file);690 $feedback .= '<br />' . sprintf(__('Your backup file: <a href="%1s">%2s</a> should begin downloading shortly.', 'wp-db-backup'), get_settings('siteurl') . "/{$this->backup_dir}{$this->backup_file}", $this->backup_file); 689 691 break; 690 692 case 'smtp': 691 693 if (! is_email($_POST['backup_recipient'])) { … … 693 695 } else { 694 696 $feedback .= $_POST['backup_recipient']; 695 697 } 696 $feedback = '<br />' . sprintf(__('Your backup has been emailed to %s' ), $feedback);698 $feedback = '<br />' . sprintf(__('Your backup has been emailed to %s', 'wp-db-backup'), $feedback); 697 699 break; 698 700 case 'none': 699 $feedback .= '<br />' . __('Your backup file has been saved on the server. If you would like to download it now, right click and select "Save As"' );700 $feedback .= ':<br /> <a href="' . get_settings('siteurl') . "/{$this->backup_dir}$file\">$file</a> : " . sprintf(__('%s bytes' ), filesize(ABSPATH . $this->backup_dir . $file));701 $feedback .= '<br />' . __('Your backup file has been saved on the server. If you would like to download it now, right click and select "Save As"', 'wp-db-backup'); 702 $feedback .= ':<br /> <a href="' . get_settings('siteurl') . "/{$this->backup_dir}$file\">$file</a> : " . sprintf(__('%s bytes', 'wp-db-backup'), filesize(ABSPATH . $this->backup_dir . $file)); 701 703 } 702 704 $feedback .= '</p></div>'; 703 705 } 704 706 705 707 if (count($this->backup_errors)) { 706 $feedback .= '<div class="updated error">' . __('The following errors were reported:' ) . "<pre>";708 $feedback .= '<div class="updated error">' . __('The following errors were reported:', 'wp-db-backup') . "<pre>"; 707 709 foreach($this->backup_errors as $error) { 708 710 $feedback .= "{$error}\n"; //Errors are already localized 709 711 } … … 717 719 if (is_email($_POST['cron_backup_recipient'])) { 718 720 update_option('wp_cron_backup_recipient', $_POST['cron_backup_recipient'], FALSE); 719 721 } 720 $feedback .= '<div class="updated"><p>' . __('Scheduled Backup Options Saved!' ) . '</p></div>';722 $feedback .= '<div class="updated"><p>' . __('Scheduled Backup Options Saved!', 'wp-db-backup') . '</p></div>'; 721 723 } 722 724 723 725 // Apply WP DB prefix to table names … … 746 748 if ( @ mkdir( ABSPATH . $this->backup_dir) ) { 747 749 @ chmod( ABSPATH . $this->backup_dir, $dir_perms); 748 750 } else { 749 echo '<div class="updated error"><p align="center">' . __('WARNING: Your wp-content directory is <strong>NOT</strong> writable! We can not create the backup directory.' ) . '<br />' . ABSPATH . $this->backup_dir . "</p></div>";751 echo '<div class="updated error"><p align="center">' . __('WARNING: Your wp-content directory is <strong>NOT</strong> writable! We can not create the backup directory.', 'wp-db-backup') . '<br />' . ABSPATH . $this->backup_dir . "</p></div>"; 750 752 $WHOOPS = TRUE; 751 753 } 752 754 } 753 755 754 756 if ( !is_writable( ABSPATH . $this->backup_dir) ) { 755 echo '<div class="updated error"><p align="center">' . __('WARNING: Your backup directory is <strong>NOT</strong> writable! We can not create the backup directory.' ) . '<br />' . ABSPATH . "</p></div>";757 echo '<div class="updated error"><p align="center">' . __('WARNING: Your backup directory is <strong>NOT</strong> writable! We can not create the backup directory.', 'wp-db-backup') . '<br />' . ABSPATH . "</p></div>"; 756 758 } 757 759 758 760 if ( !file_exists( ABSPATH . $this->backup_dir . 'index.php') ) { … … 760 762 } 761 763 762 764 echo "<div class='wrap'>"; 763 echo '<h2>' . __('Backup' ) . '</h2>';764 echo '<fieldset class="options"><legend>' . __('Tables' ) . '</legend>';765 echo '<h2>' . __('Backup', 'wp-db-backup') . '</h2>'; 766 echo '<fieldset class="options"><legend>' . __('Tables', 'wp-db-backup') . '</legend>'; 765 767 echo '<form method="post">'; 766 768 echo '<table align="center" cellspacing="5" cellpadding="5"><tr><td width="50%" align="left" class="alternate" valign="top">'; 767 echo __('These core WordPress tables will always be backed up:' ) . '<br /><ul>';769 echo __('These core WordPress tables will always be backed up:', 'wp-db-backup') . '<br /><ul>'; 768 770 foreach ($wp_backup_default_tables as $table) { 769 771 echo "<li><input type='hidden' name='core_tables[]' value='$table' />$table</li>"; 770 772 } 771 773 echo '</ul></td><td width="50%" align="left" valign="top">'; 772 774 if (count($other_tables) > 0) { 773 echo __('You may choose to include any of the following tables:' ) . ' <br />';775 echo __('You may choose to include any of the following tables:', 'wp-db-backup') . ' <br />'; 774 776 foreach ($other_tables as $table) { 775 777 echo "<label style=\"display:block;\"><input type='checkbox' name='other_tables[]' value='{$table}' /> {$table}</label>"; 776 778 } 777 779 } 778 780 echo '</tr></table></fieldset>'; 779 echo '<fieldset class="options"><legend>' . __('Backup Options' ) . '</legend>';780 echo __('What to do with the backup file:' ) . "<br />";781 echo '<label style="display:block;"><input type="radio" name="deliver" value="none" /> ' . __('Save to server' ) . " ({$this->backup_dir})</label>";782 echo '<label style="display:block;"><input type="radio" checked="checked" name="deliver" value="http" /> ' . __('Download to your computer' ) . '</label>';781 echo '<fieldset class="options"><legend>' . __('Backup Options', 'wp-db-backup') . '</legend>'; 782 echo __('What to do with the backup file:', 'wp-db-backup') . "<br />"; 783 echo '<label style="display:block;"><input type="radio" name="deliver" value="none" /> ' . __('Save to server', 'wp-db-backup') . " ({$this->backup_dir})</label>"; 784 echo '<label style="display:block;"><input type="radio" checked="checked" name="deliver" value="http" /> ' . __('Download to your computer', 'wp-db-backup') . '</label>'; 783 785 echo '<div><input type="radio" name="deliver" id="do_email" value="smtp" /> '; 784 echo '<label for="do_email">'.__('Email backup to:' ).'</label><input type="text" name="backup_recipient" size="20" value="' . get_settings('admin_email') . '" />';786 echo '<label for="do_email">'.__('Email backup to:', 'wp-db-backup').'</label><input type="text" name="backup_recipient" size="20" value="' . get_settings('admin_email') . '" />'; 785 787 786 788 // Check DB dize. 787 789 $table_status = $wpdb->get_results("SHOW TABLE STATUS FROM " . $this->backquote(DB_NAME)); … … 799 801 800 802 if (! $WHOOPS) { 801 803 echo '<input type="hidden" name="do_backup" id="do_backup" value="backup" /></div>'; 802 echo '<p class="submit"><input type="submit" name="submit" onclick="document.getElementById(\'do_backup\').value=\'fragments\';" value="' . __('Backup' ) . '!" / ></p>';804 echo '<p class="submit"><input type="submit" name="submit" onclick="document.getElementById(\'do_backup\').value=\'fragments\';" value="' . __('Backup', 'wp-db-backup') . '!" / ></p>'; 803 805 } else { 804 echo '<p class="alternate">' . __('WARNING: Your backup directory is <strong>NOT</strong> writable!' ) . '</p>';806 echo '<p class="alternate">' . __('WARNING: Your backup directory is <strong>NOT</strong> writable!', 'wp-db-backup') . '</p>'; 805 807 } 806 808 echo '</fieldset>'; 807 809 echo '</form>'; 808 810 809 811 // this stuff only displays if wp_cron is installed 810 812 if (function_exists('wp_cron_init')) { 811 echo '<fieldset class="options"><legend>' . __('Scheduled Backup' ) . '</legend>';813 echo '<fieldset class="options"><legend>' . __('Scheduled Backup', 'wp-db-backup') . '</legend>'; 812 814 $datetime = get_settings('date_format') . ' @ ' . get_settings('time_format'); 813 echo '<p>' . __('Last WP-Cron Daily Execution' ) . ': ' . date($datetime, get_option('wp_cron_daily_lastrun')) . '<br />';814 echo __('Next WP-Cron Daily Execution' ) . ': ' . date($datetime, (get_option('wp_cron_daily_lastrun') + 86400)) . '</p>';815 echo '<p>' . __('Last WP-Cron Daily Execution', 'wp-db-backup') . ': ' . date($datetime, get_option('wp_cron_daily_lastrun')) . '<br />'; 816 echo __('Next WP-Cron Daily Execution', 'wp-db-backup') . ': ' . date($datetime, (get_option('wp_cron_daily_lastrun') + 86400)) . '</p>'; 815 817 echo '<form method="post">'; 816 818 echo '<table width="100%" callpadding="5" cellspacing="5">'; 817 819 echo '<tr><td align="center">'; 818 echo __('Schedule: ');820 echo __('Schedule:', 'wp-db-backup'); 819 821 $wp_cron_backup_schedule = get_option('wp_cron_backup_schedule'); 820 $schedule = array(0 => __('None'), 1 => __('Daily' ));822 $schedule = array(0 => __('None'), 1 => __('Daily', 'wp-db-backup')); 821 823 foreach ($schedule as $value => $name) { 822 824 echo ' <input type="radio" name="cron_schedule"'; 823 825 if ($wp_cron_backup_schedule == $value) { … … 830 832 if (! is_email($cron_recipient)) { 831 833 $cron_recipient = get_settings('admin_email'); 832 834 } 833 echo __('Email backup to:' ) . ' <input type="text" name="cron_backup_recipient" size="20" value="' . $cron_recipient . '" />';835 echo __('Email backup to:', 'wp-db-backup') . ' <input type="text" name="cron_backup_recipient" size="20" value="' . $cron_recipient . '" />'; 834 836 echo '</td></tr>'; 835 837 $cron_tables = get_option('wp_cron_backup_tables'); 836 838 if (! is_array($cron_tables)) { 837 839 $cron_tables = array(); 838 840 } 839 841 if (count($other_tables) > 0) { 840 echo '<tr><td colspan="2" align="left">' . __('Tables to include:' ) . '<br />';842 echo '<tr><td colspan="2" align="left">' . __('Tables to include:', 'wp-db-backup') . '<br />'; 841 843 foreach ($other_tables as $table) { 842 844 echo '<input type="checkbox" '; 843 845 if (in_array($table, $cron_tables)) {
