Version Description
- 05/06/2013 =
- FEATURE: New "Migrator" add-on for moving sites from one WordPress install to another (http://updraftplus.com/shop/)
- FEATURE: The "More files" add-on can now back up any files from anywhere on your filesystem (not just parts of WordPress)
- FEATURE: The "More files" add-on can now exclude specified directories from the backup of WordPress core
- FEATURE: Dropbox and Google Drive now check available quota before uploading
- FEATURE: Nederlands / Dutch (nl_NL) translation: thanks to Hans van der Vlist - hansvandervlist@gmail.com
- FEATURE: The SFTP/FTPS add-on now supports implicit encryption (so now both explicit + implicit are supported)
- FIX: Google Drive now requires additional permissions to download your files - you will need to re-authenticate if you are downloading or restoring.
- FIX: Fix serious corruption issue in larger Rackspace Cloud Files backups (fixed a bug in Rackspace's Cloud Files library)
- FIX: Fix mcrypt call in Dropbox module to be compatible with PHP 5.2 on Windows, and with ancient FreeBSD versions which have no /dev/urandom
- FIX: Allow top-level "Restore" button even if no backup sets currently known (to allow uploading some)
- FIX: Fixed issues hindering restoration on web hosting setups with file permissions that invoked WP's remote filesystem methods
- TWEAK: Database backup now includes more info about original WP install (e.g. WP/PHP versions)
- TWEAK: The "More files" add-on now allows the user to choose whether to restore wp-config.php or not (and gives help)
- TWEAK: Added an approximate expected row count when beginning to dump out a table
- TWEAK: Remove the Google Drive URL prefix automatically for those who don't spot the instruction to do so
Download this release
Release Info
Developer | DavidAnderson |
Plugin | UpdraftPlus WordPress Backup Plugin |
Version | 1.6.1 |
Comparing to | |
See all releases |
Code changes from version 1.5.22 to 1.6.1
- admin.php +147 -26
- backup.php +2 -2
- includes/Dropbox/OAuth/Storage/Encrypter.php +3 -1
- includes/ftp.class.php +9 -6
- includes/jquery-ui-1.8.22.custom.css +1 -1
- includes/updraft-restorer.php +65 -26
- languages/updraftplus.pot +615 -398
- methods/cloudfiles.php +1 -1
- methods/dropbox.php +50 -2
- methods/ftp.php +28 -9
- methods/googledrive.php +82 -21
- methods/s3.php +1 -1
- options.php +4 -1
- readme.txt +34 -8
- updraftplus.php +61 -13
admin.php
CHANGED
@@ -140,6 +140,10 @@ class UpdraftPlus_Admin {
|
|
140 |
|
141 |
}
|
142 |
|
|
|
|
|
|
|
|
|
143 |
function disk_space_check($space) {
|
144 |
global $updraftplus;
|
145 |
$updraft_dir = $updraftplus->backups_dir_location();
|
@@ -183,7 +187,7 @@ class UpdraftPlus_Admin {
|
|
183 |
}
|
184 |
|
185 |
function show_admin_warning_googledrive() {
|
186 |
-
$this->show_admin_warning('<strong>'.__('UpdraftPlus notice:','updraftplus').'</strong> <a href="options-general.php?page=updraftplus&action=updraftmethod-googledrive-auth&updraftplus_googleauth=doit"
|
187 |
}
|
188 |
|
189 |
// This options filter removes ABSPATH off the front of updraft_dir, if it is given absolutely and contained within it
|
@@ -323,7 +327,7 @@ class UpdraftPlus_Admin {
|
|
323 |
|
324 |
if (!$service) $service = UpdraftPlus_Options::get_updraft_option('updraft_service');
|
325 |
|
326 |
-
$updraftplus->log("Requested file from remote service: $service
|
327 |
|
328 |
$method_include = UPDRAFTPLUS_DIR.'/methods/'.$service.'.php';
|
329 |
if (file_exists($method_include)) require_once($method_include);
|
@@ -599,8 +603,8 @@ class UpdraftPlus_Admin {
|
|
599 |
|
600 |
/*
|
601 |
we use request here because the initial restore is triggered by a POSTed form. we then may need to obtain credentials
|
602 |
-
for the WP_Filesystem. to do this WP outputs a form
|
603 |
-
passed back in as GET parameters. REQUEST covers both GET and POST so this
|
604 |
*/
|
605 |
if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'updraft_restore' && isset($_REQUEST['backup_timestamp'])) {
|
606 |
$backup_success = $this->restore_backup($_REQUEST['backup_timestamp']);
|
@@ -651,8 +655,9 @@ class UpdraftPlus_Admin {
|
|
651 |
if(isset($_GET['action']) && $_GET['action'] == 'updraft_create_backup_dir') {
|
652 |
if(!$this->create_backup_dir()) {
|
653 |
echo '<p>'.__('Backup directory could not be created','updraftplus').'...</p><br/>';
|
|
|
|
|
654 |
}
|
655 |
-
echo '<p>'.__('Backup directory successfully created.','updraftplus').'</p><br/>';
|
656 |
echo '<b>'.__('Actions','updraftplus').':</b> <a href="options-general.php?page=updraftplus">'.__('Return to UpdraftPlus Configuration','updraftplus').'</a>';
|
657 |
return;
|
658 |
}
|
@@ -673,7 +678,7 @@ class UpdraftPlus_Admin {
|
|
673 |
if(isset($_POST['action']) && $_POST['action'] == 'updraft_backup_debug_all') { $updraftplus->boot_backup(true,true); }
|
674 |
elseif (isset($_POST['action']) && $_POST['action'] == 'updraft_backup_debug_db') { $updraftplus->backup_db(); }
|
675 |
elseif (isset($_POST['action']) && $_POST['action'] == 'updraft_wipesettings') {
|
676 |
-
$settings = array('updraft_interval', 'updraft_interval_database', 'updraft_retain', 'updraft_retain_db', 'updraft_encryptionphrase', 'updraft_service', 'updraft_dropbox_appkey', 'updraft_dropbox_secret', 'updraft_googledrive_clientid', 'updraft_googledrive_secret', 'updraft_googledrive_remotepath', 'updraft_ftp_login', 'updraft_ftp_pass', 'updraft_ftp_remote_path', 'updraft_server_address', 'updraft_dir', 'updraft_email', 'updraft_delete_local', 'updraft_debug_mode', 'updraft_include_plugins', 'updraft_include_themes', 'updraft_include_uploads', 'updraft_include_others', 'updraft_include_wpcore',
|
677 |
'updraft_include_blogs', 'updraft_include_mu-plugins', 'updraft_include_others_exclude', 'updraft_lastmessage', 'updraft_googledrive_clientid', 'updraft_googledrive_token', 'updraft_dropboxtk_request_token', 'updraft_dropboxtk_access_token', 'updraft_dropbox_folder', 'updraft_last_backup', 'updraft_starttime_files', 'updraft_starttime_db', 'updraft_sftp_settings', 'updraft_disable_ping', 'updraft_cloudfiles_user', 'updraft_cloudfiles_apikey', 'updraft_cloudfiles_path', 'updraft_cloudfiles_authurl', 'updraft_ssl_useservercerts', 'updraft_ssl_disableverify');
|
678 |
foreach ($settings as $s) {
|
679 |
UpdraftPlus_Options::delete_updraft_option($s);
|
@@ -770,7 +775,7 @@ class UpdraftPlus_Admin {
|
|
770 |
?>
|
771 |
|
772 |
<tr>
|
773 |
-
<th><?php _e('Next scheduled backups','updraftplus');?>:</th>
|
774 |
<td>
|
775 |
<div style="width: 76px; float:left;"><?php _e('Files','updraftplus'); ?>:</div><div style="color:blue; float:left;"><?php echo $next_scheduled_backup?></div>
|
776 |
<div style="width: 76px; clear: left; float:left;"><?php _e('Database','updraftplus');?>: </div><div style="color:blue; float:left;"><?php echo $next_scheduled_backup_database?></div>
|
@@ -789,9 +794,8 @@ class UpdraftPlus_Admin {
|
|
789 |
<?php
|
790 |
$backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history');
|
791 |
$backup_history = (is_array($backup_history))?$backup_history:array();
|
792 |
-
$restore_disabled = (count($backup_history) == 0) ? 'disabled="disabled"' : "";
|
793 |
?>
|
794 |
-
<input type="button" class="button-primary"
|
795 |
</div>
|
796 |
</div>
|
797 |
</div>
|
@@ -814,6 +818,9 @@ class UpdraftPlus_Admin {
|
|
814 |
<li><strong><?php _e('Downloading','updraftplus');?>:</strong> <?php _e("Pressing a button for Database/Plugins/Themes/Uploads/Others will make UpdraftPlus try to bring the backup file back from the remote storage (if any - e.g. Amazon S3, Dropbox, Google Drive, FTP) to your webserver. Then you will be allowed to download it to your computer. If the fetch from the remote storage stops progressing (wait 30 seconds to make sure), then press again to resume. Remember that you can also visit the cloud storage vendor's website directly.",'updraftplus');?></li>
|
815 |
<li><strong><?php _e('Restoring','updraftplus');?>:</strong> <?php _e("Press the button for the backup you wish to restore. If your site is large and you are using remote storage, then you should first click on each entity in order to retrieve it back to the webserver. This will prevent time-outs from occuring during the restore process itself.",'updraftplus');?> <?php _e('More tasks:','updraftplus');?> <a href="#" onclick="jQuery('#updraft-plupload-modal').slideToggle(); return false;"><?php _e('upload backup files','updraftplus');?></a> | <a href="#" onclick="updraft_updatehistory(1); return false;" title="<?php _e('Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded. The location of this directory is set in the expert settings, below.','updraftplus'); ?>"><?php _e('rescan folder for new backup sets','updraftplus');?></a></li>
|
816 |
<li><strong><?php _e('Opera web browser','updraftplus');?>:</strong> <?php _e('If you are using this, then turn Turbo/Road mode off.','updraftplus');?></li>
|
|
|
|
|
|
|
817 |
<li title="<?php _e('This is a count of the contents of your Updraft directory','updraftplus');?>"><strong><?php _e('Web-server disk space in use by UpdraftPlus','updraftplus');?>:</strong> <span id="updraft_diskspaceused"><em>(calculating...)</em></span> <a href="#" onclick="updraftplus_diskspace(); return false;"><?php _e('refresh','updraftplus');?></a></li></ul>
|
818 |
|
819 |
<div id="updraft-plupload-modal" title="<?php _e('UpdraftPlus - Upload backup files','updraftplus'); ?>" style="width: 75%; margin: 16px; display:none; margin-left: 100px;">
|
@@ -932,7 +939,7 @@ class UpdraftPlus_Admin {
|
|
932 |
|
933 |
<div id="updraft-restore-modal" title="UpdraftPlus - <?php _e('Restore backup','updraftplus');?>">
|
934 |
<p><strong><?php _e('Restore backup from','updraftplus');?>:</strong> <span id="updraft_restore_date"></span></p>
|
935 |
-
<p><?php _e("Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection",'updraftplus');?>
|
936 |
<form id="updraft_restore_form" method="post">
|
937 |
<fieldset>
|
938 |
<input type="hidden" name="action" value="updraft_restore">
|
@@ -946,10 +953,48 @@ class UpdraftPlus_Admin {
|
|
946 |
|
947 |
$backupable_entities = $updraftplus->get_backupable_file_entities(true, true);
|
948 |
foreach ($backupable_entities as $type => $info) {
|
949 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
950 |
}
|
951 |
?>
|
952 |
-
<div><input id="updraft_restore_db" type="checkbox" name="updraft_restore[]" value="db"> <label for="updraft_restore_db"><?php _e('Database','updraftplus'); ?></label><br
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
953 |
</fieldset>
|
954 |
</form>
|
955 |
<p><em><a href="http://updraftplus.com/faqs/what-should-i-understand-before-undertaking-a-restoration/" target="_new"><?php _e('Do read this helpful article of useful things to know before restoring.','updraftplus');?></a></em></p>
|
@@ -958,7 +1003,7 @@ class UpdraftPlus_Admin {
|
|
958 |
<div id="updraft-backupnow-modal" title="UpdraftPlus - <?php _e('Perform a backup now','updraftplus'); ?>">
|
959 |
<p><?php _e("This will schedule a one-time backup. To proceed, press 'Backup Now', then wait 10 seconds, then visit any page on your site. WordPress should then start the backup running in the background.",'updraftplus');?></p>
|
960 |
|
961 |
-
<form id="updraft-backupnow-form" method="post"
|
962 |
<input type="hidden" name="action" value="updraft_backup" />
|
963 |
</form>
|
964 |
|
@@ -1043,7 +1088,8 @@ class UpdraftPlus_Admin {
|
|
1043 |
exit;
|
1044 |
}
|
1045 |
|
1046 |
-
$
|
|
|
1047 |
|
1048 |
$return_code = true;
|
1049 |
|
@@ -1051,7 +1097,7 @@ class UpdraftPlus_Admin {
|
|
1051 |
if (substr($item['name'], -4, 4) == "-old") {
|
1052 |
//recursively delete
|
1053 |
print "<strong>".__('Delete','updraftplus').": </strong>".htmlspecialchars($item['name']).": ";
|
1054 |
-
if(!$wp_filesystem->delete(
|
1055 |
$return_code = false;
|
1056 |
print "<strong>Failed</strong><br>";
|
1057 |
} else {
|
@@ -1073,7 +1119,8 @@ class UpdraftPlus_Admin {
|
|
1073 |
}
|
1074 |
|
1075 |
$updraft_dir = $updraftplus->backups_dir_location();
|
1076 |
-
|
|
|
1077 |
$updraft_dir = ($updraft_dir)?$updraft_dir:$default_backup_dir;
|
1078 |
|
1079 |
if (!$wp_filesystem->mkdir($updraft_dir, 0775)) return false;
|
@@ -1189,9 +1236,37 @@ class UpdraftPlus_Admin {
|
|
1189 |
foreach ($backupable_entities as $key => $info) {
|
1190 |
$included = (UpdraftPlus_Options::get_updraft_option("updraft_include_$key", apply_filters("updraftplus_defaultoption_include_".$key, true))) ? 'checked="checked"' : "";
|
1191 |
if ('others' == $key) {
|
1192 |
-
?><input id="updraft_include_others" type="checkbox" name="updraft_include_others" value="1" <?php echo $included; ?> /> <label for="updraft_include_<?php echo $key ?>"><?php echo __('Any other directories found inside wp-content
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1193 |
} else {
|
1194 |
echo "<input id=\"updraft_include_$key\" type=\"checkbox\" name=\"updraft_include_$key\" value=\"1\" $included /><label for=\"updraft_include_$key\"> ".$info['description']."</label><br>";
|
|
|
1195 |
}
|
1196 |
}
|
1197 |
?>
|
@@ -1340,7 +1415,7 @@ class UpdraftPlus_Admin {
|
|
1340 |
updraft_check_same_times();
|
1341 |
|
1342 |
jQuery( "#updraft-restore-modal" ).dialog({
|
1343 |
-
autoOpen: false, height:
|
1344 |
buttons: {
|
1345 |
'<?php _e('Restore','updraftplus');?>': function() {
|
1346 |
var anyselected = 0;
|
@@ -1560,9 +1635,10 @@ class UpdraftPlus_Admin {
|
|
1560 |
<?php
|
1561 |
foreach ($backupable_entities as $type => $info) {
|
1562 |
echo '<td>';
|
|
|
|
|
1563 |
if (isset($value[$type])) {
|
1564 |
$entities .= '/'.$type.'/';
|
1565 |
-
$sdescrip = preg_replace('/ \(.*\)$/', '', $info['description']);
|
1566 |
?>
|
1567 |
<form id="uddownloadform_<?php echo $type.'_'.$key;?>" action="admin-ajax.php" onsubmit="return updraft_downloader('uddlstatus_', '<?php echo $key."', '".$type;?>')" method="post">
|
1568 |
<?php wp_nonce_field('updraftplus_download'); ?>
|
@@ -1571,7 +1647,7 @@ class UpdraftPlus_Admin {
|
|
1571 |
<input type="hidden" name="timestamp" value="<?php echo $key?>" />
|
1572 |
<input type="submit" title="<?php echo __('Press here to download','updraftplus').' '.strtolower($info['description']); ?>" value="<?php echo $sdescrip;?>" />
|
1573 |
</form>
|
1574 |
-
<?php } else { printf(_x('(No %s)','Message shown when no such object is available','updraftplus'), preg_replace('/\s\(.{12,}\)/', '', strtolower($
|
1575 |
</td>
|
1576 |
<?php }; ?>
|
1577 |
|
@@ -1589,20 +1665,25 @@ class UpdraftPlus_Admin {
|
|
1589 |
<form method="post" action="">
|
1590 |
<input type="hidden" name="backup_timestamp" value="<?php echo $key;?>">
|
1591 |
<input type="hidden" name="action" value="updraft_restore" />
|
1592 |
-
<?php if ($entities) { ?><button title="<?php _e('After pressing this button, you will be given the option to choose which components you wish to restore','updraftplus');?>" type="button"
|
1593 |
</form>
|
1594 |
</td>
|
1595 |
</tr>
|
1596 |
<script>
|
1597 |
-
function
|
|
|
1598 |
jQuery('input[name="updraft_restore[]"]').each(function(x,y){
|
1599 |
var entity = jQuery(y).val();
|
1600 |
if (entities.indexOf('/'+entity+'/') != -1) {
|
1601 |
jQuery(y).removeAttr('disabled').parent().show();
|
|
|
|
|
1602 |
} else {
|
1603 |
jQuery(y).attr('disabled','disabled').parent().hide();
|
1604 |
}
|
1605 |
});
|
|
|
|
|
1606 |
}
|
1607 |
</script>
|
1608 |
<?php }
|
@@ -1676,7 +1757,23 @@ class UpdraftPlus_Admin {
|
|
1676 |
return false;
|
1677 |
}
|
1678 |
|
1679 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1680 |
WP_Filesystem($credentials);
|
1681 |
if ( $wp_filesystem->errors->get_error_code() ) {
|
1682 |
foreach ( $wp_filesystem->errors->get_error_messages() as $message )
|
@@ -1691,12 +1788,31 @@ class UpdraftPlus_Admin {
|
|
1691 |
|
1692 |
$service = (isset($backup_history[$timestamp]['service'])) ? $backup_history[$timestamp]['service'] : false;
|
1693 |
|
1694 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1695 |
echo '<p>'.__('ABORT: Could not find the information on which entities to restore.', 'updraftplus').'</p>';
|
|
|
1696 |
return false;
|
1697 |
}
|
1698 |
|
1699 |
-
|
|
|
|
|
|
|
1700 |
|
1701 |
$backupable_entities = $updraftplus->get_backupable_file_entities(true, true);
|
1702 |
|
@@ -1705,6 +1821,8 @@ class UpdraftPlus_Admin {
|
|
1705 |
|
1706 |
if (!isset($backupable_entities[$type]) && 'db' != $type) continue;
|
1707 |
|
|
|
|
|
1708 |
if ($type == 'db') {
|
1709 |
echo "<h2>".__('Database','updraftplus')."</h2>";
|
1710 |
} else {
|
@@ -1742,7 +1860,10 @@ class UpdraftPlus_Admin {
|
|
1742 |
if(!class_exists('WP_Upgrader')) require_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
|
1743 |
require_once(UPDRAFTPLUS_DIR.'/includes/updraft-restorer.php');
|
1744 |
$restorer = new Updraft_Restorer();
|
1745 |
-
|
|
|
|
|
|
|
1746 |
|
1747 |
if(is_wp_error($val)) {
|
1748 |
foreach ($val->get_error_messages() as $msg) {
|
140 |
|
141 |
}
|
142 |
|
143 |
+
function googledrive_remove_folderurlprefix($input) {
|
144 |
+
return str_replace('https://drive.google.com/#folders/', '', $input);
|
145 |
+
}
|
146 |
+
|
147 |
function disk_space_check($space) {
|
148 |
global $updraftplus;
|
149 |
$updraft_dir = $updraftplus->backups_dir_location();
|
187 |
}
|
188 |
|
189 |
function show_admin_warning_googledrive() {
|
190 |
+
$this->show_admin_warning('<strong>'.__('UpdraftPlus notice:','updraftplus').'</strong> <a href="options-general.php?page=updraftplus&action=updraftmethod-googledrive-auth&updraftplus_googleauth=doit">'.sprintf(__('Click here to authenticate your %s account (you will not be able to back up to %s without it).','updraftplus'),'Google Drive','Google Drive').'</a>');
|
191 |
}
|
192 |
|
193 |
// This options filter removes ABSPATH off the front of updraft_dir, if it is given absolutely and contained within it
|
327 |
|
328 |
if (!$service) $service = UpdraftPlus_Options::get_updraft_option('updraft_service');
|
329 |
|
330 |
+
$updraftplus->log("Requested file from remote service: $service: $file");
|
331 |
|
332 |
$method_include = UPDRAFTPLUS_DIR.'/methods/'.$service.'.php';
|
333 |
if (file_exists($method_include)) require_once($method_include);
|
603 |
|
604 |
/*
|
605 |
we use request here because the initial restore is triggered by a POSTed form. we then may need to obtain credentials
|
606 |
+
for the WP_Filesystem. to do this WP outputs a form, but we don't pass our parameters via that. So the values are
|
607 |
+
passed back in as GET parameters. REQUEST covers both GET and POST so this logic works.
|
608 |
*/
|
609 |
if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'updraft_restore' && isset($_REQUEST['backup_timestamp'])) {
|
610 |
$backup_success = $this->restore_backup($_REQUEST['backup_timestamp']);
|
655 |
if(isset($_GET['action']) && $_GET['action'] == 'updraft_create_backup_dir') {
|
656 |
if(!$this->create_backup_dir()) {
|
657 |
echo '<p>'.__('Backup directory could not be created','updraftplus').'...</p><br/>';
|
658 |
+
} else {
|
659 |
+
echo '<p>'.__('Backup directory successfully created.','updraftplus').'</p><br/>';
|
660 |
}
|
|
|
661 |
echo '<b>'.__('Actions','updraftplus').':</b> <a href="options-general.php?page=updraftplus">'.__('Return to UpdraftPlus Configuration','updraftplus').'</a>';
|
662 |
return;
|
663 |
}
|
678 |
if(isset($_POST['action']) && $_POST['action'] == 'updraft_backup_debug_all') { $updraftplus->boot_backup(true,true); }
|
679 |
elseif (isset($_POST['action']) && $_POST['action'] == 'updraft_backup_debug_db') { $updraftplus->backup_db(); }
|
680 |
elseif (isset($_POST['action']) && $_POST['action'] == 'updraft_wipesettings') {
|
681 |
+
$settings = array('updraft_interval', 'updraft_interval_database', 'updraft_retain', 'updraft_retain_db', 'updraft_encryptionphrase', 'updraft_service', 'updraft_dropbox_appkey', 'updraft_dropbox_secret', 'updraft_googledrive_clientid', 'updraft_googledrive_secret', 'updraft_googledrive_remotepath', 'updraft_ftp_login', 'updraft_ftp_pass', 'updraft_ftp_remote_path', 'updraft_server_address', 'updraft_dir', 'updraft_email', 'updraft_delete_local', 'updraft_debug_mode', 'updraft_include_plugins', 'updraft_include_themes', 'updraft_include_uploads', 'updraft_include_others', 'updraft_include_wpcore', 'updraft_include_wpcore_exclude', 'updraft_include_more',
|
682 |
'updraft_include_blogs', 'updraft_include_mu-plugins', 'updraft_include_others_exclude', 'updraft_lastmessage', 'updraft_googledrive_clientid', 'updraft_googledrive_token', 'updraft_dropboxtk_request_token', 'updraft_dropboxtk_access_token', 'updraft_dropbox_folder', 'updraft_last_backup', 'updraft_starttime_files', 'updraft_starttime_db', 'updraft_sftp_settings', 'updraft_disable_ping', 'updraft_cloudfiles_user', 'updraft_cloudfiles_apikey', 'updraft_cloudfiles_path', 'updraft_cloudfiles_authurl', 'updraft_ssl_useservercerts', 'updraft_ssl_disableverify');
|
683 |
foreach ($settings as $s) {
|
684 |
UpdraftPlus_Options::delete_updraft_option($s);
|
775 |
?>
|
776 |
|
777 |
<tr>
|
778 |
+
<th><span title="<?php _e('All the times shown in this section are using WordPress\'s configured time zone, which you can set in Settings -> General', 'updraftplus'); ?>"><?php _e('Next scheduled backups','updraftplus');?>:</span></th>
|
779 |
<td>
|
780 |
<div style="width: 76px; float:left;"><?php _e('Files','updraftplus'); ?>:</div><div style="color:blue; float:left;"><?php echo $next_scheduled_backup?></div>
|
781 |
<div style="width: 76px; clear: left; float:left;"><?php _e('Database','updraftplus');?>: </div><div style="color:blue; float:left;"><?php echo $next_scheduled_backup_database?></div>
|
794 |
<?php
|
795 |
$backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history');
|
796 |
$backup_history = (is_array($backup_history))?$backup_history:array();
|
|
|
797 |
?>
|
798 |
+
<input type="button" class="button-primary" value="<?php _e('Restore','updraftplus');?>" style="padding-top:2px;padding-bottom:2px;font-size:22px !important; min-height: 32px;" onclick="jQuery('.download-backups').slideDown(); updraft_historytimertoggle(1); jQuery('html,body').animate({scrollTop: jQuery('#updraft_lastlogcontainer').offset().top},'slow');">
|
799 |
</div>
|
800 |
</div>
|
801 |
</div>
|
818 |
<li><strong><?php _e('Downloading','updraftplus');?>:</strong> <?php _e("Pressing a button for Database/Plugins/Themes/Uploads/Others will make UpdraftPlus try to bring the backup file back from the remote storage (if any - e.g. Amazon S3, Dropbox, Google Drive, FTP) to your webserver. Then you will be allowed to download it to your computer. If the fetch from the remote storage stops progressing (wait 30 seconds to make sure), then press again to resume. Remember that you can also visit the cloud storage vendor's website directly.",'updraftplus');?></li>
|
819 |
<li><strong><?php _e('Restoring','updraftplus');?>:</strong> <?php _e("Press the button for the backup you wish to restore. If your site is large and you are using remote storage, then you should first click on each entity in order to retrieve it back to the webserver. This will prevent time-outs from occuring during the restore process itself.",'updraftplus');?> <?php _e('More tasks:','updraftplus');?> <a href="#" onclick="jQuery('#updraft-plupload-modal').slideToggle(); return false;"><?php _e('upload backup files','updraftplus');?></a> | <a href="#" onclick="updraft_updatehistory(1); return false;" title="<?php _e('Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded. The location of this directory is set in the expert settings, below.','updraftplus'); ?>"><?php _e('rescan folder for new backup sets','updraftplus');?></a></li>
|
820 |
<li><strong><?php _e('Opera web browser','updraftplus');?>:</strong> <?php _e('If you are using this, then turn Turbo/Road mode off.','updraftplus');?></li>
|
821 |
+
<?php if (UpdraftPlus_Options::get_updraft_option('updraft_service') == 'googledrive') {
|
822 |
+
?><li><strong><?php _e('Google Drive','updraftplus');?>:</strong> <?php _e('Google changed their permissions setup recently (April 2013). To download or restore from Google Drive, you <strong>must</strong> first re-authenticate (using the link in the Google Drive configuration section).','updraftplus');?></li>
|
823 |
+
<?php } ?>
|
824 |
<li title="<?php _e('This is a count of the contents of your Updraft directory','updraftplus');?>"><strong><?php _e('Web-server disk space in use by UpdraftPlus','updraftplus');?>:</strong> <span id="updraft_diskspaceused"><em>(calculating...)</em></span> <a href="#" onclick="updraftplus_diskspace(); return false;"><?php _e('refresh','updraftplus');?></a></li></ul>
|
825 |
|
826 |
<div id="updraft-plupload-modal" title="<?php _e('UpdraftPlus - Upload backup files','updraftplus'); ?>" style="width: 75%; margin: 16px; display:none; margin-left: 100px;">
|
939 |
|
940 |
<div id="updraft-restore-modal" title="UpdraftPlus - <?php _e('Restore backup','updraftplus');?>">
|
941 |
<p><strong><?php _e('Restore backup from','updraftplus');?>:</strong> <span id="updraft_restore_date"></span></p>
|
942 |
+
<p><?php _e("Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection).",'updraftplus');?> <?php _e('Choose the components to restore','updraftplus');?>:</p>
|
943 |
<form id="updraft_restore_form" method="post">
|
944 |
<fieldset>
|
945 |
<input type="hidden" name="action" value="updraft_restore">
|
953 |
|
954 |
$backupable_entities = $updraftplus->get_backupable_file_entities(true, true);
|
955 |
foreach ($backupable_entities as $type => $info) {
|
956 |
+
if (!isset($info['restorable']) || $info['restorable'] == true) {
|
957 |
+
echo '<div><input id="updraft_restore_'.$type.'" type="checkbox" name="updraft_restore[]" value="'.$type.'"> <label for="updraft_restore_'.$type.'">'.$info['description'].'</label><br>';
|
958 |
+
|
959 |
+
do_action("updraftplus_restore_form_$type");
|
960 |
+
|
961 |
+
echo '</div>';
|
962 |
+
} else {
|
963 |
+
$sdescrip = isset($info['shortdescription']) ? $info['shortdescription'] : $info['description'];
|
964 |
+
echo "<div style=\"margin: 8px 0;\"><em>".htmlspecialchars(sprintf(__('The following entity cannot be restored automatically: "%s".', 'updraftplus'), $sdescrip))." ".__('You will need to restore it manually.', 'updraftplus')."</em><br>".'<input id="updraft_restore_'.$type.'" type="hidden" name="updraft_restore[]" value="'.$type.'"></div>';
|
965 |
+
}
|
966 |
}
|
967 |
?>
|
968 |
+
<div><input id="updraft_restore_db" type="checkbox" name="updraft_restore[]" value="db"> <label for="updraft_restore_db"><?php _e('Database','updraftplus'); ?></label><br>
|
969 |
+
|
970 |
+
|
971 |
+
<div id="updraft_restorer_dboptions" style="display:none; padding:12px; margin: 8px 0 4px; border: dashed 1px;"><h4 style="margin: 0px 0px 6px; padding:0px;"><?php echo sprintf(__('%s restoration options:','updraftplus'),__('Database','updraftplus')); ?></h4>
|
972 |
+
|
973 |
+
<?php
|
974 |
+
|
975 |
+
do_action("updraftplus_restore_form_db");
|
976 |
+
|
977 |
+
if (!class_exists('UpdraftPlus_Addons_Migrator')) {
|
978 |
+
|
979 |
+
echo '<a href="http://updraftplus.com/faqs/tell-me-more-about-the-search-and-replace-site-location-in-the-database-option/">'.__('You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information','updraftplus').'</a>';
|
980 |
+
|
981 |
+
}
|
982 |
+
|
983 |
+
?>
|
984 |
+
|
985 |
+
<script>
|
986 |
+
jQuery('#updraft_restore_db').change(function(){
|
987 |
+
if (jQuery('#updraft_restore_db').is(':checked')) {
|
988 |
+
jQuery('#updraft_restorer_dboptions').slideDown();
|
989 |
+
} else {
|
990 |
+
jQuery('#updraft_restorer_dboptions').slideUp();
|
991 |
+
}
|
992 |
+
});
|
993 |
+
</script>
|
994 |
+
|
995 |
+
</div>
|
996 |
+
|
997 |
+
</div>
|
998 |
</fieldset>
|
999 |
</form>
|
1000 |
<p><em><a href="http://updraftplus.com/faqs/what-should-i-understand-before-undertaking-a-restoration/" target="_new"><?php _e('Do read this helpful article of useful things to know before restoring.','updraftplus');?></a></em></p>
|
1003 |
<div id="updraft-backupnow-modal" title="UpdraftPlus - <?php _e('Perform a backup now','updraftplus'); ?>">
|
1004 |
<p><?php _e("This will schedule a one-time backup. To proceed, press 'Backup Now', then wait 10 seconds, then visit any page on your site. WordPress should then start the backup running in the background.",'updraftplus');?></p>
|
1005 |
|
1006 |
+
<form id="updraft-backupnow-form" method="post">
|
1007 |
<input type="hidden" name="action" value="updraft_backup" />
|
1008 |
</form>
|
1009 |
|
1088 |
exit;
|
1089 |
}
|
1090 |
|
1091 |
+
$content_dir = $wp_filesystem->wp_content_dir();
|
1092 |
+
$list = $wp_filesystem->dirlist($content_dir);
|
1093 |
|
1094 |
$return_code = true;
|
1095 |
|
1097 |
if (substr($item['name'], -4, 4) == "-old") {
|
1098 |
//recursively delete
|
1099 |
print "<strong>".__('Delete','updraftplus').": </strong>".htmlspecialchars($item['name']).": ";
|
1100 |
+
if(!$wp_filesystem->delete($content_dir.$item['name'], true)) {
|
1101 |
$return_code = false;
|
1102 |
print "<strong>Failed</strong><br>";
|
1103 |
} else {
|
1119 |
}
|
1120 |
|
1121 |
$updraft_dir = $updraftplus->backups_dir_location();
|
1122 |
+
|
1123 |
+
$default_backup_dir = $wp_filesystem->find_folder($updraft_dir);
|
1124 |
$updraft_dir = ($updraft_dir)?$updraft_dir:$default_backup_dir;
|
1125 |
|
1126 |
if (!$wp_filesystem->mkdir($updraft_dir, 0775)) return false;
|
1236 |
foreach ($backupable_entities as $key => $info) {
|
1237 |
$included = (UpdraftPlus_Options::get_updraft_option("updraft_include_$key", apply_filters("updraftplus_defaultoption_include_".$key, true))) ? 'checked="checked"' : "";
|
1238 |
if ('others' == $key) {
|
1239 |
+
?><input id="updraft_include_others" type="checkbox" name="updraft_include_others" value="1" <?php echo $included; ?> /> <label for="updraft_include_<?php echo $key ?>"><?php echo __('Any other directories found inside wp-content', 'updraftplus');?></label><br><?php
|
1240 |
+
|
1241 |
+
$display = ($included) ? '' : 'style="display:none;"';
|
1242 |
+
|
1243 |
+
echo "<div id=\"updraft_include_others_exclude\" $display>";
|
1244 |
+
|
1245 |
+
echo '<label for="updraft_include_others_exclude">'.__('Exclude these:', 'updraftplus').'</label>';
|
1246 |
+
|
1247 |
+
echo '<input title="'.__('If entering multiple files/directories, then separate them with commas', 'updraftplus').'" type="text" id="updraft_include_others_exclude" name="updraft_include_others_exclude" size="54" value="'.htmlspecialchars($include_others_exclude).'" />';
|
1248 |
+
|
1249 |
+
echo '<br>';
|
1250 |
+
|
1251 |
+
echo '</div>';
|
1252 |
+
|
1253 |
+
echo <<<ENDHERE
|
1254 |
+
<script>
|
1255 |
+
jQuery(document).ready(function() {
|
1256 |
+
jQuery('#updraft_include_others').click(function() {
|
1257 |
+
if (jQuery('#updraft_include_others').is(':checked')) {
|
1258 |
+
jQuery('#updraft_include_others_exclude').slideDown();
|
1259 |
+
} else {
|
1260 |
+
jQuery('#updraft_include_others_exclude').slideUp();
|
1261 |
+
}
|
1262 |
+
});
|
1263 |
+
});
|
1264 |
+
</script>
|
1265 |
+
ENDHERE;
|
1266 |
+
|
1267 |
} else {
|
1268 |
echo "<input id=\"updraft_include_$key\" type=\"checkbox\" name=\"updraft_include_$key\" value=\"1\" $included /><label for=\"updraft_include_$key\"> ".$info['description']."</label><br>";
|
1269 |
+
do_action("updraftplus_config_option_include_$key");
|
1270 |
}
|
1271 |
}
|
1272 |
?>
|
1415 |
updraft_check_same_times();
|
1416 |
|
1417 |
jQuery( "#updraft-restore-modal" ).dialog({
|
1418 |
+
autoOpen: false, height: 505, width: 590, modal: true,
|
1419 |
buttons: {
|
1420 |
'<?php _e('Restore','updraftplus');?>': function() {
|
1421 |
var anyselected = 0;
|
1635 |
<?php
|
1636 |
foreach ($backupable_entities as $type => $info) {
|
1637 |
echo '<td>';
|
1638 |
+
$sdescrip = preg_replace('/ \(.*\)$/', '', $info['description']);
|
1639 |
+
if (strlen($sdescrip) > 20 && isset($info['shortdescription'])) $sdescrip = $info['shortdescription'];
|
1640 |
if (isset($value[$type])) {
|
1641 |
$entities .= '/'.$type.'/';
|
|
|
1642 |
?>
|
1643 |
<form id="uddownloadform_<?php echo $type.'_'.$key;?>" action="admin-ajax.php" onsubmit="return updraft_downloader('uddlstatus_', '<?php echo $key."', '".$type;?>')" method="post">
|
1644 |
<?php wp_nonce_field('updraftplus_download'); ?>
|
1647 |
<input type="hidden" name="timestamp" value="<?php echo $key?>" />
|
1648 |
<input type="submit" title="<?php echo __('Press here to download','updraftplus').' '.strtolower($info['description']); ?>" value="<?php echo $sdescrip;?>" />
|
1649 |
</form>
|
1650 |
+
<?php } else { printf(_x('(No %s)','Message shown when no such object is available','updraftplus'), preg_replace('/\s\(.{12,}\)/', '', strtolower($sdescrip))); } ?>
|
1651 |
</td>
|
1652 |
<?php }; ?>
|
1653 |
|
1665 |
<form method="post" action="">
|
1666 |
<input type="hidden" name="backup_timestamp" value="<?php echo $key;?>">
|
1667 |
<input type="hidden" name="action" value="updraft_restore" />
|
1668 |
+
<?php if ($entities) { ?><button title="<?php _e('After pressing this button, you will be given the option to choose which components you wish to restore','updraftplus');?>" type="button" class="button-primary" style="padding-top:2px;padding-bottom:2px;font-size:16px !important; min-height:26px;" onclick="updraft_restore_setoptions('<?php echo $entities;?>'); jQuery('#updraft_restore_timestamp').val('<?php echo $key;?>'); jQuery('#updraft_restore_date').html('<?php echo $pretty_date;?>'); jQuery('#updraft-restore-modal').dialog('open');"><?php _e('Restore','updraftplus');?></button><?php } ?>
|
1669 |
</form>
|
1670 |
</td>
|
1671 |
</tr>
|
1672 |
<script>
|
1673 |
+
function updraft_restore_setoptions(entities) {
|
1674 |
+
var howmany = 0;
|
1675 |
jQuery('input[name="updraft_restore[]"]').each(function(x,y){
|
1676 |
var entity = jQuery(y).val();
|
1677 |
if (entities.indexOf('/'+entity+'/') != -1) {
|
1678 |
jQuery(y).removeAttr('disabled').parent().show();
|
1679 |
+
howmany++;
|
1680 |
+
if (entity == 'db') { howmany += 4.5;}
|
1681 |
} else {
|
1682 |
jQuery(y).attr('disabled','disabled').parent().hide();
|
1683 |
}
|
1684 |
});
|
1685 |
+
var height = 276+howmany*20;
|
1686 |
+
jQuery('#updraft-restore-modal').dialog("option", "height", height);
|
1687 |
}
|
1688 |
</script>
|
1689 |
<?php }
|
1757 |
return false;
|
1758 |
}
|
1759 |
|
1760 |
+
// request_filesystem_credentials passes on fields just via hidden name/value pairs.
|
1761 |
+
// Build array of parameters to be passed via this
|
1762 |
+
$extra_fields = array();
|
1763 |
+
if (isset($_POST['updraft_restore']) && is_array($_POST['updraft_restore'])) {
|
1764 |
+
foreach ($_POST['updraft_restore'] as $entity) {
|
1765 |
+
$_POST['updraft_restore_'.$entity] = 1;
|
1766 |
+
$extra_fields[] = 'updraft_restore_'.$entity;
|
1767 |
+
}
|
1768 |
+
}
|
1769 |
+
// Now make sure that updraft_restorer_ option fields get passed along to request_filesystem_credentials
|
1770 |
+
foreach ($_POST as $key => $value) {
|
1771 |
+
if (strpos($key, 'updraft_restorer_') === 0 ) {
|
1772 |
+
$extra_fields[] = $key;
|
1773 |
+
}
|
1774 |
+
}
|
1775 |
+
|
1776 |
+
$credentials = request_filesystem_credentials("options-general.php?page=updraftplus&action=updraft_restore&backup_timestamp=$timestamp", '', false, false, $extra_fields);
|
1777 |
WP_Filesystem($credentials);
|
1778 |
if ( $wp_filesystem->errors->get_error_code() ) {
|
1779 |
foreach ( $wp_filesystem->errors->get_error_messages() as $message )
|
1788 |
|
1789 |
$service = (isset($backup_history[$timestamp]['service'])) ? $backup_history[$timestamp]['service'] : false;
|
1790 |
|
1791 |
+
// Now, need to turn any updraft_restore_<entity> fields (that came from a potential WP_Filesystem form) back into parts of the _POST array (which we want to use)
|
1792 |
+
if (empty($_POST['updraft_restore']) || (!is_array($_POST['updraft_restore']))) $_POST['updraft_restore'] = array();
|
1793 |
+
|
1794 |
+
$entities_to_restore = array_flip($_POST['updraft_restore']);
|
1795 |
+
|
1796 |
+
foreach ($_POST as $key => $value) {
|
1797 |
+
if (strpos($key, 'updraft_restore_') === 0 ) {
|
1798 |
+
$nkey = substr($key, 16);
|
1799 |
+
if (!isset($entities_to_restore[$nkey])) {
|
1800 |
+
$_POST['updraft_restore'][] = $nkey;
|
1801 |
+
$entities_to_restore[$nkey] = 1;
|
1802 |
+
}
|
1803 |
+
}
|
1804 |
+
}
|
1805 |
+
|
1806 |
+
if (count($_POST['updraft_restore']) == 0) {
|
1807 |
echo '<p>'.__('ABORT: Could not find the information on which entities to restore.', 'updraftplus').'</p>';
|
1808 |
+
echo '<p>'.__('If making a request for support, please include this information:','updraftplus').' '.count($_POST).' : '.htmlspecialchars(serialize($_POST)).'</p>';
|
1809 |
return false;
|
1810 |
}
|
1811 |
|
1812 |
+
/*
|
1813 |
+
$_POST['updraft_restore'] is typically something like: array( 0=>'db', 1=>'plugins', 2=>'themes'), etc.
|
1814 |
+
i.e. array ( 'db', 'plugins', themes')
|
1815 |
+
*/
|
1816 |
|
1817 |
$backupable_entities = $updraftplus->get_backupable_file_entities(true, true);
|
1818 |
|
1821 |
|
1822 |
if (!isset($backupable_entities[$type]) && 'db' != $type) continue;
|
1823 |
|
1824 |
+
if (isset($backupable_entities[$type]['restorable']) && $backupable_entities[$type]['restorable'] == false) continue;
|
1825 |
+
|
1826 |
if ($type == 'db') {
|
1827 |
echo "<h2>".__('Database','updraftplus')."</h2>";
|
1828 |
} else {
|
1860 |
if(!class_exists('WP_Upgrader')) require_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
|
1861 |
require_once(UPDRAFTPLUS_DIR.'/includes/updraft-restorer.php');
|
1862 |
$restorer = new Updraft_Restorer();
|
1863 |
+
|
1864 |
+
$info = (isset($backupable_entities[$type])) ? $backupable_entities[$type] : array();
|
1865 |
+
|
1866 |
+
$val = $restorer->restore_backup($file, $type, $service, $info);
|
1867 |
|
1868 |
if(is_wp_error($val)) {
|
1869 |
foreach ($val->get_error_messages() as $msg) {
|
backup.php
CHANGED
@@ -242,10 +242,10 @@ class UpdraftPlus_Backup {
|
|
242 |
if (filesize($zipfile) > $before_size) $updraftplus->something_useful_happened();
|
243 |
clearstatcache();
|
244 |
}
|
245 |
-
}
|
246 |
$this->zipfiles_added++;
|
247 |
// Don't call something_useful_happened() here - nothing necessarily happens until close() is called
|
248 |
-
if ($this->zipfiles_added % 100 == 0) $updraftplus->log("Zip: ".basename($zipfile).": ".$this->zipfiles_added." files added (on-disk size: ".round(filesize($zipfile)/1024,1)." Kb
|
249 |
}
|
250 |
// Reset the array
|
251 |
$this->zipfiles_batched = array();
|
242 |
if (filesize($zipfile) > $before_size) $updraftplus->something_useful_happened();
|
243 |
clearstatcache();
|
244 |
}
|
245 |
+
}
|
246 |
$this->zipfiles_added++;
|
247 |
// Don't call something_useful_happened() here - nothing necessarily happens until close() is called
|
248 |
+
if ($this->zipfiles_added % 100 == 0) $updraftplus->log("Zip: ".basename($zipfile).": ".$this->zipfiles_added." files added (on-disk size: ".round(filesize($zipfile)/1024,1)." Kb)");
|
249 |
}
|
250 |
// Reset the array
|
251 |
$this->zipfiles_batched = array();
|
includes/Dropbox/OAuth/Storage/Encrypter.php
CHANGED
@@ -51,8 +51,10 @@ class Dropbox_Encrypter
|
|
51 |
// Only MCRYPT_RAND is available on Windows prior to PHP 5.3
|
52 |
if (version_compare(phpversion(), '5.3.0', '<') && strtoupper(substr(php_uname('s'), 0, 3)) === 'WIN') {
|
53 |
$crypt_source = MCRYPT_RAND;
|
54 |
-
}
|
55 |
$crypt_source = MCRYPT_DEV_URANDOM;
|
|
|
|
|
56 |
}
|
57 |
$iv = mcrypt_create_iv(self::IV_SIZE, $crypt_source);
|
58 |
$cipherText = @mcrypt_encrypt(self::CIPHER, $this->key, $token, self::MODE, $iv);
|
51 |
// Only MCRYPT_RAND is available on Windows prior to PHP 5.3
|
52 |
if (version_compare(phpversion(), '5.3.0', '<') && strtoupper(substr(php_uname('s'), 0, 3)) === 'WIN') {
|
53 |
$crypt_source = MCRYPT_RAND;
|
54 |
+
} elseif (@is_readable("/dev/urandom")) {
|
55 |
$crypt_source = MCRYPT_DEV_URANDOM;
|
56 |
+
} else {
|
57 |
+
$crypt_source = MCRYPT_RAND;
|
58 |
}
|
59 |
$iv = mcrypt_create_iv(self::IV_SIZE, $crypt_source);
|
60 |
$cipherText = @mcrypt_encrypt(self::CIPHER, $this->key, $token, self::MODE, $iv);
|
includes/ftp.class.php
CHANGED
@@ -10,6 +10,8 @@ class UpdraftPlus_ftp_wrapper {
|
|
10 |
public $passive = true;
|
11 |
public $system_type = '';
|
12 |
public $ssl = false;
|
|
|
|
|
13 |
public $login_type = 'non-encrypted';
|
14 |
|
15 |
public function __construct($host, $username, $password, $port = 21)
|
@@ -58,11 +60,12 @@ class UpdraftPlus_ftp_wrapper {
|
|
58 |
$existing_size = 0;
|
59 |
if ($resume) {
|
60 |
$existing_size = ftp_size($this->conn_id, $remote_file_path);
|
61 |
-
if ($existing_size <=0) {
|
62 |
-
|
63 |
-
|
|
|
64 |
if ($existing_size >= $file_size) {
|
65 |
-
$updraftplus->log("File is apparently already completely uploaded");
|
66 |
return true;
|
67 |
}
|
68 |
}
|
@@ -79,7 +82,7 @@ class UpdraftPlus_ftp_wrapper {
|
|
79 |
// $existing_size can now be re-purposed
|
80 |
|
81 |
while ($ret == FTP_MOREDATA) {
|
82 |
-
if ($updraftplus) {
|
83 |
$new_size = ftell($fh);
|
84 |
if ($new_size - $existing_size > 524288) {
|
85 |
$existing_size = $new_size;
|
@@ -94,7 +97,7 @@ class UpdraftPlus_ftp_wrapper {
|
|
94 |
fclose($fh);
|
95 |
|
96 |
if ($ret != FTP_FINISHED) {
|
97 |
-
if ($updraftplus) $updraftplus->log("FTP upload: error ($ret)");
|
98 |
return false;
|
99 |
}
|
100 |
|
10 |
public $passive = true;
|
11 |
public $system_type = '';
|
12 |
public $ssl = false;
|
13 |
+
public $use_server_certs = false;
|
14 |
+
public $disable_verify = true;
|
15 |
public $login_type = 'non-encrypted';
|
16 |
|
17 |
public function __construct($host, $username, $password, $port = 21)
|
60 |
$existing_size = 0;
|
61 |
if ($resume) {
|
62 |
$existing_size = ftp_size($this->conn_id, $remote_file_path);
|
63 |
+
if ($existing_size <=0) {
|
64 |
+
$resume = false; $existing_size = 0;
|
65 |
+
} else {
|
66 |
+
if (is_a($updraftplus, 'UpdraftPlus')) $updraftplus->log("File already exists at remote site: size $existing_size. Will attempt resumption.");
|
67 |
if ($existing_size >= $file_size) {
|
68 |
+
if (is_a($updraftplus, 'UpdraftPlus')) $updraftplus->log("File is apparently already completely uploaded");
|
69 |
return true;
|
70 |
}
|
71 |
}
|
82 |
// $existing_size can now be re-purposed
|
83 |
|
84 |
while ($ret == FTP_MOREDATA) {
|
85 |
+
if (is_a($updraftplus, 'UpdraftPlus')) {
|
86 |
$new_size = ftell($fh);
|
87 |
if ($new_size - $existing_size > 524288) {
|
88 |
$existing_size = $new_size;
|
97 |
fclose($fh);
|
98 |
|
99 |
if ($ret != FTP_FINISHED) {
|
100 |
+
if (is_a($updraftplus, 'UpdraftPlus')) $updraftplus->log("FTP upload: error ($ret)");
|
101 |
return false;
|
102 |
}
|
103 |
|
includes/jquery-ui-1.8.22.custom.css
CHANGED
@@ -560,4 +560,4 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
|
|
560 |
* http://docs.jquery.com/UI/Progressbar#theming
|
561 |
*/
|
562 |
.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
|
563 |
-
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
|
560 |
* http://docs.jquery.com/UI/Progressbar#theming
|
561 |
*/
|
562 |
.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
|
563 |
+
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
|
includes/updraft-restorer.php
CHANGED
@@ -4,6 +4,7 @@ class Updraft_Restorer extends WP_Upgrader {
|
|
4 |
function backup_strings() {
|
5 |
$this->strings['not_possible'] = __('UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually.','updraftplus');
|
6 |
$this->strings['no_package'] = __('Backup file not available.','updraftplus');
|
|
|
7 |
$this->strings['unpack_package'] = __('Unpacking backup...','updraftplus');
|
8 |
$this->strings['decrypt_database'] = __('Decrypting database (can take a while)...','updraftplus');
|
9 |
$this->strings['decrypted_database'] = __('Database successfully decrypted.','updraftplus');
|
@@ -17,20 +18,26 @@ class Updraft_Restorer extends WP_Upgrader {
|
|
17 |
$this->strings['delete_failed'] = __('Failed to delete working directory after restoring.','updraftplus');
|
18 |
}
|
19 |
|
|
|
20 |
function unpack_package($package, $delete_package = true) {
|
21 |
|
|
|
|
|
|
|
|
|
22 |
// If not database, then it is a zip - unpack in the usual way
|
23 |
-
if (!preg_match('/db\.gz(\.crypt)?$/i', $package)) return parent::unpack_package($package, $delete_package);
|
|
|
|
|
24 |
|
25 |
// Unpack a database. The general shape of the following is copied from class-wp-upgrader.php
|
26 |
|
27 |
@set_time_limit(1800);
|
28 |
|
29 |
-
global $wp_filesystem;
|
30 |
-
|
31 |
$this->skin->feedback('unpack_package');
|
32 |
|
33 |
$upgrade_folder = $wp_filesystem->wp_content_dir() . 'upgrade/';
|
|
|
34 |
|
35 |
//Clean up contents of upgrade directory beforehand.
|
36 |
$upgrade_files = $wp_filesystem->dirlist($upgrade_folder);
|
@@ -41,12 +48,13 @@ class Updraft_Restorer extends WP_Upgrader {
|
|
41 |
|
42 |
//We need a working directory
|
43 |
$working_dir = $upgrade_folder . basename($package, '.crypt');
|
|
|
44 |
|
45 |
// Clean up working directory
|
46 |
if ( $wp_filesystem->is_dir($working_dir) )
|
47 |
$wp_filesystem->delete($working_dir, true);
|
48 |
|
49 |
-
if (!$wp_filesystem->mkdir($working_dir, 0775)) return new WP_Error('mkdir_failed', __('Failed to create a temporary directory','updraftplus'));
|
50 |
|
51 |
// Unpack package to working directory
|
52 |
if (preg_match('/\.crypt$/i', $package)) {
|
@@ -60,7 +68,7 @@ class Updraft_Restorer extends WP_Upgrader {
|
|
60 |
|
61 |
// Get decryption key
|
62 |
$rijndael->setKey($encryption);
|
63 |
-
$ciphertext = $rijndael->decrypt($wp_filesystem->get_contents($package));
|
64 |
if ($ciphertext) {
|
65 |
$this->skin->feedback('decrypted_database');
|
66 |
if (!$wp_filesystem->put_contents($working_dir.'/backup.db.gz', $ciphertext)) {
|
@@ -70,19 +78,26 @@ class Updraft_Restorer extends WP_Upgrader {
|
|
70 |
return new WP_Error('decryption_failed', __('Decryption failed. The most likely cause is that you used the wrong key.','updraftplus'));
|
71 |
}
|
72 |
} else {
|
73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
}
|
75 |
|
76 |
-
// Once extracted, delete the package if required
|
77 |
if ( $delete_package )
|
78 |
-
|
79 |
|
80 |
return $working_dir;
|
81 |
|
82 |
}
|
83 |
|
84 |
// For moving files out of a directory into their new location
|
85 |
-
// The only purpose of the $type parameter is to detect 'others' and apply a historical bugfix
|
86 |
// Must use only wp_filesystem
|
87 |
// $dest_dir must already have a trailing slash
|
88 |
function move_backup_in($working_dir, $dest_dir, $make_backup = true, $do_not_overwrite = array('plugins', 'themes', 'uploads', 'upgrade'), $type = 'not-others') {
|
@@ -106,6 +121,17 @@ class Updraft_Restorer extends WP_Upgrader {
|
|
106 |
$wp_filesystem->rmdir($working_dir . "/$tmp_file", false);
|
107 |
}
|
108 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
# Sanity check (should not be possible as these were excluded at backup time)
|
110 |
if (!in_array($file, $do_not_overwrite)) {
|
111 |
# First, move the existing one, if necessary (may not be present)
|
@@ -135,14 +161,18 @@ class Updraft_Restorer extends WP_Upgrader {
|
|
135 |
|
136 |
}
|
137 |
|
|
|
138 |
function restore_backup($backup_file, $type, $service, $info) {
|
139 |
|
|
|
|
|
|
|
|
|
|
|
140 |
global $wp_filesystem;
|
141 |
$this->init();
|
142 |
$this->backup_strings();
|
143 |
|
144 |
-
$dirname = basename($info['path']);
|
145 |
-
|
146 |
$res = $this->fs_connect(array(ABSPATH, WP_CONTENT_DIR) );
|
147 |
if(!$res) exit;
|
148 |
|
@@ -150,52 +180,58 @@ class Updraft_Restorer extends WP_Upgrader {
|
|
150 |
|
151 |
@set_time_limit(1800);
|
152 |
|
153 |
-
$download = $this->download_package($backup_file);
|
154 |
-
if ( is_wp_error($download) ) return $download;
|
155 |
-
|
156 |
$delete = (UpdraftPlus_Options::get_updraft_option('updraft_delete_local')) ? true : false;
|
157 |
if ('none' == $service) {
|
158 |
if ($delete) _e('Will not delete the archive after unpacking it, because there was no cloud storage for this backup','updraftplus').'<br>';
|
159 |
$delete = false;
|
160 |
}
|
161 |
|
162 |
-
|
|
|
|
|
163 |
if (is_wp_error($working_dir)) return $working_dir;
|
|
|
164 |
|
165 |
@set_time_limit(1800);
|
166 |
|
167 |
if ($type == 'others' ) {
|
168 |
|
|
|
|
|
169 |
// In this special case, the backup contents are not in a folder, so it is not simply a case of moving the folder around, but rather looping over all that we find
|
170 |
|
171 |
$this->move_backup_in($working_dir, $wp_dir."wp-content/", true, array('plugins', 'themes', 'uploads', 'upgrade'), 'others');
|
172 |
|
173 |
} elseif ('db' == $type) {
|
174 |
|
|
|
|
|
175 |
// There is a file backup.db.gz inside the working directory
|
176 |
|
177 |
# The 'off' check is for badly configured setups - http://wordpress.org/support/topic/plugin-wp-super-cache-warning-php-safe-mode-enabled-but-safe-mode-is-off
|
178 |
-
if(@ini_get('safe_mode') && strtolower(@ini_get('safe_mode')) != "off") {
|
179 |
echo "<p>".__('Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method.', 'updraftplus')."</p><br/>";
|
180 |
return false;
|
181 |
}
|
182 |
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
if (!is_readable($working_dir.'/backup.db.gz')) return new WP_Error('gzopen_failed',__('Failed to find database file','updraftplus'));
|
187 |
|
188 |
$this->skin->feedback('restore_database');
|
189 |
|
190 |
// Read-only access: don't need to go through WP_Filesystem
|
191 |
-
$dbhandle = gzopen($
|
192 |
if (!$dbhandle) return new WP_Error('gzopen_failed',__('Failed to open database file','updraftplus'));
|
193 |
|
194 |
$line = 0;
|
195 |
|
|
|
|
|
196 |
// Line up a wpdb-like object to use
|
197 |
// mysql_query will throw E_DEPRECATED from PHP 5.5, so we expect WordPress to have switched to something else by then
|
198 |
-
|
|
|
|
|
199 |
|
200 |
if (false == $use_wpdb) {
|
201 |
// We have our own extension which drops lots of the overhead on the query
|
@@ -235,7 +271,7 @@ class Updraft_Restorer extends WP_Upgrader {
|
|
235 |
|
236 |
# The timed overhead of this is negligible
|
237 |
if (preg_match('/^\s*create table \`?([^\`]*)`?\s+\(/i', $sql_line, $matches)) {
|
238 |
-
echo __('Restoring table','updraftplus')."
|
239 |
}
|
240 |
|
241 |
if ($use_wpdb) {
|
@@ -247,7 +283,7 @@ class Updraft_Restorer extends WP_Upgrader {
|
|
247 |
}
|
248 |
|
249 |
if (!$req) {
|
250 |
-
echo sprintf(_x('An error (%s) occured:', 'The user is being told the number of times an error has happened, e.g. An error (27) occurred', 'updraftplus'), $errors).
|
251 |
$errors++;
|
252 |
if ($errors>49) {
|
253 |
return new WP_Error('too_many_db_errors', __('Too many database errors have occurred - aborting restoration (you will need to restore manually)','updraftplus'));
|
@@ -268,10 +304,12 @@ class Updraft_Restorer extends WP_Upgrader {
|
|
268 |
$time_taken = microtime(true) - $start_time;
|
269 |
echo sprintf(__('Finished: lines processed: %d in %.2f seconds','updraftplus'),$line, $time_taken)."<br>";
|
270 |
gzclose($dbhandle);
|
271 |
-
|
272 |
|
273 |
} else {
|
274 |
|
|
|
|
|
275 |
show_message($this->strings['moving_old']);
|
276 |
|
277 |
$movedin = apply_filters('updraftplus_restore_movein_'.$type, $working_dir, $wp_dir);
|
@@ -304,6 +342,7 @@ class Updraft_Restorer extends WP_Upgrader {
|
|
304 |
@$wp_filesystem->chmod($wp_dir . "wp-content/$dirname", 0775, true);
|
305 |
break;
|
306 |
case 'db':
|
|
|
307 |
break;
|
308 |
default:
|
309 |
@$wp_filesystem->chmod($wp_dir . "wp-content/$dirname", FS_CHMOD_DIR);
|
@@ -320,4 +359,4 @@ class UpdraftPlus_WPDB extends wpdb {
|
|
320 |
}
|
321 |
|
322 |
}
|
323 |
-
?>
|
4 |
function backup_strings() {
|
5 |
$this->strings['not_possible'] = __('UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually.','updraftplus');
|
6 |
$this->strings['no_package'] = __('Backup file not available.','updraftplus');
|
7 |
+
$this->strings['copy_failed'] = __('Copying this entity failed.','updraftplus');
|
8 |
$this->strings['unpack_package'] = __('Unpacking backup...','updraftplus');
|
9 |
$this->strings['decrypt_database'] = __('Decrypting database (can take a while)...','updraftplus');
|
10 |
$this->strings['decrypted_database'] = __('Database successfully decrypted.','updraftplus');
|
18 |
$this->strings['delete_failed'] = __('Failed to delete working directory after restoring.','updraftplus');
|
19 |
}
|
20 |
|
21 |
+
// This returns a wp_filesystem location (and we musn't change that, as we must retain compatibility with the class parent)
|
22 |
function unpack_package($package, $delete_package = true) {
|
23 |
|
24 |
+
global $wp_filesystem, $updraftplus;
|
25 |
+
|
26 |
+
$updraft_dir = $updraftplus->backups_dir_location();
|
27 |
+
|
28 |
// If not database, then it is a zip - unpack in the usual way
|
29 |
+
if (!preg_match('/db\.gz(\.crypt)?$/i', $package)) return parent::unpack_package($updraft_dir.'/'.$package, $delete_package);
|
30 |
+
|
31 |
+
$backup_dir = $wp_filesystem->find_folder($updraft_dir);
|
32 |
|
33 |
// Unpack a database. The general shape of the following is copied from class-wp-upgrader.php
|
34 |
|
35 |
@set_time_limit(1800);
|
36 |
|
|
|
|
|
37 |
$this->skin->feedback('unpack_package');
|
38 |
|
39 |
$upgrade_folder = $wp_filesystem->wp_content_dir() . 'upgrade/';
|
40 |
+
@$wp_filesystem->mkdir($upgrade_folder, 0775);
|
41 |
|
42 |
//Clean up contents of upgrade directory beforehand.
|
43 |
$upgrade_files = $wp_filesystem->dirlist($upgrade_folder);
|
48 |
|
49 |
//We need a working directory
|
50 |
$working_dir = $upgrade_folder . basename($package, '.crypt');
|
51 |
+
# $working_dir_filesystem = WP_CONTENT_DIR.'/upgrade/'. basename($package, '.crypt');
|
52 |
|
53 |
// Clean up working directory
|
54 |
if ( $wp_filesystem->is_dir($working_dir) )
|
55 |
$wp_filesystem->delete($working_dir, true);
|
56 |
|
57 |
+
if (!$wp_filesystem->mkdir($working_dir, 0775)) return new WP_Error('mkdir_failed', __('Failed to create a temporary directory','updraftplus').' ('.$working_dir.')');
|
58 |
|
59 |
// Unpack package to working directory
|
60 |
if (preg_match('/\.crypt$/i', $package)) {
|
68 |
|
69 |
// Get decryption key
|
70 |
$rijndael->setKey($encryption);
|
71 |
+
$ciphertext = $rijndael->decrypt($wp_filesystem->get_contents($backup_dir.$package));
|
72 |
if ($ciphertext) {
|
73 |
$this->skin->feedback('decrypted_database');
|
74 |
if (!$wp_filesystem->put_contents($working_dir.'/backup.db.gz', $ciphertext)) {
|
78 |
return new WP_Error('decryption_failed', __('Decryption failed. The most likely cause is that you used the wrong key.','updraftplus'));
|
79 |
}
|
80 |
} else {
|
81 |
+
|
82 |
+
if (!$wp_filesystem->copy($backup_dir.$package, $working_dir.'/backup.db.gz')) {
|
83 |
+
if ( $wp_filesystem->errors->get_error_code() ) {
|
84 |
+
foreach ( $wp_filesystem->errors->get_error_messages() as $message ) show_message($message);
|
85 |
+
}
|
86 |
+
return new WP_Error('copy_failed', $this->strings['copy_failed']);
|
87 |
+
}
|
88 |
+
|
89 |
}
|
90 |
|
91 |
+
// Once extracted, delete the package if required (non-recursive, is a file)
|
92 |
if ( $delete_package )
|
93 |
+
$wp_filesystem->delete($backup_dir.$package, false, true);
|
94 |
|
95 |
return $working_dir;
|
96 |
|
97 |
}
|
98 |
|
99 |
// For moving files out of a directory into their new location
|
100 |
+
// The only purpose of the $type parameter is 1) to detect 'others' and apply a historical bugfix 2) to detect wpcore, and apply the setting for what to do with wp-config.php
|
101 |
// Must use only wp_filesystem
|
102 |
// $dest_dir must already have a trailing slash
|
103 |
function move_backup_in($working_dir, $dest_dir, $make_backup = true, $do_not_overwrite = array('plugins', 'themes', 'uploads', 'upgrade'), $type = 'not-others') {
|
121 |
$wp_filesystem->rmdir($working_dir . "/$tmp_file", false);
|
122 |
}
|
123 |
|
124 |
+
if ('wpcore' == $type && 'wp-config.php' == $file) {
|
125 |
+
if (empty($_POST['updraft_restorer_wpcore_includewpconfig'])) {
|
126 |
+
_e('wp-config.php from backup: will restore as wp-config-backup.php', 'updraftplus');
|
127 |
+
$wp_filesystem->move($working_dir . "/$file", $working_dir . "/wp-config-backup.php", true);
|
128 |
+
$file = "wp-config-backup.php";
|
129 |
+
} else {
|
130 |
+
_e('wp-config.php from backup: restoring (as per user\'s request)', 'updraftplus');
|
131 |
+
}
|
132 |
+
echo '<br>';
|
133 |
+
}
|
134 |
+
|
135 |
# Sanity check (should not be possible as these were excluded at backup time)
|
136 |
if (!in_array($file, $do_not_overwrite)) {
|
137 |
# First, move the existing one, if necessary (may not be present)
|
161 |
|
162 |
}
|
163 |
|
164 |
+
// $backup_file is just the basename
|
165 |
function restore_backup($backup_file, $type, $service, $info) {
|
166 |
|
167 |
+
if ($type == 'more') {
|
168 |
+
show_message($this->strings['not_possible']);
|
169 |
+
return;
|
170 |
+
}
|
171 |
+
|
172 |
global $wp_filesystem;
|
173 |
$this->init();
|
174 |
$this->backup_strings();
|
175 |
|
|
|
|
|
176 |
$res = $this->fs_connect(array(ABSPATH, WP_CONTENT_DIR) );
|
177 |
if(!$res) exit;
|
178 |
|
180 |
|
181 |
@set_time_limit(1800);
|
182 |
|
|
|
|
|
|
|
183 |
$delete = (UpdraftPlus_Options::get_updraft_option('updraft_delete_local')) ? true : false;
|
184 |
if ('none' == $service) {
|
185 |
if ($delete) _e('Will not delete the archive after unpacking it, because there was no cloud storage for this backup','updraftplus').'<br>';
|
186 |
$delete = false;
|
187 |
}
|
188 |
|
189 |
+
// This returns the wp_filesystem path
|
190 |
+
$working_dir = $this->unpack_package($backup_file, $delete);
|
191 |
+
|
192 |
if (is_wp_error($working_dir)) return $working_dir;
|
193 |
+
$working_dir_filesystem = WP_CONTENT_DIR.'/upgrade/'.basename($working_dir);
|
194 |
|
195 |
@set_time_limit(1800);
|
196 |
|
197 |
if ($type == 'others' ) {
|
198 |
|
199 |
+
$dirname = basename($info['path']);
|
200 |
+
|
201 |
// In this special case, the backup contents are not in a folder, so it is not simply a case of moving the folder around, but rather looping over all that we find
|
202 |
|
203 |
$this->move_backup_in($working_dir, $wp_dir."wp-content/", true, array('plugins', 'themes', 'uploads', 'upgrade'), 'others');
|
204 |
|
205 |
} elseif ('db' == $type) {
|
206 |
|
207 |
+
do_action('updraftplus_restore_db_pre');
|
208 |
+
|
209 |
// There is a file backup.db.gz inside the working directory
|
210 |
|
211 |
# The 'off' check is for badly configured setups - http://wordpress.org/support/topic/plugin-wp-super-cache-warning-php-safe-mode-enabled-but-safe-mode-is-off
|
212 |
+
if (@ini_get('safe_mode') && strtolower(@ini_get('safe_mode')) != "off") {
|
213 |
echo "<p>".__('Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method.', 'updraftplus')."</p><br/>";
|
214 |
return false;
|
215 |
}
|
216 |
|
217 |
+
// wp_filesystem has no gzopen method, so we switch to using the local filesystem (which is harmless, since we are performing read-only operations)
|
218 |
+
if (!is_readable($working_dir_filesystem.'/backup.db.gz')) return new WP_Error('gzopen_failed',__('Failed to find database file','updraftplus')." ($working_dir/backup.db.gz)");
|
|
|
|
|
219 |
|
220 |
$this->skin->feedback('restore_database');
|
221 |
|
222 |
// Read-only access: don't need to go through WP_Filesystem
|
223 |
+
$dbhandle = gzopen($working_dir_filesystem.'/backup.db.gz', 'r');
|
224 |
if (!$dbhandle) return new WP_Error('gzopen_failed',__('Failed to open database file','updraftplus'));
|
225 |
|
226 |
$line = 0;
|
227 |
|
228 |
+
global $wpdb;
|
229 |
+
|
230 |
// Line up a wpdb-like object to use
|
231 |
// mysql_query will throw E_DEPRECATED from PHP 5.5, so we expect WordPress to have switched to something else by then
|
232 |
+
// $use_wpdb = (version_compare(phpversion(), '5.5', '>=') || !function_exists('mysql_query') || !$wpdb->is_mysql || !$wpdb->ready) ? true : false;
|
233 |
+
// Seems not - PHP 5.5 is immanent for release
|
234 |
+
$use_wpdb = (!function_exists('mysql_query') || !$wpdb->is_mysql || !$wpdb->ready) ? true : false;
|
235 |
|
236 |
if (false == $use_wpdb) {
|
237 |
// We have our own extension which drops lots of the overhead on the query
|
271 |
|
272 |
# The timed overhead of this is negligible
|
273 |
if (preg_match('/^\s*create table \`?([^\`]*)`?\s+\(/i', $sql_line, $matches)) {
|
274 |
+
echo '<strong>'.__('Restoring table','updraftplus').":</strong> ".htmlspecialchars($matches[1])."<br>";
|
275 |
}
|
276 |
|
277 |
if ($use_wpdb) {
|
283 |
}
|
284 |
|
285 |
if (!$req) {
|
286 |
+
echo sprintf(_x('An error (%s) occured:', 'The user is being told the number of times an error has happened, e.g. An error (27) occurred', 'updraftplus'), $errors)." - ".htmlspecialchars($last_error)." - ".__('the database query being run was:','updraftplus').' '.htmlspecialchars($sql_line).'<br>';
|
287 |
$errors++;
|
288 |
if ($errors>49) {
|
289 |
return new WP_Error('too_many_db_errors', __('Too many database errors have occurred - aborting restoration (you will need to restore manually)','updraftplus'));
|
304 |
$time_taken = microtime(true) - $start_time;
|
305 |
echo sprintf(__('Finished: lines processed: %d in %.2f seconds','updraftplus'),$line, $time_taken)."<br>";
|
306 |
gzclose($dbhandle);
|
307 |
+
$wp_filesystem->delete($working_dir.'/backup.db.gz', false, true);
|
308 |
|
309 |
} else {
|
310 |
|
311 |
+
$dirname = basename($info['path']);
|
312 |
+
|
313 |
show_message($this->strings['moving_old']);
|
314 |
|
315 |
$movedin = apply_filters('updraftplus_restore_movein_'.$type, $working_dir, $wp_dir);
|
342 |
@$wp_filesystem->chmod($wp_dir . "wp-content/$dirname", 0775, true);
|
343 |
break;
|
344 |
case 'db':
|
345 |
+
do_action('updraftplus_restored_db');
|
346 |
break;
|
347 |
default:
|
348 |
@$wp_filesystem->chmod($wp_dir . "wp-content/$dirname", FS_CHMOD_DIR);
|
359 |
}
|
360 |
|
361 |
}
|
362 |
+
?>
|
languages/updraftplus.pot
CHANGED
@@ -2,8 +2,8 @@ msgid ""
|
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: UpdraftPlus\n"
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
-
"POT-Creation-Date: 2013-04-
|
6 |
-
"PO-Revision-Date: 2013-04-
|
7 |
"Last-Translator: David Anderson <contact@updraftplus.com>\n"
|
8 |
"Language-Team: <contact@updraftplus.com>\n"
|
9 |
"Language: \n"
|
@@ -18,195 +18,195 @@ msgstr ""
|
|
18 |
msgid "UpdraftPlus Backups"
|
19 |
msgstr ""
|
20 |
|
21 |
-
#: updraftplus.php:
|
22 |
-
#: updraftplus.php:
|
23 |
-
#: updraftplus.php:
|
24 |
-
#: admin.php:
|
25 |
-
#: admin.php:
|
26 |
msgid "UpdraftPlus notice:"
|
27 |
msgstr ""
|
28 |
|
29 |
-
#: updraftplus.php:
|
30 |
msgid "The log file could not be read."
|
31 |
msgstr ""
|
32 |
|
33 |
-
#: updraftplus.php:
|
34 |
msgid "No log files were found."
|
35 |
msgstr ""
|
36 |
|
37 |
-
#: updraftplus.php:
|
38 |
msgid "The given file could not be read."
|
39 |
msgstr ""
|
40 |
|
41 |
-
#: updraftplus.php:
|
42 |
msgid "Plugins"
|
43 |
msgstr ""
|
44 |
|
45 |
-
#: updraftplus.php:
|
46 |
msgid "Themes"
|
47 |
msgstr ""
|
48 |
|
49 |
-
#: updraftplus.php:
|
50 |
msgid "Uploads"
|
51 |
msgstr ""
|
52 |
|
53 |
-
#: updraftplus.php:
|
54 |
msgid "Others"
|
55 |
msgstr ""
|
56 |
|
57 |
-
#: updraftplus.php:
|
58 |
msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings."
|
59 |
msgstr ""
|
60 |
|
61 |
-
#: updraftplus.php:
|
62 |
msgid "Encryption error occurred when encrypting database. Encryption aborted."
|
63 |
msgstr ""
|
64 |
|
65 |
-
#: updraftplus.php:
|
66 |
msgid "The backup apparently succeeded and is now complete"
|
67 |
msgstr ""
|
68 |
|
69 |
-
#: updraftplus.php:
|
70 |
msgid "The backup attempt has finished, apparently unsuccessfully"
|
71 |
msgstr ""
|
72 |
|
73 |
-
#: updraftplus.php:
|
74 |
msgid "The backup has not finished; a resumption is scheduled within 5 minutes"
|
75 |
msgstr ""
|
76 |
|
77 |
-
#: updraftplus.php:
|
78 |
msgid "Backed up"
|
79 |
msgstr ""
|
80 |
|
81 |
-
#: updraftplus.php:
|
82 |
msgid "WordPress backup is complete"
|
83 |
msgstr ""
|
84 |
|
85 |
-
#: updraftplus.php:
|
86 |
msgid "Backup contains"
|
87 |
msgstr ""
|
88 |
|
89 |
-
#: updraftplus.php:
|
90 |
msgid "Latest status"
|
91 |
msgstr ""
|
92 |
|
93 |
-
#: updraftplus.php:
|
94 |
#, php-format
|
95 |
msgid "Backup directory (%s) is not writable, or does not exist."
|
96 |
msgstr ""
|
97 |
|
98 |
-
#: updraftplus.php:
|
99 |
msgid "Could not read the directory"
|
100 |
msgstr ""
|
101 |
|
102 |
-
#: updraftplus.php:
|
103 |
msgid "Could not save backup history because we have no backup array. Backup probably failed."
|
104 |
msgstr ""
|
105 |
|
106 |
-
#: updraftplus.php:
|
107 |
msgid "Could not open the backup file for writing"
|
108 |
msgstr ""
|
109 |
|
110 |
-
#: updraftplus.php:
|
111 |
#, php-format
|
112 |
msgid "Generated: %s"
|
113 |
msgstr ""
|
114 |
|
115 |
-
#: updraftplus.php:
|
116 |
#, php-format
|
117 |
msgid "Hostname: %s"
|
118 |
msgstr ""
|
119 |
|
120 |
-
#: updraftplus.php:
|
121 |
#, php-format
|
122 |
msgid "Database: %s"
|
123 |
msgstr ""
|
124 |
|
125 |
-
#: updraftplus.php:
|
126 |
msgid "The backup directory is not writable."
|
127 |
msgstr ""
|
128 |
|
129 |
-
#: updraftplus.php:
|
130 |
#, php-format
|
131 |
msgid "Table: %s"
|
132 |
msgstr ""
|
133 |
|
134 |
-
#: updraftplus.php:
|
135 |
#, php-format
|
136 |
msgid "Skipping non-WP table: %s"
|
137 |
msgstr ""
|
138 |
|
139 |
-
#: updraftplus.php:
|
140 |
#, php-format
|
141 |
msgid "Delete any existing table %s"
|
142 |
msgstr ""
|
143 |
|
144 |
-
#: updraftplus.php:
|
145 |
#, php-format
|
146 |
msgid "Table structure of table %s"
|
147 |
msgstr ""
|
148 |
|
149 |
-
#: updraftplus.php:
|
150 |
#, php-format
|
151 |
msgid "Error with SHOW CREATE TABLE for %s."
|
152 |
msgstr ""
|
153 |
|
154 |
-
#: updraftplus.php:
|
155 |
#, php-format
|
156 |
msgid "End of data contents of table %s"
|
157 |
msgstr ""
|
158 |
|
159 |
-
#: updraftplus.php:
|
160 |
-
#: includes/updraft-restorer.php:
|
161 |
msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered."
|
162 |
msgstr ""
|
163 |
|
164 |
-
#: updraftplus.php:
|
165 |
-
#: includes/updraft-restorer.php:
|
166 |
msgid "Decryption failed. The most likely cause is that you used the wrong key."
|
167 |
msgstr ""
|
168 |
|
169 |
-
#: updraftplus.php:
|
170 |
msgid "The decryption key used:"
|
171 |
msgstr ""
|
172 |
|
173 |
-
#: updraftplus.php:
|
174 |
msgid "File not found"
|
175 |
msgstr ""
|
176 |
|
177 |
-
#: updraftplus.php:
|
178 |
msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?"
|
179 |
msgstr ""
|
180 |
|
181 |
-
#: updraftplus.php:
|
182 |
msgid "Find UpdraftPlus useful?"
|
183 |
msgstr ""
|
184 |
|
185 |
-
#: updraftplus.php:
|
186 |
msgid "Please make a donation"
|
187 |
msgstr ""
|
188 |
|
189 |
-
#: updraftplus.php:
|
190 |
msgid "Like UpdraftPlus and can spare one minute?"
|
191 |
msgstr ""
|
192 |
|
193 |
-
#: updraftplus.php:
|
194 |
msgid "Please help UpdraftPlus by giving a positive review at wordpress.org"
|
195 |
msgstr ""
|
196 |
|
197 |
-
#: updraftplus.php:
|
198 |
msgid "Need even more features and support? Check out UpdraftPlus Premium"
|
199 |
msgstr ""
|
200 |
|
201 |
-
#: updraftplus.php:
|
202 |
msgid "Check out UpdraftPlus.Com for help, add-ons and support"
|
203 |
msgstr ""
|
204 |
|
205 |
-
#: updraftplus.php:
|
206 |
msgid "Want to say thank-you for UpdraftPlus?"
|
207 |
msgstr ""
|
208 |
|
209 |
-
#: updraftplus.php:
|
210 |
msgid "Please buy our very cheap 'no adverts' add-on."
|
211 |
msgstr ""
|
212 |
|
@@ -219,791 +219,840 @@ msgstr ""
|
|
219 |
msgid "Could not create %s zip. Consult the log file for more information."
|
220 |
msgstr ""
|
221 |
|
222 |
-
#: admin.php:
|
223 |
-
#: admin.php:
|
224 |
msgid "Allowed Files"
|
225 |
msgstr ""
|
226 |
|
227 |
-
#: admin.php:
|
228 |
msgid "Settings"
|
229 |
msgstr ""
|
230 |
|
231 |
-
#: admin.php:
|
232 |
msgid "Add-Ons / Pro Support"
|
233 |
msgstr ""
|
234 |
|
235 |
-
#: admin.php:
|
236 |
-
#: admin.php:
|
237 |
-
#: admin.php:
|
238 |
-
#: admin.php:
|
239 |
-
#: admin.php:
|
|
|
240 |
msgid "Warning"
|
241 |
msgstr ""
|
242 |
|
243 |
-
#: admin.php:
|
244 |
#, php-format
|
245 |
msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue."
|
246 |
msgstr ""
|
247 |
|
248 |
-
#: admin.php:
|
249 |
#, php-format
|
250 |
msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress."
|
251 |
msgstr ""
|
252 |
|
253 |
-
#: admin.php:
|
254 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
255 |
#, php-format
|
256 |
msgid "Click here to authenticate your %s account (you will not be able to back up to %s without it)."
|
257 |
msgstr ""
|
258 |
|
259 |
-
#: admin.php:
|
260 |
#, php-format
|
261 |
msgid "The backup archive for restoring this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To proceed with this restoration, you need to obtain a copy of this file and place it inside UpdraftPlus's working folder"
|
262 |
msgstr ""
|
263 |
|
264 |
-
#: admin.php:
|
265 |
msgid "Nothing yet logged"
|
266 |
msgstr ""
|
267 |
|
268 |
-
#: admin.php:
|
269 |
msgid "Download failed"
|
270 |
msgstr ""
|
271 |
|
272 |
-
#: admin.php:
|
273 |
-
#: admin.php:
|
274 |
msgid "File ready."
|
275 |
msgstr ""
|
276 |
|
277 |
-
#: admin.php:
|
278 |
msgid "Download in progress"
|
279 |
msgstr ""
|
280 |
|
281 |
-
#: admin.php:
|
282 |
msgid "No local copy present."
|
283 |
msgstr ""
|
284 |
|
285 |
-
#: admin.php:
|
286 |
msgid "Bad filename format - this does not look like a file created by UpdraftPlus"
|
287 |
msgstr ""
|
288 |
|
289 |
-
#: admin.php:
|
290 |
msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus"
|
291 |
msgstr ""
|
292 |
|
293 |
-
#: admin.php:
|
294 |
msgid "Restore successful!"
|
295 |
msgstr ""
|
296 |
|
297 |
-
#: admin.php:
|
298 |
-
#: admin.php:
|
299 |
-
#: admin.php:
|
300 |
msgid "Actions"
|
301 |
msgstr ""
|
302 |
|
303 |
-
#: admin.php:594
|
304 |
#: admin.php:609
|
305 |
-
#: admin.php:
|
306 |
-
#: admin.php:
|
|
|
307 |
msgid "Return to UpdraftPlus Configuration"
|
308 |
msgstr ""
|
309 |
|
310 |
-
#: admin.php:
|
311 |
msgid "Remove old directories"
|
312 |
msgstr ""
|
313 |
|
314 |
-
#: admin.php:
|
315 |
msgid "Old directories successfully removed."
|
316 |
msgstr ""
|
317 |
|
318 |
-
#: admin.php:
|
319 |
msgid "Old directory removal failed for some reason. You may want to do this manually."
|
320 |
msgstr ""
|
321 |
|
322 |
-
#: admin.php:
|
323 |
msgid "Backup directory could not be created"
|
324 |
msgstr ""
|
325 |
|
326 |
-
#: admin.php:
|
327 |
msgid "Backup directory successfully created."
|
328 |
msgstr ""
|
329 |
|
330 |
-
#: admin.php:
|
331 |
msgid "Schedule backup"
|
332 |
msgstr ""
|
333 |
|
334 |
-
#: admin.php:
|
335 |
msgid "Failed."
|
336 |
msgstr ""
|
337 |
|
338 |
-
#: admin.php:
|
339 |
msgid "OK. Now load any page from your site to make sure the schedule can trigger. You should then see activity in the \"Last log message\" field below."
|
340 |
msgstr ""
|
341 |
|
342 |
-
#: admin.php:
|
343 |
msgid "Nothing happening? Follow this link for help."
|
344 |
msgstr ""
|
345 |
|
346 |
-
#: admin.php:
|
347 |
msgid "Your settings have been wiped."
|
348 |
msgstr ""
|
349 |
|
350 |
-
#: admin.php:
|
351 |
msgid "By UpdraftPlus.Com"
|
352 |
msgstr ""
|
353 |
|
354 |
-
#: admin.php:
|
355 |
msgid "Lead developer's homepage"
|
356 |
msgstr ""
|
357 |
|
358 |
-
#: admin.php:
|
359 |
msgid "Donate"
|
360 |
msgstr ""
|
361 |
|
362 |
-
#: admin.php:
|
363 |
msgid "Other WordPress plugins"
|
364 |
msgstr ""
|
365 |
|
366 |
-
#: admin.php:
|
367 |
msgid "Version"
|
368 |
msgstr ""
|
369 |
|
370 |
-
#: admin.php:
|
371 |
msgid "Your backup has been restored."
|
372 |
msgstr ""
|
373 |
|
374 |
-
#: admin.php:
|
375 |
msgid "Your old (themes, uploads, plugins, whatever) directories have been retained with \"-old\" appended to their name. Remove them when you are satisfied that the backup worked properly."
|
376 |
msgstr ""
|
377 |
|
378 |
-
#: admin.php:
|
379 |
msgid "Old directories successfully deleted."
|
380 |
msgstr ""
|
381 |
|
382 |
-
#: admin.php:
|
383 |
msgid "Your PHP memory limit (set by your web hosting company) is quite low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will bhe successful with a 32Mb limit - your experience may vary)."
|
384 |
msgstr ""
|
385 |
|
386 |
-
#: admin.php:
|
387 |
msgid "Current limit is:"
|
388 |
msgstr ""
|
389 |
|
390 |
-
#: admin.php:
|
391 |
msgid "Your PHP max_execution_time is less than 60 seconds. This possibly means you're running in safe_mode. Either disable safe_mode or modify your php.ini to set max_execution_time to a higher number. If you do not, then longer will be needed to complete a backup (but that is all). Present limit is:"
|
392 |
msgstr ""
|
393 |
|
394 |
-
#: admin.php:
|
395 |
msgid "seconds"
|
396 |
msgstr ""
|
397 |
|
398 |
-
#: admin.php:
|
399 |
msgid "You have old directories from a previous backup (technical information: these are found in wp-content, and suffixed with -old). Use this button to delete them (if you have verified that the restoration worked)."
|
400 |
msgstr ""
|
401 |
|
402 |
-
#: admin.php:
|
403 |
msgid "Delete Old Directories"
|
404 |
msgstr ""
|
405 |
|
406 |
-
#: admin.php:
|
407 |
msgid "Are you sure you want to delete the old directories? This cannot be undone."
|
408 |
msgstr ""
|
409 |
|
410 |
-
#: admin.php:
|
411 |
msgid "Existing Schedule And Backups"
|
412 |
msgstr ""
|
413 |
|
414 |
-
#: admin.php:
|
415 |
msgid "JavaScript warning"
|
416 |
msgstr ""
|
417 |
|
418 |
-
#: admin.php:
|
419 |
msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser."
|
420 |
msgstr ""
|
421 |
|
422 |
-
#: admin.php:
|
423 |
-
#: admin.php:
|
424 |
msgid "Nothing currently scheduled"
|
425 |
msgstr ""
|
426 |
|
427 |
-
#: admin.php:
|
428 |
msgid "At the same time as the files backup"
|
429 |
msgstr ""
|
430 |
|
431 |
-
#: admin.php:
|
|
|
|
|
|
|
|
|
432 |
msgid "Next scheduled backups"
|
433 |
msgstr ""
|
434 |
|
435 |
-
#: admin.php:
|
436 |
msgid "Files"
|
437 |
msgstr ""
|
438 |
|
439 |
-
#: admin.php:
|
440 |
-
#: admin.php:
|
441 |
-
#: admin.php:
|
442 |
-
#: admin.php:
|
443 |
-
#: admin.php:
|
|
|
444 |
msgid "Database"
|
445 |
msgstr ""
|
446 |
|
447 |
-
#: admin.php:
|
448 |
msgid "Time now"
|
449 |
msgstr ""
|
450 |
|
451 |
-
#: admin.php:
|
452 |
msgid "Last finished backup run"
|
453 |
msgstr ""
|
454 |
|
455 |
-
#: admin.php:
|
456 |
-
#: admin.php:
|
457 |
msgid "Backup Now"
|
458 |
msgstr ""
|
459 |
|
460 |
-
#: admin.php:
|
461 |
-
#: admin.php:
|
462 |
-
#: admin.php:
|
463 |
msgid "Restore"
|
464 |
msgstr ""
|
465 |
|
466 |
-
#: admin.php:
|
467 |
msgid "Last log message"
|
468 |
msgstr ""
|
469 |
|
470 |
-
#: admin.php:
|
471 |
msgid "(Nothing yet logged)"
|
472 |
msgstr ""
|
473 |
|
474 |
-
#: admin.php:
|
475 |
msgid "Download most recently modified log file"
|
476 |
msgstr ""
|
477 |
|
478 |
-
#: admin.php:
|
479 |
msgid "Backups, logs & restoring"
|
480 |
msgstr ""
|
481 |
|
482 |
-
#: admin.php:
|
483 |
msgid "Press to see available backups"
|
484 |
msgstr ""
|
485 |
|
486 |
-
#: admin.php:
|
487 |
#, php-format
|
488 |
msgid "%d set(s) available"
|
489 |
msgstr ""
|
490 |
|
491 |
-
#: admin.php:
|
492 |
msgid "Downloading"
|
493 |
msgstr ""
|
494 |
|
495 |
-
#: admin.php:
|
496 |
msgid "Pressing a button for Database/Plugins/Themes/Uploads/Others will make UpdraftPlus try to bring the backup file back from the remote storage (if any - e.g. Amazon S3, Dropbox, Google Drive, FTP) to your webserver. Then you will be allowed to download it to your computer. If the fetch from the remote storage stops progressing (wait 30 seconds to make sure), then press again to resume. Remember that you can also visit the cloud storage vendor's website directly."
|
497 |
msgstr ""
|
498 |
|
499 |
-
#: admin.php:
|
500 |
msgid "Restoring"
|
501 |
msgstr ""
|
502 |
|
503 |
-
#: admin.php:
|
504 |
msgid "Press the button for the backup you wish to restore. If your site is large and you are using remote storage, then you should first click on each entity in order to retrieve it back to the webserver. This will prevent time-outs from occuring during the restore process itself."
|
505 |
msgstr ""
|
506 |
|
507 |
-
#: admin.php:
|
508 |
msgid "More tasks:"
|
509 |
msgstr ""
|
510 |
|
511 |
-
#: admin.php:
|
512 |
msgid "upload backup files"
|
513 |
msgstr ""
|
514 |
|
515 |
-
#: admin.php:
|
516 |
msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded. The location of this directory is set in the expert settings, below."
|
517 |
msgstr ""
|
518 |
|
519 |
-
#: admin.php:
|
520 |
msgid "rescan folder for new backup sets"
|
521 |
msgstr ""
|
522 |
|
523 |
-
#: admin.php:
|
524 |
msgid "Opera web browser"
|
525 |
msgstr ""
|
526 |
|
527 |
-
#: admin.php:
|
528 |
msgid "If you are using this, then turn Turbo/Road mode off."
|
529 |
msgstr ""
|
530 |
|
531 |
-
#: admin.php:
|
532 |
msgid "This is a count of the contents of your Updraft directory"
|
533 |
msgstr ""
|
534 |
|
535 |
-
#: admin.php:
|
536 |
msgid "Web-server disk space in use by UpdraftPlus"
|
537 |
msgstr ""
|
538 |
|
539 |
-
#: admin.php:
|
540 |
msgid "refresh"
|
541 |
msgstr ""
|
542 |
|
543 |
-
#: admin.php:
|
544 |
msgid "UpdraftPlus - Upload backup files"
|
545 |
msgstr ""
|
546 |
|
547 |
-
#: admin.php:
|
548 |
msgid "Upload files into UpdraftPlus. Use this to import backups made on a different WordPress installation."
|
549 |
msgstr ""
|
550 |
|
551 |
-
#: admin.php:
|
552 |
msgid "Drop backup zips here"
|
553 |
msgstr ""
|
554 |
|
555 |
-
#: admin.php:
|
556 |
-
#: admin.php:
|
557 |
msgid "or"
|
558 |
msgstr ""
|
559 |
|
560 |
-
#: admin.php:
|
561 |
msgid "calculating..."
|
562 |
msgstr ""
|
563 |
|
564 |
-
#: admin.php:
|
565 |
-
#: admin.php:
|
566 |
msgid "Error:"
|
567 |
msgstr ""
|
568 |
|
569 |
-
#: admin.php:
|
570 |
msgid "You should:"
|
571 |
msgstr ""
|
572 |
|
573 |
-
#: admin.php:
|
574 |
msgid "Download error: the server sent us a response (JSON) which we did not understand"
|
575 |
msgstr ""
|
576 |
|
577 |
-
#: admin.php:
|
578 |
msgid "Download error: the server sent us a response which we did not understand."
|
579 |
msgstr ""
|
580 |
|
581 |
-
#: admin.php:
|
582 |
msgid "Restore backup"
|
583 |
msgstr ""
|
584 |
|
585 |
-
#: admin.php:
|
586 |
msgid "Restore backup from"
|
587 |
msgstr ""
|
588 |
|
589 |
-
#: admin.php:
|
590 |
-
msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection"
|
591 |
msgstr ""
|
592 |
|
593 |
-
#: admin.php:
|
594 |
msgid "Choose the components to restore"
|
595 |
msgstr ""
|
596 |
|
597 |
-
#: admin.php:
|
598 |
msgid "Your web server has PHP's so-called safe_mode active."
|
599 |
msgstr ""
|
600 |
|
601 |
-
#: admin.php:
|
602 |
msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time, <a href=\"http://updraftplus.com/faqs/i-want-to-restore-but-have-either-cannot-or-have-failed-to-do-so-from-the-wp-admin-console/\">or to restore manually</a>."
|
603 |
msgstr ""
|
604 |
|
605 |
-
#: admin.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
606 |
msgid "Perform a backup now"
|
607 |
msgstr ""
|
608 |
|
609 |
-
#: admin.php:
|
610 |
msgid "This will schedule a one-time backup. To proceed, press 'Backup Now', then wait 10 seconds, then visit any page on your site. WordPress should then start the backup running in the background."
|
611 |
msgstr ""
|
612 |
|
613 |
-
#: admin.php:
|
614 |
msgid "Does nothing happen when you schedule backups?"
|
615 |
msgstr ""
|
616 |
|
617 |
-
#: admin.php:
|
618 |
msgid "Go here for help."
|
619 |
msgstr ""
|
620 |
|
621 |
-
#: admin.php:
|
622 |
msgid "Multisite"
|
623 |
msgstr ""
|
624 |
|
625 |
-
#: admin.php:
|
626 |
msgid "Do you need WordPress Multisite support?"
|
627 |
msgstr ""
|
628 |
|
629 |
-
#: admin.php:
|
630 |
msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on."
|
631 |
msgstr ""
|
632 |
|
633 |
-
#: admin.php:
|
634 |
msgid "Configure Backup Contents And Schedule"
|
635 |
msgstr ""
|
636 |
|
637 |
-
#: admin.php:
|
638 |
msgid "Debug Information And Expert Options"
|
639 |
msgstr ""
|
640 |
|
641 |
-
#: admin.php:
|
642 |
msgid "Peak memory usage"
|
643 |
msgstr ""
|
644 |
|
645 |
-
#: admin.php:
|
646 |
msgid "Current memory usage"
|
647 |
msgstr ""
|
648 |
|
649 |
-
#: admin.php:
|
650 |
msgid "PHP memory limit"
|
651 |
msgstr ""
|
652 |
|
653 |
-
#: admin.php:
|
654 |
msgid "The buttons below will immediately execute a backup run, independently of WordPress's scheduler. If these work whilst your scheduled backups and the \"Backup Now\" button do absolutely nothing (i.e. not even produce a log file), then it means that your scheduler is broken. You should then disable all your other plugins, and try the \"Backup Now\" button. If that fails, then contact your web hosting company and ask them if they have disabled wp-cron. If it succeeds, then re-activate your other plugins one-by-one, and find the one that is the problem and report a bug to them."
|
655 |
msgstr ""
|
656 |
|
657 |
-
#: admin.php:
|
658 |
msgid "Debug Full Backup"
|
659 |
msgstr ""
|
660 |
|
661 |
-
#: admin.php:
|
662 |
msgid "This will cause an immediate backup. The page will stall loading until it finishes (ie, unscheduled)."
|
663 |
msgstr ""
|
664 |
|
665 |
-
#: admin.php:
|
666 |
msgid "Debug Database Backup"
|
667 |
msgstr ""
|
668 |
|
669 |
-
#: admin.php:
|
670 |
msgid "This will cause an immediate DB backup. The page will stall loading until it finishes (ie, unscheduled). The backup may well run out of time; really this button is only helpful for checking that the backup is able to get through the initial stages, or for small WordPress sites.."
|
671 |
msgstr ""
|
672 |
|
673 |
-
#: admin.php:
|
674 |
msgid "Wipe Settings"
|
675 |
msgstr ""
|
676 |
|
677 |
-
#: admin.php:
|
678 |
msgid "This button will delete all UpdraftPlus settings (but not any of your existing backups from your cloud storage). You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish."
|
679 |
msgstr ""
|
680 |
|
681 |
-
#: admin.php:
|
682 |
msgid "Wipe All Settings"
|
683 |
msgstr ""
|
684 |
|
685 |
-
#: admin.php:
|
686 |
msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?"
|
687 |
msgstr ""
|
688 |
|
689 |
-
#: admin.php:
|
690 |
msgid "Delete"
|
691 |
msgstr ""
|
692 |
|
693 |
-
#: admin.php:
|
694 |
msgid "Download log file"
|
695 |
msgstr ""
|
696 |
|
697 |
-
#: admin.php:
|
698 |
msgid "No backup has been completed."
|
699 |
msgstr ""
|
700 |
|
701 |
-
#: admin.php:
|
702 |
msgid "File backup intervals"
|
703 |
msgstr ""
|
704 |
|
705 |
-
#: admin.php:
|
706 |
msgid "Manual"
|
707 |
msgstr ""
|
708 |
|
709 |
-
#: admin.php:
|
710 |
msgid "Every 4 hours"
|
711 |
msgstr ""
|
712 |
|
713 |
-
#: admin.php:
|
714 |
msgid "Every 8 hours"
|
715 |
msgstr ""
|
716 |
|
717 |
-
#: admin.php:
|
718 |
msgid "Every 12 hours"
|
719 |
msgstr ""
|
720 |
|
721 |
-
#: admin.php:
|
722 |
msgid "Daily"
|
723 |
msgstr ""
|
724 |
|
725 |
-
#: admin.php:
|
726 |
msgid "Weekly"
|
727 |
msgstr ""
|
728 |
|
729 |
-
#: admin.php:
|
730 |
msgid "Fortnightly"
|
731 |
msgstr ""
|
732 |
|
733 |
-
#: admin.php:
|
734 |
msgid "Monthly"
|
735 |
msgstr ""
|
736 |
|
737 |
-
#: admin.php:
|
738 |
-
#: admin.php:
|
739 |
msgid "and retain this many backups"
|
740 |
msgstr ""
|
741 |
|
742 |
-
#: admin.php:
|
743 |
msgid "Database backup intervals"
|
744 |
msgstr ""
|
745 |
|
746 |
-
#: admin.php:
|
747 |
msgid "If you would like to automatically schedule backups, choose schedules from the dropdowns above. Backups will occur at the intervals specified. If the two schedules are the same, then the two backups will take place together. If you choose \"manual\" then you must click the \"Backup Now\" button whenever you wish a backup to occur."
|
748 |
msgstr ""
|
749 |
|
750 |
-
#: admin.php:
|
751 |
msgid "To fix the time at which a backup should take place,"
|
752 |
msgstr ""
|
753 |
|
754 |
-
#: admin.php:
|
755 |
msgid "e.g. if your server is busy at day and you want to run overnight"
|
756 |
msgstr ""
|
757 |
|
758 |
-
#: admin.php:
|
759 |
msgid "use the \"Fix Time\" add-on"
|
760 |
msgstr ""
|
761 |
|
762 |
-
#: admin.php:
|
763 |
msgid "Include in files backup"
|
764 |
msgstr ""
|
765 |
|
766 |
-
#: admin.php:
|
767 |
-
msgid "Any other directories found inside wp-content
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
768 |
msgstr ""
|
769 |
|
770 |
-
#: admin.php:
|
771 |
msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org."
|
772 |
msgstr ""
|
773 |
|
774 |
-
#: admin.php:
|
775 |
msgid "Or, get the \"More Files\" add-on from our shop."
|
776 |
msgstr ""
|
777 |
|
778 |
-
#: admin.php:
|
779 |
msgid "Use WordShell for automatic backup, version control and patching"
|
780 |
msgstr ""
|
781 |
|
782 |
-
#: admin.php:
|
783 |
msgid "Email"
|
784 |
msgstr ""
|
785 |
|
786 |
-
#: admin.php:
|
787 |
msgid "Enter an address here to have a report sent (and the whole backup, if you choose) to it."
|
788 |
msgstr ""
|
789 |
|
790 |
-
#: admin.php:
|
791 |
msgid "Database encryption phrase"
|
792 |
msgstr ""
|
793 |
|
794 |
-
#: admin.php:
|
795 |
msgid "If you enter text here, it is used to encrypt backups (Rijndael). <strong>Do make a separate record of it and do not lose it, or all your backups <em>will</em> be useless.</strong> Presently, only the database file is encrypted. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)."
|
796 |
msgstr ""
|
797 |
|
798 |
-
#: admin.php:
|
799 |
msgid "You can also decrypt a database manually here."
|
800 |
msgstr ""
|
801 |
|
802 |
-
#: admin.php:
|
803 |
msgid "Manually decrypt a database backup file"
|
804 |
msgstr ""
|
805 |
|
806 |
-
#: admin.php:
|
807 |
msgid "Drop encrypted database files (db.crypt.gz files) here to upload them for decryption"
|
808 |
msgstr ""
|
809 |
|
810 |
-
#: admin.php:
|
811 |
msgid "Use decryption key"
|
812 |
msgstr ""
|
813 |
|
814 |
-
#: admin.php:
|
815 |
msgid "Copying Your Backup To Remote Storage"
|
816 |
msgstr ""
|
817 |
|
818 |
-
#: admin.php:
|
819 |
msgid "Choose your remote storage"
|
820 |
msgstr ""
|
821 |
|
822 |
-
#: admin.php:
|
823 |
msgid "None"
|
824 |
msgstr ""
|
825 |
|
826 |
-
#: admin.php:
|
827 |
-
#: admin.php:
|
828 |
msgid "Cancel"
|
829 |
msgstr ""
|
830 |
|
831 |
-
#: admin.php:
|
832 |
msgid "Advanced / Debugging Settings"
|
833 |
msgstr ""
|
834 |
|
835 |
-
#: admin.php:
|
836 |
msgid "Debug mode"
|
837 |
msgstr ""
|
838 |
|
839 |
-
#: admin.php:
|
840 |
msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong. You <strong>must</strong> send us this log if you are filing a bug report."
|
841 |
msgstr ""
|
842 |
|
843 |
-
#: admin.php:
|
844 |
msgid "Expert settings"
|
845 |
msgstr ""
|
846 |
|
847 |
-
#: admin.php:
|
848 |
msgid "Show expert settings"
|
849 |
msgstr ""
|
850 |
|
851 |
-
#: admin.php:
|
852 |
msgid "click this to show some further options; don't bother with this unless you have a problem or are curious."
|
853 |
msgstr ""
|
854 |
|
855 |
-
#: admin.php:
|
856 |
msgid "Delete local backup"
|
857 |
msgstr ""
|
858 |
|
859 |
-
#: admin.php:
|
860 |
msgid "Uncheck this to prevent deletion of any superfluous backup files from your server after the backup run finishes (i.e. any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)."
|
861 |
msgstr ""
|
862 |
|
863 |
-
#: admin.php:
|
864 |
msgid "Backup directory"
|
865 |
msgstr ""
|
866 |
|
867 |
-
#: admin.php:
|
868 |
msgid "Backup directory specified is writable, which is good."
|
869 |
msgstr ""
|
870 |
|
871 |
-
#: admin.php:
|
872 |
msgid "Backup directory specified is <b>not</b> writable, or does not exist."
|
873 |
msgstr ""
|
874 |
|
875 |
-
#: admin.php:
|
876 |
msgid "Click here to attempt to create the directory and set the permissions"
|
877 |
msgstr ""
|
878 |
|
879 |
-
#: admin.php:
|
880 |
msgid "or, to reset this option"
|
881 |
msgstr ""
|
882 |
|
883 |
-
#: admin.php:
|
884 |
msgid "click here"
|
885 |
msgstr ""
|
886 |
|
887 |
-
#: admin.php:
|
888 |
msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process."
|
889 |
msgstr ""
|
890 |
|
891 |
-
#: admin.php:
|
892 |
msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. Typically you'll want to have it inside your wp-content folder (this is the default). <b>Do not</b> place it inside your uploads dir, as that will cause recursion issues (backups of backups of backups of...)."
|
893 |
msgstr ""
|
894 |
|
895 |
-
#: admin.php:
|
896 |
msgid "Use the server's SSL certificates"
|
897 |
msgstr ""
|
898 |
|
899 |
-
#: admin.php:
|
900 |
msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help."
|
901 |
msgstr ""
|
902 |
|
903 |
-
#: admin.php:
|
904 |
msgid "Do not verify SSL certificates"
|
905 |
msgstr ""
|
906 |
|
907 |
-
#: admin.php:
|
908 |
msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication."
|
909 |
msgstr ""
|
910 |
|
911 |
-
#: admin.php:
|
912 |
msgid "Note that not all cloud backup methods are necessarily using SSL authentication."
|
913 |
msgstr ""
|
914 |
|
915 |
-
#: admin.php:
|
916 |
msgid "Disable SSL entirely where possible"
|
917 |
msgstr ""
|
918 |
|
919 |
-
#: admin.php:
|
920 |
msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect."
|
921 |
msgstr ""
|
922 |
|
923 |
-
#: admin.php:
|
924 |
msgid "Save Changes"
|
925 |
msgstr ""
|
926 |
|
927 |
-
#: admin.php:
|
928 |
#, php-format
|
929 |
msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support."
|
930 |
msgstr ""
|
931 |
|
932 |
-
#: admin.php:
|
933 |
#, php-format
|
934 |
msgid "UpdraftPlus's %s module <strong>requires</strong> Curl. Your only options to get this working are 1) Install/enable curl or 2) Hire us or someone else to code additional support options into UpdraftPlus. 3) Wait, possibly forever, for someone else to do this."
|
935 |
msgstr ""
|
936 |
|
937 |
-
#: admin.php:
|
938 |
#, php-format
|
939 |
msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)."
|
940 |
msgstr ""
|
941 |
|
942 |
-
#: admin.php:
|
943 |
#, php-format
|
944 |
msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s <strong>requires</strong> Curl+https. Please do not file any support requests; there is no alternative."
|
945 |
msgstr ""
|
946 |
|
947 |
-
#: admin.php:
|
948 |
#, php-format
|
949 |
msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help."
|
950 |
msgstr ""
|
951 |
|
952 |
-
#: admin.php:
|
953 |
msgid "Press here to download"
|
954 |
msgstr ""
|
955 |
|
956 |
-
#: admin.php:
|
957 |
#, php-format
|
958 |
msgid "(No %s)"
|
959 |
msgstr ""
|
960 |
|
961 |
-
#: admin.php:
|
962 |
msgid "Backup Log"
|
963 |
msgstr ""
|
964 |
|
965 |
-
#: admin.php:
|
966 |
msgid "After pressing this button, you will be given the option to choose which components you wish to restore"
|
967 |
msgstr ""
|
968 |
|
969 |
-
#: admin.php:
|
970 |
msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:"
|
971 |
msgstr ""
|
972 |
|
973 |
-
#: admin.php:
|
974 |
msgid "UpdraftPlus Restoration: Progress"
|
975 |
msgstr ""
|
976 |
|
977 |
-
#: admin.php:
|
978 |
msgid "ABORT: Could not find the information on which entities to restore."
|
979 |
msgstr ""
|
980 |
|
981 |
-
#: admin.php:
|
|
|
|
|
|
|
|
|
982 |
msgid "This component was not selected for restoration - skipping."
|
983 |
msgstr ""
|
984 |
|
985 |
-
#: admin.php:
|
986 |
msgid "File is not locally present - needs retrieving from remote storage (for large files, it is better to do this in advance from the download console)"
|
987 |
msgstr ""
|
988 |
|
989 |
-
#: admin.php:
|
990 |
msgid "Archive is expected to be size:"
|
991 |
msgstr ""
|
992 |
|
993 |
-
#: admin.php:
|
994 |
msgid "ERROR"
|
995 |
msgstr ""
|
996 |
|
997 |
-
#: admin.php:
|
998 |
msgid "The backup records do not contain information about the proper size of this file."
|
999 |
msgstr ""
|
1000 |
|
1001 |
-
#: admin.php:
|
1002 |
msgid "Error message"
|
1003 |
msgstr ""
|
1004 |
|
1005 |
-
#: admin.php:
|
1006 |
-
#: admin.php:
|
1007 |
msgid "Could not find one of the files for restoration"
|
1008 |
msgstr ""
|
1009 |
|
@@ -1059,57 +1108,65 @@ msgstr ""
|
|
1059 |
msgid "Failed to delete working directory after restoring."
|
1060 |
msgstr ""
|
1061 |
|
1062 |
-
#: includes/updraft-restorer.php:
|
1063 |
msgid "Failed to create a temporary directory"
|
1064 |
msgstr ""
|
1065 |
|
1066 |
-
#: includes/updraft-restorer.php:
|
1067 |
msgid "Failed to write out the decrypted database to the filesystem"
|
1068 |
msgstr ""
|
1069 |
|
1070 |
-
#: includes/updraft-restorer.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1071 |
msgid "Will not delete the archive after unpacking it, because there was no cloud storage for this backup"
|
1072 |
msgstr ""
|
1073 |
|
1074 |
-
#: includes/updraft-restorer.php:
|
1075 |
msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method."
|
1076 |
msgstr ""
|
1077 |
|
1078 |
-
#: includes/updraft-restorer.php:
|
1079 |
msgid "Failed to find database file"
|
1080 |
msgstr ""
|
1081 |
|
1082 |
-
#: includes/updraft-restorer.php:
|
1083 |
msgid "Failed to open database file"
|
1084 |
msgstr ""
|
1085 |
|
1086 |
-
#: includes/updraft-restorer.php:
|
1087 |
msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)"
|
1088 |
msgstr ""
|
1089 |
|
1090 |
-
#: includes/updraft-restorer.php:
|
1091 |
msgid "Restoring table"
|
1092 |
msgstr ""
|
1093 |
|
1094 |
-
#: includes/updraft-restorer.php:
|
1095 |
#, php-format
|
1096 |
msgid "An error (%s) occured:"
|
1097 |
msgstr ""
|
1098 |
|
1099 |
-
#: includes/updraft-restorer.php:
|
1100 |
-
msgid "the database query being run was:
|
1101 |
msgstr ""
|
1102 |
|
1103 |
-
#: includes/updraft-restorer.php:
|
1104 |
msgid "Too many database errors have occurred - aborting restoration (you will need to restore manually)"
|
1105 |
msgstr ""
|
1106 |
|
1107 |
-
#: includes/updraft-restorer.php:
|
1108 |
#, php-format
|
1109 |
msgid "Database lines processed: %d in %.2f seconds"
|
1110 |
msgstr ""
|
1111 |
|
1112 |
-
#: includes/updraft-restorer.php:
|
1113 |
#, php-format
|
1114 |
msgid "Finished: lines processed: %d in %.2f seconds"
|
1115 |
msgstr ""
|
@@ -1135,258 +1192,273 @@ msgstr ""
|
|
1135 |
msgid "follow this link to get it"
|
1136 |
msgstr ""
|
1137 |
|
1138 |
-
#: methods/googledrive.php:
|
1139 |
-
|
1140 |
-
|
|
|
|
|
|
|
1141 |
msgstr ""
|
1142 |
|
1143 |
-
#: methods/googledrive.php:
|
1144 |
#, php-format
|
1145 |
-
msgid "
|
1146 |
msgstr ""
|
1147 |
|
1148 |
-
#: methods/googledrive.php:
|
1149 |
-
#: methods/
|
1150 |
-
|
1151 |
-
#: methods/googledrive.php:351
|
1152 |
-
#: methods/googledrive.php:355
|
1153 |
-
#: methods/googledrive.php:359
|
1154 |
-
msgid "Google Drive"
|
1155 |
msgstr ""
|
1156 |
|
1157 |
-
#: methods/googledrive.php:
|
1158 |
-
|
|
|
1159 |
msgstr ""
|
1160 |
|
1161 |
-
#: methods/googledrive.php:
|
1162 |
-
|
|
|
|
|
|
|
|
|
|
|
1163 |
msgstr ""
|
1164 |
|
1165 |
-
#: methods/googledrive.php:
|
1166 |
msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive."
|
1167 |
msgstr ""
|
1168 |
|
1169 |
-
#: methods/googledrive.php:
|
1170 |
-
#: methods/googledrive.php:
|
1171 |
msgid "Have not yet obtained an access token from Google (has the user authorised?)"
|
1172 |
msgstr ""
|
1173 |
|
1174 |
-
#: methods/googledrive.php:
|
|
|
|
|
|
|
|
|
|
|
1175 |
#, php-format
|
1176 |
msgid "Failed to upload to %s"
|
1177 |
msgstr ""
|
1178 |
|
1179 |
-
#: methods/googledrive.php:
|
1180 |
msgid "Error"
|
1181 |
msgstr ""
|
1182 |
|
1183 |
-
#: methods/googledrive.php:
|
1184 |
-
|
|
|
1185 |
msgstr ""
|
1186 |
|
1187 |
-
#: methods/googledrive.php:
|
1188 |
#, php-format
|
1189 |
msgid "Google Drive error: %d: could not download: could not find a record of the Google Drive file ID for this file"
|
1190 |
msgstr ""
|
1191 |
|
1192 |
-
#: methods/googledrive.php:
|
1193 |
#, php-format
|
1194 |
msgid "Could not find %s in order to download it"
|
1195 |
msgstr ""
|
1196 |
|
1197 |
-
#: methods/googledrive.php:
|
1198 |
msgid "Google Drive "
|
1199 |
msgstr ""
|
1200 |
|
1201 |
-
#: methods/googledrive.php:
|
1202 |
msgid "error: zero-size file was downloaded"
|
1203 |
msgstr ""
|
1204 |
|
1205 |
-
#: methods/googledrive.php:
|
1206 |
msgid "Account is not authorized."
|
1207 |
msgstr ""
|
1208 |
|
1209 |
-
#: methods/googledrive.php:
|
1210 |
-
#: methods/cloudfiles.php:
|
1211 |
#, php-format
|
1212 |
-
msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your
|
1213 |
msgstr ""
|
1214 |
|
1215 |
-
#: methods/googledrive.php:
|
1216 |
msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users."
|
1217 |
msgstr ""
|
1218 |
|
1219 |
-
#: methods/googledrive.php:
|
1220 |
msgid "Follow this link to your Google API Console, and there create a Client ID in the API Access section."
|
1221 |
msgstr ""
|
1222 |
|
1223 |
-
#: methods/googledrive.php:
|
1224 |
msgid "Select 'Web Application' as the application type."
|
1225 |
msgstr ""
|
1226 |
|
1227 |
-
#: methods/googledrive.php:
|
1228 |
msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked"
|
1229 |
msgstr ""
|
1230 |
|
1231 |
-
#: methods/googledrive.php:
|
1232 |
-
msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your client ID; you must create a new one from your Google API console for each
|
1233 |
msgstr ""
|
1234 |
|
1235 |
-
#: methods/googledrive.php:
|
1236 |
msgid "You do not have the SimpleXMLElement installed. Google Drive backups will <b>not</b> work until you do."
|
1237 |
msgstr ""
|
1238 |
|
1239 |
-
#: methods/googledrive.php:
|
1240 |
msgid "Client ID"
|
1241 |
msgstr ""
|
1242 |
|
1243 |
-
#: methods/googledrive.php:
|
1244 |
msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here."
|
1245 |
msgstr ""
|
1246 |
|
1247 |
-
#: methods/googledrive.php:
|
1248 |
msgid "Client Secret"
|
1249 |
msgstr ""
|
1250 |
|
1251 |
-
#: methods/googledrive.php:
|
1252 |
msgid "Folder ID"
|
1253 |
msgstr ""
|
1254 |
|
1255 |
-
#: methods/googledrive.php:
|
1256 |
msgid "<strong>This is NOT a folder name</strong>. To get a folder's ID navigate to that folder in Google Drive in your web browser and copy the ID from your browser's address bar. It is the part that comes after <kbd>#folders/.</kbd> Leave empty to use your root folder)"
|
1257 |
msgstr ""
|
1258 |
|
1259 |
-
#: methods/googledrive.php:
|
1260 |
msgid "Authenticate with Google"
|
1261 |
msgstr ""
|
1262 |
|
1263 |
-
#: methods/googledrive.php:
|
1264 |
msgid "<strong>After</strong> you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google."
|
1265 |
msgstr ""
|
1266 |
|
1267 |
#: methods/cloudfiles.php:58
|
1268 |
#: methods/cloudfiles.php:62
|
1269 |
-
#: methods/cloudfiles.php:
|
1270 |
-
#: methods/cloudfiles.php:
|
1271 |
-
#: methods/cloudfiles.php:
|
1272 |
-
#: methods/cloudfiles.php:
|
1273 |
-
#: methods/cloudfiles.php:
|
1274 |
msgid "Cloud Files authentication failed"
|
1275 |
msgstr ""
|
1276 |
|
1277 |
#: methods/cloudfiles.php:66
|
1278 |
-
#: methods/cloudfiles.php:
|
1279 |
-
#: methods/cloudfiles.php:
|
1280 |
msgid "Cloud Files error - failed to create and access the container"
|
1281 |
msgstr ""
|
1282 |
|
1283 |
-
#: methods/cloudfiles.php:
|
1284 |
#, php-format
|
1285 |
msgid "%s Error: Failed to open local file"
|
1286 |
msgstr ""
|
1287 |
|
1288 |
-
#: methods/cloudfiles.php:
|
1289 |
-
#: methods/cloudfiles.php:
|
1290 |
#, php-format
|
1291 |
msgid "%s Error: Failed to upload"
|
1292 |
msgstr ""
|
1293 |
|
1294 |
-
#: methods/cloudfiles.php:
|
1295 |
msgid "Cloud Files error - failed to re-assemble chunks"
|
1296 |
msgstr ""
|
1297 |
|
1298 |
-
#: methods/cloudfiles.php:
|
1299 |
-
#: methods/cloudfiles.php:
|
1300 |
msgid "Cloud Files error - failed to upload file"
|
1301 |
msgstr ""
|
1302 |
|
1303 |
-
#: methods/cloudfiles.php:
|
1304 |
-
#: methods/cloudfiles.php:
|
1305 |
msgid "Cloud Files Error"
|
1306 |
msgstr ""
|
1307 |
|
1308 |
-
#: methods/cloudfiles.php:
|
1309 |
msgid "Error opening local file: Failed to download"
|
1310 |
msgstr ""
|
1311 |
|
1312 |
-
#: methods/cloudfiles.php:
|
1313 |
msgid "Error downloading remote file: Failed to download ("
|
1314 |
msgstr ""
|
1315 |
|
1316 |
-
#: methods/cloudfiles.php:
|
1317 |
msgid "Cloud Files error - no such file exists at Cloud Files"
|
1318 |
msgstr ""
|
1319 |
|
1320 |
-
#: methods/cloudfiles.php:
|
1321 |
-
#: methods/cloudfiles.php:301
|
1322 |
msgid "Cloud Files error - failed to download the file"
|
1323 |
msgstr ""
|
1324 |
|
1325 |
-
#: methods/cloudfiles.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1326 |
msgid "Get your API key <a href=\"https://mycloud.rackspace.com/\">from your Rackspace Cloud console</a> (read instructions <a href=\"http://www.rackspace.com/knowledge_center/article/rackspace-cloud-essentials-1-generating-your-api-key\">here</a>), then pick a container name to use for storage. This container will be created for you if it does not already exist."
|
1327 |
msgstr ""
|
1328 |
|
1329 |
-
#: methods/cloudfiles.php:
|
1330 |
msgid "Also, you should read this important FAQ."
|
1331 |
msgstr ""
|
1332 |
|
1333 |
-
#: methods/cloudfiles.php:
|
1334 |
msgid "US or UK Cloud"
|
1335 |
msgstr ""
|
1336 |
|
1337 |
-
#: methods/cloudfiles.php:
|
1338 |
msgid "US (default)"
|
1339 |
msgstr ""
|
1340 |
|
1341 |
-
#: methods/cloudfiles.php:
|
1342 |
msgid "UK"
|
1343 |
msgstr ""
|
1344 |
|
1345 |
-
#: methods/cloudfiles.php:
|
1346 |
msgid "Cloud Files username"
|
1347 |
msgstr ""
|
1348 |
|
1349 |
-
#: methods/cloudfiles.php:
|
1350 |
msgid "Cloud Files API key"
|
1351 |
msgstr ""
|
1352 |
|
1353 |
-
#: methods/cloudfiles.php:
|
1354 |
msgid "Cloud Files container"
|
1355 |
msgstr ""
|
1356 |
|
1357 |
-
#: methods/cloudfiles.php:
|
1358 |
#, php-format
|
1359 |
msgid "UpdraftPlus's %s module <strong>requires</strong> %s. Please do not file any support requests; there is no alternative."
|
1360 |
msgstr ""
|
1361 |
|
1362 |
-
#: methods/cloudfiles.php:
|
1363 |
-
|
1364 |
-
msgid "Test %s Settings"
|
1365 |
-
msgstr ""
|
1366 |
-
|
1367 |
-
#: methods/cloudfiles.php:395
|
1368 |
-
#: methods/cloudfiles.php:400
|
1369 |
#, php-format
|
1370 |
msgid "Failure: No %s was given."
|
1371 |
msgstr ""
|
1372 |
|
1373 |
-
#: methods/cloudfiles.php:
|
1374 |
msgid "API key"
|
1375 |
msgstr ""
|
1376 |
|
1377 |
-
#: methods/cloudfiles.php:
|
1378 |
msgid "Username"
|
1379 |
msgstr ""
|
1380 |
|
1381 |
-
#: methods/cloudfiles.php:
|
1382 |
msgid "Failure: No container details were given."
|
1383 |
msgstr ""
|
1384 |
|
1385 |
-
#: methods/cloudfiles.php:
|
1386 |
msgid "Cloud Files error - we accessed the container, but failed to create a file within it"
|
1387 |
msgstr ""
|
1388 |
|
1389 |
-
#: methods/cloudfiles.php:
|
1390 |
msgid "We accessed the container, and were able to create files within it."
|
1391 |
msgstr ""
|
1392 |
|
@@ -1505,52 +1577,62 @@ msgid "The communication with %s was not encrypted."
|
|
1505 |
msgstr ""
|
1506 |
|
1507 |
#: methods/dropbox.php:35
|
1508 |
-
|
|
|
|
|
|
|
|
|
|
|
1509 |
msgid "You do not appear to be authenticated with Dropbox"
|
1510 |
msgstr ""
|
1511 |
|
1512 |
-
#: methods/dropbox.php:
|
1513 |
#, php-format
|
1514 |
msgid "error: %s (see log file for more)"
|
1515 |
msgstr ""
|
1516 |
|
1517 |
-
#: methods/dropbox.php:
|
1518 |
-
#: methods/dropbox.php:
|
1519 |
#, php-format
|
1520 |
msgid "error: failed to upload file to %s (see log file for more)"
|
1521 |
msgstr ""
|
1522 |
|
1523 |
-
#: methods/dropbox.php:
|
1524 |
msgid "Need to use sub-folders?"
|
1525 |
msgstr ""
|
1526 |
|
1527 |
-
#: methods/dropbox.php:
|
1528 |
msgid "Backups are saved in"
|
1529 |
msgstr ""
|
1530 |
|
1531 |
-
#: methods/dropbox.php:
|
1532 |
msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then "
|
1533 |
msgstr ""
|
1534 |
|
1535 |
-
#: methods/dropbox.php:
|
1536 |
msgid "there's an add-on for that."
|
1537 |
msgstr ""
|
1538 |
|
1539 |
-
#: methods/dropbox.php:
|
1540 |
msgid "Authenticate with Dropbox"
|
1541 |
msgstr ""
|
1542 |
|
1543 |
-
#: methods/dropbox.php:
|
1544 |
msgid "<strong>After</strong> you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Dropbox."
|
1545 |
msgstr ""
|
1546 |
|
1547 |
-
#: methods/dropbox.php:
|
|
|
|
|
|
|
|
|
|
|
1548 |
msgid "though part of the returned information was not as expected - your mileage may vary"
|
1549 |
msgstr ""
|
1550 |
|
1551 |
-
#: methods/dropbox.php:
|
1552 |
#, php-format
|
1553 |
-
msgid "Your %s account name"
|
1554 |
msgstr ""
|
1555 |
|
1556 |
#: methods/ftp.php:30
|
@@ -1650,30 +1732,72 @@ msgstr ""
|
|
1650 |
msgid "Enter a complete URL, beginning with webdav:// or webdavs:// and including path, username, password and port as required - e.g.%s"
|
1651 |
msgstr ""
|
1652 |
|
1653 |
-
#: addons/webdav.php:
|
1654 |
-
#: addons/sftp.php:
|
1655 |
msgid "Failed"
|
1656 |
msgstr ""
|
1657 |
|
1658 |
-
#: addons/webdav.php:
|
1659 |
msgid "Failed: We were not able to place a file in that directory - please check your credentials."
|
1660 |
msgstr ""
|
1661 |
|
1662 |
-
#: addons/morefiles.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1663 |
msgid "The above files comprise everything in a WordPress installation."
|
1664 |
msgstr ""
|
1665 |
|
1666 |
-
#: addons/morefiles.php:
|
1667 |
msgid "WordPress core (including any additions to your WordPress root directory)"
|
1668 |
msgstr ""
|
1669 |
|
1670 |
-
#: addons/morefiles.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1671 |
#, php-format
|
1672 |
msgid "No backup of %s directories: there was nothing found to back up"
|
1673 |
msgstr ""
|
1674 |
|
1675 |
-
#: addons/morefiles.php:
|
1676 |
-
msgid "
|
1677 |
msgstr ""
|
1678 |
|
1679 |
#: addons/sftp.php:23
|
@@ -1704,7 +1828,7 @@ msgid "SFTP password"
|
|
1704 |
msgstr ""
|
1705 |
|
1706 |
#: addons/sftp.php:50
|
1707 |
-
#: addons/sftp.php:
|
1708 |
msgid "Check your file permissions: Could not successfully create and enter:"
|
1709 |
msgstr ""
|
1710 |
|
@@ -1737,23 +1861,23 @@ msgstr ""
|
|
1737 |
msgid "Where to change directory to after logging in - often this is relative to your home directory."
|
1738 |
msgstr ""
|
1739 |
|
1740 |
-
#: addons/sftp.php:
|
1741 |
msgid "host name"
|
1742 |
msgstr ""
|
1743 |
|
1744 |
-
#: addons/sftp.php:
|
1745 |
msgid "username"
|
1746 |
msgstr ""
|
1747 |
|
1748 |
-
#: addons/sftp.php:
|
1749 |
msgid "password"
|
1750 |
msgstr ""
|
1751 |
|
1752 |
-
#: addons/sftp.php:
|
1753 |
msgid "Failure: Port must be an integer."
|
1754 |
msgstr ""
|
1755 |
|
1756 |
-
#: addons/sftp.php:
|
1757 |
msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully created a file in that location."
|
1758 |
msgstr ""
|
1759 |
|
@@ -1767,26 +1891,119 @@ msgstr ""
|
|
1767 |
msgid "Enter in format HH:MM (e.g. 14:22)"
|
1768 |
msgstr ""
|
1769 |
|
1770 |
-
#: addons/multisite.php:
|
1771 |
msgid "Multisite Install"
|
1772 |
msgstr ""
|
1773 |
|
1774 |
-
#: addons/multisite.php:
|
1775 |
msgid "You do not have sufficient permissions to access this page."
|
1776 |
msgstr ""
|
1777 |
|
1778 |
-
#: addons/multisite.php:
|
1779 |
msgid "You do not have permission to access this page."
|
1780 |
msgstr ""
|
1781 |
|
1782 |
-
#: addons/multisite.php:
|
1783 |
msgid "Must-use plugins"
|
1784 |
msgstr ""
|
1785 |
|
1786 |
-
#: addons/multisite.php:
|
1787 |
msgid "Blog uploads"
|
1788 |
msgstr ""
|
1789 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1790 |
#: addons/dropbox-folders.php:21
|
1791 |
msgid "Store at"
|
1792 |
msgstr ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: UpdraftPlus\n"
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: 2013-04-29 17:05+0100\n"
|
6 |
+
"PO-Revision-Date: 2013-04-29 17:05+0100\n"
|
7 |
"Last-Translator: David Anderson <contact@updraftplus.com>\n"
|
8 |
"Language-Team: <contact@updraftplus.com>\n"
|
9 |
"Language: \n"
|
18 |
msgid "UpdraftPlus Backups"
|
19 |
msgstr ""
|
20 |
|
21 |
+
#: updraftplus.php:279
|
22 |
+
#: updraftplus.php:284
|
23 |
+
#: updraftplus.php:289
|
24 |
+
#: admin.php:182
|
25 |
+
#: admin.php:186
|
26 |
msgid "UpdraftPlus notice:"
|
27 |
msgstr ""
|
28 |
|
29 |
+
#: updraftplus.php:279
|
30 |
msgid "The log file could not be read."
|
31 |
msgstr ""
|
32 |
|
33 |
+
#: updraftplus.php:284
|
34 |
msgid "No log files were found."
|
35 |
msgstr ""
|
36 |
|
37 |
+
#: updraftplus.php:289
|
38 |
msgid "The given file could not be read."
|
39 |
msgstr ""
|
40 |
|
41 |
+
#: updraftplus.php:416
|
42 |
msgid "Plugins"
|
43 |
msgstr ""
|
44 |
|
45 |
+
#: updraftplus.php:417
|
46 |
msgid "Themes"
|
47 |
msgstr ""
|
48 |
|
49 |
+
#: updraftplus.php:418
|
50 |
msgid "Uploads"
|
51 |
msgstr ""
|
52 |
|
53 |
+
#: updraftplus.php:433
|
54 |
msgid "Others"
|
55 |
msgstr ""
|
56 |
|
57 |
+
#: updraftplus.php:704
|
58 |
msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings."
|
59 |
msgstr ""
|
60 |
|
61 |
+
#: updraftplus.php:773
|
62 |
msgid "Encryption error occurred when encrypting database. Encryption aborted."
|
63 |
msgstr ""
|
64 |
|
65 |
+
#: updraftplus.php:807
|
66 |
msgid "The backup apparently succeeded and is now complete"
|
67 |
msgstr ""
|
68 |
|
69 |
+
#: updraftplus.php:810
|
70 |
msgid "The backup attempt has finished, apparently unsuccessfully"
|
71 |
msgstr ""
|
72 |
|
73 |
+
#: updraftplus.php:813
|
74 |
msgid "The backup has not finished; a resumption is scheduled within 5 minutes"
|
75 |
msgstr ""
|
76 |
|
77 |
+
#: updraftplus.php:864
|
78 |
msgid "Backed up"
|
79 |
msgstr ""
|
80 |
|
81 |
+
#: updraftplus.php:864
|
82 |
msgid "WordPress backup is complete"
|
83 |
msgstr ""
|
84 |
|
85 |
+
#: updraftplus.php:864
|
86 |
msgid "Backup contains"
|
87 |
msgstr ""
|
88 |
|
89 |
+
#: updraftplus.php:864
|
90 |
msgid "Latest status"
|
91 |
msgstr ""
|
92 |
|
93 |
+
#: updraftplus.php:1108
|
94 |
#, php-format
|
95 |
msgid "Backup directory (%s) is not writable, or does not exist."
|
96 |
msgstr ""
|
97 |
|
98 |
+
#: updraftplus.php:1233
|
99 |
msgid "Could not read the directory"
|
100 |
msgstr ""
|
101 |
|
102 |
+
#: updraftplus.php:1250
|
103 |
msgid "Could not save backup history because we have no backup array. Backup probably failed."
|
104 |
msgstr ""
|
105 |
|
106 |
+
#: updraftplus.php:1279
|
107 |
msgid "Could not open the backup file for writing"
|
108 |
msgstr ""
|
109 |
|
110 |
+
#: updraftplus.php:1294
|
111 |
#, php-format
|
112 |
msgid "Generated: %s"
|
113 |
msgstr ""
|
114 |
|
115 |
+
#: updraftplus.php:1295
|
116 |
#, php-format
|
117 |
msgid "Hostname: %s"
|
118 |
msgstr ""
|
119 |
|
120 |
+
#: updraftplus.php:1296
|
121 |
#, php-format
|
122 |
msgid "Database: %s"
|
123 |
msgstr ""
|
124 |
|
125 |
+
#: updraftplus.php:1340
|
126 |
msgid "The backup directory is not writable."
|
127 |
msgstr ""
|
128 |
|
129 |
+
#: updraftplus.php:1361
|
130 |
#, php-format
|
131 |
msgid "Table: %s"
|
132 |
msgstr ""
|
133 |
|
134 |
+
#: updraftplus.php:1366
|
135 |
#, php-format
|
136 |
msgid "Skipping non-WP table: %s"
|
137 |
msgstr ""
|
138 |
|
139 |
+
#: updraftplus.php:1461
|
140 |
#, php-format
|
141 |
msgid "Delete any existing table %s"
|
142 |
msgstr ""
|
143 |
|
144 |
+
#: updraftplus.php:1470
|
145 |
#, php-format
|
146 |
msgid "Table structure of table %s"
|
147 |
msgstr ""
|
148 |
|
149 |
+
#: updraftplus.php:1476
|
150 |
#, php-format
|
151 |
msgid "Error with SHOW CREATE TABLE for %s."
|
152 |
msgstr ""
|
153 |
|
154 |
+
#: updraftplus.php:1554
|
155 |
#, php-format
|
156 |
msgid "End of data contents of table %s"
|
157 |
msgstr ""
|
158 |
|
159 |
+
#: updraftplus.php:1726
|
160 |
+
#: includes/updraft-restorer.php:56
|
161 |
msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered."
|
162 |
msgstr ""
|
163 |
|
164 |
+
#: updraftplus.php:1739
|
165 |
+
#: includes/updraft-restorer.php:71
|
166 |
msgid "Decryption failed. The most likely cause is that you used the wrong key."
|
167 |
msgstr ""
|
168 |
|
169 |
+
#: updraftplus.php:1739
|
170 |
msgid "The decryption key used:"
|
171 |
msgstr ""
|
172 |
|
173 |
+
#: updraftplus.php:1754
|
174 |
msgid "File not found"
|
175 |
msgstr ""
|
176 |
|
177 |
+
#: updraftplus.php:1804
|
178 |
msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?"
|
179 |
msgstr ""
|
180 |
|
181 |
+
#: updraftplus.php:1806
|
182 |
msgid "Find UpdraftPlus useful?"
|
183 |
msgstr ""
|
184 |
|
185 |
+
#: updraftplus.php:1806
|
186 |
msgid "Please make a donation"
|
187 |
msgstr ""
|
188 |
|
189 |
+
#: updraftplus.php:1811
|
190 |
msgid "Like UpdraftPlus and can spare one minute?"
|
191 |
msgstr ""
|
192 |
|
193 |
+
#: updraftplus.php:1811
|
194 |
msgid "Please help UpdraftPlus by giving a positive review at wordpress.org"
|
195 |
msgstr ""
|
196 |
|
197 |
+
#: updraftplus.php:1818
|
198 |
msgid "Need even more features and support? Check out UpdraftPlus Premium"
|
199 |
msgstr ""
|
200 |
|
201 |
+
#: updraftplus.php:1827
|
202 |
msgid "Check out UpdraftPlus.Com for help, add-ons and support"
|
203 |
msgstr ""
|
204 |
|
205 |
+
#: updraftplus.php:1830
|
206 |
msgid "Want to say thank-you for UpdraftPlus?"
|
207 |
msgstr ""
|
208 |
|
209 |
+
#: updraftplus.php:1830
|
210 |
msgid "Please buy our very cheap 'no adverts' add-on."
|
211 |
msgstr ""
|
212 |
|
219 |
msgid "Could not create %s zip. Consult the log file for more information."
|
220 |
msgstr ""
|
221 |
|
222 |
+
#: admin.php:87
|
223 |
+
#: admin.php:104
|
224 |
msgid "Allowed Files"
|
225 |
msgstr ""
|
226 |
|
227 |
+
#: admin.php:154
|
228 |
msgid "Settings"
|
229 |
msgstr ""
|
230 |
|
231 |
+
#: admin.php:158
|
232 |
msgid "Add-Ons / Pro Support"
|
233 |
msgstr ""
|
234 |
|
235 |
+
#: admin.php:170
|
236 |
+
#: admin.php:174
|
237 |
+
#: admin.php:178
|
238 |
+
#: admin.php:1541
|
239 |
+
#: admin.php:1547
|
240 |
+
#: admin.php:1549
|
241 |
msgid "Warning"
|
242 |
msgstr ""
|
243 |
|
244 |
+
#: admin.php:170
|
245 |
#, php-format
|
246 |
msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue."
|
247 |
msgstr ""
|
248 |
|
249 |
+
#: admin.php:174
|
250 |
#, php-format
|
251 |
msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress."
|
252 |
msgstr ""
|
253 |
|
254 |
+
#: admin.php:178
|
255 |
+
#, php-format
|
256 |
+
msgid "Your website is hosted using the %s web server."
|
257 |
+
msgstr ""
|
258 |
+
|
259 |
+
#: admin.php:178
|
260 |
+
msgid "Please consult this FAQ if you have problems backing up."
|
261 |
+
msgstr ""
|
262 |
+
|
263 |
+
#: admin.php:182
|
264 |
+
#: admin.php:186
|
265 |
#, php-format
|
266 |
msgid "Click here to authenticate your %s account (you will not be able to back up to %s without it)."
|
267 |
msgstr ""
|
268 |
|
269 |
+
#: admin.php:337
|
270 |
#, php-format
|
271 |
msgid "The backup archive for restoring this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To proceed with this restoration, you need to obtain a copy of this file and place it inside UpdraftPlus's working folder"
|
272 |
msgstr ""
|
273 |
|
274 |
+
#: admin.php:352
|
275 |
msgid "Nothing yet logged"
|
276 |
msgstr ""
|
277 |
|
278 |
+
#: admin.php:369
|
279 |
msgid "Download failed"
|
280 |
msgstr ""
|
281 |
|
282 |
+
#: admin.php:383
|
283 |
+
#: admin.php:905
|
284 |
msgid "File ready."
|
285 |
msgstr ""
|
286 |
|
287 |
+
#: admin.php:391
|
288 |
msgid "Download in progress"
|
289 |
msgstr ""
|
290 |
|
291 |
+
#: admin.php:394
|
292 |
msgid "No local copy present."
|
293 |
msgstr ""
|
294 |
|
295 |
+
#: admin.php:502
|
296 |
msgid "Bad filename format - this does not look like a file created by UpdraftPlus"
|
297 |
msgstr ""
|
298 |
|
299 |
+
#: admin.php:581
|
300 |
msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus"
|
301 |
msgstr ""
|
302 |
|
303 |
+
#: admin.php:608
|
304 |
msgid "Restore successful!"
|
305 |
msgstr ""
|
306 |
|
307 |
+
#: admin.php:609
|
308 |
+
#: admin.php:644
|
309 |
+
#: admin.php:656
|
310 |
msgid "Actions"
|
311 |
msgstr ""
|
312 |
|
|
|
313 |
#: admin.php:609
|
314 |
+
#: admin.php:624
|
315 |
+
#: admin.php:644
|
316 |
+
#: admin.php:656
|
317 |
msgid "Return to UpdraftPlus Configuration"
|
318 |
msgstr ""
|
319 |
|
320 |
+
#: admin.php:633
|
321 |
msgid "Remove old directories"
|
322 |
msgstr ""
|
323 |
|
324 |
+
#: admin.php:639
|
325 |
msgid "Old directories successfully removed."
|
326 |
msgstr ""
|
327 |
|
328 |
+
#: admin.php:642
|
329 |
msgid "Old directory removal failed for some reason. You may want to do this manually."
|
330 |
msgstr ""
|
331 |
|
332 |
+
#: admin.php:653
|
333 |
msgid "Backup directory could not be created"
|
334 |
msgstr ""
|
335 |
|
336 |
+
#: admin.php:655
|
337 |
msgid "Backup directory successfully created."
|
338 |
msgstr ""
|
339 |
|
340 |
+
#: admin.php:662
|
341 |
msgid "Schedule backup"
|
342 |
msgstr ""
|
343 |
|
344 |
+
#: admin.php:665
|
345 |
msgid "Failed."
|
346 |
msgstr ""
|
347 |
|
348 |
+
#: admin.php:667
|
349 |
msgid "OK. Now load any page from your site to make sure the schedule can trigger. You should then see activity in the \"Last log message\" field below."
|
350 |
msgstr ""
|
351 |
|
352 |
+
#: admin.php:667
|
353 |
msgid "Nothing happening? Follow this link for help."
|
354 |
msgstr ""
|
355 |
|
356 |
+
#: admin.php:681
|
357 |
msgid "Your settings have been wiped."
|
358 |
msgstr ""
|
359 |
|
360 |
+
#: admin.php:688
|
361 |
msgid "By UpdraftPlus.Com"
|
362 |
msgstr ""
|
363 |
|
364 |
+
#: admin.php:688
|
365 |
msgid "Lead developer's homepage"
|
366 |
msgstr ""
|
367 |
|
368 |
+
#: admin.php:688
|
369 |
msgid "Donate"
|
370 |
msgstr ""
|
371 |
|
372 |
+
#: admin.php:688
|
373 |
msgid "Other WordPress plugins"
|
374 |
msgstr ""
|
375 |
|
376 |
+
#: admin.php:688
|
377 |
msgid "Version"
|
378 |
msgstr ""
|
379 |
|
380 |
+
#: admin.php:694
|
381 |
msgid "Your backup has been restored."
|
382 |
msgstr ""
|
383 |
|
384 |
+
#: admin.php:694
|
385 |
msgid "Your old (themes, uploads, plugins, whatever) directories have been retained with \"-old\" appended to their name. Remove them when you are satisfied that the backup worked properly."
|
386 |
msgstr ""
|
387 |
|
388 |
+
#: admin.php:700
|
389 |
msgid "Old directories successfully deleted."
|
390 |
msgstr ""
|
391 |
|
392 |
+
#: admin.php:703
|
393 |
msgid "Your PHP memory limit (set by your web hosting company) is quite low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will bhe successful with a 32Mb limit - your experience may vary)."
|
394 |
msgstr ""
|
395 |
|
396 |
+
#: admin.php:703
|
397 |
msgid "Current limit is:"
|
398 |
msgstr ""
|
399 |
|
400 |
+
#: admin.php:707
|
401 |
msgid "Your PHP max_execution_time is less than 60 seconds. This possibly means you're running in safe_mode. Either disable safe_mode or modify your php.ini to set max_execution_time to a higher number. If you do not, then longer will be needed to complete a backup (but that is all). Present limit is:"
|
402 |
msgstr ""
|
403 |
|
404 |
+
#: admin.php:707
|
405 |
msgid "seconds"
|
406 |
msgstr ""
|
407 |
|
408 |
+
#: admin.php:712
|
409 |
msgid "You have old directories from a previous backup (technical information: these are found in wp-content, and suffixed with -old). Use this button to delete them (if you have verified that the restoration worked)."
|
410 |
msgstr ""
|
411 |
|
412 |
+
#: admin.php:716
|
413 |
msgid "Delete Old Directories"
|
414 |
msgstr ""
|
415 |
|
416 |
+
#: admin.php:716
|
417 |
msgid "Are you sure you want to delete the old directories? This cannot be undone."
|
418 |
msgstr ""
|
419 |
|
420 |
+
#: admin.php:730
|
421 |
msgid "Existing Schedule And Backups"
|
422 |
msgstr ""
|
423 |
|
424 |
+
#: admin.php:734
|
425 |
msgid "JavaScript warning"
|
426 |
msgstr ""
|
427 |
|
428 |
+
#: admin.php:735
|
429 |
msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser."
|
430 |
msgstr ""
|
431 |
|
432 |
+
#: admin.php:748
|
433 |
+
#: admin.php:761
|
434 |
msgid "Nothing currently scheduled"
|
435 |
msgstr ""
|
436 |
|
437 |
+
#: admin.php:753
|
438 |
msgid "At the same time as the files backup"
|
439 |
msgstr ""
|
440 |
|
441 |
+
#: admin.php:773
|
442 |
+
msgid "All the times shown in this section are using WordPress's configured time zone, which you can set in Settings -> General"
|
443 |
+
msgstr ""
|
444 |
+
|
445 |
+
#: admin.php:773
|
446 |
msgid "Next scheduled backups"
|
447 |
msgstr ""
|
448 |
|
449 |
+
#: admin.php:775
|
450 |
msgid "Files"
|
451 |
msgstr ""
|
452 |
|
453 |
+
#: admin.php:776
|
454 |
+
#: admin.php:960
|
455 |
+
#: admin.php:963
|
456 |
+
#: admin.php:1613
|
457 |
+
#: admin.php:1620
|
458 |
+
#: admin.php:1783
|
459 |
msgid "Database"
|
460 |
msgstr ""
|
461 |
|
462 |
+
#: admin.php:777
|
463 |
msgid "Time now"
|
464 |
msgstr ""
|
465 |
|
466 |
+
#: admin.php:781
|
467 |
msgid "Last finished backup run"
|
468 |
msgstr ""
|
469 |
|
470 |
+
#: admin.php:786
|
471 |
+
#: admin.php:1431
|
472 |
msgid "Backup Now"
|
473 |
msgstr ""
|
474 |
|
475 |
+
#: admin.php:793
|
476 |
+
#: admin.php:1410
|
477 |
+
#: admin.php:1658
|
478 |
msgid "Restore"
|
479 |
msgstr ""
|
480 |
|
481 |
+
#: admin.php:800
|
482 |
msgid "Last log message"
|
483 |
msgstr ""
|
484 |
|
485 |
+
#: admin.php:802
|
486 |
msgid "(Nothing yet logged)"
|
487 |
msgstr ""
|
488 |
|
489 |
+
#: admin.php:803
|
490 |
msgid "Download most recently modified log file"
|
491 |
msgstr ""
|
492 |
|
493 |
+
#: admin.php:807
|
494 |
msgid "Backups, logs & restoring"
|
495 |
msgstr ""
|
496 |
|
497 |
+
#: admin.php:808
|
498 |
msgid "Press to see available backups"
|
499 |
msgstr ""
|
500 |
|
501 |
+
#: admin.php:808
|
502 |
#, php-format
|
503 |
msgid "%d set(s) available"
|
504 |
msgstr ""
|
505 |
|
506 |
+
#: admin.php:813
|
507 |
msgid "Downloading"
|
508 |
msgstr ""
|
509 |
|
510 |
+
#: admin.php:813
|
511 |
msgid "Pressing a button for Database/Plugins/Themes/Uploads/Others will make UpdraftPlus try to bring the backup file back from the remote storage (if any - e.g. Amazon S3, Dropbox, Google Drive, FTP) to your webserver. Then you will be allowed to download it to your computer. If the fetch from the remote storage stops progressing (wait 30 seconds to make sure), then press again to resume. Remember that you can also visit the cloud storage vendor's website directly."
|
512 |
msgstr ""
|
513 |
|
514 |
+
#: admin.php:814
|
515 |
msgid "Restoring"
|
516 |
msgstr ""
|
517 |
|
518 |
+
#: admin.php:814
|
519 |
msgid "Press the button for the backup you wish to restore. If your site is large and you are using remote storage, then you should first click on each entity in order to retrieve it back to the webserver. This will prevent time-outs from occuring during the restore process itself."
|
520 |
msgstr ""
|
521 |
|
522 |
+
#: admin.php:814
|
523 |
msgid "More tasks:"
|
524 |
msgstr ""
|
525 |
|
526 |
+
#: admin.php:814
|
527 |
msgid "upload backup files"
|
528 |
msgstr ""
|
529 |
|
530 |
+
#: admin.php:814
|
531 |
msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded. The location of this directory is set in the expert settings, below."
|
532 |
msgstr ""
|
533 |
|
534 |
+
#: admin.php:814
|
535 |
msgid "rescan folder for new backup sets"
|
536 |
msgstr ""
|
537 |
|
538 |
+
#: admin.php:815
|
539 |
msgid "Opera web browser"
|
540 |
msgstr ""
|
541 |
|
542 |
+
#: admin.php:815
|
543 |
msgid "If you are using this, then turn Turbo/Road mode off."
|
544 |
msgstr ""
|
545 |
|
546 |
+
#: admin.php:816
|
547 |
msgid "This is a count of the contents of your Updraft directory"
|
548 |
msgstr ""
|
549 |
|
550 |
+
#: admin.php:816
|
551 |
msgid "Web-server disk space in use by UpdraftPlus"
|
552 |
msgstr ""
|
553 |
|
554 |
+
#: admin.php:816
|
555 |
msgid "refresh"
|
556 |
msgstr ""
|
557 |
|
558 |
+
#: admin.php:818
|
559 |
msgid "UpdraftPlus - Upload backup files"
|
560 |
msgstr ""
|
561 |
|
562 |
+
#: admin.php:819
|
563 |
msgid "Upload files into UpdraftPlus. Use this to import backups made on a different WordPress installation."
|
564 |
msgstr ""
|
565 |
|
566 |
+
#: admin.php:823
|
567 |
msgid "Drop backup zips here"
|
568 |
msgstr ""
|
569 |
|
570 |
+
#: admin.php:824
|
571 |
+
#: admin.php:1287
|
572 |
msgid "or"
|
573 |
msgstr ""
|
574 |
|
575 |
+
#: admin.php:837
|
576 |
msgid "calculating..."
|
577 |
msgstr ""
|
578 |
|
579 |
+
#: admin.php:895
|
580 |
+
#: admin.php:917
|
581 |
msgid "Error:"
|
582 |
msgstr ""
|
583 |
|
584 |
+
#: admin.php:905
|
585 |
msgid "You should:"
|
586 |
msgstr ""
|
587 |
|
588 |
+
#: admin.php:912
|
589 |
msgid "Download error: the server sent us a response (JSON) which we did not understand"
|
590 |
msgstr ""
|
591 |
|
592 |
+
#: admin.php:917
|
593 |
msgid "Download error: the server sent us a response which we did not understand."
|
594 |
msgstr ""
|
595 |
|
596 |
+
#: admin.php:932
|
597 |
msgid "Restore backup"
|
598 |
msgstr ""
|
599 |
|
600 |
+
#: admin.php:933
|
601 |
msgid "Restore backup from"
|
602 |
msgstr ""
|
603 |
|
604 |
+
#: admin.php:934
|
605 |
+
msgid "Restoring will replace this site's themes, plugins, uploads, database and/or other content directories (according to what is contained in the backup set, and your selection)."
|
606 |
msgstr ""
|
607 |
|
608 |
+
#: admin.php:934
|
609 |
msgid "Choose the components to restore"
|
610 |
msgstr ""
|
611 |
|
612 |
+
#: admin.php:943
|
613 |
msgid "Your web server has PHP's so-called safe_mode active."
|
614 |
msgstr ""
|
615 |
|
616 |
+
#: admin.php:943
|
617 |
msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time, <a href=\"http://updraftplus.com/faqs/i-want-to-restore-but-have-either-cannot-or-have-failed-to-do-so-from-the-wp-admin-console/\">or to restore manually</a>."
|
618 |
msgstr ""
|
619 |
|
620 |
+
#: admin.php:956
|
621 |
+
#, php-format
|
622 |
+
msgid "The following entity cannot be restored automatically: \"%s\"."
|
623 |
+
msgstr ""
|
624 |
+
|
625 |
+
#: admin.php:956
|
626 |
+
msgid "You will need to restore it manually."
|
627 |
+
msgstr ""
|
628 |
+
|
629 |
+
#: admin.php:963
|
630 |
+
#, php-format
|
631 |
+
msgid "%s restoration options:"
|
632 |
+
msgstr ""
|
633 |
+
|
634 |
+
#: admin.php:971
|
635 |
+
msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information"
|
636 |
+
msgstr ""
|
637 |
+
|
638 |
+
#: admin.php:992
|
639 |
+
msgid "Do read this helpful article of useful things to know before restoring."
|
640 |
+
msgstr ""
|
641 |
+
|
642 |
+
#: admin.php:995
|
643 |
msgid "Perform a backup now"
|
644 |
msgstr ""
|
645 |
|
646 |
+
#: admin.php:996
|
647 |
msgid "This will schedule a one-time backup. To proceed, press 'Backup Now', then wait 10 seconds, then visit any page on your site. WordPress should then start the backup running in the background."
|
648 |
msgstr ""
|
649 |
|
650 |
+
#: admin.php:1002
|
651 |
msgid "Does nothing happen when you schedule backups?"
|
652 |
msgstr ""
|
653 |
|
654 |
+
#: admin.php:1002
|
655 |
msgid "Go here for help."
|
656 |
msgstr ""
|
657 |
|
658 |
+
#: admin.php:1008
|
659 |
msgid "Multisite"
|
660 |
msgstr ""
|
661 |
|
662 |
+
#: admin.php:1012
|
663 |
msgid "Do you need WordPress Multisite support?"
|
664 |
msgstr ""
|
665 |
|
666 |
+
#: admin.php:1012
|
667 |
msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on."
|
668 |
msgstr ""
|
669 |
|
670 |
+
#: admin.php:1017
|
671 |
msgid "Configure Backup Contents And Schedule"
|
672 |
msgstr ""
|
673 |
|
674 |
+
#: admin.php:1023
|
675 |
msgid "Debug Information And Expert Options"
|
676 |
msgstr ""
|
677 |
|
678 |
+
#: admin.php:1028
|
679 |
msgid "Peak memory usage"
|
680 |
msgstr ""
|
681 |
|
682 |
+
#: admin.php:1029
|
683 |
msgid "Current memory usage"
|
684 |
msgstr ""
|
685 |
|
686 |
+
#: admin.php:1030
|
687 |
msgid "PHP memory limit"
|
688 |
msgstr ""
|
689 |
|
690 |
+
#: admin.php:1033
|
691 |
msgid "The buttons below will immediately execute a backup run, independently of WordPress's scheduler. If these work whilst your scheduled backups and the \"Backup Now\" button do absolutely nothing (i.e. not even produce a log file), then it means that your scheduler is broken. You should then disable all your other plugins, and try the \"Backup Now\" button. If that fails, then contact your web hosting company and ask them if they have disabled wp-cron. If it succeeds, then re-activate your other plugins one-by-one, and find the one that is the problem and report a bug to them."
|
692 |
msgstr ""
|
693 |
|
694 |
+
#: admin.php:1037
|
695 |
msgid "Debug Full Backup"
|
696 |
msgstr ""
|
697 |
|
698 |
+
#: admin.php:1037
|
699 |
msgid "This will cause an immediate backup. The page will stall loading until it finishes (ie, unscheduled)."
|
700 |
msgstr ""
|
701 |
|
702 |
+
#: admin.php:1041
|
703 |
msgid "Debug Database Backup"
|
704 |
msgstr ""
|
705 |
|
706 |
+
#: admin.php:1041
|
707 |
msgid "This will cause an immediate DB backup. The page will stall loading until it finishes (ie, unscheduled). The backup may well run out of time; really this button is only helpful for checking that the backup is able to get through the initial stages, or for small WordPress sites.."
|
708 |
msgstr ""
|
709 |
|
710 |
+
#: admin.php:1043
|
711 |
msgid "Wipe Settings"
|
712 |
msgstr ""
|
713 |
|
714 |
+
#: admin.php:1044
|
715 |
msgid "This button will delete all UpdraftPlus settings (but not any of your existing backups from your cloud storage). You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish."
|
716 |
msgstr ""
|
717 |
|
718 |
+
#: admin.php:1047
|
719 |
msgid "Wipe All Settings"
|
720 |
msgstr ""
|
721 |
|
722 |
+
#: admin.php:1047
|
723 |
msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?"
|
724 |
msgstr ""
|
725 |
|
726 |
+
#: admin.php:1090
|
727 |
msgid "Delete"
|
728 |
msgstr ""
|
729 |
|
730 |
+
#: admin.php:1154
|
731 |
msgid "Download log file"
|
732 |
msgstr ""
|
733 |
|
734 |
+
#: admin.php:1160
|
735 |
msgid "No backup has been completed."
|
736 |
msgstr ""
|
737 |
|
738 |
+
#: admin.php:1177
|
739 |
msgid "File backup intervals"
|
740 |
msgstr ""
|
741 |
|
742 |
+
#: admin.php:1180
|
743 |
msgid "Manual"
|
744 |
msgstr ""
|
745 |
|
746 |
+
#: admin.php:1180
|
747 |
msgid "Every 4 hours"
|
748 |
msgstr ""
|
749 |
|
750 |
+
#: admin.php:1180
|
751 |
msgid "Every 8 hours"
|
752 |
msgstr ""
|
753 |
|
754 |
+
#: admin.php:1180
|
755 |
msgid "Every 12 hours"
|
756 |
msgstr ""
|
757 |
|
758 |
+
#: admin.php:1180
|
759 |
msgid "Daily"
|
760 |
msgstr ""
|
761 |
|
762 |
+
#: admin.php:1180
|
763 |
msgid "Weekly"
|
764 |
msgstr ""
|
765 |
|
766 |
+
#: admin.php:1180
|
767 |
msgid "Fortnightly"
|
768 |
msgstr ""
|
769 |
|
770 |
+
#: admin.php:1180
|
771 |
msgid "Monthly"
|
772 |
msgstr ""
|
773 |
|
774 |
+
#: admin.php:1189
|
775 |
+
#: admin.php:1207
|
776 |
msgid "and retain this many backups"
|
777 |
msgstr ""
|
778 |
|
779 |
+
#: admin.php:1196
|
780 |
msgid "Database backup intervals"
|
781 |
msgstr ""
|
782 |
|
783 |
+
#: admin.php:1214
|
784 |
msgid "If you would like to automatically schedule backups, choose schedules from the dropdowns above. Backups will occur at the intervals specified. If the two schedules are the same, then the two backups will take place together. If you choose \"manual\" then you must click the \"Backup Now\" button whenever you wish a backup to occur."
|
785 |
msgstr ""
|
786 |
|
787 |
+
#: admin.php:1215
|
788 |
msgid "To fix the time at which a backup should take place,"
|
789 |
msgstr ""
|
790 |
|
791 |
+
#: admin.php:1215
|
792 |
msgid "e.g. if your server is busy at day and you want to run overnight"
|
793 |
msgstr ""
|
794 |
|
795 |
+
#: admin.php:1215
|
796 |
msgid "use the \"Fix Time\" add-on"
|
797 |
msgstr ""
|
798 |
|
799 |
+
#: admin.php:1219
|
800 |
msgid "Include in files backup"
|
801 |
msgstr ""
|
802 |
|
803 |
+
#: admin.php:1229
|
804 |
+
msgid "Any other directories found inside wp-content"
|
805 |
+
msgstr ""
|
806 |
+
|
807 |
+
#: admin.php:1235
|
808 |
+
msgid "Exclude these:"
|
809 |
+
msgstr ""
|
810 |
+
|
811 |
+
#: admin.php:1237
|
812 |
+
msgid "If entering multiple files/directories, then separate them with commas"
|
813 |
msgstr ""
|
814 |
|
815 |
+
#: admin.php:1263
|
816 |
msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org."
|
817 |
msgstr ""
|
818 |
|
819 |
+
#: admin.php:1263
|
820 |
msgid "Or, get the \"More Files\" add-on from our shop."
|
821 |
msgstr ""
|
822 |
|
823 |
+
#: admin.php:1263
|
824 |
msgid "Use WordShell for automatic backup, version control and patching"
|
825 |
msgstr ""
|
826 |
|
827 |
+
#: admin.php:1267
|
828 |
msgid "Email"
|
829 |
msgstr ""
|
830 |
|
831 |
+
#: admin.php:1268
|
832 |
msgid "Enter an address here to have a report sent (and the whole backup, if you choose) to it."
|
833 |
msgstr ""
|
834 |
|
835 |
+
#: admin.php:1272
|
836 |
msgid "Database encryption phrase"
|
837 |
msgstr ""
|
838 |
|
839 |
+
#: admin.php:1279
|
840 |
msgid "If you enter text here, it is used to encrypt backups (Rijndael). <strong>Do make a separate record of it and do not lose it, or all your backups <em>will</em> be useless.</strong> Presently, only the database file is encrypted. This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)."
|
841 |
msgstr ""
|
842 |
|
843 |
+
#: admin.php:1279
|
844 |
msgid "You can also decrypt a database manually here."
|
845 |
msgstr ""
|
846 |
|
847 |
+
#: admin.php:1282
|
848 |
msgid "Manually decrypt a database backup file"
|
849 |
msgstr ""
|
850 |
|
851 |
+
#: admin.php:1286
|
852 |
msgid "Drop encrypted database files (db.crypt.gz files) here to upload them for decryption"
|
853 |
msgstr ""
|
854 |
|
855 |
+
#: admin.php:1289
|
856 |
msgid "Use decryption key"
|
857 |
msgstr ""
|
858 |
|
859 |
+
#: admin.php:1303
|
860 |
msgid "Copying Your Backup To Remote Storage"
|
861 |
msgstr ""
|
862 |
|
863 |
+
#: admin.php:1307
|
864 |
msgid "Choose your remote storage"
|
865 |
msgstr ""
|
866 |
|
867 |
+
#: admin.php:1319
|
868 |
msgid "None"
|
869 |
msgstr ""
|
870 |
|
871 |
+
#: admin.php:1424
|
872 |
+
#: admin.php:1434
|
873 |
msgid "Cancel"
|
874 |
msgstr ""
|
875 |
|
876 |
+
#: admin.php:1458
|
877 |
msgid "Advanced / Debugging Settings"
|
878 |
msgstr ""
|
879 |
|
880 |
+
#: admin.php:1461
|
881 |
msgid "Debug mode"
|
882 |
msgstr ""
|
883 |
|
884 |
+
#: admin.php:1462
|
885 |
msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong. You <strong>must</strong> send us this log if you are filing a bug report."
|
886 |
msgstr ""
|
887 |
|
888 |
+
#: admin.php:1465
|
889 |
msgid "Expert settings"
|
890 |
msgstr ""
|
891 |
|
892 |
+
#: admin.php:1466
|
893 |
msgid "Show expert settings"
|
894 |
msgstr ""
|
895 |
|
896 |
+
#: admin.php:1466
|
897 |
msgid "click this to show some further options; don't bother with this unless you have a problem or are curious."
|
898 |
msgstr ""
|
899 |
|
900 |
+
#: admin.php:1473
|
901 |
msgid "Delete local backup"
|
902 |
msgstr ""
|
903 |
|
904 |
+
#: admin.php:1474
|
905 |
msgid "Uncheck this to prevent deletion of any superfluous backup files from your server after the backup run finishes (i.e. any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)."
|
906 |
msgstr ""
|
907 |
|
908 |
+
#: admin.php:1479
|
909 |
msgid "Backup directory"
|
910 |
msgstr ""
|
911 |
|
912 |
+
#: admin.php:1487
|
913 |
msgid "Backup directory specified is writable, which is good."
|
914 |
msgstr ""
|
915 |
|
916 |
+
#: admin.php:1489
|
917 |
msgid "Backup directory specified is <b>not</b> writable, or does not exist."
|
918 |
msgstr ""
|
919 |
|
920 |
+
#: admin.php:1489
|
921 |
msgid "Click here to attempt to create the directory and set the permissions"
|
922 |
msgstr ""
|
923 |
|
924 |
+
#: admin.php:1489
|
925 |
msgid "or, to reset this option"
|
926 |
msgstr ""
|
927 |
|
928 |
+
#: admin.php:1489
|
929 |
msgid "click here"
|
930 |
msgstr ""
|
931 |
|
932 |
+
#: admin.php:1489
|
933 |
msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process."
|
934 |
msgstr ""
|
935 |
|
936 |
+
#: admin.php:1492
|
937 |
msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. Typically you'll want to have it inside your wp-content folder (this is the default). <b>Do not</b> place it inside your uploads dir, as that will cause recursion issues (backups of backups of backups of...)."
|
938 |
msgstr ""
|
939 |
|
940 |
+
#: admin.php:1496
|
941 |
msgid "Use the server's SSL certificates"
|
942 |
msgstr ""
|
943 |
|
944 |
+
#: admin.php:1497
|
945 |
msgid "By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server's collection instead) may help."
|
946 |
msgstr ""
|
947 |
|
948 |
+
#: admin.php:1501
|
949 |
msgid "Do not verify SSL certificates"
|
950 |
msgstr ""
|
951 |
|
952 |
+
#: admin.php:1502
|
953 |
msgid "Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication."
|
954 |
msgstr ""
|
955 |
|
956 |
+
#: admin.php:1502
|
957 |
msgid "Note that not all cloud backup methods are necessarily using SSL authentication."
|
958 |
msgstr ""
|
959 |
|
960 |
+
#: admin.php:1506
|
961 |
msgid "Disable SSL entirely where possible"
|
962 |
msgstr ""
|
963 |
|
964 |
+
#: admin.php:1507
|
965 |
msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect."
|
966 |
msgstr ""
|
967 |
|
968 |
+
#: admin.php:1531
|
969 |
msgid "Save Changes"
|
970 |
msgstr ""
|
971 |
|
972 |
+
#: admin.php:1541
|
973 |
#, php-format
|
974 |
msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support."
|
975 |
msgstr ""
|
976 |
|
977 |
+
#: admin.php:1541
|
978 |
#, php-format
|
979 |
msgid "UpdraftPlus's %s module <strong>requires</strong> Curl. Your only options to get this working are 1) Install/enable curl or 2) Hire us or someone else to code additional support options into UpdraftPlus. 3) Wait, possibly forever, for someone else to do this."
|
980 |
msgstr ""
|
981 |
|
982 |
+
#: admin.php:1547
|
983 |
#, php-format
|
984 |
msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)."
|
985 |
msgstr ""
|
986 |
|
987 |
+
#: admin.php:1549
|
988 |
#, php-format
|
989 |
msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s <strong>requires</strong> Curl+https. Please do not file any support requests; there is no alternative."
|
990 |
msgstr ""
|
991 |
|
992 |
+
#: admin.php:1552
|
993 |
#, php-format
|
994 |
msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help."
|
995 |
msgstr ""
|
996 |
|
997 |
+
#: admin.php:1638
|
998 |
msgid "Press here to download"
|
999 |
msgstr ""
|
1000 |
|
1001 |
+
#: admin.php:1640
|
1002 |
#, php-format
|
1003 |
msgid "(No %s)"
|
1004 |
msgstr ""
|
1005 |
|
1006 |
+
#: admin.php:1650
|
1007 |
msgid "Backup Log"
|
1008 |
msgstr ""
|
1009 |
|
1010 |
+
#: admin.php:1658
|
1011 |
msgid "After pressing this button, you will be given the option to choose which components you wish to restore"
|
1012 |
msgstr ""
|
1013 |
|
1014 |
+
#: admin.php:1746
|
1015 |
msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:"
|
1016 |
msgstr ""
|
1017 |
|
1018 |
+
#: admin.php:1759
|
1019 |
msgid "UpdraftPlus Restoration: Progress"
|
1020 |
msgstr ""
|
1021 |
|
1022 |
+
#: admin.php:1766
|
1023 |
msgid "ABORT: Could not find the information on which entities to restore."
|
1024 |
msgstr ""
|
1025 |
|
1026 |
+
#: admin.php:1767
|
1027 |
+
msgid "If making a request for support, please include this information:"
|
1028 |
+
msgstr ""
|
1029 |
+
|
1030 |
+
#: admin.php:1789
|
1031 |
msgid "This component was not selected for restoration - skipping."
|
1032 |
msgstr ""
|
1033 |
|
1034 |
+
#: admin.php:1797
|
1035 |
msgid "File is not locally present - needs retrieving from remote storage (for large files, it is better to do this in advance from the download console)"
|
1036 |
msgstr ""
|
1037 |
|
1038 |
+
#: admin.php:1803
|
1039 |
msgid "Archive is expected to be size:"
|
1040 |
msgstr ""
|
1041 |
|
1042 |
+
#: admin.php:1808
|
1043 |
msgid "ERROR"
|
1044 |
msgstr ""
|
1045 |
|
1046 |
+
#: admin.php:1811
|
1047 |
msgid "The backup records do not contain information about the proper size of this file."
|
1048 |
msgstr ""
|
1049 |
|
1050 |
+
#: admin.php:1826
|
1051 |
msgid "Error message"
|
1052 |
msgstr ""
|
1053 |
|
1054 |
+
#: admin.php:1832
|
1055 |
+
#: admin.php:1833
|
1056 |
msgid "Could not find one of the files for restoration"
|
1057 |
msgstr ""
|
1058 |
|
1108 |
msgid "Failed to delete working directory after restoring."
|
1109 |
msgstr ""
|
1110 |
|
1111 |
+
#: includes/updraft-restorer.php:50
|
1112 |
msgid "Failed to create a temporary directory"
|
1113 |
msgstr ""
|
1114 |
|
1115 |
+
#: includes/updraft-restorer.php:68
|
1116 |
msgid "Failed to write out the decrypted database to the filesystem"
|
1117 |
msgstr ""
|
1118 |
|
1119 |
+
#: includes/updraft-restorer.php:112
|
1120 |
+
msgid "wp-config.php from backup: will restore as wp-config-backup.php"
|
1121 |
+
msgstr ""
|
1122 |
+
|
1123 |
+
#: includes/updraft-restorer.php:116
|
1124 |
+
msgid "wp-config.php from backup: restoring (as per user's request)"
|
1125 |
+
msgstr ""
|
1126 |
+
|
1127 |
+
#: includes/updraft-restorer.php:173
|
1128 |
msgid "Will not delete the archive after unpacking it, because there was no cloud storage for this backup"
|
1129 |
msgstr ""
|
1130 |
|
1131 |
+
#: includes/updraft-restorer.php:198
|
1132 |
msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method."
|
1133 |
msgstr ""
|
1134 |
|
1135 |
+
#: includes/updraft-restorer.php:203
|
1136 |
msgid "Failed to find database file"
|
1137 |
msgstr ""
|
1138 |
|
1139 |
+
#: includes/updraft-restorer.php:209
|
1140 |
msgid "Failed to open database file"
|
1141 |
msgstr ""
|
1142 |
|
1143 |
+
#: includes/updraft-restorer.php:233
|
1144 |
msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)"
|
1145 |
msgstr ""
|
1146 |
|
1147 |
+
#: includes/updraft-restorer.php:259
|
1148 |
msgid "Restoring table"
|
1149 |
msgstr ""
|
1150 |
|
1151 |
+
#: includes/updraft-restorer.php:271
|
1152 |
#, php-format
|
1153 |
msgid "An error (%s) occured:"
|
1154 |
msgstr ""
|
1155 |
|
1156 |
+
#: includes/updraft-restorer.php:271
|
1157 |
+
msgid "the database query being run was:"
|
1158 |
msgstr ""
|
1159 |
|
1160 |
+
#: includes/updraft-restorer.php:274
|
1161 |
msgid "Too many database errors have occurred - aborting restoration (you will need to restore manually)"
|
1162 |
msgstr ""
|
1163 |
|
1164 |
+
#: includes/updraft-restorer.php:281
|
1165 |
#, php-format
|
1166 |
msgid "Database lines processed: %d in %.2f seconds"
|
1167 |
msgstr ""
|
1168 |
|
1169 |
+
#: includes/updraft-restorer.php:290
|
1170 |
#, php-format
|
1171 |
msgid "Finished: lines processed: %d in %.2f seconds"
|
1172 |
msgstr ""
|
1192 |
msgid "follow this link to get it"
|
1193 |
msgstr ""
|
1194 |
|
1195 |
+
#: methods/googledrive.php:111
|
1196 |
+
msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again."
|
1197 |
+
msgstr ""
|
1198 |
+
|
1199 |
+
#: methods/googledrive.php:116
|
1200 |
+
msgid "Authorization failed"
|
1201 |
msgstr ""
|
1202 |
|
1203 |
+
#: methods/googledrive.php:137
|
1204 |
#, php-format
|
1205 |
+
msgid "Your %s quota usage: %s %% used, %s available"
|
1206 |
msgstr ""
|
1207 |
|
1208 |
+
#: methods/googledrive.php:143
|
1209 |
+
#: methods/cloudfiles.php:477
|
1210 |
+
msgid "Success"
|
|
|
|
|
|
|
|
|
1211 |
msgstr ""
|
1212 |
|
1213 |
+
#: methods/googledrive.php:143
|
1214 |
+
#, php-format
|
1215 |
+
msgid "you have authenticated your %s account."
|
1216 |
msgstr ""
|
1217 |
|
1218 |
+
#: methods/googledrive.php:143
|
1219 |
+
#: methods/googledrive.php:392
|
1220 |
+
#: methods/googledrive.php:394
|
1221 |
+
#: methods/googledrive.php:412
|
1222 |
+
#: methods/googledrive.php:416
|
1223 |
+
#: methods/googledrive.php:420
|
1224 |
+
msgid "Google Drive"
|
1225 |
msgstr ""
|
1226 |
|
1227 |
+
#: methods/googledrive.php:159
|
1228 |
msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive."
|
1229 |
msgstr ""
|
1230 |
|
1231 |
+
#: methods/googledrive.php:160
|
1232 |
+
#: methods/googledrive.php:318
|
1233 |
msgid "Have not yet obtained an access token from Google (has the user authorised?)"
|
1234 |
msgstr ""
|
1235 |
|
1236 |
+
#: methods/googledrive.php:191
|
1237 |
+
#, php-format
|
1238 |
+
msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes"
|
1239 |
+
msgstr ""
|
1240 |
+
|
1241 |
+
#: methods/googledrive.php:201
|
1242 |
#, php-format
|
1243 |
msgid "Failed to upload to %s"
|
1244 |
msgstr ""
|
1245 |
|
1246 |
+
#: methods/googledrive.php:253
|
1247 |
msgid "Error"
|
1248 |
msgstr ""
|
1249 |
|
1250 |
+
#: methods/googledrive.php:289
|
1251 |
+
#, php-format
|
1252 |
+
msgid "An error occurred during %s upload (see log for more details)"
|
1253 |
msgstr ""
|
1254 |
|
1255 |
+
#: methods/googledrive.php:328
|
1256 |
#, php-format
|
1257 |
msgid "Google Drive error: %d: could not download: could not find a record of the Google Drive file ID for this file"
|
1258 |
msgstr ""
|
1259 |
|
1260 |
+
#: methods/googledrive.php:333
|
1261 |
#, php-format
|
1262 |
msgid "Could not find %s in order to download it"
|
1263 |
msgstr ""
|
1264 |
|
1265 |
+
#: methods/googledrive.php:345
|
1266 |
msgid "Google Drive "
|
1267 |
msgstr ""
|
1268 |
|
1269 |
+
#: methods/googledrive.php:345
|
1270 |
msgid "error: zero-size file was downloaded"
|
1271 |
msgstr ""
|
1272 |
|
1273 |
+
#: methods/googledrive.php:363
|
1274 |
msgid "Account is not authorized."
|
1275 |
msgstr ""
|
1276 |
|
1277 |
+
#: methods/googledrive.php:395
|
1278 |
+
#: methods/cloudfiles.php:362
|
1279 |
#, php-format
|
1280 |
+
msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts."
|
1281 |
msgstr ""
|
1282 |
|
1283 |
+
#: methods/googledrive.php:401
|
1284 |
msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users."
|
1285 |
msgstr ""
|
1286 |
|
1287 |
+
#: methods/googledrive.php:402
|
1288 |
msgid "Follow this link to your Google API Console, and there create a Client ID in the API Access section."
|
1289 |
msgstr ""
|
1290 |
|
1291 |
+
#: methods/googledrive.php:402
|
1292 |
msgid "Select 'Web Application' as the application type."
|
1293 |
msgstr ""
|
1294 |
|
1295 |
+
#: methods/googledrive.php:402
|
1296 |
msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked"
|
1297 |
msgstr ""
|
1298 |
|
1299 |
+
#: methods/googledrive.php:402
|
1300 |
+
msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your client ID; you must create a new one from your Google API console for each site."
|
1301 |
msgstr ""
|
1302 |
|
1303 |
+
#: methods/googledrive.php:405
|
1304 |
msgid "You do not have the SimpleXMLElement installed. Google Drive backups will <b>not</b> work until you do."
|
1305 |
msgstr ""
|
1306 |
|
1307 |
+
#: methods/googledrive.php:412
|
1308 |
msgid "Client ID"
|
1309 |
msgstr ""
|
1310 |
|
1311 |
+
#: methods/googledrive.php:413
|
1312 |
msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here."
|
1313 |
msgstr ""
|
1314 |
|
1315 |
+
#: methods/googledrive.php:416
|
1316 |
msgid "Client Secret"
|
1317 |
msgstr ""
|
1318 |
|
1319 |
+
#: methods/googledrive.php:420
|
1320 |
msgid "Folder ID"
|
1321 |
msgstr ""
|
1322 |
|
1323 |
+
#: methods/googledrive.php:421
|
1324 |
msgid "<strong>This is NOT a folder name</strong>. To get a folder's ID navigate to that folder in Google Drive in your web browser and copy the ID from your browser's address bar. It is the part that comes after <kbd>#folders/.</kbd> Leave empty to use your root folder)"
|
1325 |
msgstr ""
|
1326 |
|
1327 |
+
#: methods/googledrive.php:424
|
1328 |
msgid "Authenticate with Google"
|
1329 |
msgstr ""
|
1330 |
|
1331 |
+
#: methods/googledrive.php:425
|
1332 |
msgid "<strong>After</strong> you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Google."
|
1333 |
msgstr ""
|
1334 |
|
1335 |
#: methods/cloudfiles.php:58
|
1336 |
#: methods/cloudfiles.php:62
|
1337 |
+
#: methods/cloudfiles.php:242
|
1338 |
+
#: methods/cloudfiles.php:246
|
1339 |
+
#: methods/cloudfiles.php:457
|
1340 |
+
#: methods/cloudfiles.php:460
|
1341 |
+
#: methods/cloudfiles.php:463
|
1342 |
msgid "Cloud Files authentication failed"
|
1343 |
msgstr ""
|
1344 |
|
1345 |
#: methods/cloudfiles.php:66
|
1346 |
+
#: methods/cloudfiles.php:250
|
1347 |
+
#: methods/cloudfiles.php:268
|
1348 |
msgid "Cloud Files error - failed to create and access the container"
|
1349 |
msgstr ""
|
1350 |
|
1351 |
+
#: methods/cloudfiles.php:93
|
1352 |
#, php-format
|
1353 |
msgid "%s Error: Failed to open local file"
|
1354 |
msgstr ""
|
1355 |
|
1356 |
+
#: methods/cloudfiles.php:110
|
1357 |
+
#: methods/cloudfiles.php:151
|
1358 |
#, php-format
|
1359 |
msgid "%s Error: Failed to upload"
|
1360 |
msgstr ""
|
1361 |
|
1362 |
+
#: methods/cloudfiles.php:173
|
1363 |
msgid "Cloud Files error - failed to re-assemble chunks"
|
1364 |
msgstr ""
|
1365 |
|
1366 |
+
#: methods/cloudfiles.php:182
|
1367 |
+
#: methods/cloudfiles.php:183
|
1368 |
msgid "Cloud Files error - failed to upload file"
|
1369 |
msgstr ""
|
1370 |
|
1371 |
+
#: methods/cloudfiles.php:296
|
1372 |
+
#: methods/cloudfiles.php:313
|
1373 |
msgid "Cloud Files Error"
|
1374 |
msgstr ""
|
1375 |
|
1376 |
+
#: methods/cloudfiles.php:296
|
1377 |
msgid "Error opening local file: Failed to download"
|
1378 |
msgstr ""
|
1379 |
|
1380 |
+
#: methods/cloudfiles.php:313
|
1381 |
msgid "Error downloading remote file: Failed to download ("
|
1382 |
msgstr ""
|
1383 |
|
1384 |
+
#: methods/cloudfiles.php:322
|
1385 |
msgid "Cloud Files error - no such file exists at Cloud Files"
|
1386 |
msgstr ""
|
1387 |
|
1388 |
+
#: methods/cloudfiles.php:326
|
|
|
1389 |
msgid "Cloud Files error - failed to download the file"
|
1390 |
msgstr ""
|
1391 |
|
1392 |
+
#: methods/cloudfiles.php:335
|
1393 |
+
msgid "Testing - Please Wait..."
|
1394 |
+
msgstr ""
|
1395 |
+
|
1396 |
+
#: methods/cloudfiles.php:349
|
1397 |
+
#: methods/cloudfiles.php:414
|
1398 |
+
#, php-format
|
1399 |
+
msgid "Test %s Settings"
|
1400 |
+
msgstr ""
|
1401 |
+
|
1402 |
+
#: methods/cloudfiles.php:370
|
1403 |
msgid "Get your API key <a href=\"https://mycloud.rackspace.com/\">from your Rackspace Cloud console</a> (read instructions <a href=\"http://www.rackspace.com/knowledge_center/article/rackspace-cloud-essentials-1-generating-your-api-key\">here</a>), then pick a container name to use for storage. This container will be created for you if it does not already exist."
|
1404 |
msgstr ""
|
1405 |
|
1406 |
+
#: methods/cloudfiles.php:370
|
1407 |
msgid "Also, you should read this important FAQ."
|
1408 |
msgstr ""
|
1409 |
|
1410 |
+
#: methods/cloudfiles.php:374
|
1411 |
msgid "US or UK Cloud"
|
1412 |
msgstr ""
|
1413 |
|
1414 |
+
#: methods/cloudfiles.php:380
|
1415 |
msgid "US (default)"
|
1416 |
msgstr ""
|
1417 |
|
1418 |
+
#: methods/cloudfiles.php:381
|
1419 |
msgid "UK"
|
1420 |
msgstr ""
|
1421 |
|
1422 |
+
#: methods/cloudfiles.php:386
|
1423 |
msgid "Cloud Files username"
|
1424 |
msgstr ""
|
1425 |
|
1426 |
+
#: methods/cloudfiles.php:390
|
1427 |
msgid "Cloud Files API key"
|
1428 |
msgstr ""
|
1429 |
|
1430 |
+
#: methods/cloudfiles.php:394
|
1431 |
msgid "Cloud Files container"
|
1432 |
msgstr ""
|
1433 |
|
1434 |
+
#: methods/cloudfiles.php:404
|
1435 |
#, php-format
|
1436 |
msgid "UpdraftPlus's %s module <strong>requires</strong> %s. Please do not file any support requests; there is no alternative."
|
1437 |
msgstr ""
|
1438 |
|
1439 |
+
#: methods/cloudfiles.php:422
|
1440 |
+
#: methods/cloudfiles.php:427
|
|
|
|
|
|
|
|
|
|
|
1441 |
#, php-format
|
1442 |
msgid "Failure: No %s was given."
|
1443 |
msgstr ""
|
1444 |
|
1445 |
+
#: methods/cloudfiles.php:422
|
1446 |
msgid "API key"
|
1447 |
msgstr ""
|
1448 |
|
1449 |
+
#: methods/cloudfiles.php:427
|
1450 |
msgid "Username"
|
1451 |
msgstr ""
|
1452 |
|
1453 |
+
#: methods/cloudfiles.php:447
|
1454 |
msgid "Failure: No container details were given."
|
1455 |
msgstr ""
|
1456 |
|
1457 |
+
#: methods/cloudfiles.php:473
|
1458 |
msgid "Cloud Files error - we accessed the container, but failed to create a file within it"
|
1459 |
msgstr ""
|
1460 |
|
1461 |
+
#: methods/cloudfiles.php:477
|
1462 |
msgid "We accessed the container, and were able to create files within it."
|
1463 |
msgstr ""
|
1464 |
|
1577 |
msgstr ""
|
1578 |
|
1579 |
#: methods/dropbox.php:35
|
1580 |
+
#, php-format
|
1581 |
+
msgid "The %s PHP module is not installed"
|
1582 |
+
msgstr ""
|
1583 |
+
|
1584 |
+
#: methods/dropbox.php:41
|
1585 |
+
#: methods/dropbox.php:209
|
1586 |
msgid "You do not appear to be authenticated with Dropbox"
|
1587 |
msgstr ""
|
1588 |
|
1589 |
+
#: methods/dropbox.php:52
|
1590 |
#, php-format
|
1591 |
msgid "error: %s (see log file for more)"
|
1592 |
msgstr ""
|
1593 |
|
1594 |
+
#: methods/dropbox.php:140
|
1595 |
+
#: methods/dropbox.php:145
|
1596 |
#, php-format
|
1597 |
msgid "error: failed to upload file to %s (see log file for more)"
|
1598 |
msgstr ""
|
1599 |
|
1600 |
+
#: methods/dropbox.php:265
|
1601 |
msgid "Need to use sub-folders?"
|
1602 |
msgstr ""
|
1603 |
|
1604 |
+
#: methods/dropbox.php:265
|
1605 |
msgid "Backups are saved in"
|
1606 |
msgstr ""
|
1607 |
|
1608 |
+
#: methods/dropbox.php:265
|
1609 |
msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then "
|
1610 |
msgstr ""
|
1611 |
|
1612 |
+
#: methods/dropbox.php:265
|
1613 |
msgid "there's an add-on for that."
|
1614 |
msgstr ""
|
1615 |
|
1616 |
+
#: methods/dropbox.php:270
|
1617 |
msgid "Authenticate with Dropbox"
|
1618 |
msgstr ""
|
1619 |
|
1620 |
+
#: methods/dropbox.php:271
|
1621 |
msgid "<strong>After</strong> you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with Dropbox."
|
1622 |
msgstr ""
|
1623 |
|
1624 |
+
#: methods/dropbox.php:328
|
1625 |
+
#, php-format
|
1626 |
+
msgid "you have authenticated your %s account"
|
1627 |
+
msgstr ""
|
1628 |
+
|
1629 |
+
#: methods/dropbox.php:331
|
1630 |
msgid "though part of the returned information was not as expected - your mileage may vary"
|
1631 |
msgstr ""
|
1632 |
|
1633 |
+
#: methods/dropbox.php:334
|
1634 |
#, php-format
|
1635 |
+
msgid "Your %s account name: %s"
|
1636 |
msgstr ""
|
1637 |
|
1638 |
#: methods/ftp.php:30
|
1732 |
msgid "Enter a complete URL, beginning with webdav:// or webdavs:// and including path, username, password and port as required - e.g.%s"
|
1733 |
msgstr ""
|
1734 |
|
1735 |
+
#: addons/webdav.php:280
|
1736 |
+
#: addons/sftp.php:279
|
1737 |
msgid "Failed"
|
1738 |
msgstr ""
|
1739 |
|
1740 |
+
#: addons/webdav.php:294
|
1741 |
msgid "Failed: We were not able to place a file in that directory - please check your credentials."
|
1742 |
msgstr ""
|
1743 |
|
1744 |
+
#: addons/morefiles.php:37
|
1745 |
+
#: addons/morefiles.php:233
|
1746 |
+
msgid "WordPress Core"
|
1747 |
+
msgstr ""
|
1748 |
+
|
1749 |
+
#: addons/morefiles.php:41
|
1750 |
+
msgid "Over-write wp-config.php"
|
1751 |
+
msgstr ""
|
1752 |
+
|
1753 |
+
#: addons/morefiles.php:41
|
1754 |
+
msgid "(learn more about this important option)"
|
1755 |
+
msgstr ""
|
1756 |
+
|
1757 |
+
#: addons/morefiles.php:60
|
1758 |
msgid "The above files comprise everything in a WordPress installation."
|
1759 |
msgstr ""
|
1760 |
|
1761 |
+
#: addons/morefiles.php:67
|
1762 |
msgid "WordPress core (including any additions to your WordPress root directory)"
|
1763 |
msgstr ""
|
1764 |
|
1765 |
+
#: addons/morefiles.php:79
|
1766 |
+
msgid "Any other directory on your server that you wish to back up"
|
1767 |
+
msgstr ""
|
1768 |
+
|
1769 |
+
#: addons/morefiles.php:80
|
1770 |
+
msgid "More Files"
|
1771 |
+
msgstr ""
|
1772 |
+
|
1773 |
+
#: addons/morefiles.php:95
|
1774 |
+
msgid "Enter the directory:"
|
1775 |
+
msgstr ""
|
1776 |
+
|
1777 |
+
#: addons/morefiles.php:99
|
1778 |
+
msgid "If you are not sure what this option is for, then you will not want it, and should turn it off."
|
1779 |
+
msgstr ""
|
1780 |
+
|
1781 |
+
#: addons/morefiles.php:99
|
1782 |
+
msgid "If using it, enter an absolute path (it is not relative to your WordPress install)."
|
1783 |
+
msgstr ""
|
1784 |
+
|
1785 |
+
#: addons/morefiles.php:101
|
1786 |
+
msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver."
|
1787 |
+
msgstr ""
|
1788 |
+
|
1789 |
+
#: addons/morefiles.php:131
|
1790 |
+
msgid "If entering multiple files/directories, then separate them with commas."
|
1791 |
+
msgstr ""
|
1792 |
+
|
1793 |
+
#: addons/morefiles.php:178
|
1794 |
+
#: addons/morefiles.php:233
|
1795 |
#, php-format
|
1796 |
msgid "No backup of %s directories: there was nothing found to back up"
|
1797 |
msgstr ""
|
1798 |
|
1799 |
+
#: addons/morefiles.php:178
|
1800 |
+
msgid "more"
|
1801 |
msgstr ""
|
1802 |
|
1803 |
#: addons/sftp.php:23
|
1828 |
msgstr ""
|
1829 |
|
1830 |
#: addons/sftp.php:50
|
1831 |
+
#: addons/sftp.php:291
|
1832 |
msgid "Check your file permissions: Could not successfully create and enter:"
|
1833 |
msgstr ""
|
1834 |
|
1861 |
msgid "Where to change directory to after logging in - often this is relative to your home directory."
|
1862 |
msgstr ""
|
1863 |
|
1864 |
+
#: addons/sftp.php:252
|
1865 |
msgid "host name"
|
1866 |
msgstr ""
|
1867 |
|
1868 |
+
#: addons/sftp.php:256
|
1869 |
msgid "username"
|
1870 |
msgstr ""
|
1871 |
|
1872 |
+
#: addons/sftp.php:260
|
1873 |
msgid "password"
|
1874 |
msgstr ""
|
1875 |
|
1876 |
+
#: addons/sftp.php:265
|
1877 |
msgid "Failure: Port must be an integer."
|
1878 |
msgstr ""
|
1879 |
|
1880 |
+
#: addons/sftp.php:305
|
1881 |
msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully created a file in that location."
|
1882 |
msgstr ""
|
1883 |
|
1891 |
msgid "Enter in format HH:MM (e.g. 14:22)"
|
1892 |
msgstr ""
|
1893 |
|
1894 |
+
#: addons/multisite.php:117
|
1895 |
msgid "Multisite Install"
|
1896 |
msgstr ""
|
1897 |
|
1898 |
+
#: addons/multisite.php:123
|
1899 |
msgid "You do not have sufficient permissions to access this page."
|
1900 |
msgstr ""
|
1901 |
|
1902 |
+
#: addons/multisite.php:142
|
1903 |
msgid "You do not have permission to access this page."
|
1904 |
msgstr ""
|
1905 |
|
1906 |
+
#: addons/multisite.php:198
|
1907 |
msgid "Must-use plugins"
|
1908 |
msgstr ""
|
1909 |
|
1910 |
+
#: addons/multisite.php:199
|
1911 |
msgid "Blog uploads"
|
1912 |
msgstr ""
|
1913 |
|
1914 |
+
#: addons/migrator.php:18
|
1915 |
+
#, php-format
|
1916 |
+
msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s"
|
1917 |
+
msgstr ""
|
1918 |
+
|
1919 |
+
#: addons/migrator.php:18
|
1920 |
+
msgid "Search and replace site location in the database (migrate)"
|
1921 |
+
msgstr ""
|
1922 |
+
|
1923 |
+
#: addons/migrator.php:18
|
1924 |
+
msgid "(learn more)"
|
1925 |
+
msgstr ""
|
1926 |
+
|
1927 |
+
#: addons/migrator.php:31
|
1928 |
+
msgid "Database: search and replace site URL"
|
1929 |
+
msgstr ""
|
1930 |
+
|
1931 |
+
#: addons/migrator.php:34
|
1932 |
+
msgid "This option was not selected."
|
1933 |
+
msgstr ""
|
1934 |
+
|
1935 |
+
#: addons/migrator.php:46
|
1936 |
+
#: addons/migrator.php:51
|
1937 |
+
#, php-format
|
1938 |
+
msgid "Error: unexpected empty parameter (%s, %s)"
|
1939 |
+
msgstr ""
|
1940 |
+
|
1941 |
+
#: addons/migrator.php:56
|
1942 |
+
#, php-format
|
1943 |
+
msgid "Nothing to do: the site URL is already: %s"
|
1944 |
+
msgstr ""
|
1945 |
+
|
1946 |
+
#: addons/migrator.php:64
|
1947 |
+
#, php-format
|
1948 |
+
msgid "Database search and replace: replace %s in backup dump with %s"
|
1949 |
+
msgstr ""
|
1950 |
+
|
1951 |
+
#: addons/migrator.php:74
|
1952 |
+
#, php-format
|
1953 |
+
msgid "Failed: the %s operation was not able to start."
|
1954 |
+
msgstr ""
|
1955 |
+
|
1956 |
+
#: addons/migrator.php:78
|
1957 |
+
#, php-format
|
1958 |
+
msgid "Failed: we did not understand the result returned by the %s operation."
|
1959 |
+
msgstr ""
|
1960 |
+
|
1961 |
+
#: addons/migrator.php:84
|
1962 |
+
msgid "Tables examined:"
|
1963 |
+
msgstr ""
|
1964 |
+
|
1965 |
+
#: addons/migrator.php:85
|
1966 |
+
msgid "Rows examined:"
|
1967 |
+
msgstr ""
|
1968 |
+
|
1969 |
+
#: addons/migrator.php:86
|
1970 |
+
msgid "Changes made:"
|
1971 |
+
msgstr ""
|
1972 |
+
|
1973 |
+
#: addons/migrator.php:87
|
1974 |
+
msgid "SQL update commands run:"
|
1975 |
+
msgstr ""
|
1976 |
+
|
1977 |
+
#: addons/migrator.php:88
|
1978 |
+
msgid "Errors:"
|
1979 |
+
msgstr ""
|
1980 |
+
|
1981 |
+
#: addons/migrator.php:89
|
1982 |
+
msgid "Time taken (seconds):"
|
1983 |
+
msgstr ""
|
1984 |
+
|
1985 |
+
#: addons/migrator.php:166
|
1986 |
+
msgid "Could not get list of tables"
|
1987 |
+
msgstr ""
|
1988 |
+
|
1989 |
+
#: addons/migrator.php:178
|
1990 |
+
msgid "No database tables were found"
|
1991 |
+
msgstr ""
|
1992 |
+
|
1993 |
+
#: addons/migrator.php:215
|
1994 |
+
msgid "Inspecting table:"
|
1995 |
+
msgstr ""
|
1996 |
+
|
1997 |
+
#: addons/migrator.php:244
|
1998 |
+
#, php-format
|
1999 |
+
msgid "rows: %d"
|
2000 |
+
msgstr ""
|
2001 |
+
|
2002 |
+
#: addons/migrator.php:309
|
2003 |
+
#, php-format
|
2004 |
+
msgid "\"%s\" has no primary key, manual change needed on row %s."
|
2005 |
+
msgstr ""
|
2006 |
+
|
2007 |
#: addons/dropbox-folders.php:21
|
2008 |
msgid "Store at"
|
2009 |
msgstr ""
|
methods/cloudfiles.php
CHANGED
@@ -363,7 +363,7 @@ class UpdraftPlus_BackupModule_cloudfiles {
|
|
363 |
<tr class="updraftplusmethod cloudfiles">
|
364 |
<th></th>
|
365 |
<td>
|
366 |
-
<p><?php _e('Get your API key <a href="https://mycloud.rackspace.com/">from your Rackspace Cloud console</a> (read instructions <a href="http://www.rackspace.com/knowledge_center/article/rackspace-cloud-essentials-1-generating-your-api-key">here</a>), then pick a container name to use for storage. This container will be created for you if it does not already exist.','updraftplus')
|
367 |
</td>
|
368 |
</tr>
|
369 |
<tr class="updraftplusmethod cloudfiles">
|
363 |
<tr class="updraftplusmethod cloudfiles">
|
364 |
<th></th>
|
365 |
<td>
|
366 |
+
<p><?php _e('Get your API key <a href="https://mycloud.rackspace.com/">from your Rackspace Cloud console</a> (read instructions <a href="http://www.rackspace.com/knowledge_center/article/rackspace-cloud-essentials-1-generating-your-api-key">here</a>), then pick a container name to use for storage. This container will be created for you if it does not already exist.','updraftplus');?> <a href="http://updraftplus.com/faqs/there-appear-to-be-lots-of-extra-files-in-my-rackspace-cloud-files-container/"><?php _e('Also, you should read this important FAQ.', 'updraftplus'); ?></a></p>
|
367 |
</td>
|
368 |
</tr>
|
369 |
<tr class="updraftplusmethod cloudfiles">
|
methods/dropbox.php
CHANGED
@@ -59,6 +59,35 @@ class UpdraftPlus_BackupModule_dropbox {
|
|
59 |
|
60 |
foreach($backup_array as $file) {
|
61 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
$file_success = 1;
|
63 |
|
64 |
$hash = md5($file);
|
@@ -66,6 +95,13 @@ class UpdraftPlus_BackupModule_dropbox {
|
|
66 |
|
67 |
$filesize = filesize($updraft_dir.'/'.$file);
|
68 |
$this->current_file_size = $filesize;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
// Into Kb
|
70 |
$filesize = $filesize/1024;
|
71 |
$microtime = microtime(true);
|
@@ -220,7 +256,7 @@ class UpdraftPlus_BackupModule_dropbox {
|
|
220 |
<td></td>
|
221 |
<td>
|
222 |
<img alt="Dropbox logo" src="<?php echo UPDRAFTPLUS_URL.'/images/dropbox-logo.png' ?>">
|
223 |
-
<p><em><?php printf(__('%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your
|
224 |
</td>
|
225 |
</tr>
|
226 |
|
@@ -295,7 +331,19 @@ class UpdraftPlus_BackupModule_dropbox {
|
|
295 |
$message .= " (".__('though part of the returned information was not as expected - your mileage may vary','updraftplus').")". $accountInfo['code'];
|
296 |
} else {
|
297 |
$body = $accountInfo['body'];
|
298 |
-
$message .= ". ".sprintf(__('Your %s account name','updraftplus'),'Dropbox'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
299 |
}
|
300 |
$updraftplus_admin->show_admin_warning($message);
|
301 |
|
59 |
|
60 |
foreach($backup_array as $file) {
|
61 |
|
62 |
+
$available_quota = -1;
|
63 |
+
|
64 |
+
// If we experience any failures collecting account info, then carry on anyway
|
65 |
+
try {
|
66 |
+
|
67 |
+
$accountInfo = $dropbox->accountInfo();
|
68 |
+
|
69 |
+
if ($accountInfo['code'] != "200") {
|
70 |
+
$message = "Dropbox account/info did not return HTTP 200; returned: ". $accountInfo['code'];
|
71 |
+
} elseif (!isset($accountInfo['body'])) {
|
72 |
+
$message = "Dropbox account/info did not return the expected data";
|
73 |
+
} else {
|
74 |
+
$body = $accountInfo['body'];
|
75 |
+
if (!isset($body->quota_info)) {
|
76 |
+
$message = "Dropbox account/info did not return the expected data";
|
77 |
+
} else {
|
78 |
+
$quota_info = $body->quota_info;
|
79 |
+
$total_quota = $quota_info->quota;
|
80 |
+
$normal_quota = $quota_info->normal;
|
81 |
+
$shared_quota = $quota_info->shared;
|
82 |
+
$available_quota = $total_quota - ($normal_quota + $shared_quota);
|
83 |
+
$message = "Dropbox quota usage: normal=".round($normal_quota/1048576,1)." Mb, shared=".round($shared_quota/1048576,1)." Mb, total=".round($total_quota/1048576,1)." Mb, available=".round($available_quota/1048576,1)." Mb";
|
84 |
+
}
|
85 |
+
}
|
86 |
+
$updraftplus->log($message);
|
87 |
+
} catch (Exception $e) {
|
88 |
+
$updraftplus->log("Dropbox error: exception occurred whilst getting account info: ".$e->getMessage());
|
89 |
+
}
|
90 |
+
|
91 |
$file_success = 1;
|
92 |
|
93 |
$hash = md5($file);
|
95 |
|
96 |
$filesize = filesize($updraft_dir.'/'.$file);
|
97 |
$this->current_file_size = $filesize;
|
98 |
+
|
99 |
+
// We don't actually abort now - there's no harm in letting it try and then fail
|
100 |
+
if ($available_quota != -1 && $available_quota < $filesize) {
|
101 |
+
$updraftplus->log("File upload expected to fail: file ($file) size is $filesize b, whereas available quota is only $available_quota b");
|
102 |
+
$updraftplus->error(sprintf(__("Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes",'updraftplus'),'Dropbox', $available_quota, $filesize));
|
103 |
+
}
|
104 |
+
|
105 |
// Into Kb
|
106 |
$filesize = $filesize/1024;
|
107 |
$microtime = microtime(true);
|
256 |
<td></td>
|
257 |
<td>
|
258 |
<img alt="Dropbox logo" src="<?php echo UPDRAFTPLUS_URL.'/images/dropbox-logo.png' ?>">
|
259 |
+
<p><em><?php printf(__('%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts.','updraftplus'),'Dropbox');?></em></p>
|
260 |
</td>
|
261 |
</tr>
|
262 |
|
331 |
$message .= " (".__('though part of the returned information was not as expected - your mileage may vary','updraftplus').")". $accountInfo['code'];
|
332 |
} else {
|
333 |
$body = $accountInfo['body'];
|
334 |
+
$message .= ". <br>".sprintf(__('Your %s account name: %s','updraftplus'),'Dropbox', htmlspecialchars($body->display_name));
|
335 |
+
|
336 |
+
try {
|
337 |
+
$quota_info = $body->quota_info;
|
338 |
+
$total_quota = max($quota_info->quota, 1);
|
339 |
+
$normal_quota = $quota_info->normal;
|
340 |
+
$shared_quota = $quota_info->shared;
|
341 |
+
$available_quota =$total_quota - ($normal_quota + $shared_quota);
|
342 |
+
$used_perc = round(($normal_quota + $shared_quota)*100/$total_quota, 1);
|
343 |
+
$message .= ' <br>'.sprintf(__('Your %s quota usage: %s %% used, %s available','updraftplus'), 'Dropbox', $used_perc, round($available_quota/1048576, 1).' Mb');
|
344 |
+
} catch (Exception $e) {
|
345 |
+
}
|
346 |
+
|
347 |
}
|
348 |
$updraftplus_admin->show_admin_warning($message);
|
349 |
|
methods/ftp.php
CHANGED
@@ -3,13 +3,21 @@
|
|
3 |
class UpdraftPlus_BackupModule_ftp {
|
4 |
|
5 |
// Get FTP object with parameters set
|
6 |
-
function getFTP($server, $user, $pass, $disable_ssl = false, $passive = true) {
|
7 |
|
8 |
if( !class_exists('UpdraftPlus_ftp_wrapper')) require_once(UPDRAFTPLUS_DIR.'/includes/ftp.class.php');
|
9 |
|
10 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
|
12 |
if ($disable_ssl) $ftp->ssl = false;
|
|
|
|
|
13 |
if ($passive) $ftp->passive = true;
|
14 |
|
15 |
return $ftp;
|
@@ -23,7 +31,13 @@ class UpdraftPlus_BackupModule_ftp {
|
|
23 |
$server = UpdraftPlus_Options::get_updraft_option('updraft_server_address');
|
24 |
$user = UpdraftPlus_Options::get_updraft_option('updraft_ftp_login');
|
25 |
|
26 |
-
$ftp = $this->getFTP(
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
|
28 |
if (!$ftp->connect()) {
|
29 |
$updraftplus->log("FTP Failure: we did not successfully log in with those credentials.");
|
@@ -72,7 +86,9 @@ class UpdraftPlus_BackupModule_ftp {
|
|
72 |
$ftp = $this->getFTP(
|
73 |
UpdraftPlus_Options::get_updraft_option('updraft_server_address'),
|
74 |
UpdraftPlus_Options::get_updraft_option('updraft_ftp_login'),
|
75 |
-
UpdraftPlus_Options::get_updraft_option('updraft_ftp_pass'), UpdraftPlus_Options::get_updraft_option('updraft_ssl_nossl')
|
|
|
|
|
76 |
);
|
77 |
|
78 |
if (!$ftp->connect()) {
|
@@ -112,7 +128,7 @@ class UpdraftPlus_BackupModule_ftp {
|
|
112 |
nossl: (jQuery('#updraft_ssl_nossl').is(':checked')) ? 1 : 0,
|
113 |
};
|
114 |
jQuery.post(ajaxurl, data, function(response) {
|
115 |
-
|
116 |
});
|
117 |
});
|
118 |
<?php
|
@@ -123,12 +139,12 @@ class UpdraftPlus_BackupModule_ftp {
|
|
123 |
|
124 |
<tr class="updraftplusmethod ftp">
|
125 |
<td></td>
|
126 |
-
<td><p><em><?php printf(__('%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your
|
127 |
</tr>
|
128 |
|
129 |
<tr class="updraftplusmethod ftp">
|
130 |
<th></th>
|
131 |
-
<td><em><?php echo apply_filters('updraft_sftp_ftps_notice', '<strong>'.htmlspecialchars(__('Only non-encrypted FTP is supported by regular UpdraftPlus.').'</strong> <a href="http://updraftplus.com/shop/sftp/">'.__('If you want encryption (e.g. you are storing sensitive business data), then an add-on is available.','updraftplus'))
|
132 |
</tr>
|
133 |
|
134 |
<tr class="updraftplusmethod ftp">
|
@@ -162,6 +178,9 @@ class UpdraftPlus_BackupModule_ftp {
|
|
162 |
$path = $_POST['path'];
|
163 |
$nossl = $_POST['nossl'];
|
164 |
|
|
|
|
|
|
|
165 |
if (empty($server)) {
|
166 |
_e("Failure: No server details were given.",'updraftplus');
|
167 |
return;
|
@@ -175,7 +194,7 @@ class UpdraftPlus_BackupModule_ftp {
|
|
175 |
return;
|
176 |
}
|
177 |
|
178 |
-
$ftp = self::getFTP($server, $login, $pass, $nossl);
|
179 |
|
180 |
if (!$ftp->connect()) {
|
181 |
_e("Failure: we did not successfully log in with those credentials.",'updraftplus');
|
@@ -189,7 +208,7 @@ class UpdraftPlus_BackupModule_ftp {
|
|
189 |
_e("Failure: an unexpected internal UpdraftPlus error occurred when testing the credentials - please contact the developer");
|
190 |
return;
|
191 |
}
|
192 |
-
if ($ftp->put(ABSPATH.'wp-includes/version.php', $fullpath, FTP_BINARY, false)) {
|
193 |
echo __("Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:",'updraftplus')." ".$ftp->login_type.')';
|
194 |
@$ftp->delete($fullpath);
|
195 |
} else {
|
3 |
class UpdraftPlus_BackupModule_ftp {
|
4 |
|
5 |
// Get FTP object with parameters set
|
6 |
+
function getFTP($server, $user, $pass, $disable_ssl = false, $disable_verify = true, $use_server_certs = false, $passive = true) {
|
7 |
|
8 |
if( !class_exists('UpdraftPlus_ftp_wrapper')) require_once(UPDRAFTPLUS_DIR.'/includes/ftp.class.php');
|
9 |
|
10 |
+
$port = 21;
|
11 |
+
if (preg_match('/^(.*):(\d+)$/', $server, $matches)) {
|
12 |
+
$server = $matches[1];
|
13 |
+
$port = $matches[2];
|
14 |
+
}
|
15 |
+
|
16 |
+
$ftp = new UpdraftPlus_ftp_wrapper($server, $user, $pass, $port);
|
17 |
|
18 |
if ($disable_ssl) $ftp->ssl = false;
|
19 |
+
$ftp->use_server_certs = $use_server_certs;
|
20 |
+
$ftp->disable_verify = $disable_verify;
|
21 |
if ($passive) $ftp->passive = true;
|
22 |
|
23 |
return $ftp;
|
31 |
$server = UpdraftPlus_Options::get_updraft_option('updraft_server_address');
|
32 |
$user = UpdraftPlus_Options::get_updraft_option('updraft_ftp_login');
|
33 |
|
34 |
+
$ftp = $this->getFTP(
|
35 |
+
$server,
|
36 |
+
$user,
|
37 |
+
UpdraftPlus_Options::get_updraft_option('updraft_ftp_pass'), UpdraftPlus_Options::get_updraft_option('updraft_ssl_nossl'),
|
38 |
+
UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify'),
|
39 |
+
UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts')
|
40 |
+
);
|
41 |
|
42 |
if (!$ftp->connect()) {
|
43 |
$updraftplus->log("FTP Failure: we did not successfully log in with those credentials.");
|
86 |
$ftp = $this->getFTP(
|
87 |
UpdraftPlus_Options::get_updraft_option('updraft_server_address'),
|
88 |
UpdraftPlus_Options::get_updraft_option('updraft_ftp_login'),
|
89 |
+
UpdraftPlus_Options::get_updraft_option('updraft_ftp_pass'), UpdraftPlus_Options::get_updraft_option('updraft_ssl_nossl'),
|
90 |
+
UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify'),
|
91 |
+
UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts')
|
92 |
);
|
93 |
|
94 |
if (!$ftp->connect()) {
|
128 |
nossl: (jQuery('#updraft_ssl_nossl').is(':checked')) ? 1 : 0,
|
129 |
};
|
130 |
jQuery.post(ajaxurl, data, function(response) {
|
131 |
+
alert('<?php _e('Settings test result','updraftplus');?>: ' + response);
|
132 |
});
|
133 |
});
|
134 |
<?php
|
139 |
|
140 |
<tr class="updraftplusmethod ftp">
|
141 |
<td></td>
|
142 |
+
<td><p><em><?php printf(__('%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts.','updraftplus'),'FTP');?></em></p></td>
|
143 |
</tr>
|
144 |
|
145 |
<tr class="updraftplusmethod ftp">
|
146 |
<th></th>
|
147 |
+
<td><em><?php echo apply_filters('updraft_sftp_ftps_notice', '<strong>'.htmlspecialchars(__('Only non-encrypted FTP is supported by regular UpdraftPlus.')).'</strong> <a href="http://updraftplus.com/shop/sftp/">'.__('If you want encryption (e.g. you are storing sensitive business data), then an add-on is available.','updraftplus')).'</a>'; ?></em></td>
|
148 |
</tr>
|
149 |
|
150 |
<tr class="updraftplusmethod ftp">
|
178 |
$path = $_POST['path'];
|
179 |
$nossl = $_POST['nossl'];
|
180 |
|
181 |
+
$disable_verify = $_POST['disableverify'];
|
182 |
+
$use_server_certs = $_POST['useservercerts'];
|
183 |
+
|
184 |
if (empty($server)) {
|
185 |
_e("Failure: No server details were given.",'updraftplus');
|
186 |
return;
|
194 |
return;
|
195 |
}
|
196 |
|
197 |
+
$ftp = self::getFTP($server, $login, $pass, $nossl, $disable_verify, $use_server_certs);
|
198 |
|
199 |
if (!$ftp->connect()) {
|
200 |
_e("Failure: we did not successfully log in with those credentials.",'updraftplus');
|
208 |
_e("Failure: an unexpected internal UpdraftPlus error occurred when testing the credentials - please contact the developer");
|
209 |
return;
|
210 |
}
|
211 |
+
if ($ftp->put(ABSPATH.'wp-includes/version.php', $fullpath, FTP_BINARY, false, true)) {
|
212 |
echo __("Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:",'updraftplus')." ".$ftp->login_type.')';
|
213 |
@$ftp->delete($fullpath);
|
214 |
} else {
|
methods/googledrive.php
CHANGED
@@ -3,11 +3,13 @@
|
|
3 |
class UpdraftPlus_BackupModule_googledrive {
|
4 |
|
5 |
var $gdocs;
|
6 |
-
var $gdocs_access_token;
|
7 |
|
8 |
public static function action_auth() {
|
9 |
if ( isset( $_GET['state'] ) ) {
|
10 |
-
if ( $_GET['state'] == '
|
|
|
|
|
|
|
11 |
self::gdrive_auth_token();
|
12 |
elseif ( $_GET['state'] == 'revoke' )
|
13 |
self::gdrive_auth_revoke();
|
@@ -51,7 +53,7 @@ class UpdraftPlus_BackupModule_googledrive {
|
|
51 |
'response_type' => 'code',
|
52 |
'client_id' => UpdraftPlus_Options::get_updraft_option('updraft_googledrive_clientid'),
|
53 |
'redirect_uri' => admin_url('options-general.php?page=updraftplus&action=updraftmethod-googledrive-auth'),
|
54 |
-
'scope' => 'https://www.googleapis.com/auth/drive.file https://docs.google.com/feeds/ https://docs.googleusercontent.com/ https://spreadsheets.google.com/feeds/',
|
55 |
'state' => 'token',
|
56 |
'access_type' => 'offline',
|
57 |
'approval_prompt' => 'force'
|
@@ -91,8 +93,18 @@ class UpdraftPlus_BackupModule_googledrive {
|
|
91 |
} else {
|
92 |
$json_values = json_decode( $result['body'], true );
|
93 |
if ( isset( $json_values['refresh_token'] ) ) {
|
94 |
-
|
95 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
|
97 |
}
|
98 |
else {
|
@@ -101,10 +113,39 @@ class UpdraftPlus_BackupModule_googledrive {
|
|
101 |
}
|
102 |
}
|
103 |
else {
|
104 |
-
header('Location: '.admin_url('options-general.php?page=updraftplus&error='
|
105 |
}
|
106 |
}
|
107 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
// This function just does the formalities, and off-loads the main work to upload_file
|
109 |
function backup($backup_array) {
|
110 |
|
@@ -119,14 +160,38 @@ class UpdraftPlus_BackupModule_googledrive {
|
|
119 |
return new WP_Error( "no_access_token", __("Have not yet obtained an access token from Google (has the user authorised?)",'updraftplus'));
|
120 |
}
|
121 |
|
122 |
-
$this->gdocs_access_token = $access_token;
|
123 |
-
|
124 |
$updraft_dir = $updraftplus->backups_dir_location().'/';
|
125 |
|
|
|
|
|
|
|
|
|
126 |
foreach ($backup_array as $file) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
$file_path = $updraft_dir.$file;
|
128 |
$file_name = basename($file_path);
|
129 |
$updraftplus->log("$file_name: Attempting to upload to Google Drive");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
$timer_start = microtime(true);
|
131 |
if ( $id = $this->upload_file( $file_path, $file_name, UpdraftPlus_Options::get_updraft_option('updraft_googledrive_remotepath')) ) {
|
132 |
$updraftplus->log('OK: Archive ' . $file_name . ' uploaded to Google Drive in ' . ( round(microtime( true ) - $timer_start,2) ) . ' seconds (id: '.$id.')' );
|
@@ -166,8 +231,6 @@ class UpdraftPlus_BackupModule_googledrive {
|
|
166 |
|
167 |
global $updraftplus;
|
168 |
|
169 |
-
// Make sure $this->gdocs is a UpdraftPlus_GDocs object, or give an error
|
170 |
-
if ( is_wp_error( $e = $this->need_gdocs() ) ) return false;
|
171 |
$gdocs_object = $this->gdocs;
|
172 |
|
173 |
$hash = md5($file);
|
@@ -222,8 +285,8 @@ class UpdraftPlus_BackupModule_googledrive {
|
|
222 |
// echo '</div>';
|
223 |
|
224 |
if ( is_wp_error( $res ) || $res !== true) {
|
225 |
-
$updraftplus->log( "An error occurred during
|
226 |
-
$updraftplus->error(__("An error occurred during
|
227 |
if (is_wp_error( $res )) {
|
228 |
foreach ($res->get_error_messages() as $msg) $updraftplus->log($msg);
|
229 |
}
|
@@ -256,10 +319,8 @@ class UpdraftPlus_BackupModule_googledrive {
|
|
256 |
return false;
|
257 |
}
|
258 |
|
259 |
-
$this->gdocs_access_token = $access_token;
|
260 |
-
|
261 |
// Make sure $this->gdocs is a UpdraftPlus_GDocs object, or give an error
|
262 |
-
if ( is_wp_error( $e = $this->need_gdocs() ) ) return false;
|
263 |
$gdocs_object = $this->gdocs;
|
264 |
|
265 |
$ids = UpdraftPlus_Options::get_updraft_option('updraft_file_ids', array());
|
@@ -292,7 +353,7 @@ class UpdraftPlus_BackupModule_googledrive {
|
|
292 |
}
|
293 |
|
294 |
// This function modified from wordpress.org/extend/plugins/backup, by Sorin Iclanzan, under the GPLv3 or later at your choice
|
295 |
-
function need_gdocs() {
|
296 |
|
297 |
global $updraftplus;
|
298 |
|
@@ -302,9 +363,9 @@ class UpdraftPlus_BackupModule_googledrive {
|
|
302 |
return new WP_Error( "not_authorized", __("Account is not authorized.",'updraftplus') );
|
303 |
}
|
304 |
|
305 |
-
if ( is_wp_error(
|
306 |
|
307 |
-
$this->gdocs = new UpdraftPlus_GDocs(
|
308 |
// We need to be able to upload at least one chunk within the timeout (at least, we have seen an error report where the failure to do this seemed to be the cause)
|
309 |
// If we assume a user has at least 16kb/s (we saw one user with as low as 22kb/s), and that their provider may allow them only 15s, then we have the following settings
|
310 |
$this->gdocs->set_option( 'chunk_size', 0.2 ); # 0.2Mb; change from default of 512Kb
|
@@ -331,14 +392,14 @@ class UpdraftPlus_BackupModule_googledrive {
|
|
331 |
<td><?php _e('Google Drive','updraftplus');?>:</td>
|
332 |
<td>
|
333 |
<img src="https://developers.google.com/drive/images/drive_logo.png" alt="<?php _e('Google Drive','updraftplus');?>">
|
334 |
-
<p><em><?php printf(__('%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your
|
335 |
</td>
|
336 |
</tr>
|
337 |
<tr class="updraftplusmethod googledrive">
|
338 |
<th>Google Drive:</th>
|
339 |
<td>
|
340 |
<p><a href="http://updraftplus.com/support/configuring-google-drive-api-access-in-updraftplus/"><strong><?php _e('For longer help, including screenshots, follow this link. The description below is sufficient for more expert users.','updraftplus');?></strong></a></p>
|
341 |
-
<p><a href="https://code.google.com/apis/console/"><?php _e('Follow this link to your Google API Console, and there create a Client ID in the API Access section.','updraftplus');?></a> <?php _e("Select 'Web Application' as the application type.",'updraftplus');?></p><p><?php echo htmlspecialchars(__('You must add the following as the authorised redirect URI (under "More Options") when asked','updraftplus'));?>: <kbd><?php echo admin_url('options-general.php?page=updraftplus&action=updraftmethod-googledrive-auth'); ?></kbd> <?php _e('N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your client ID; you must create a new one from your Google API console for each
|
342 |
|
343 |
<?php
|
344 |
if (!class_exists('SimpleXMLElement')) { echo "<b>",__('Warning','updraftplus').':</b> '.__("You do not have the SimpleXMLElement installed. Google Drive backups will <b>not</b> work until you do.",'updraftplus'); }
|
@@ -356,7 +417,7 @@ class UpdraftPlus_BackupModule_googledrive {
|
|
356 |
<td><input type="text" style="width:352px" name="updraft_googledrive_secret" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_googledrive_secret')); ?>" /></td>
|
357 |
</tr>
|
358 |
<tr class="updraftplusmethod googledrive">
|
359 |
-
<th><?php echo __('Google Drive','updraftplus').' '.__('Folder ID','updraftplus');
|
360 |
<td><input type="text" style="width:352px" name="updraft_googledrive_remotepath" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_googledrive_remotepath')); ?>" /> <em><?php _e("<strong>This is NOT a folder name</strong>. To get a folder's ID navigate to that folder in Google Drive in your web browser and copy the ID from your browser's address bar. It is the part that comes after <kbd>#folders/.</kbd> Leave empty to use your root folder)",'updraftplus');?></em></td>
|
361 |
</tr>
|
362 |
<tr class="updraftplusmethod googledrive">
|
3 |
class UpdraftPlus_BackupModule_googledrive {
|
4 |
|
5 |
var $gdocs;
|
|
|
6 |
|
7 |
public static function action_auth() {
|
8 |
if ( isset( $_GET['state'] ) ) {
|
9 |
+
if ( $_GET['state'] == 'success') {
|
10 |
+
add_action('admin_notices', array('UpdraftPlus_BackupModule_googledrive', 'show_authed_admin_success') );
|
11 |
+
}
|
12 |
+
elseif ( $_GET['state'] == 'token' )
|
13 |
self::gdrive_auth_token();
|
14 |
elseif ( $_GET['state'] == 'revoke' )
|
15 |
self::gdrive_auth_revoke();
|
53 |
'response_type' => 'code',
|
54 |
'client_id' => UpdraftPlus_Options::get_updraft_option('updraft_googledrive_clientid'),
|
55 |
'redirect_uri' => admin_url('options-general.php?page=updraftplus&action=updraftmethod-googledrive-auth'),
|
56 |
+
'scope' => 'https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.file https://docs.google.com/feeds/ https://docs.googleusercontent.com/ https://spreadsheets.google.com/feeds/',
|
57 |
'state' => 'token',
|
58 |
'access_type' => 'offline',
|
59 |
'approval_prompt' => 'force'
|
93 |
} else {
|
94 |
$json_values = json_decode( $result['body'], true );
|
95 |
if ( isset( $json_values['refresh_token'] ) ) {
|
96 |
+
|
97 |
+
// Save token
|
98 |
+
UpdraftPlus_Options::update_updraft_option('updraft_googledrive_token', $json_values['refresh_token']);
|
99 |
+
|
100 |
+
if ( isset($json_values['access_token'])) {
|
101 |
+
|
102 |
+
set_transient('updraftplus_tmp_googledrive_access_token', $json_values['access_token'], 3600);
|
103 |
+
|
104 |
+
// We do this to clear the GET parameters, otherwise WordPress sticks them in the _wp_referer in the form and brings them back, leading to confusion + errors
|
105 |
+
header('Location: '.admin_url('options-general.php?page=updraftplus&action=updraftmethod-googledrive-auth&state=success'));
|
106 |
+
|
107 |
+
}
|
108 |
|
109 |
}
|
110 |
else {
|
113 |
}
|
114 |
}
|
115 |
else {
|
116 |
+
header('Location: '.admin_url('options-general.php?page=updraftplus&error='. __( 'Authorization failed', 'updraftplus' ) ) );
|
117 |
}
|
118 |
}
|
119 |
|
120 |
+
function show_authed_admin_success() {
|
121 |
+
|
122 |
+
global $updraftplus_admin;
|
123 |
+
|
124 |
+
$updraftplus_tmp_access_token = get_transient('updraftplus_tmp_googledrive_access_token');
|
125 |
+
if (empty($updraftplus_tmp_access_token)) return;
|
126 |
+
|
127 |
+
$message = '';
|
128 |
+
try {
|
129 |
+
if( !class_exists('UpdraftPlus_GDocs')) require_once(UPDRAFTPLUS_DIR.'/includes/class-gdocs.php');
|
130 |
+
$x = new UpdraftPlus_BackupModule_googledrive;
|
131 |
+
if ( !is_wp_error( $e = $x->need_gdocs($updraftplus_tmp_access_token) ) ) {
|
132 |
+
$quota_total = max($x->gdocs->get_quota_total(), 1);
|
133 |
+
$quota_used = $x->gdocs->get_quota_used();
|
134 |
+
if (is_numeric($quota_total) && is_numeric($quota_used)) {
|
135 |
+
$available_quota = $quota_total - $quota_used;
|
136 |
+
$used_perc = round($quota_used*100/$quota_total, 1);
|
137 |
+
$message .= sprintf(__('Your %s quota usage: %s %% used, %s available','updraftplus'), 'Google Drive', $used_perc, round($available_quota/1048576, 1).' Mb');
|
138 |
+
}
|
139 |
+
}
|
140 |
+
} catch (Exception $e) {
|
141 |
+
}
|
142 |
+
|
143 |
+
$updraftplus_admin->show_admin_warning(__('Success','updraftplus').': '.sprintf(__('you have authenticated your %s account.','updraftplus'),__('Google Drive','updraftplus')).' '.$message);
|
144 |
+
|
145 |
+
delete_transient('updraftplus_tmp_googledrive_access_token');
|
146 |
+
|
147 |
+
}
|
148 |
+
|
149 |
// This function just does the formalities, and off-loads the main work to upload_file
|
150 |
function backup($backup_array) {
|
151 |
|
160 |
return new WP_Error( "no_access_token", __("Have not yet obtained an access token from Google (has the user authorised?)",'updraftplus'));
|
161 |
}
|
162 |
|
|
|
|
|
163 |
$updraft_dir = $updraftplus->backups_dir_location().'/';
|
164 |
|
165 |
+
// Make sure $this->gdocs is a UpdraftPlus_GDocs object, or give an error
|
166 |
+
if ( is_wp_error( $e = $this->need_gdocs($access_token) ) ) return false;
|
167 |
+
$gdocs_object = $this->gdocs;
|
168 |
+
|
169 |
foreach ($backup_array as $file) {
|
170 |
+
|
171 |
+
$available_quota = -1;
|
172 |
+
|
173 |
+
try {
|
174 |
+
$quota_total = $gdocs_object->get_quota_total();
|
175 |
+
$quota_used = $gdocs_object->get_quota_used();
|
176 |
+
$available_quota = $quota_total - $quota_used;
|
177 |
+
$message = "Google Drive quota usage: used=".round($quota_used/1048576,1)." Mb, total=".round($quota_total/1048576,1)." Mb, available=".round($available_quota/1048576,1)." Mb";
|
178 |
+
$updraftplus->log($message);
|
179 |
+
} catch (Exception $e) {
|
180 |
+
$updraftplus->log("Google Drive quota usage: failed to obtain this information: ".$e->getMessage());
|
181 |
+
}
|
182 |
+
|
183 |
$file_path = $updraft_dir.$file;
|
184 |
$file_name = basename($file_path);
|
185 |
$updraftplus->log("$file_name: Attempting to upload to Google Drive");
|
186 |
+
|
187 |
+
if ($available_quota != -1) {
|
188 |
+
$filesize = filesize($file_path);
|
189 |
+
if ($filesize > $available_quota) {
|
190 |
+
$updraftplus->log("File upload expected to fail: file ($file_name) size is $filesize b, whereas available quota is only $available_quota b");
|
191 |
+
$updraftplus->error(sprintf(__("Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes",'updraftplus'),'Google Drive', $available_quota, $filesize));
|
192 |
+
}
|
193 |
+
}
|
194 |
+
|
195 |
$timer_start = microtime(true);
|
196 |
if ( $id = $this->upload_file( $file_path, $file_name, UpdraftPlus_Options::get_updraft_option('updraft_googledrive_remotepath')) ) {
|
197 |
$updraftplus->log('OK: Archive ' . $file_name . ' uploaded to Google Drive in ' . ( round(microtime( true ) - $timer_start,2) ) . ' seconds (id: '.$id.')' );
|
231 |
|
232 |
global $updraftplus;
|
233 |
|
|
|
|
|
234 |
$gdocs_object = $this->gdocs;
|
235 |
|
236 |
$hash = md5($file);
|
285 |
// echo '</div>';
|
286 |
|
287 |
if ( is_wp_error( $res ) || $res !== true) {
|
288 |
+
$updraftplus->log( "An error occurred during Google Drive upload (2)" );
|
289 |
+
$updraftplus->error(sprintf(__("An error occurred during %s upload (see log for more details)",'updraftplus'), 'Google Drive'));
|
290 |
if (is_wp_error( $res )) {
|
291 |
foreach ($res->get_error_messages() as $msg) $updraftplus->log($msg);
|
292 |
}
|
319 |
return false;
|
320 |
}
|
321 |
|
|
|
|
|
322 |
// Make sure $this->gdocs is a UpdraftPlus_GDocs object, or give an error
|
323 |
+
if ( is_wp_error( $e = $this->need_gdocs($access_token) ) ) return false;
|
324 |
$gdocs_object = $this->gdocs;
|
325 |
|
326 |
$ids = UpdraftPlus_Options::get_updraft_option('updraft_file_ids', array());
|
353 |
}
|
354 |
|
355 |
// This function modified from wordpress.org/extend/plugins/backup, by Sorin Iclanzan, under the GPLv3 or later at your choice
|
356 |
+
function need_gdocs($access_token) {
|
357 |
|
358 |
global $updraftplus;
|
359 |
|
363 |
return new WP_Error( "not_authorized", __("Account is not authorized.",'updraftplus') );
|
364 |
}
|
365 |
|
366 |
+
if ( is_wp_error($access_token) ) return $access_token;
|
367 |
|
368 |
+
$this->gdocs = new UpdraftPlus_GDocs($access_token);
|
369 |
// We need to be able to upload at least one chunk within the timeout (at least, we have seen an error report where the failure to do this seemed to be the cause)
|
370 |
// If we assume a user has at least 16kb/s (we saw one user with as low as 22kb/s), and that their provider may allow them only 15s, then we have the following settings
|
371 |
$this->gdocs->set_option( 'chunk_size', 0.2 ); # 0.2Mb; change from default of 512Kb
|
392 |
<td><?php _e('Google Drive','updraftplus');?>:</td>
|
393 |
<td>
|
394 |
<img src="https://developers.google.com/drive/images/drive_logo.png" alt="<?php _e('Google Drive','updraftplus');?>">
|
395 |
+
<p><em><?php printf(__('%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts.','updraftplus'),'Google Drive');?></em></p>
|
396 |
</td>
|
397 |
</tr>
|
398 |
<tr class="updraftplusmethod googledrive">
|
399 |
<th>Google Drive:</th>
|
400 |
<td>
|
401 |
<p><a href="http://updraftplus.com/support/configuring-google-drive-api-access-in-updraftplus/"><strong><?php _e('For longer help, including screenshots, follow this link. The description below is sufficient for more expert users.','updraftplus');?></strong></a></p>
|
402 |
+
<p><a href="https://code.google.com/apis/console/"><?php _e('Follow this link to your Google API Console, and there create a Client ID in the API Access section.','updraftplus');?></a> <?php _e("Select 'Web Application' as the application type.",'updraftplus');?></p><p><?php echo htmlspecialchars(__('You must add the following as the authorised redirect URI (under "More Options") when asked','updraftplus'));?>: <kbd><?php echo admin_url('options-general.php?page=updraftplus&action=updraftmethod-googledrive-auth'); ?></kbd> <?php _e('N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your client ID; you must create a new one from your Google API console for each site.','updraftplus');?>
|
403 |
|
404 |
<?php
|
405 |
if (!class_exists('SimpleXMLElement')) { echo "<b>",__('Warning','updraftplus').':</b> '.__("You do not have the SimpleXMLElement installed. Google Drive backups will <b>not</b> work until you do.",'updraftplus'); }
|
417 |
<td><input type="text" style="width:352px" name="updraft_googledrive_secret" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_googledrive_secret')); ?>" /></td>
|
418 |
</tr>
|
419 |
<tr class="updraftplusmethod googledrive">
|
420 |
+
<th><?php echo __('Google Drive','updraftplus').' '.__('Folder ID','updraftplus'); ?>:</th>
|
421 |
<td><input type="text" style="width:352px" name="updraft_googledrive_remotepath" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_googledrive_remotepath')); ?>" /> <em><?php _e("<strong>This is NOT a folder name</strong>. To get a folder's ID navigate to that folder in Google Drive in your web browser and copy the ID from your browser's address bar. It is the part that comes after <kbd>#folders/.</kbd> Leave empty to use your root folder)",'updraftplus');?></em></td>
|
422 |
</tr>
|
423 |
<tr class="updraftplusmethod googledrive">
|
methods/s3.php
CHANGED
@@ -276,7 +276,7 @@ class UpdraftPlus_BackupModule_s3 {
|
|
276 |
?>
|
277 |
<tr class="updraftplusmethod s3">
|
278 |
<td></td>
|
279 |
-
<td><img src="https://d36cz9buwru1tt.cloudfront.net/Powered-by-Amazon-Web-Services.jpg" alt="Amazon Web Services"><p><em><?php printf(__('%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your
|
280 |
</tr>
|
281 |
<tr class="updraftplusmethod s3">
|
282 |
<th></th>
|
276 |
?>
|
277 |
<tr class="updraftplusmethod s3">
|
278 |
<td></td>
|
279 |
+
<td><img src="https://d36cz9buwru1tt.cloudfront.net/Powered-by-Amazon-Web-Services.jpg" alt="Amazon Web Services"><p><em><?php printf(__('%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your site is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts.','updraftplus'),'Amazon S3');?></em></p></td>
|
280 |
</tr>
|
281 |
<tr class="updraftplusmethod s3">
|
282 |
<th></th>
|
options.php
CHANGED
@@ -63,7 +63,7 @@ class UpdraftPlus_Options {
|
|
63 |
|
64 |
register_setting('updraft-options-group', 'updraft_googledrive_clientid', array($updraftplus, 'googledrive_clientid_checkchange') );
|
65 |
register_setting('updraft-options-group', 'updraft_googledrive_secret' );
|
66 |
-
register_setting('updraft-options-group', 'updraft_googledrive_remotepath' );
|
67 |
|
68 |
register_setting('updraft-options-group', 'updraft_ftp_login' );
|
69 |
register_setting('updraft-options-group', 'updraft_ftp_pass' );
|
@@ -78,6 +78,9 @@ class UpdraftPlus_Options {
|
|
78 |
register_setting('updraft-options-group', 'updraft_include_uploads', 'absint' );
|
79 |
register_setting('updraft-options-group', 'updraft_include_others', 'absint' );
|
80 |
register_setting('updraft-options-group', 'updraft_include_wpcore', 'absint' );
|
|
|
|
|
|
|
81 |
register_setting('updraft-options-group', 'updraft_include_others_exclude' );
|
82 |
|
83 |
register_setting('updraft-options-group', 'updraft_starttime_files', array('UpdraftPlus_Options', 'hourminute') );
|
63 |
|
64 |
register_setting('updraft-options-group', 'updraft_googledrive_clientid', array($updraftplus, 'googledrive_clientid_checkchange') );
|
65 |
register_setting('updraft-options-group', 'updraft_googledrive_secret' );
|
66 |
+
register_setting('updraft-options-group', 'updraft_googledrive_remotepath', array($updraftplus_admin, 'googledrive_remove_folderurlprefix') );
|
67 |
|
68 |
register_setting('updraft-options-group', 'updraft_ftp_login' );
|
69 |
register_setting('updraft-options-group', 'updraft_ftp_pass' );
|
78 |
register_setting('updraft-options-group', 'updraft_include_uploads', 'absint' );
|
79 |
register_setting('updraft-options-group', 'updraft_include_others', 'absint' );
|
80 |
register_setting('updraft-options-group', 'updraft_include_wpcore', 'absint' );
|
81 |
+
register_setting('updraft-options-group', 'updraft_include_wpcore_exclude' );
|
82 |
+
register_setting('updraft-options-group', 'updraft_include_more', 'absint' );
|
83 |
+
register_setting('updraft-options-group', 'updraft_include_more_path' );
|
84 |
register_setting('updraft-options-group', 'updraft_include_others_exclude' );
|
85 |
|
86 |
register_setting('updraft-options-group', 'updraft_starttime_files', array('UpdraftPlus_Options', 'hourminute') );
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: DavidAnderson
|
|
3 |
Tags: backup, restore, database, rackspace, amazon, s3, dropbox, google drive, ftp, webdav, back up, multisite
|
4 |
Requires at least: 3.1
|
5 |
Tested up to: 3.5.1
|
6 |
-
Stable tag: 1.
|
7 |
Author URI: http://updraftplus.com
|
8 |
Donate link: http://david.dw-perspective.org.uk/donate
|
9 |
License: GPLv3 or later
|
@@ -14,6 +14,8 @@ Easy and complete backups and restoration. Manual or automated backups (Amazon S
|
|
14 |
|
15 |
<a href="http://updraftplus.com">UpdraftPlus</a> simplifies backups (and restoration). Backup into the cloud (Amazon S3, Dropbox, Google Drive, Rackspace Cloud, FTP, SFTP, WebDAV and email) and restore with a single click. Backups of files and database can have separate schedules.
|
16 |
|
|
|
|
|
17 |
* Supports backups to Amazon S3, Dropbox, Google Drive, Rackspace Cloud Files, FTP (including SSL), email, SFTP and WebDAV
|
18 |
* Quick restore (both file and database backups)
|
19 |
* Backup automatically on a repeating schedule
|
@@ -24,7 +26,6 @@ Easy and complete backups and restoration. Manual or automated backups (Amazon S
|
|
24 |
* Download backup archives direct from your WordPress dashboard
|
25 |
* Database backups can be encrypted for security
|
26 |
* Debug mode that gives full logging of the backup
|
27 |
-
* Thousands of users: widely tested and reliable (over 100,000 downloads)
|
28 |
* Internationalised (translations very welcome - see below)
|
29 |
* Premium version and support available - <a href="http://updraftplus.com">http://updraftplus.com</a>
|
30 |
* Tested and supported on all current PHP versions (5.2, 5.3, 5.4)
|
@@ -51,7 +52,8 @@ Many thanks to the existing translators:
|
|
51 |
|
52 |
* Deutsch / German (de_DE): Marcel Herrguth - mherrguth@mrgeneration.de
|
53 |
* Magyar / Hungarian (hu_HU): Szépe Viktor - http://www.szepe.net
|
54 |
-
*
|
|
|
55 |
|
56 |
= Other support =
|
57 |
|
@@ -73,7 +75,7 @@ Check out <a href="http://updraftplus.com/updraftplus-full-feature-list/">our fu
|
|
73 |
|
74 |
Firstly, please make sure you read this FAQ through to the end - it may already have the answer you need. If it does, then please consider a donation (http://david.dw-perspective.org.uk/donate); it takes time to develop this plugin and FAQ.
|
75 |
|
76 |
-
If it does not, then contact me! This is a complex plugin and the only way I can ensure it's robust is to get bug reports and fix the problems that crop up. Please make sure you are using the latest version of the plugin, and that you include the version in your bug report - if you are not using the latest, then the first thing you will be asked to do is upgrade.
|
77 |
|
78 |
Please turn on debugging mode (in the UpdraftPlus options page) and then try again, and after that send me the log if you can find it (there are links to download logs on the UpdraftPlus settings page; or you may be emailed it; failing that, it is in the directory wp-content/updraft, so FTP in and look for it there). If you cannot find the log, then I may not be able to help so much, but you can try - include as much information as you can when reporting (PHP version, your blog's site, the error you saw and how you got to the page that caused it, etcetera).
|
79 |
|
@@ -91,6 +93,10 @@ After you have set up UpdraftPlus, you must check that your backups are taking p
|
|
91 |
|
92 |
UpdraftPlus supports resuming backup runs right from the beginning, so that it does not need to do everything in a single go; but this has limits. If your website is huge and your web hosting company gives your tiny resources on an over-loaded server, then your solution is to purchase better web hosting, or to hire me professionally. Otherwise, this is not considered a bug. UpdraftPlus is known to successfully back up websites that run into the gigabytes on web servers that are not resource-starved.
|
93 |
|
|
|
|
|
|
|
|
|
94 |
= How is this better than the original Updraft? =
|
95 |
|
96 |
You can check the changelog for changes; but the original Updraft, before I forked it, had three major problems. Firstly, it only backed up WP core tables from the database; if any of your plugins stored data in extra tables, then they were not backed up. Secondly, it only backed up your plugins/themes/uploads and not any further directories inside wp-content that other plugins might have created. Thirdly, the database backup did not include charset information, which meant that you needed to know some SQL wizardry to actually be able to use the backup. I made UpdraftPlus out of my experience of trying to back up several sites with Updraft. Then, I added encryption for the database file for extra peace of mind, and future-proofed by getting rid of some deprecated aspects. Since then, many new features have been added, e.g. resuming of failed uploads, and Dropbox support.
|
@@ -113,6 +119,23 @@ Thanks for asking - yes, I have. Check out my profile page - http://profiles.wor
|
|
113 |
|
114 |
== Changelog ==
|
115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
= 1.5.22 - 04/16/2013 =
|
117 |
* FIX: 1.5.21 broke Dropbox authentication for some users. Upgrade if you had that issue.
|
118 |
|
@@ -400,17 +423,20 @@ Thanks for asking - yes, I have. Check out my profile page - http://profiles.wor
|
|
400 |
|
401 |
3. Showing and downloading backup sets
|
402 |
|
403 |
-
We recognise and thank the following for code and/or libraries used and/or modified under the terms of their licences:
|
|
|
404 |
* UpdraftPlus is derived from the original Updraft by Paul Kehrer (Twitter: http://twitter.com/reaperhulk, Blog: http://langui.sh)
|
405 |
* Sorin Iclanzan, http://profiles.wordpress.org/hel.io/
|
406 |
* Ben Tadiar, https://github.com/BenTheDesigner/Dropbox
|
407 |
* Beau Brownlee, http://www.solutionbot.com/2009/01/02/php-ftp-class/
|
408 |
* Donovan Schonknecht, http://undesigned.org.za/2007/10/22/amazon-s3-php-class
|
|
|
|
|
|
|
409 |
|
410 |
== License ==
|
411 |
|
412 |
-
|
413 |
-
Portions copyright 2010 Paul Kehrer
|
414 |
|
415 |
This program is free software; you can redistribute it and/or modify
|
416 |
it under the terms of the GNU General Public License as published by
|
@@ -429,4 +455,4 @@ We recognise and thank the following for code and/or libraries used and/or modif
|
|
429 |
Furthermore, reliance upon any non-English translation is at your own risk. UpdraftPlus can give no guarantees that translations from the original English are accurate.
|
430 |
|
431 |
== Upgrade Notice ==
|
432 |
-
1.
|
3 |
Tags: backup, restore, database, rackspace, amazon, s3, dropbox, google drive, ftp, webdav, back up, multisite
|
4 |
Requires at least: 3.1
|
5 |
Tested up to: 3.5.1
|
6 |
+
Stable tag: 1.6.1
|
7 |
Author URI: http://updraftplus.com
|
8 |
Donate link: http://david.dw-perspective.org.uk/donate
|
9 |
License: GPLv3 or later
|
14 |
|
15 |
<a href="http://updraftplus.com">UpdraftPlus</a> simplifies backups (and restoration). Backup into the cloud (Amazon S3, Dropbox, Google Drive, Rackspace Cloud, FTP, SFTP, WebDAV and email) and restore with a single click. Backups of files and database can have separate schedules.
|
16 |
|
17 |
+
* Thousands of users: widely tested and reliable (over 120,000 downloads). Ranks 102 on rankwp.com out of 24,000 plugins (top 0.5%).
|
18 |
+
* Top-quality: ranks 38th out of 24,000 plugins for quality on rankwp.com (top 0.25% - last checked 26th April 2013).
|
19 |
* Supports backups to Amazon S3, Dropbox, Google Drive, Rackspace Cloud Files, FTP (including SSL), email, SFTP and WebDAV
|
20 |
* Quick restore (both file and database backups)
|
21 |
* Backup automatically on a repeating schedule
|
26 |
* Download backup archives direct from your WordPress dashboard
|
27 |
* Database backups can be encrypted for security
|
28 |
* Debug mode that gives full logging of the backup
|
|
|
29 |
* Internationalised (translations very welcome - see below)
|
30 |
* Premium version and support available - <a href="http://updraftplus.com">http://updraftplus.com</a>
|
31 |
* Tested and supported on all current PHP versions (5.2, 5.3, 5.4)
|
52 |
|
53 |
* Deutsch / German (de_DE): Marcel Herrguth - mherrguth@mrgeneration.de
|
54 |
* Magyar / Hungarian (hu_HU): Szépe Viktor - http://www.szepe.net
|
55 |
+
* Español / Spanish (es_ES): Fernando Villasmil - villasmil.fernando@gmail.com
|
56 |
+
* Nederlands / Dutch (nl_NL): Hans van der Vlist - hansvandervlist@gmail.com
|
57 |
|
58 |
= Other support =
|
59 |
|
75 |
|
76 |
Firstly, please make sure you read this FAQ through to the end - it may already have the answer you need. If it does, then please consider a donation (http://david.dw-perspective.org.uk/donate); it takes time to develop this plugin and FAQ.
|
77 |
|
78 |
+
If it does not, then contact me! This is a complex backup plugin and the only way I can ensure it's robust is to get bug reports and fix the problems that crop up. Please make sure you are using the latest version of the plugin, and that you include the version in your bug report - if you are not using the latest, then the first thing you will be asked to do is upgrade.
|
79 |
|
80 |
Please turn on debugging mode (in the UpdraftPlus options page) and then try again, and after that send me the log if you can find it (there are links to download logs on the UpdraftPlus settings page; or you may be emailed it; failing that, it is in the directory wp-content/updraft, so FTP in and look for it there). If you cannot find the log, then I may not be able to help so much, but you can try - include as much information as you can when reporting (PHP version, your blog's site, the error you saw and how you got to the page that caused it, etcetera).
|
81 |
|
93 |
|
94 |
UpdraftPlus supports resuming backup runs right from the beginning, so that it does not need to do everything in a single go; but this has limits. If your website is huge and your web hosting company gives your tiny resources on an over-loaded server, then your solution is to purchase better web hosting, or to hire me professionally. Otherwise, this is not considered a bug. UpdraftPlus is known to successfully back up websites that run into the gigabytes on web servers that are not resource-starved.
|
95 |
|
96 |
+
= Will you support Windows Live SkyDrive? =
|
97 |
+
|
98 |
+
No. Microsoft forbid the use of SkyDrive by backup utilities - see http://msdn.microsoft.com/en-us/library/live/hh826521.aspx ("Here are some examples of nonconforming apps: Apps that automatically back up files or folders to SkyDrive.").
|
99 |
+
|
100 |
= How is this better than the original Updraft? =
|
101 |
|
102 |
You can check the changelog for changes; but the original Updraft, before I forked it, had three major problems. Firstly, it only backed up WP core tables from the database; if any of your plugins stored data in extra tables, then they were not backed up. Secondly, it only backed up your plugins/themes/uploads and not any further directories inside wp-content that other plugins might have created. Thirdly, the database backup did not include charset information, which meant that you needed to know some SQL wizardry to actually be able to use the backup. I made UpdraftPlus out of my experience of trying to back up several sites with Updraft. Then, I added encryption for the database file for extra peace of mind, and future-proofed by getting rid of some deprecated aspects. Since then, many new features have been added, e.g. resuming of failed uploads, and Dropbox support.
|
119 |
|
120 |
== Changelog ==
|
121 |
|
122 |
+
= 1.6.1 - 05/06/2013 =
|
123 |
+
* FEATURE: New "Migrator" add-on for moving sites from one WordPress install to another (http://updraftplus.com/shop/)
|
124 |
+
* FEATURE: The "More files" add-on can now back up any files from anywhere on your filesystem (not just parts of WordPress)
|
125 |
+
* FEATURE: The "More files" add-on can now exclude specified directories from the backup of WordPress core
|
126 |
+
* FEATURE: Dropbox and Google Drive now check available quota before uploading
|
127 |
+
* FEATURE: Nederlands / Dutch (nl_NL) translation: thanks to Hans van der Vlist - hansvandervlist@gmail.com
|
128 |
+
* FEATURE: The SFTP/FTPS add-on now supports implicit encryption (so now both explicit + implicit are supported)
|
129 |
+
* FIX: Google Drive now requires additional permissions to download your files - you will need to re-authenticate if you are downloading or restoring.
|
130 |
+
* FIX: Fix serious corruption issue in larger Rackspace Cloud Files backups (fixed a bug in Rackspace's Cloud Files library)
|
131 |
+
* FIX: Fix mcrypt call in Dropbox module to be compatible with PHP 5.2 on Windows, and with ancient FreeBSD versions which have no /dev/urandom
|
132 |
+
* FIX: Allow top-level "Restore" button even if no backup sets currently known (to allow uploading some)
|
133 |
+
* FIX: Fixed issues hindering restoration on web hosting setups with file permissions that invoked WP's remote filesystem methods
|
134 |
+
* TWEAK: Database backup now includes more info about original WP install (e.g. WP/PHP versions)
|
135 |
+
* TWEAK: The "More files" add-on now allows the user to choose whether to restore wp-config.php or not (and gives help)
|
136 |
+
* TWEAK: Added an approximate expected row count when beginning to dump out a table
|
137 |
+
* TWEAK: Remove the Google Drive URL prefix automatically for those who don't spot the instruction to do so
|
138 |
+
|
139 |
= 1.5.22 - 04/16/2013 =
|
140 |
* FIX: 1.5.21 broke Dropbox authentication for some users. Upgrade if you had that issue.
|
141 |
|
423 |
|
424 |
3. Showing and downloading backup sets
|
425 |
|
426 |
+
We recognise and thank the following for code and/or libraries used and/or modified under the terms of their open source licences:
|
427 |
+
|
428 |
* UpdraftPlus is derived from the original Updraft by Paul Kehrer (Twitter: http://twitter.com/reaperhulk, Blog: http://langui.sh)
|
429 |
* Sorin Iclanzan, http://profiles.wordpress.org/hel.io/
|
430 |
* Ben Tadiar, https://github.com/BenTheDesigner/Dropbox
|
431 |
* Beau Brownlee, http://www.solutionbot.com/2009/01/02/php-ftp-class/
|
432 |
* Donovan Schonknecht, http://undesigned.org.za/2007/10/22/amazon-s3-php-class
|
433 |
+
* Rackspace US, Inc., https://github.com/rackerlabs/php-cloudfiles
|
434 |
+
* Jim Wigginton, http://phpseclib.sourceforge.net
|
435 |
+
* Dave Coveney, https://github.com/interconnectit/Search-Replace-DB/
|
436 |
|
437 |
== License ==
|
438 |
|
439 |
+
Copyright 2011-3 David Anderson
|
|
|
440 |
|
441 |
This program is free software; you can redistribute it and/or modify
|
442 |
it under the terms of the GNU General Public License as published by
|
455 |
Furthermore, reliance upon any non-English translation is at your own risk. UpdraftPlus can give no guarantees that translations from the original English are accurate.
|
456 |
|
457 |
== Upgrade Notice ==
|
458 |
+
1.6.1: Various new features. Small bug fixes + one larger corruption issue in larger Rackspace Cloud Files backups (a bug in Rackspace's library). Recommended update for all. Google Drive users should re-authenticate in order to download or restore (due to a change made by Google).
|
updraftplus.php
CHANGED
@@ -4,7 +4,7 @@ Plugin Name: UpdraftPlus - Backup/Restore
|
|
4 |
Plugin URI: http://updraftplus.com
|
5 |
Description: Backup and restore: take backups locally, or backup to Amazon S3, Dropbox, Google Drive, Rackspace, (S)FTP, WebDAV & email, on automatic schedules.
|
6 |
Author: UpdraftPlus.Com, DavidAnderson
|
7 |
-
Version: 1.
|
8 |
Donate link: http://david.dw-perspective.org.uk/donate
|
9 |
License: GPLv3 or later
|
10 |
Text Domain: updraftplus
|
@@ -13,12 +13,25 @@ Author URI: http://updraftplus.com
|
|
13 |
|
14 |
/*
|
15 |
TODO - some of these are out of date/done, needs pruning
|
|
|
16 |
// Add an appeal for translators to email me.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
// Search for other TODO-s in the code
|
|
|
|
|
|
|
|
|
18 |
// Update all-features page at updraftplus.com (not updated after 1.5.5)
|
19 |
-
// Better Dropbox errors (see item in To-Do box)
|
20 |
// Count available time before doing a database restore
|
21 |
-
// Put in more info on the restoration process, especially advice
|
22 |
// Add in downloading in the 'Restore' modal, and remove the advice to do so manually.
|
23 |
// Save database encryption key inside backup history on per-db basis, so that if it changes we can still decrypt
|
24 |
// Switch to Google Drive SDK. Google folders. https://developers.google.com/drive/folder
|
@@ -26,7 +39,6 @@ TODO - some of these are out of date/done, needs pruning
|
|
26 |
// Affiliate links? (I have no need...)
|
27 |
// Convert S3.php to use WP's native HTTP functions
|
28 |
// Ability to re-scan existing cloud storage
|
29 |
-
// Migrator - search+replace the database, list+download from remote, kick-off backup remotely
|
30 |
// Dropbox uses one mcrypt function - port to phpseclib for more portability
|
31 |
// Store meta-data on which version of UD the backup was made with (will help if we ever introduce quirks that need ironing)
|
32 |
// Test restoration when uploads dir is /assets/ (e.g. with Shoestrap theme)
|
@@ -36,7 +48,7 @@ TODO - some of these are out of date/done, needs pruning
|
|
36 |
//Do an automated test periodically for the success of loop-back connections
|
37 |
//When a manual backup is run, use a timer to update the 'Download backups and logs' section, just like 'Last finished backup run'. Beware of over-writing anything that's in there from a resumable downloader.
|
38 |
//Change DB encryption to not require whole gzip in memory (twice)
|
39 |
-
//Add Box.Net, SugarSync
|
40 |
//Make it easier to find add-ons
|
41 |
//The restorer has a hard-coded wp-content - fix
|
42 |
//?? On 'backup now', open up a modal, count down 5 seconds, open page via modal, then start examining the log file (if it can be found)
|
@@ -92,7 +104,7 @@ define('UPDRAFT_TRANSTIME', 3600*9+5);
|
|
92 |
if (is_file(UPDRAFTPLUS_DIR.'/premium.php')) require_once(UPDRAFTPLUS_DIR.'/premium.php');
|
93 |
if (is_file(UPDRAFTPLUS_DIR.'/autoload.php')) require_once(UPDRAFTPLUS_DIR.'/autoload.php');
|
94 |
|
95 |
-
if ($dir_handle = opendir(UPDRAFTPLUS_DIR.'/addons')) {
|
96 |
while ($e = readdir($dir_handle)) {
|
97 |
if (is_file(UPDRAFTPLUS_DIR.'/addons/'.$e) && preg_match('/\.php$/', $e)) {
|
98 |
include_once(UPDRAFTPLUS_DIR.'/addons/'.$e);
|
@@ -229,7 +241,8 @@ class UpdraftPlus {
|
|
229 |
function handle_url_actions() {
|
230 |
|
231 |
// First, basic security check: must be an admin page, with ability to manage options, with the right parameters
|
232 |
-
|
|
|
233 |
if (preg_match("/^updraftmethod-([a-z]+)-([a-z]+)$/", $_GET['action'], $matches) && file_exists(UPDRAFTPLUS_DIR.'/methods/'.$matches[1].'.php')) {
|
234 |
$method = $matches[1];
|
235 |
require_once(UPDRAFTPLUS_DIR.'/methods/'.$method.'.php');
|
@@ -418,7 +431,7 @@ class UpdraftPlus {
|
|
418 |
|
419 |
$arr = apply_filters('updraft_backupable_file_entities', $arr, $full_info);
|
420 |
|
421 |
-
// We
|
422 |
if ($include_others) {
|
423 |
if ($full_info) {
|
424 |
$arr['others'] = array('path' => WP_CONTENT_DIR, 'description' => __('Others','updraftplus'));
|
@@ -427,6 +440,9 @@ class UpdraftPlus {
|
|
427 |
}
|
428 |
}
|
429 |
|
|
|
|
|
|
|
430 |
return $arr;
|
431 |
|
432 |
}
|
@@ -1270,9 +1286,14 @@ class UpdraftPlus {
|
|
1270 |
|
1271 |
function backup_db_header() {
|
1272 |
|
1273 |
-
|
1274 |
-
$
|
1275 |
-
|
|
|
|
|
|
|
|
|
|
|
1276 |
$this->stow("#\n");
|
1277 |
$this->stow("# " . sprintf(__('Generated: %s','wp-db-backup'),date("l j. F Y H:i T")) . "\n");
|
1278 |
$this->stow("# " . sprintf(__('Hostname: %s','wp-db-backup'),DB_HOST) . "\n");
|
@@ -1288,6 +1309,17 @@ class UpdraftPlus {
|
|
1288 |
$this->stow("/*!40101 SET foreign_key_checks = 0 */;\n");
|
1289 |
}
|
1290 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1291 |
/* This function is resumable, using the following method:
|
1292 |
- Each table is written out to ($final_filename).table.tmp
|
1293 |
- When the writing finishes, it is renamed to ($final_filename).table
|
@@ -1326,6 +1358,9 @@ class UpdraftPlus {
|
|
1326 |
|
1327 |
$stitch_files = array();
|
1328 |
|
|
|
|
|
|
|
1329 |
foreach ($all_tables as $table) {
|
1330 |
$total_tables++;
|
1331 |
// Increase script execution time-limit to 15 min for every table.
|
@@ -1454,7 +1489,7 @@ class UpdraftPlus {
|
|
1454 |
$this->stow("#\n");
|
1455 |
$this->stow("\n");
|
1456 |
|
1457 |
-
$create_table = $wpdb->get_results("SHOW CREATE TABLE
|
1458 |
if (false === $create_table) {
|
1459 |
$err_msg = sprintf(__('Error with SHOW CREATE TABLE for %s.','wp-db-backup'), $table);
|
1460 |
//$this->error($err_msg);
|
@@ -1468,7 +1503,20 @@ class UpdraftPlus {
|
|
1468 |
}
|
1469 |
|
1470 |
// Comment in SQL-file
|
1471 |
-
$this->stow("\n\n#\n# " . sprintf('Data contents of table %s',$this->backquote($table)) . "\n
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1472 |
}
|
1473 |
|
1474 |
// In UpdraftPlus, segment is always 'none'
|
4 |
Plugin URI: http://updraftplus.com
|
5 |
Description: Backup and restore: take backups locally, or backup to Amazon S3, Dropbox, Google Drive, Rackspace, (S)FTP, WebDAV & email, on automatic schedules.
|
6 |
Author: UpdraftPlus.Com, DavidAnderson
|
7 |
+
Version: 1.6.1
|
8 |
Donate link: http://david.dw-perspective.org.uk/donate
|
9 |
License: GPLv3 or later
|
10 |
Text Domain: updraftplus
|
13 |
|
14 |
/*
|
15 |
TODO - some of these are out of date/done, needs pruning
|
16 |
+
// When you migrate/restore, if there is a .htaccess, warn/give option about it.
|
17 |
// Add an appeal for translators to email me.
|
18 |
+
// Embed changelog in UpdraftPlus.Com - see http://wordpress.org/extend/plugins/wp-readme-parser/
|
19 |
+
// Fix generation of excessive transients
|
20 |
+
// Deal with gigantic database tables - e.g. those over a million rows on cheap hosting. Also indicate beforehand how many rows there are.
|
21 |
+
// Some code assumes that the updraft_dir is inside WP_CONTENT_DIR. We should be using WP_Filesystem::find_folder to remove this assumption
|
22 |
+
// When restoring core, need an option to retain database settings / exclude wp-config.php
|
23 |
+
// Produce a command-line version of the restorer (so that people with shell access are immune from server-enforced timeouts)
|
24 |
+
// More sophisticated pruning options - e.g. "but only keep 1 backup every <x> <days> after <y> <weeks>"
|
25 |
+
// Migrator - search+replace the database, list+download from remote, kick-off backup remotely
|
26 |
+
// April 20, 2015: This is the date when the Google Documents API is likely to stop working (https://developers.google.com/google-apps/documents-list/terms)
|
27 |
+
// Fix-time add-on should also fix the day/date, when relevant
|
28 |
// Search for other TODO-s in the code
|
29 |
+
// Stand-alone installer - take a look at this: http://wordpress.org/extend/plugins/duplicator/screenshots/
|
30 |
+
// Migrator should search+replace table by table if possible. Pick the "Backup of: " field out the db dump to get site_url() in advance. Perform an action each table. Remember which ones have been done. Then at the end, pick up those not done.
|
31 |
+
// More DB add-on (other non-WP tables; even other databases)
|
32 |
+
// Unlimited customers should be auto-emailed each time they add a site (security)
|
33 |
// Update all-features page at updraftplus.com (not updated after 1.5.5)
|
|
|
34 |
// Count available time before doing a database restore
|
|
|
35 |
// Add in downloading in the 'Restore' modal, and remove the advice to do so manually.
|
36 |
// Save database encryption key inside backup history on per-db basis, so that if it changes we can still decrypt
|
37 |
// Switch to Google Drive SDK. Google folders. https://developers.google.com/drive/folder
|
39 |
// Affiliate links? (I have no need...)
|
40 |
// Convert S3.php to use WP's native HTTP functions
|
41 |
// Ability to re-scan existing cloud storage
|
|
|
42 |
// Dropbox uses one mcrypt function - port to phpseclib for more portability
|
43 |
// Store meta-data on which version of UD the backup was made with (will help if we ever introduce quirks that need ironing)
|
44 |
// Test restoration when uploads dir is /assets/ (e.g. with Shoestrap theme)
|
48 |
//Do an automated test periodically for the success of loop-back connections
|
49 |
//When a manual backup is run, use a timer to update the 'Download backups and logs' section, just like 'Last finished backup run'. Beware of over-writing anything that's in there from a resumable downloader.
|
50 |
//Change DB encryption to not require whole gzip in memory (twice)
|
51 |
+
//Add DreamObjects, Box.Net, SugarSync, Me.Ga support??
|
52 |
//Make it easier to find add-ons
|
53 |
//The restorer has a hard-coded wp-content - fix
|
54 |
//?? On 'backup now', open up a modal, count down 5 seconds, open page via modal, then start examining the log file (if it can be found)
|
104 |
if (is_file(UPDRAFTPLUS_DIR.'/premium.php')) require_once(UPDRAFTPLUS_DIR.'/premium.php');
|
105 |
if (is_file(UPDRAFTPLUS_DIR.'/autoload.php')) require_once(UPDRAFTPLUS_DIR.'/autoload.php');
|
106 |
|
107 |
+
if (is_dir(UPDRAFTPLUS_DIR.'/addons') && $dir_handle = opendir(UPDRAFTPLUS_DIR.'/addons')) {
|
108 |
while ($e = readdir($dir_handle)) {
|
109 |
if (is_file(UPDRAFTPLUS_DIR.'/addons/'.$e) && preg_match('/\.php$/', $e)) {
|
110 |
include_once(UPDRAFTPLUS_DIR.'/addons/'.$e);
|
241 |
function handle_url_actions() {
|
242 |
|
243 |
// First, basic security check: must be an admin page, with ability to manage options, with the right parameters
|
244 |
+
// Also, only on GET because WordPress on the options page repeats parameters sometimes when POST-ing via the _wp_referer field
|
245 |
+
if (isset($_SERVER['REQUEST_METHOD']) && 'GET' == $_SERVER['REQUEST_METHOD'] && UpdraftPlus_Options::user_can_manage() && isset( $_GET['page'] ) && $_GET['page'] == 'updraftplus' && isset($_GET['action']) ) {
|
246 |
if (preg_match("/^updraftmethod-([a-z]+)-([a-z]+)$/", $_GET['action'], $matches) && file_exists(UPDRAFTPLUS_DIR.'/methods/'.$matches[1].'.php')) {
|
247 |
$method = $matches[1];
|
248 |
require_once(UPDRAFTPLUS_DIR.'/methods/'.$method.'.php');
|
431 |
|
432 |
$arr = apply_filters('updraft_backupable_file_entities', $arr, $full_info);
|
433 |
|
434 |
+
// We then add 'others' on to the end
|
435 |
if ($include_others) {
|
436 |
if ($full_info) {
|
437 |
$arr['others'] = array('path' => WP_CONTENT_DIR, 'description' => __('Others','updraftplus'));
|
440 |
}
|
441 |
}
|
442 |
|
443 |
+
// Entries that should be added after 'others'
|
444 |
+
$arr = apply_filters('updraft_backupable_file_entities_final', $arr, $full_info);
|
445 |
+
|
446 |
return $arr;
|
447 |
|
448 |
}
|
1286 |
|
1287 |
function backup_db_header() {
|
1288 |
|
1289 |
+
@include(ABSPATH.'wp-includes/version.php');
|
1290 |
+
global $wp_version;
|
1291 |
+
|
1292 |
+
$this->stow("# WordPress MySQL database backup\n");
|
1293 |
+
$this->stow("# Created by UpdraftPlus version ".$this->version." (http://updraftplus.com)\n");
|
1294 |
+
$this->stow("# WordPress Version: $wp_version, running on PHP ".phpversion()." (".$_SERVER["SERVER_SOFTWARE"].")\n");
|
1295 |
+
$this->stow("# Backup of: ".site_url()."\n");
|
1296 |
+
|
1297 |
$this->stow("#\n");
|
1298 |
$this->stow("# " . sprintf(__('Generated: %s','wp-db-backup'),date("l j. F Y H:i T")) . "\n");
|
1299 |
$this->stow("# " . sprintf(__('Hostname: %s','wp-db-backup'),DB_HOST) . "\n");
|
1309 |
$this->stow("/*!40101 SET foreign_key_checks = 0 */;\n");
|
1310 |
}
|
1311 |
|
1312 |
+
// The purpose of this function is to make sure that the options table is put in the database first, then the usermeta table
|
1313 |
+
function backup_db_sorttables($a, $b) {
|
1314 |
+
global $table_prefix;
|
1315 |
+
if ($a == $b) return 0;
|
1316 |
+
if ($a == $table_prefix.'options') return -1;
|
1317 |
+
if ($b == $table_prefix.'options') return 1;
|
1318 |
+
if ($a == $table_prefix.'usermeta') return -1;
|
1319 |
+
if ($b == $table_prefix.'usermeta') return 1;
|
1320 |
+
return strcmp($a, $b);
|
1321 |
+
}
|
1322 |
+
|
1323 |
/* This function is resumable, using the following method:
|
1324 |
- Each table is written out to ($final_filename).table.tmp
|
1325 |
- When the writing finishes, it is renamed to ($final_filename).table
|
1358 |
|
1359 |
$stitch_files = array();
|
1360 |
|
1361 |
+
// Put the options table first
|
1362 |
+
usort($all_tables, array($this, 'backup_db_sorttables'));
|
1363 |
+
|
1364 |
foreach ($all_tables as $table) {
|
1365 |
$total_tables++;
|
1366 |
// Increase script execution time-limit to 15 min for every table.
|
1489 |
$this->stow("#\n");
|
1490 |
$this->stow("\n");
|
1491 |
|
1492 |
+
$create_table = $wpdb->get_results("SHOW CREATE TABLE `$table`", ARRAY_N);
|
1493 |
if (false === $create_table) {
|
1494 |
$err_msg = sprintf(__('Error with SHOW CREATE TABLE for %s.','wp-db-backup'), $table);
|
1495 |
//$this->error($err_msg);
|
1503 |
}
|
1504 |
|
1505 |
// Comment in SQL-file
|
1506 |
+
$this->stow("\n\n#\n# " . sprintf('Data contents of table %s',$this->backquote($table)) . "\n");
|
1507 |
+
|
1508 |
+
$table_status = $wpdb->get_row("SHOW TABLE STATUS WHERE Name='$table'");
|
1509 |
+
if (isset($table_status->Rows)) {
|
1510 |
+
$rows = $table_status->Rows;
|
1511 |
+
$this->log("Table $table: Total expected rows (approximate): ".$rows);
|
1512 |
+
$this->stow("# Approximate rows expected in table: $rows\n");
|
1513 |
+
if ($rows > 500000) {
|
1514 |
+
$this->log("Table $table: $rows is very many rows - we hope your web hosting company gives you enough resources to dump out that table in the backup");
|
1515 |
+
}
|
1516 |
+
}
|
1517 |
+
|
1518 |
+
$this->stow("#\n\n");
|
1519 |
+
|
1520 |
}
|
1521 |
|
1522 |
// In UpdraftPlus, segment is always 'none'
|