UpdraftPlus WordPress Backup Plugin - Version 1.6.17

Version Description

  • 2013/06/06 =
  • FEATURE: News blog - http://updraftplus.com/news/ - please subscribe if you want to stay up to date with news of new features, tips, and special offers. RSS link: http://feeds.feedburner.com/UpdraftPlus
  • FEATURE: Restoration/migration now copes with a change of table prefix, and asks WordPress to recreate your .htaccess/web.config file
  • FEATURE: Add support for DreamHost DreamObjects (http://dreamhost.com/cloud/dreamobjects/)
  • FEATURE: Polski / Polish (pl_PL) translation: thanks to Bartosz Kaczmarek (barth.kaczmarek at gmail.com)
  • FEATURE: Add expert options to count expected uncompressed backup size, show/delete active jobs, and PHP info
  • FEATURE: Send backup reports to multiple addresses (comma-separate the addresses you wish to use)
  • FIX: Inform users of Dropbox tokens which stop working
  • FIX: Don't flag an error if mu-plugins are selected, but none are found and WordPress agrees that none exist
  • COMPATIBILITY: WordPress multisite post-3.5 does not store blog uploads separately from main uploads directory
  • COMPATIBILITY: Now marked as compatible with WordPress 3.6
  • TWEAK: When errors occur, list them in the notification email and attach the log file
  • TWEAK: Use only one transient per job, and clean it up upon completion
  • TWEAK: Added a "Clone/Migrate" button to give a visual clue for people wanting to do this
  • TWEAK: More verbose error reporting from PclZip
  • TWEAK: After database restoration, permalinks are flushed (often helps regenerate .htaccess+web.config files)
  • TWEAK: Database backups now put the options table first, to allow earlier changing of site URL upon migration
  • TWEAK: Show PHP + web server versions in the debug information
  • TWEAK: More sophisticated attempts to get a writable backup directory, and more helpful messages if we can't
  • TWEAK: Some more logging, data-gathering and algorithm-tweaking to especially improve the chances for people with astonishingly slow web hosting, but also tweaks that improve efficiency everywhere, especially for larger backup sets.
  • TWEAK: Migrator plugin now does search+replace after each table (instead of after them all)
  • TWEAK: Clean up temporary files earlier where safe+possible (can lower disk space requirements)
  • TWEAK: Re-scan of known sets now removes those known to be gone from the list
  • TWEAK: Made a few things use AJAX instead of full page loads
  • TWEAK: Replace Rackspace logo with current version
  • TWEAK: Make missing PHP component warnings more prominent
  • TWEAK: Warn users if they have W3 Total Cache's object cache (which has a bug that affects scheduled tasks) active.
  • TWEAK: Add a notice for users who have turned on debugging (some forget to turn it off, then ask for support when they see lots of debugging notices)
Download this release

Release Info

Developer DavidAnderson
Plugin Icon 128x128 UpdraftPlus WordPress Backup Plugin
Version 1.6.17
Comparing to
See all releases

Code changes from version 1.6.2 to 1.6.17

Files changed (38) hide show
  1. admin.php +461 -102
  2. backup.php +254 -15
  3. images/dreamobjects_logo-horiz-2013.png +0 -0
  4. images/rackspacecloud-logo.png +0 -0
  5. includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php +8 -1
  6. includes/Dropbox/OAuth/Storage/Encrypter.php +9 -2
  7. includes/S3.php +7 -2
  8. includes/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  9. includes/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  10. includes/images/ui-bg_flat_10_000000_40x100.png +0 -0
  11. includes/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  12. includes/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  13. includes/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  14. includes/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  15. includes/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  16. includes/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  17. includes/images/ui-icons_222222_256x240.png +0 -0
  18. includes/images/ui-icons_228ef1_256x240.png +0 -0
  19. includes/images/ui-icons_ef8c08_256x240.png +0 -0
  20. includes/images/ui-icons_ffd27a_256x240.png +0 -0
  21. includes/images/ui-icons_ffffff_256x240.png +0 -0
  22. includes/updraft-restorer.php +327 -18
  23. index.html +67 -0
  24. languages/updraftplus-it_IT.mo +0 -0
  25. languages/updraftplus-it_IT.po +2256 -0
  26. languages/updraftplus-pl_PL.mo +0 -0
  27. languages/updraftplus-pl_PL.po +2020 -0
  28. languages/updraftplus.pot +715 -496
  29. methods/cloudfiles.php +16 -17
  30. methods/dreamobjects.php +35 -0
  31. methods/dropbox.php +23 -21
  32. methods/email.php +3 -1
  33. methods/ftp.php +3 -3
  34. methods/googledrive.php +18 -4
  35. methods/s3.php +141 -79
  36. options.php +4 -0
  37. readme.txt +48 -16
  38. updraftplus.php +265 -88
admin.php CHANGED
@@ -27,6 +27,7 @@ class UpdraftPlus_Admin {
27
  add_action('wp_ajax_plupload_action2', array($this,'plupload_action2'));
28
 
29
  global $updraftplus, $wp_version, $pagenow;
 
30
 
31
  // First, the checks that are on all (admin) pages:
32
 
@@ -40,12 +41,26 @@ class UpdraftPlus_Admin {
40
 
41
  if (UpdraftPlus_Options::user_can_manage() && $this->disk_space_check(1024*1024*35) === false) add_action('admin_notices', array($this, 'show_admin_warning_diskspace'));
42
 
 
 
 
43
  // Next, the actions that only come on the UpdraftPlus page
44
  if ($pagenow != 'options-general.php' || !isset($_REQUEST['page']) || 'updraftplus' != $_REQUEST['page']) return;
45
 
46
  if(UpdraftPlus_Options::get_updraft_option('updraft_debug_mode')) {
47
  @ini_set('display_errors',1);
48
  @error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
 
 
 
 
 
 
 
 
 
 
 
49
  }
50
 
51
  // LiteSpeed has a generic problem with terminating cron jobs
@@ -106,6 +121,13 @@ class UpdraftPlus_Admin {
106
  var updraft_downloader_nonce = '<?php wp_create_nonce("updraftplus_download"); ?>'
107
  </script>
108
  <style type="text/css">
 
 
 
 
 
 
 
109
  .drag-drop #drag-drop-area2 {
110
  border: 4px dashed #ddd;
111
  height: 200px;
@@ -182,6 +204,15 @@ class UpdraftPlus_Admin {
182
  $this->show_admin_warning('<strong>'.__('Warning','updraftplus').':</strong> '.sprintf(__('Your website is hosted using the %s web server.','updraftplus'),'LiteSpeed').' <a href="http://updraftplus.com/faqs/i-am-having-trouble-backing-up-and-my-web-hosting-company-uses-the-litespeed-webserver/">'.__('Please consult this FAQ if you have problems backing up.', 'updraftplus').'</a>');
183
  }
184
 
 
 
 
 
 
 
 
 
 
185
  function show_admin_warning_dropbox() {
186
  $this->show_admin_warning('<strong>'.__('UpdraftPlus notice:','updraftplus').'</strong> <a href="options-general.php?page=updraftplus&action=updraftmethod-dropbox-auth&updraftplus_dropboxauth=doit">'.sprintf(__('Click here to authenticate your %s account (you will not be able to back up to %s without it).','updraftplus'),'Dropbox','Dropbox').'</a>');
187
  }
@@ -276,7 +307,7 @@ class UpdraftPlus_Admin {
276
  $updraftplus->log('The file was found locally and matched the recorded size from the backup history ('.round($known_size/1024,1).' Kb)');
277
  } else {
278
  $updraftplus->log('No file size was found recorded in the backup history. We will assume the local one is complete.');
279
- $known_size = filesize($fullpath);
280
  }
281
 
282
  // The AJAX responder that updates on progress wants to see this
@@ -348,16 +379,61 @@ class UpdraftPlus_Admin {
348
 
349
  global $updraftplus;
350
 
351
- // Test the nonce (probably not needed, since we're presumably admin-authed, but there's no harm)
352
  $nonce = (empty($_REQUEST['nonce'])) ? "" : $_REQUEST['nonce'];
353
  if (! wp_verify_nonce($nonce, 'updraftplus-credentialtest-nonce') || empty($_REQUEST['subaction'])) die('Security check');
354
 
355
  if ('lastlog' == $_GET['subaction']) {
356
  echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_lastmessage', '('.__('Nothing yet logged', 'updraftplus').')'));
 
 
 
 
 
 
 
 
 
 
 
 
 
357
  } elseif ('lastbackup' == $_GET['subaction']) {
358
  echo $this->last_backup_html();
359
- } elseif ('diskspaceused' == $_GET['subaction']) {
360
- echo $this->recursive_directory_size($updraftplus->backups_dir_location());
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
361
  } elseif ('historystatus' == $_GET['subaction']) {
362
  $rescan = (isset($_GET['rescan']) && $_GET['rescan'] == 1);
363
  if ($rescan) $this->rebuild_backup_history();
@@ -608,11 +684,13 @@ class UpdraftPlus_Admin {
608
  */
609
  if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'updraft_restore' && isset($_REQUEST['backup_timestamp'])) {
610
  $backup_success = $this->restore_backup($_REQUEST['backup_timestamp']);
611
- if(empty($updraftplus->errors) && $backup_success == true) {
 
 
612
  echo '<p><strong>'.__('Restore successful!','updraftplus').'</strong></p>';
613
  echo '<b>'.__('Actions','updraftplus').':</b> <a href="options-general.php?page=updraftplus&updraft_restore_success=true">'.__('Return to UpdraftPlus Configuration','updraftplus').'</a>';
614
  return;
615
- } else {
616
  echo '<p>Restore failed...</p><ul style="list-style: disc inside;">';
617
  foreach ($updraftplus->errors as $err) {
618
  if (is_wp_error($err)) {
@@ -627,6 +705,9 @@ class UpdraftPlus_Admin {
627
  }
628
  echo '</ul><b>Actions:</b> <a href="options-general.php?page=updraftplus">'.__('Return to UpdraftPlus Configuration','updraftplus').'</a>';
629
  return;
 
 
 
630
  }
631
  //uncomment the below once i figure out how i want the flow of a restoration to work.
632
  //echo '<b>'__('Actions','updraftplus').':</b> <a href="options-general.php?page=updraftplus">Return to UpdraftPlus Configuration</a>';
@@ -652,27 +733,23 @@ class UpdraftPlus_Admin {
652
  if(isset($_GET['error'])) $this->show_admin_warning(htmlspecialchars($_GET['error']), 'error');
653
  if(isset($_GET['message'])) $this->show_admin_warning(htmlspecialchars($_GET['message']));
654
 
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
  }
664
 
665
- if(isset($_POST['action']) && $_POST['action'] == 'updraft_backup') {
666
- // For unknown reasons, the <script> runs twice if put inside the <div>
667
- echo '<div class="updated fade" style="max-width: 800px; font-size:140%; line-height: 140%; padding:14px; clear:left;"><strong>',__('Schedule backup','updraftplus').':</strong> ';
668
- if (wp_schedule_single_event(time()+5, 'updraft_backup_all') === false) {
669
- $updraftplus->log("A backup run failed to schedule");
670
- echo __("Failed.",'updraftplus')."</div>";
671
- } else {
672
- echo htmlspecialchars(__('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.','updraftplus'))." <a href=\"http://updraftplus.com/faqs/my-scheduled-backups-and-pressing-backup-now-does-nothing-however-pressing-debug-backup-does-produce-a-backup/\">".__('Nothing happening? Follow this link for help.','updraftplus')."</a></div><script>setTimeout(function(){updraft_showlastbackup();}, 7000);</script>";
673
- $updraftplus->log("A backup run has been scheduled");
674
- }
675
- }
676
 
677
  // updraft_file_ids is not deleted
678
  if(isset($_POST['action']) && $_POST['action'] == 'updraft_backup_debug_all') { $updraftplus->boot_backup(true,true); }
@@ -690,12 +767,10 @@ class UpdraftPlus_Admin {
690
  <div class="wrap">
691
  <h1><?php echo $updraftplus->plugin_title; ?></h1>
692
 
693
- <?php _e('By UpdraftPlus.Com','updraftplus')?> ( <a href="http://updraftplus.com">UpdraftPlus.Com</a> | <a href="http://david.dw-perspective.org.uk"><?php _e("Lead developer's homepage",'updraftplus');?></a> | <?php if (!defined('UPDRAFTPLUS_NOADS')) { ?><a href="http://wordshell.net">WordShell - WordPress command line</a> | <a href="http://david.dw-perspective.org.uk/donate"><?php _e('Donate','updraftplus');?></a> | <?php } ?><a href="http://updraftplus.com/support/frequently-asked-questions/">FAQs</a> | <a href="http://profiles.wordpress.org/davidanderson/"><?php _e('Other WordPress plugins','updraftplus');?></a>). <?php _e('Version','updraftplus');?>: <?php echo $updraftplus->version; ?>
694
  <br>
695
  <?php
696
  if(isset($_GET['updraft_restore_success'])) {
697
- // If we restored the database, then that will have out-of-date information which may confuse the user - so automatically re-scan for them.
698
- $this->rebuild_backup_history();
699
  echo "<div class=\"updated fade\" style=\"padding:8px;\"><strong>".__('Your backup has been restored.','updraftplus').'</strong> '.__('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.')."</div>";
700
  }
701
 
@@ -787,21 +862,24 @@ class UpdraftPlus_Admin {
787
  <td id="updraft_last_backup"><?php echo $last_backup_html ?></td>
788
  </tr>
789
  </table>
790
- <div style="float:left; width:200px; padding-top: 20px;">
791
- <p><button type="button" <?php echo $backup_disabled ?> class="button-primary" style="padding-top:2px;padding-bottom:2px;font-size:22px !important; min-height: 32px;" onclick="jQuery('#updraft-backupnow-modal').dialog('open');"><?php _e('Backup Now','updraftplus');?></button></p>
792
- <div style="position:relative">
793
- <div style="position:absolute;top:0;left:0">
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>
802
  <br style="clear:both" />
803
  <table class="form-table">
804
- <tr>
805
  <th><?php _e('Last log message','updraftplus');?>:</th>
806
  <td>
807
  <span id="updraft_lastlogcontainer"><?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_lastmessage', __('(Nothing yet logged)','updraftplus'))); ?></span><br>
@@ -810,10 +888,21 @@ class UpdraftPlus_Admin {
810
  </tr>
811
  <tr>
812
  <th><?php echo htmlspecialchars(__('Backups, logs & restoring','updraftplus')); ?>:</th>
813
- <td><a id="updraft_showbackups" href="#" title="<?php _e('Press to see available backups','updraftplus');?>" onclick="jQuery('.download-backups').toggle(); updraft_historytimertoggle(0);"><?php echo sprintf(__('%d set(s) available', 'updraftplus'), count($backup_history)); ?></a></td>
 
 
 
 
 
 
 
814
  </tr>
 
 
 
815
  <tr>
816
- <td></td><td class="download-backups" style="display:none; border: 1px dotted;">
 
817
  <p style="max-width: 740px;"><ul style="list-style: disc inside;">
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>
@@ -824,7 +913,7 @@ class UpdraftPlus_Admin {
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;">
827
- <p><em><?php _e("Upload files into UpdraftPlus. Use this to import backups made on a different WordPress installation." ,'updraftplus');?></em></p>
828
  <div id="plupload-upload-ui" style="width: 70%;">
829
  <div id="drag-drop-area">
830
  <div class="drag-drop-inside">
@@ -843,7 +932,7 @@ class UpdraftPlus_Admin {
843
  <script>
844
  function updraftplus_diskspace() {
845
  jQuery('#updraft_diskspaceused').html('<em><?php _e('calculating...','updraftplus');?></em>');
846
- jQuery.get(ajaxurl, { action: 'updraft_ajax', subaction: 'diskspaceused', nonce: '<?php echo wp_create_nonce('updraftplus-credentialtest-nonce'); ?>' }, function(response) {
847
  jQuery('#updraft_diskspaceused').html(response);
848
  });
849
  }
@@ -871,9 +960,9 @@ class UpdraftPlus_Admin {
871
  // Create somewhere for the status to be found
872
  var stid = base+nonce+'_'+what;
873
  if (!jQuery('#'+stid).length) {
874
- jQuery('#ud_downloadstatus').append('<div style="clear:left; border: 1px solid; padding: 8px; margin-top: 4px; max-width:840px;" id="'+stid+'"><button onclick="jQuery(\'#'+stid+'\').fadeOut().remove();" type="button" style="float:right; margin-bottom: 8px;">X</button><strong>Download '+what+' ('+nonce+')</strong>:<div class="raw">Begun looking for this entity</div><div class="file" id="'+stid+'_st"><div class="dlfileprogress" style="width: 0;"></div></div>');
875
  // <b><span class="dlname">??</span></b> (<span class="dlsofar">?? KB</span>/<span class="dlsize">??</span> KB)
876
- setTimeout(function(){updraft_downloader_status(base, nonce, what)}, 300);
877
  }
878
  // Now send the actual request to kick it all off
879
  jQuery.post(ajaxurl, jQuery('#uddownloadform_'+what+'_'+nonce).serialize());
@@ -920,7 +1009,7 @@ class UpdraftPlus_Admin {
920
  alert('<?php _e('Download error: the server sent us a response (JSON) which we did not understand', 'updraftplus'); ?> ('+response+')');
921
  cancel_repeat = 1;
922
  }
923
- if (cancel_repeat == 0) { setTimeout(function(){updraft_downloader_status(base, nonce, what)}, nexttimer); }
924
  } catch(err) {
925
  alert('<?php _e('Download error: the server sent us a response which we did not understand.', 'updraftplus'); ?> <?php _e("Error:",'updraftplus');?> '+err);
926
  }
@@ -937,6 +1026,21 @@ class UpdraftPlus_Admin {
937
  </tr>
938
  </table>
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>
@@ -1000,12 +1104,25 @@ class UpdraftPlus_Admin {
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>
1001
  </div>
1002
 
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
 
1010
  <p><?php _e('Does nothing happen when you schedule backups?','updraftplus');?> <a href="http://updraftplus.com/faqs/my-scheduled-backups-and-pressing-backup-now-does-nothing-however-pressing-debug-backup-does-produce-a-backup/"><?php _e('Go here for help.','updraft');?></a></p>
1011
  </div>
@@ -1022,52 +1139,133 @@ class UpdraftPlus_Admin {
1022
  </tr>
1023
  </table>
1024
  <?php } ?>
1025
- <h2><?php _e('Configure Backup Contents And Schedule','updraftplus');?></h2>
1026
  <?php UpdraftPlus_Options::options_form_begin(); ?>
1027
  <?php $this->settings_formcontents($last_backup_html); ?>
1028
  </form>
1029
  <div style="padding-top: 40px; display:none;" class="expertmode">
1030
  <hr>
1031
- <h3><?php _e('Debug Information And Expert Options','updraftplus');?></h3>
1032
  <p>
1033
  <?php
 
1034
  $peak_memory_usage = memory_get_peak_usage(true)/1024/1024;
1035
  $memory_usage = memory_get_usage(true)/1024/1024;
1036
  echo __('Peak memory usage','updraftplus').': '.$peak_memory_usage.' MB<br/>';
1037
  echo __('Current memory usage','updraftplus').': '.$memory_usage.' MB<br/>';
1038
  echo __('PHP memory limit','updraftplus').': '.ini_get('memory_limit').' <br/>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1039
  ?>
 
1040
  </p>
1041
- <p style="max-width: 600px;"><?php _e('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.','updraftplus');?></p>
1042
 
 
 
 
 
1043
  <form method="post">
1044
  <input type="hidden" name="action" value="updraft_backup_debug_all" />
1045
  <p><input type="submit" class="button-primary" <?php echo $backup_disabled ?> value="<?php _e('Debug Full Backup','updraftplus');?>" onclick="return(confirm('<?php echo htmlspecialchars(__('This will cause an immediate backup. The page will stall loading until it finishes (ie, unscheduled).','updraftplus'));?>'))" /></p>
1046
  </form>
 
1047
  <form method="post">
1048
  <input type="hidden" name="action" value="updraft_backup_debug_db" />
1049
  <p><input type="submit" class="button-primary" <?php echo $backup_disabled ?> value="<?php _e('Debug Database Backup','updraftplus');?>" onclick="return(confirm('<?php echo htmlspecialchars(__('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..','updraftplus'));?>'))" /></p>
1050
  </form>
 
 
 
 
1051
  <h3><?php _e('Wipe Settings','updraftplus');?></h3>
1052
  <p style="max-width: 600px;"><?php _e('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.','updraftplus');?></p>
1053
  <form method="post">
1054
  <input type="hidden" name="action" value="updraft_wipesettings" />
1055
  <p><input type="submit" class="button-primary" value="<?php _e('Wipe All Settings','updraftplus'); ?>" onclick="return(confirm('<?php echo htmlspecialchars(__('This will delete all your UpdraftPlus settings - are you sure you want to do this?'));?>'))" /></p>
1056
  </form>
 
 
 
 
1057
  </div>
1058
 
1059
  <script type="text/javascript">
1060
  /* <![CDATA[ */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1061
  jQuery(document).ready(function() {
 
1062
  jQuery('#updraft-service').change(function() {
1063
  jQuery('.updraftplusmethod').hide();
1064
  var active_class = jQuery(this).val();
1065
  jQuery('.'+active_class).show();
1066
  });
 
 
 
 
 
 
1067
  })
1068
  jQuery(window).load(function() {
1069
  //this is for hiding the restore progress at the top after it is done
1070
- setTimeout('jQuery("#updraft-restore-progress").toggle(1000)',3000)
1071
  jQuery('#updraft-restore-progress-toggle').click(function() {
1072
  jQuery('#updraft-restore-progress').toggle(500)
1073
  })
@@ -1077,6 +1275,29 @@ class UpdraftPlus_Admin {
1077
  <?php
1078
  }
1079
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1080
  //deletes the -old directories that are created when a backup is restored.
1081
  function delete_old_dirs() {
1082
  global $wp_filesystem;
@@ -1109,21 +1330,56 @@ class UpdraftPlus_Admin {
1109
  return $return_code;
1110
  }
1111
 
 
1112
  function create_backup_dir() {
 
1113
  global $wp_filesystem, $updraftplus;
1114
- $credentials = request_filesystem_credentials("options-general.php?page=updraftplus&action=updraft_create_backup_dir");
1115
- WP_Filesystem($credentials);
1116
- if ( $wp_filesystem->errors->get_error_code() ) {
1117
- foreach ( $wp_filesystem->errors->get_error_messages() as $message ) show_message($message);
1118
- exit;
 
 
 
 
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;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1127
 
1128
  return true;
1129
  }
@@ -1137,7 +1393,7 @@ class UpdraftPlus_Admin {
1137
  function scan_old_dirs() {
1138
  $dirArr = scandir(WP_CONTENT_DIR);
1139
  foreach($dirArr as $dir) {
1140
- if(strpos($dir,'-old') !== false) return true;
1141
  }
1142
  return false;
1143
  }
@@ -1275,7 +1531,7 @@ ENDHERE;
1275
  </tr>
1276
  <tr>
1277
  <th><?php _e('Email','updraftplus'); ?>:</th>
1278
- <td><input type="text" style="width:260px" name="updraft_email" value="<?php echo UpdraftPlus_Options::get_updraft_option('updraft_email'); ?>" /> <br><?php _e('Enter an address here to have a report sent (and the whole backup, if you choose) to it.','updraftplus'); ?></td>
1279
  </tr>
1280
 
1281
  <tr>
@@ -1353,11 +1609,11 @@ ENDHERE;
1353
  subaction: 'lastlog',
1354
  nonce: '<?php echo wp_create_nonce('updraftplus-credentialtest-nonce'); ?>'
1355
  };
1356
- function updraft_showlastlog(){
1357
  jQuery.get(ajaxurl, lastlog_sdata, function(response) {
1358
  nexttimer = 1500;
1359
  if (lastlog_lastmessage == response) { nexttimer = 4500; }
1360
- setTimeout(function(){updraft_showlastlog()}, nexttimer);
1361
  jQuery('#updraft_lastlogcontainer').html(response);
1362
  lastlog_lastmessage = response;
1363
  });
@@ -1367,11 +1623,11 @@ ENDHERE;
1367
  subaction: 'lastbackup',
1368
  nonce: '<?php echo wp_create_nonce('updraftplus-credentialtest-nonce'); ?>'
1369
  };
1370
- var lastbackup_laststatus = '<?php echo $last_backup_html?>'
1371
  function updraft_showlastbackup(){
1372
  jQuery.get(ajaxurl, lastbackup_sdata, function(response) {
1373
  if (lastbackup_laststatus == response) {
1374
- setTimeout(function(){updraft_showlastbackup()}, 7000);
1375
  } else {
1376
  jQuery('#updraft_last_backup').html(response);
1377
  }
@@ -1395,7 +1651,7 @@ ENDHERE;
1395
  }
1396
  function updraft_updatehistory(rescan) {
1397
  if (rescan == 1) {
1398
- jQuery('#updraft_existing_backups').html('<p style="text-align:center;"><em>Rescanning (looking for backups that you have uploaded manually into the internal backup store)...</em></p>');
1399
  }
1400
  jQuery.get(ajaxurl, { action: 'updraft_ajax', subaction: 'historystatus', nonce: '<?php echo wp_create_nonce('updraftplus-credentialtest-nonce'); ?>', rescan: rescan }, function(response) {
1401
  jQuery('#updraft_existing_backups').html(response);
@@ -1414,6 +1670,16 @@ ENDHERE;
1414
 
1415
  updraft_check_same_times();
1416
 
 
 
 
 
 
 
 
 
 
 
1417
  jQuery( "#updraft-restore-modal" ).dialog({
1418
  autoOpen: false, height: 505, width: 590, modal: true,
1419
  buttons: {
@@ -1435,22 +1701,53 @@ ENDHERE;
1435
  }
1436
  });
1437
 
1438
- jQuery( "#updraft-backupnow-modal" ).dialog({
1439
- autoOpen: false, height: 265, width: 375, modal: true,
 
 
 
 
 
1440
  buttons: {
1441
  '<?php _e('Backup Now','updraftplus');?>': function() {
1442
- jQuery('#updraft-backupnow-form').submit();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1443
  },
1444
  '<?php _e('Cancel','updraftplus');?>': function() { jQuery(this).dialog("close"); }
1445
  }
1446
  });
1447
 
 
 
 
 
 
 
 
1448
  jQuery('#enableexpertmode').click(function() {
1449
  jQuery('.expertmode').fadeIn();
 
 
 
1450
  return false;
1451
  });
1452
  <?php if (!@is_writable($updraft_dir)) echo "jQuery('.backupdirrow').show();\n"; ?>
1453
- setTimeout(function(){updraft_showlastlog();}, 1200);
1454
  jQuery('.updraftplusmethod').hide();
1455
  <?php
1456
  if ($active_service) echo "jQuery('.${active_service}').show();";
@@ -1473,7 +1770,7 @@ ENDHERE;
1473
  </tr>
1474
  <tr>
1475
  <th><?php _e('Expert settings','updraftplus');?>:</th>
1476
- <td><a id="enableexpertmode" href="#"><?php _e('Show expert settings','updraftplus');?></a> - <?php _e("click this to show some further options; don't bother with this unless you have a problem or are curious.",'updraftplus');?> <?php do_action('updraftplus_expertsettingsdescription'); ?></td>
1477
  </tr>
1478
  <?php
1479
  $delete_local = UpdraftPlus_Options::get_updraft_option('updraft_delete_local', 1);
@@ -1496,7 +1793,7 @@ ENDHERE;
1496
  if(@is_writable($updraft_dir)) {
1497
  $dir_info = '<span style="color:green">'.__('Backup directory specified is writable, which is good.','updraftplus').'</span>';
1498
  } else {
1499
- $dir_info = '<span style="color:red">'.__('Backup directory specified is <b>not</b> writable, or does not exist.','updraftplus').' <span style="font-size:110%;font-weight:bold"><a href="options-general.php?page=updraftplus&action=updraft_create_backup_dir">'.__('Click here to attempt to create the directory and set the permissions','updraftplus').'</a></span>, '.__('or, to reset this option','updraftplus').' <a href="#" onclick="jQuery(\'#updraft_dir\').val(\''.WP_CONTENT_DIR.'/updraft\'); return false;">'.__('click here','updraftplus').'</a>. '.__('If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process.','updraftplus').'</span>';
1500
  }
1501
 
1502
  echo $dir_info.' '.__("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...).",'updraftplus');?></td>
@@ -1545,10 +1842,22 @@ ENDHERE;
1545
  <?php
1546
  }
1547
 
1548
- function curl_check($service, $has_fallback = false) {
 
 
 
 
 
 
 
 
 
 
1549
  // Check requirements
1550
  if (!function_exists("curl_init")) {
1551
- ?><p><strong><?php _e('Warning','updraftplus'); ?>:</strong> <?php echo sprintf(__('Your web server\'s PHP installation does not included a required module (%s). Please contact your web hosting provider\'s support.', 'updraftplus'), 'Curl'); ?> <?php echo sprintf(__("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.",'updraftplus'),$service);?></p><?php
 
 
1552
  } else {
1553
  $curl_version = curl_version();
1554
  $curl_ssl_supported= ($curl_version['features'] & CURL_VERSION_SSL);
@@ -1556,7 +1865,7 @@ ENDHERE;
1556
  if ($has_fallback) {
1557
  ?><p><strong><?php _e('Warning','updraftplus'); ?>:</strong> <?php echo sprintf(__("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).",'updraftplus'),$service);?></p><?php
1558
  } else {
1559
- ?><p><strong><?php _e('Warning','updraftplus'); ?>:</strong> <?php echo sprintf(__("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.",'updraftplus'),$service);?></p><?php
1560
  }
1561
  } else {
1562
  ?><p><em><?php echo sprintf(__("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.", 'updraftplus'),$service);?></em></p><?php
@@ -1564,7 +1873,28 @@ ENDHERE;
1564
  }
1565
  }
1566
 
1567
- function recursive_directory_size($directory) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1568
  $size = 0;
1569
  if(substr($directory,-1) == '/') $directory = substr($directory,0,-1);
1570
 
@@ -1577,22 +1907,16 @@ ENDHERE;
1577
  if(is_file($path)) {
1578
  $size += filesize($path);
1579
  } elseif(is_dir($path)) {
1580
- $handlesize = $this->recursive_directory_size($path);
1581
- if($handlesize >= 0) { $size += $handlesize; } else { return -1; }
1582
  }
1583
  }
1584
  }
1585
  closedir($handle);
1586
  }
1587
- if ($size > 1073741824) {
1588
- return round($size / 1073741824, 1).' Gb';
1589
- } elseif ($size > 1048576) {
1590
- return round($size / 1048576, 1).' Mb';
1591
- } elseif ($size > 1024) {
1592
- return round($size / 1024, 1).' Kb';
1593
- } else {
1594
- return round($size, 1).' b';
1595
- }
1596
  }
1597
 
1598
  function existing_backup_table($backup_history = false) {
@@ -1616,7 +1940,7 @@ ENDHERE;
1616
  $entities = '';
1617
  ?>
1618
  <tr>
1619
- <td><b><?php echo $pretty_date?></b></td>
1620
  <td>
1621
  <?php if (isset($value['db'])) {
1622
  $entities .= '/db/';
@@ -1670,6 +1994,11 @@ ENDHERE;
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){
@@ -1702,21 +2031,31 @@ ENDHERE;
1702
  $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history');
1703
  if (!is_array($backup_history)) $backup_history = array();
1704
 
 
 
 
1705
  // Accumulate a list of known files
1706
  foreach ($backup_history as $btime => $bdata) {
 
1707
  foreach ($bdata as $key => $value) {
1708
  // Record which set this file is found in
1709
  if (preg_match('/^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-[\-a-z]+\.(zip|gz|gz\.crypt)$/i', $value, $matches)) {
1710
  $nonce = $matches[2];
1711
- $known_files[$value] = $nonce;
1712
- $known_nonces[$nonce] = $btime;
 
 
 
 
 
 
1713
  }
1714
  }
 
 
 
 
1715
  }
1716
-
1717
- $updraft_dir = $updraftplus->backups_dir_location();
1718
-
1719
- if (!is_dir($updraft_dir)) return;
1720
 
1721
  if (!$handle = opendir($updraft_dir)) return;
1722
 
@@ -1731,7 +2070,8 @@ ENDHERE;
1731
  $type = $matches[3];
1732
  // The time from the filename does not include seconds. Need to identify the seconds to get the right time
1733
  if (isset($known_nonces[$nonce])) $btime = $known_nonces[$nonce];
1734
- if (!isset($backup_history[$btime])) $backup_history[$btime] = array();
 
1735
  $backup_history[$btime][$type] = $entry;
1736
  $backup_history[$btime][$type.'-size'] = filesize($updraft_dir.'/'.$entry);
1737
  $backup_history[$btime]['nonce'] = $nonce;
@@ -1746,6 +2086,7 @@ ENDHERE;
1746
 
1747
  }
1748
 
 
1749
  function restore_backup($timestamp) {
1750
 
1751
  @set_time_limit(900);
@@ -1754,7 +2095,7 @@ ENDHERE;
1754
  $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history');
1755
  if(!is_array($backup_history[$timestamp])) {
1756
  echo '<p>'.__('This backup does not exist in the backup history - restoration aborted. Timestamp:','updraftplus')." $timestamp</p><br/>";
1757
- return false;
1758
  }
1759
 
1760
  // request_filesystem_credentials passes on fields just via hidden name/value pairs.
@@ -1806,7 +2147,7 @@ ENDHERE;
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
  /*
@@ -1816,7 +2157,15 @@ ENDHERE;
1816
 
1817
  $backupable_entities = $updraftplus->get_backupable_file_entities(true, true);
1818
 
1819
- foreach($backup_history[$timestamp] as $type => $file) {
 
 
 
 
 
 
 
 
1820
  // All restorable entities must be given explicitly, as we can store other arbitrary data in the history array
1821
 
1822
  if (!isset($backupable_entities[$type]) && 'db' != $type) continue;
@@ -1834,6 +2183,11 @@ ENDHERE;
1834
  continue;
1835
  }
1836
 
 
 
 
 
 
1837
  $fullpath = $updraft_dir.$file;
1838
 
1839
  echo "Looking for $type archive: file name: ".htmlspecialchars($file)."<br>";
@@ -1857,18 +2211,17 @@ ENDHERE;
1857
  # Types: uploads, themes, plugins, others, db
1858
  if(is_readable($fullpath)) {
1859
 
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) {
1870
  echo '<strong>'.__('Error message', 'updraftplus').':</strong> '.htmlspecialchars($msg).'<br>';
1871
  }
 
 
 
1872
  echo '</div>'; //close the updraft_restore_progress div even if we error
1873
  return false;
1874
  }
@@ -1881,7 +2234,13 @@ ENDHERE;
1881
  return true;
1882
  }
1883
 
1884
-
 
 
 
 
 
 
1885
 
1886
  }
1887
 
27
  add_action('wp_ajax_plupload_action2', array($this,'plupload_action2'));
28
 
29
  global $updraftplus, $wp_version, $pagenow;
30
+ add_filter('updraftplus_dirlist_others', array($updraftplus, 'backup_others_dirlist'));
31
 
32
  // First, the checks that are on all (admin) pages:
33
 
41
 
42
  if (UpdraftPlus_Options::user_can_manage() && $this->disk_space_check(1024*1024*35) === false) add_action('admin_notices', array($this, 'show_admin_warning_diskspace'));
43
 
44
+ // Next, the actions that only come on settings pages
45
+ // if ($pagenow != 'options-general.php') return;
46
+
47
  // Next, the actions that only come on the UpdraftPlus page
48
  if ($pagenow != 'options-general.php' || !isset($_REQUEST['page']) || 'updraftplus' != $_REQUEST['page']) return;
49
 
50
  if(UpdraftPlus_Options::get_updraft_option('updraft_debug_mode')) {
51
  @ini_set('display_errors',1);
52
  @error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
53
+ add_action('admin_notices', array($this, 'show_admin_debug_warning'));
54
+ }
55
+
56
+ // W3 Total Cache's object cache eats transients during cron jobs. Reported to them many times by multiple people.
57
+ if (defined('W3TC') && W3TC == true) {
58
+ if (function_exists('w3_instance')) {
59
+ $modules = w3_instance('W3_ModuleStatus');
60
+ if ($modules->is_enabled('objectcache')) {
61
+ add_action('admin_notices', array($this, 'show_admin_warning_w3_total_cache'));
62
+ }
63
+ }
64
  }
65
 
66
  // LiteSpeed has a generic problem with terminating cron jobs
121
  var updraft_downloader_nonce = '<?php wp_create_nonce("updraftplus_download"); ?>'
122
  </script>
123
  <style type="text/css">
124
+ .updraftplus-remove {
125
+ color: red;
126
+ }
127
+ .updraftplus-remove:hover {
128
+ background-color: red;
129
+ color: #fff;
130
+ }
131
  .drag-drop #drag-drop-area2 {
132
  border: 4px dashed #ddd;
133
  height: 200px;
204
  $this->show_admin_warning('<strong>'.__('Warning','updraftplus').':</strong> '.sprintf(__('Your website is hosted using the %s web server.','updraftplus'),'LiteSpeed').' <a href="http://updraftplus.com/faqs/i-am-having-trouble-backing-up-and-my-web-hosting-company-uses-the-litespeed-webserver/">'.__('Please consult this FAQ if you have problems backing up.', 'updraftplus').'</a>');
205
  }
206
 
207
+ function show_admin_debug_warning() {
208
+ $this->show_admin_warning('<strong>'.__('Notice','updraftplus').':</strong> '.__('UpdraftPlus\'s debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request.', 'updraftplus').'</a>');
209
+ }
210
+
211
+ function show_admin_warning_w3_total_cache() {
212
+ $url = (is_multisite()) ? network_admin_url('admin.php?page=w3tc_general') : admin_url('admin.php?page=w3tc_general');
213
+ $this->show_admin_warning('<strong>'.__('Warning','updraftplus').':</strong> '.__('W3 Total Cache\'s object cache is active. This is known to have a bug that messes with all scheduled tasks (including backup jobs).','updraftplus').' <a href="'.$url.'#object_cache">'.__('Go here to turn it off.','updraftplus').'</a> '.sprintf(__('<a href="%s">Go here</a> for more information.', 'updraftplus'),'http://updraftplus.com/faqs/whats-the-deal-with-w3-total-caches-object-cache/'));
214
+ }
215
+
216
  function show_admin_warning_dropbox() {
217
  $this->show_admin_warning('<strong>'.__('UpdraftPlus notice:','updraftplus').'</strong> <a href="options-general.php?page=updraftplus&action=updraftmethod-dropbox-auth&updraftplus_dropboxauth=doit">'.sprintf(__('Click here to authenticate your %s account (you will not be able to back up to %s without it).','updraftplus'),'Dropbox','Dropbox').'</a>');
218
  }
307
  $updraftplus->log('The file was found locally and matched the recorded size from the backup history ('.round($known_size/1024,1).' Kb)');
308
  } else {
309
  $updraftplus->log('No file size was found recorded in the backup history. We will assume the local one is complete.');
310
+ $known_size = filesize($fullpath);
311
  }
312
 
313
  // The AJAX responder that updates on progress wants to see this
379
 
380
  global $updraftplus;
381
 
382
+ // Test the nonce
383
  $nonce = (empty($_REQUEST['nonce'])) ? "" : $_REQUEST['nonce'];
384
  if (! wp_verify_nonce($nonce, 'updraftplus-credentialtest-nonce') || empty($_REQUEST['subaction'])) die('Security check');
385
 
386
  if ('lastlog' == $_GET['subaction']) {
387
  echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_lastmessage', '('.__('Nothing yet logged', 'updraftplus').')'));
388
+ } elseif ('phpinfo' == $_REQUEST['subaction']) {
389
+ phpinfo(INFO_ALL ^ (INFO_CREDITS | INFO_LICENSE));
390
+ } elseif ('backupnow' == $_REQUEST['subaction']) {
391
+ echo '<strong>',__('Schedule backup','updraftplus').':</strong> ';
392
+ if (wp_schedule_single_event(time()+5, 'updraft_backup_all') === false) {
393
+ $updraftplus->log("A backup run failed to schedule");
394
+ echo __("Failed.",'updraftplus')."</div>";
395
+ } else {
396
+ // For unknown reasons, the <script> runs twice if put inside the <div>
397
+ echo htmlspecialchars(__('OK. You should soon see activity in the "Last log message" field below.','updraftplus'))." <a href=\"http://updraftplus.com/faqs/my-scheduled-backups-and-pressing-backup-now-does-nothing-however-pressing-debug-backup-does-produce-a-backup/\">".__('Nothing happening? Follow this link for help.','updraftplus')."</a></div><script>setTimeout(function(){updraft_showlastbackup();}, 7000);</script>";
398
+ $updraftplus->log("A backup run has been scheduled");
399
+ }
400
+
401
  } elseif ('lastbackup' == $_GET['subaction']) {
402
  echo $this->last_backup_html();
403
+ } elseif ('activejobs_list' == $_GET['subaction']) {
404
+ $this->print_active_jobs();
405
+ } elseif ('activejobs_delete' == $_GET['subaction'] && isset($_GET['jobid'])) {
406
+
407
+ $cron = get_option('cron');
408
+ $found_it = 0;
409
+ foreach ($cron as $time => $job) {
410
+ if (isset($job['updraft_backup_resume'])) {
411
+ foreach ($job['updraft_backup_resume'] as $hook => $info) {
412
+ if (isset($info['args'][1]) && $info['args'][1] == $_GET['jobid']) {
413
+ $found_it = 1;
414
+ $args = $cron[$time]['updraft_backup_resume'][$hook]['args'];
415
+ wp_unschedule_event($time, 'updraft_backup_resume', $args);
416
+ echo 'Y:'.__('Job deleted', 'updraftplus');
417
+ }
418
+ }
419
+ }
420
+ }
421
+
422
+ if (!$found_it) { echo 'X:'.__('Could not find that job - perhaps it has already finished?', 'updraftplus'); }
423
+
424
+
425
+ } elseif ('diskspaceused' == $_GET['subaction'] && isset($_GET['entity'])) {
426
+ if ($_GET['entity'] == 'updraft') {
427
+ echo $this->recursive_directory_size($updraftplus->backups_dir_location());
428
+ } else {
429
+ $backupable_entities = $updraftplus->get_backupable_file_entities(true, false);
430
+ if (!empty($backupable_entities[$_GET['entity']])) {
431
+ $dirs = apply_filters('updraftplus_dirlist_'.$_GET['entity'], $backupable_entities[$_GET['entity']]);
432
+ echo $this->recursive_directory_size($dirs);
433
+ } else {
434
+ _e('Error','updraftplus');
435
+ }
436
+ }
437
  } elseif ('historystatus' == $_GET['subaction']) {
438
  $rescan = (isset($_GET['rescan']) && $_GET['rescan'] == 1);
439
  if ($rescan) $this->rebuild_backup_history();
684
  */
685
  if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'updraft_restore' && isset($_REQUEST['backup_timestamp'])) {
686
  $backup_success = $this->restore_backup($_REQUEST['backup_timestamp']);
687
+ if(empty($updraftplus->errors) && $backup_success === true) {
688
+ // If we restored the database, then that will have out-of-date information which may confuse the user - so automatically re-scan for them.
689
+ $this->rebuild_backup_history();
690
  echo '<p><strong>'.__('Restore successful!','updraftplus').'</strong></p>';
691
  echo '<b>'.__('Actions','updraftplus').':</b> <a href="options-general.php?page=updraftplus&updraft_restore_success=true">'.__('Return to UpdraftPlus Configuration','updraftplus').'</a>';
692
  return;
693
+ } elseif (is_wp_error($backup_success)) {
694
  echo '<p>Restore failed...</p><ul style="list-style: disc inside;">';
695
  foreach ($updraftplus->errors as $err) {
696
  if (is_wp_error($err)) {
705
  }
706
  echo '</ul><b>Actions:</b> <a href="options-general.php?page=updraftplus">'.__('Return to UpdraftPlus Configuration','updraftplus').'</a>';
707
  return;
708
+ } elseif (false === $backup_success) {
709
+ # This means, "not yet - but stay on the page because we may be able to do it later, e.g. if the user types in the requested information"
710
+ return;
711
  }
712
  //uncomment the below once i figure out how i want the flow of a restoration to work.
713
  //echo '<b>'__('Actions','updraftplus').':</b> <a href="options-general.php?page=updraftplus">Return to UpdraftPlus Configuration</a>';
733
  if(isset($_GET['error'])) $this->show_admin_warning(htmlspecialchars($_GET['error']), 'error');
734
  if(isset($_GET['message'])) $this->show_admin_warning(htmlspecialchars($_GET['message']));
735
 
736
+ if(isset($_GET['action']) && $_GET['action'] == 'updraft_create_backup_dir' && isset($_GET['nonce']) && wp_verify_nonce($_GET['nonce'], 'create_backup_dir')) {
737
+ $created = $this->create_backup_dir();
738
+ if(is_wp_error($created)) {
739
+ echo '<p>'.__('Backup directory could not be created','updraftplus').'...<br/>';
740
+ echo '<ul style="list-style: disc inside;">';
741
+ foreach ($created->get_error_messages() as $key => $msg) {
742
+ echo '<li>'.htmlspecialchars($msg).'</li>';
743
+ }
744
+ echo '</ul></p>';
745
+ } elseif ($created !== false) {
746
  echo '<p>'.__('Backup directory successfully created.','updraftplus').'</p><br/>';
747
  }
748
  echo '<b>'.__('Actions','updraftplus').':</b> <a href="options-general.php?page=updraftplus">'.__('Return to UpdraftPlus Configuration','updraftplus').'</a>';
749
  return;
750
  }
751
 
752
+ echo '<div id="updraft_backup_started" class="updated fade" style="display:none; max-width: 800px; font-size:140%; line-height: 140%; padding:14px; clear:left;"></div>';
 
 
 
 
 
 
 
 
 
 
753
 
754
  // updraft_file_ids is not deleted
755
  if(isset($_POST['action']) && $_POST['action'] == 'updraft_backup_debug_all') { $updraftplus->boot_backup(true,true); }
767
  <div class="wrap">
768
  <h1><?php echo $updraftplus->plugin_title; ?></h1>
769
 
770
+ <?php _e('By UpdraftPlus.Com','updraftplus')?> ( <a href="http://updraftplus.com">UpdraftPlus.Com</a> | <a href="http://updraftplus.com/news/"><?php _e('News','updraftplus');?></a> | <?php if (!defined('UPDRAFTPLUS_NOADS')) { ?><a href="http://updraftplus.com/shop/"><?php _e("Premium",'updraftplus');?></a> | <?php } ?><a href="http://david.dw-perspective.org.uk"><?php _e("Lead developer's homepage",'updraftplus');?></a> | <?php if (1==0 && !defined('UPDRAFTPLUS_NOADS')) { ?><a href="http://wordshell.net">WordShell - WordPress command line</a> | <a href="http://david.dw-perspective.org.uk/donate"><?php _e('Donate','updraftplus');?></a> | <?php } ?><a href="http://updraftplus.com/support/frequently-asked-questions/">FAQs</a> | <a href="http://profiles.wordpress.org/davidanderson/"><?php _e('Other WordPress plugins','updraftplus');?></a>). <?php _e('Version','updraftplus');?>: <?php echo $updraftplus->version; ?>
771
  <br>
772
  <?php
773
  if(isset($_GET['updraft_restore_success'])) {
 
 
774
  echo "<div class=\"updated fade\" style=\"padding:8px;\"><strong>".__('Your backup has been restored.','updraftplus').'</strong> '.__('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.')."</div>";
775
  }
776
 
862
  <td id="updraft_last_backup"><?php echo $last_backup_html ?></td>
863
  </tr>
864
  </table>
865
+ <div style="float:left; width:200px; margin-top: <?php echo (class_exists('UpdraftPlus_Addons_Migrator')) ? "20" : "0" ?>px;">
866
+ <div style="margin-bottom: 10px;">
867
+ <button type="button" <?php echo $backup_disabled ?> class="button-primary" style="padding-top:2px;padding-bottom:2px;font-size:22px !important; min-height: 32px; min-width: 170px;" onclick="jQuery('#updraft-backupnow-modal').dialog('open');"><?php _e('Backup Now','updraftplus');?></button>
868
+ </div>
869
+ <div style="margin-bottom: 10px;">
870
+ <?php
871
  $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history');
872
  $backup_history = (is_array($backup_history))?$backup_history:array();
873
+ ?>
874
+ <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; min-width: 170px;" onclick="jQuery('.download-backups').slideDown(); updraft_historytimertoggle(1); jQuery('html,body').animate({scrollTop: jQuery('#updraft_lastlogcontainer').offset().top},'slow');">
875
+ </div>
876
+ <div>
877
+ <button type="button" class="button-primary" style="padding-top:2px;padding-bottom:2px;font-size:22px !important; min-height: 32px; min-width: 170px;" onclick="jQuery('#updraft-migrate-modal').dialog('open');"><?php _e('Clone/Migrate','updraftplus');?></button>
878
  </div>
879
  </div>
880
  <br style="clear:both" />
881
  <table class="form-table">
882
+ <tr id="updraft_lastlogmessagerow">
883
  <th><?php _e('Last log message','updraftplus');?>:</th>
884
  <td>
885
  <span id="updraft_lastlogcontainer"><?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_lastmessage', __('(Nothing yet logged)','updraftplus'))); ?></span><br>
888
  </tr>
889
  <tr>
890
  <th><?php echo htmlspecialchars(__('Backups, logs & restoring','updraftplus')); ?>:</th>
891
+ <td><a id="updraft_showbackups" href="#" title="<?php _e('Press to see available backups','updraftplus');?>" onclick="jQuery('.download-backups').fadeToggle(); updraft_historytimertoggle(0);"><?php echo sprintf(__('%d set(s) available', 'updraftplus'), count($backup_history)); ?></a></td>
892
+ </tr>
893
+ <?php
894
+ if (defined('UPDRAFTPLUS_EXPERIMENTAL_MISC') && UPDRAFTPLUS_EXPERIMENTAL_MISC == true) {
895
+ ?>
896
+ <tr>
897
+ <th><?php echo __('Latest UpdraftPlus.com news:', 'updraftplus'); ?></th>
898
+ <td>Blah blah blah. Move to right-hand col?</td>
899
  </tr>
900
+ <?php } ?>
901
+ </table>
902
+ <table class="form-table">
903
  <tr>
904
+ <td style="">&nbsp;</td><td class="download-backups" style="display:none; border: 2px dashed #aaa;">
905
+ <h2><?php echo __('Downloading and restoring', 'updraftplus'); ?></h2>
906
  <p style="max-width: 740px;"><ul style="list-style: disc inside;">
907
  <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>
908
  <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>
913
  <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>
914
 
915
  <div id="updraft-plupload-modal" title="<?php _e('UpdraftPlus - Upload backup files','updraftplus'); ?>" style="width: 75%; margin: 16px; display:none; margin-left: 100px;">
916
+ <p style="max-width: 600px;"><em><?php _e("Upload files into UpdraftPlus. Use this to import backups made on a different WordPress installation." ,'updraftplus');?> <?php echo htmlspecialchars(__('Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the "rescan" link above.', 'updraftplus'));?></em></p>
917
  <div id="plupload-upload-ui" style="width: 70%;">
918
  <div id="drag-drop-area">
919
  <div class="drag-drop-inside">
932
  <script>
933
  function updraftplus_diskspace() {
934
  jQuery('#updraft_diskspaceused').html('<em><?php _e('calculating...','updraftplus');?></em>');
935
+ jQuery.get(ajaxurl, { action: 'updraft_ajax', entity: 'updraft', subaction: 'diskspaceused', nonce: '<?php echo wp_create_nonce('updraftplus-credentialtest-nonce'); ?>' }, function(response) {
936
  jQuery('#updraft_diskspaceused').html(response);
937
  });
938
  }
960
  // Create somewhere for the status to be found
961
  var stid = base+nonce+'_'+what;
962
  if (!jQuery('#'+stid).length) {
963
+ jQuery('#ud_downloadstatus').append('<div style="clear:left; border: 1px solid; padding: 8px; margin-top: 4px; max-width:840px;" id="'+stid+'"><button onclick="jQuery(\'#'+stid+'\').fadeOut().remove();" type="button" style="float:right; margin-bottom: 8px;">X</button><strong>Download '+what+' ('+nonce+')</strong>:<div class="raw"><?php _e('Begun looking for this entity','updraftplus');?></div><div class="file" id="'+stid+'_st"><div class="dlfileprogress" style="width: 0;"></div></div>');
964
  // <b><span class="dlname">??</span></b> (<span class="dlsofar">?? KB</span>/<span class="dlsize">??</span> KB)
965
+ setTimeout(function(){updraft_downloader_status(base, nonce, what);}, 300);
966
  }
967
  // Now send the actual request to kick it all off
968
  jQuery.post(ajaxurl, jQuery('#uddownloadform_'+what+'_'+nonce).serialize());
1009
  alert('<?php _e('Download error: the server sent us a response (JSON) which we did not understand', 'updraftplus'); ?> ('+response+')');
1010
  cancel_repeat = 1;
1011
  }
1012
+ if (cancel_repeat == 0) { setTimeout(function(){updraft_downloader_status(base, nonce, what);}, nexttimer); }
1013
  } catch(err) {
1014
  alert('<?php _e('Download error: the server sent us a response which we did not understand.', 'updraftplus'); ?> <?php _e("Error:",'updraftplus');?> '+err);
1015
  }
1026
  </tr>
1027
  </table>
1028
 
1029
+ <div id="updraft-delete-modal" title="<?php _e('Delete backup set', 'updraftplus');?>">
1030
+ <form id="updraft_delete_form" method="post">
1031
+ <p>
1032
+ <?php _e('Are you sure that you wish to delete this backup set?', 'updraftplus'); ?>
1033
+ </p>
1034
+ <fieldset>
1035
+ <input type="hidden" name="action" value="updraft_delete">
1036
+ <input type="hidden" name="backup_timestamp" value="0" id="updraft_delete_timestamp">
1037
+ <input type="hidden" name="backup_nonce" value="0" id="updraft_delete_nonce">
1038
+ <input type="checkbox" name="" id=""> <label for=""><?php _e('Delete from remote storage (if any)', 'updraftplus');?></label><br>
1039
+ <input type="checkbox" name="" id=""> <label for=""><?php _e('Delete from UpdraftPlus\'s memory', 'updraftplus');?></label>
1040
+ </fieldset>
1041
+ </form>
1042
+ </div>
1043
+
1044
  <div id="updraft-restore-modal" title="UpdraftPlus - <?php _e('Restore backup','updraftplus');?>">
1045
  <p><strong><?php _e('Restore backup from','updraftplus');?>:</strong> <span id="updraft_restore_date"></span></p>
1046
  <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>
1104
  <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>
1105
  </div>
1106
 
1107
+ <div id="updraft-migrate-modal" title="<?php _e('Migrate Site', 'updraftplus'); ?>">
 
1108
 
1109
+ <?php
1110
+ if (class_exists('UpdraftPlus_Addons_Migrator')) {
1111
+ echo '<p>'.str_replace('"', "&quot;", __('Migration of data from another site happens through the "Restore" button. A "migration" is ultimately the same as a restoration - but using backup archives that you import from another site. UpdraftPlus modifies the restoration operation appropriately, to fit the backup data to the new site.', 'updraftplus')).' '.sprintf(__('<a href="%s">Read this article to see step-by-step how it\'s done.</a>', 'updraftplus'),'http://updraftplus.com/faqs/how-do-i-migrate-to-a-new-site-location/');
1112
+ } else {
1113
+ echo '<p>'.__('Do you want to migrate or clone/duplicate a site?', 'updraftplus').'</p><p>'.__('Then, try out our "Migrator" add-on. After using it once, you\'ll have saved the purchase price compared to the time needed to copy a site by hand.', 'updraftplus').'</p><p><a href="http://updraftplus.com/shop/migrator/">'.__('Get it here.', 'updraftplus').'</a>';
1114
+ }
1115
+ ?>
1116
+ </p>
1117
+ </div>
1118
+
1119
+ <div id="updraft-iframe-modal">
1120
+ <div id="updraft-iframe-modal-innards">
1121
+ </div>
1122
+ </div>
1123
+
1124
+ <div id="updraft-backupnow-modal" title="UpdraftPlus - <?php _e('Perform a one-time backup','updraftplus'); ?>">
1125
+ <p><?php _e("To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity after about 10 seconds. WordPress should start the backup running in the background.",'updraftplus');?></p>
1126
 
1127
  <p><?php _e('Does nothing happen when you schedule backups?','updraftplus');?> <a href="http://updraftplus.com/faqs/my-scheduled-backups-and-pressing-backup-now-does-nothing-however-pressing-debug-backup-does-produce-a-backup/"><?php _e('Go here for help.','updraft');?></a></p>
1128
  </div>
1139
  </tr>
1140
  </table>
1141
  <?php } ?>
1142
+ <h2 style="margin-top: 6px;"><?php _e('Configure Backup Contents And Schedule','updraftplus');?></h2>
1143
  <?php UpdraftPlus_Options::options_form_begin(); ?>
1144
  <?php $this->settings_formcontents($last_backup_html); ?>
1145
  </form>
1146
  <div style="padding-top: 40px; display:none;" class="expertmode">
1147
  <hr>
1148
+ <h2><?php _e('Debug Information And Expert Options','updraftplus');?></h2>
1149
  <p>
1150
  <?php
1151
+ echo sprintf(__('Web server:','updraftplus'), 'PHP').' '.htmlspecialchars($_SERVER["SERVER_SOFTWARE"]).' ('.htmlspecialchars(php_uname()).')<br />';
1152
  $peak_memory_usage = memory_get_peak_usage(true)/1024/1024;
1153
  $memory_usage = memory_get_usage(true)/1024/1024;
1154
  echo __('Peak memory usage','updraftplus').': '.$peak_memory_usage.' MB<br/>';
1155
  echo __('Current memory usage','updraftplus').': '.$memory_usage.' MB<br/>';
1156
  echo __('PHP memory limit','updraftplus').': '.ini_get('memory_limit').' <br/>';
1157
+ echo sprintf(__('%s version:','updraftplus'), 'PHP').' '.phpversion().' - ';
1158
+ echo '<a href="admin-ajax.php?page=updraftplus&action=updraft_ajax&subaction=phpinfo&nonce='.wp_create_nonce('updraftplus-credentialtest-nonce').'" id="updraftplus-phpinfo">'.__('show PHP information (phpinfo)', 'updraftplus').'</a><br/>';
1159
+
1160
+ if (version_compare(phpversion(), '5.2.0', '>=') && extension_loaded('zip')) {
1161
+ $ziparchive_exists .= __('Yes', 'updraftplus');
1162
+ } else {
1163
+ $ziparchive_exists .= (method_exists('ZipArchive', 'addFile')) ? __('Yes', 'updraftplus') : __('No', 'updraftplus');
1164
+ }
1165
+
1166
+ echo __('PHP has support for ZipArchive::addFile:', 'updraftplus').' '.$ziparchive_exists.'<br>';
1167
+
1168
+ $binzip = $updraftplus->find_working_bin_zip(false);
1169
+
1170
+ echo __('zip executable found:', 'updraftplus').' '.((is_string($binzip)) ? __('Yes').': '.$binzip : __('No')).'<br>';
1171
+
1172
+ echo '<h3>'.__('Total (uncompressed) on-disk data:','updraftplus').'</h3>';
1173
+ echo '<p style="clear: left; max-width: 600px;"><em>'.__('N.B. This count is based upon what was, or was not, excluded the last time you saved the options.', 'updraftplus').'</em></p>';
1174
+
1175
+ foreach ($backupable_entities as $key => $info) {
1176
+
1177
+ $sdescrip = preg_replace('/ \(.*\)$/', '', $info['description']);
1178
+ if (strlen($sdescrip) > 20 && isset($info['shortdescription'])) $sdescrip = $info['shortdescription'];
1179
+
1180
+ echo '<div style="clear: left;float:left; width:150px;">'.ucfirst($sdescrip).':</strong></div><div style="float:left;"><span id="updraft_diskspaceused_'.$key.'"><em></em></span> <a href="#" onclick="updraftplus_diskspace_entity(\''.$key.'\'); return false;">'.__('count','updraftplus').'</a></div>';
1181
+ }
1182
+
1183
  ?>
1184
+
1185
  </p>
1186
+ <p style="clear: left; padding-top: 20px; max-width: 600px; margin:0;"><?php _e('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.','updraftplus');?></p>
1187
 
1188
+ <table border="0" style="border: none;">
1189
+ <tbody>
1190
+ <tr>
1191
+ <td>
1192
  <form method="post">
1193
  <input type="hidden" name="action" value="updraft_backup_debug_all" />
1194
  <p><input type="submit" class="button-primary" <?php echo $backup_disabled ?> value="<?php _e('Debug Full Backup','updraftplus');?>" onclick="return(confirm('<?php echo htmlspecialchars(__('This will cause an immediate backup. The page will stall loading until it finishes (ie, unscheduled).','updraftplus'));?>'))" /></p>
1195
  </form>
1196
+ </td><td>
1197
  <form method="post">
1198
  <input type="hidden" name="action" value="updraft_backup_debug_db" />
1199
  <p><input type="submit" class="button-primary" <?php echo $backup_disabled ?> value="<?php _e('Debug Database Backup','updraftplus');?>" onclick="return(confirm('<?php echo htmlspecialchars(__('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..','updraftplus'));?>'))" /></p>
1200
  </form>
1201
+ </td>
1202
+ </tr>
1203
+ </tbody>
1204
+ </table>
1205
  <h3><?php _e('Wipe Settings','updraftplus');?></h3>
1206
  <p style="max-width: 600px;"><?php _e('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.','updraftplus');?></p>
1207
  <form method="post">
1208
  <input type="hidden" name="action" value="updraft_wipesettings" />
1209
  <p><input type="submit" class="button-primary" value="<?php _e('Wipe All Settings','updraftplus'); ?>" onclick="return(confirm('<?php echo htmlspecialchars(__('This will delete all your UpdraftPlus settings - are you sure you want to do this?'));?>'))" /></p>
1210
  </form>
1211
+ <h3><?php _e('Active jobs', 'updraftplus');?></h3>
1212
+ <div id="updraft_activejobs">
1213
+ <?php $this->print_active_jobs(); ?>
1214
+ </div>
1215
  </div>
1216
 
1217
  <script type="text/javascript">
1218
  /* <![CDATA[ */
1219
+
1220
+ function updraft_activejobs_delete(jobid) {
1221
+ jQuery.get(ajaxurl, { action: 'updraft_ajax', subaction: 'activejobs_delete', jobid: jobid, nonce: '<?php echo wp_create_nonce('updraftplus-credentialtest-nonce'); ?>' }, function(response) {
1222
+ if (response.substr(0,2) == 'Y:') {
1223
+ jQuery('#updraft-jobid-'+jobid).html(response.substr(2)).fadeOut('slow', function() {
1224
+ jQuery(this).remove();
1225
+ });
1226
+ } else if (response.substr(0,2) == 'X:') {
1227
+ alert(response.substr(2));
1228
+ } else {
1229
+ alert('<?php _e('Unknown response:', 'updraftplus'); ?> '+response);
1230
+ }
1231
+ });
1232
+ }
1233
+
1234
+ function updraft_activejobs_update() {
1235
+ jQuery.get(ajaxurl, { action: 'updraft_ajax', subaction: 'activejobs_list', nonce: '<?php echo wp_create_nonce('updraftplus-credentialtest-nonce'); ?>' }, function(response) {
1236
+ jQuery('#updraft_activejobs').html(response);
1237
+ });
1238
+ }
1239
+
1240
+ function updraftplus_diskspace_entity(key) {
1241
+ jQuery('#updraft_diskspaceused_'+key).html('<em><?php _e('calculating...','updraftplus');?></em>');
1242
+ jQuery.get(ajaxurl, { action: 'updraft_ajax', subaction: 'diskspaceused', entity: key, nonce: '<?php echo wp_create_nonce('updraftplus-credentialtest-nonce'); ?>' }, function(response) {
1243
+ jQuery('#updraft_diskspaceused_'+key).html(response);
1244
+ });
1245
+ }
1246
+
1247
+ function updraft_iframe_modal(getwhat, title) {
1248
+ jQuery('#updraft-iframe-modal-innards').html('<iframe width="100%" height="440px" src="'+ajaxurl+'?action=updraft_ajax&subaction='+getwhat+'&nonce=<?php echo wp_create_nonce('updraftplus-credentialtest-nonce'); ?>"></iframe>');
1249
+ jQuery('#updraft-iframe-modal').dialog('option', 'title', title).dialog('open');
1250
+ }
1251
+
1252
  jQuery(document).ready(function() {
1253
+
1254
  jQuery('#updraft-service').change(function() {
1255
  jQuery('.updraftplusmethod').hide();
1256
  var active_class = jQuery(this).val();
1257
  jQuery('.'+active_class).show();
1258
  });
1259
+
1260
+ jQuery('#updraftplus-phpinfo').click(function(e) {
1261
+ e.preventDefault();
1262
+ updraft_iframe_modal('phpinfo', '<?php _e('PHP information', 'updraftplus'); ?>');
1263
+ });
1264
+
1265
  })
1266
  jQuery(window).load(function() {
1267
  //this is for hiding the restore progress at the top after it is done
1268
+ setTimeout('jQuery("#updraft-restore-progress").toggle(1000);',3000)
1269
  jQuery('#updraft-restore-progress-toggle').click(function() {
1270
  jQuery('#updraft-restore-progress').toggle(500)
1271
  })
1275
  <?php
1276
  }
1277
 
1278
+ function print_active_jobs() {
1279
+ $cron = get_option('cron');
1280
+ $found_jobs = 0;
1281
+ foreach ($cron as $time => $job) {
1282
+ if (isset($job['updraft_backup_resume'])) {
1283
+ foreach ($job['updraft_backup_resume'] as $hook => $info) {
1284
+ if (isset($info['args'][1])) {
1285
+ $found_jobs++;
1286
+ $job_id = $info['args'][1];
1287
+ $jobdata = get_transient("updraft_jobdata_".$job_id);
1288
+ if (!is_array($jobdata)) $jobdata = array();
1289
+ $began_at = (isset($jobdata['backup_time'])) ? get_date_from_gmt(gmdate('Y-m-d H:i:s', $jobdata['backup_time']), 'D, F j, Y H:i') : '?';
1290
+ echo '<div style="clear:left; float:left;" id="updraft-jobid-'.$job_id.'">'.sprintf(__("%s: began at: %s; next resumption: %d (after %ss)", 'updraftplus'), $job_id, $began_at, $info['args'][0], $time-time()).' - <a href="?page=updraftplus&action=downloadlog&updraftplus_backup_nonce='.$job_id.'">'.__('show log', 'updraftplus').'</a> - <a href="javascript:updraft_activejobs_delete(\''.$job_id.'\')">'.__('delete schedule', 'updraftplus').'</a></div>';;
1291
+ // echo str_replace("\n", "<br>", print_r($job, true));
1292
+ }
1293
+ }
1294
+ }
1295
+ }
1296
+ if (0 == $found_jobs) {
1297
+ echo '<p><em>'.__('(None)', 'updraftplus').'</em></p>';
1298
+ }
1299
+ }
1300
+
1301
  //deletes the -old directories that are created when a backup is restored.
1302
  function delete_old_dirs() {
1303
  global $wp_filesystem;
1330
  return $return_code;
1331
  }
1332
 
1333
+ // The aim is to get a directory that is writable by the webserver, because that's the only way we can create zip files
1334
  function create_backup_dir() {
1335
+
1336
  global $wp_filesystem, $updraftplus;
1337
+
1338
+ if (false === ($credentials = request_filesystem_credentials('options-general.php?page=updraftplus&action=updraft_create_backup_dir&nonce='.wp_create_nonce('create_backup_dir')))) {
1339
+ return false;
1340
+ }
1341
+
1342
+ if ( ! WP_Filesystem($credentials) ) {
1343
+ // our credentials were no good, ask the user for them again
1344
+ request_filesystem_credentials('options-general.php?page=updraftplus&action=updraft_create_backup_dir&nonce='.wp_create_nonce('create_backup_dir'), '', true);
1345
+ return false;
1346
  }
1347
 
1348
  $updraft_dir = $updraftplus->backups_dir_location();
1349
 
1350
+ $default_backup_dir = $wp_filesystem->find_folder(dirname($updraft_dir)).basename($updraft_dir);
 
1351
 
1352
+ $updraft_dir = ($updraft_dir) ? $wp_filesystem->find_folder(dirname($updraft_dir)).basename($updraft_dir) : $default_backup_dir;
1353
+
1354
+ if (!$wp_filesystem->is_dir($default_backup_dir) && !$wp_filesystem->mkdir($default_backup_dir, 0775)) {
1355
+ $wperr = new WP_Error;
1356
+ if ( $wp_filesystem->errors->get_error_code() ) {
1357
+ foreach ( $wp_filesystem->errors->get_error_messages() as $message ) {
1358
+ $wperr->add('mkdir_error', $message);
1359
+ }
1360
+ return $wperr;
1361
+ } else {
1362
+ return new WP_Error('mkdir_error', __('The request to the filesystem to create the directory failed.', 'updraftplus'));
1363
+ }
1364
+ }
1365
+
1366
+ if ($wp_filesystem->is_dir($default_backup_dir)) {
1367
+
1368
+ if (is_writable($updraft_dir)) return true;
1369
+
1370
+ @$wp_filesystem->chmod($default_backup_dir, 0775);
1371
+ if (is_writable($updraft_dir)) return true;
1372
+
1373
+ @$wp_filesystem->chmod($default_backup_dir, 0777);
1374
+
1375
+ if (is_writable($updraft_dir)) {
1376
+ echo '<p>'.__('The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems', 'updraftplus').'</p>';
1377
+ return true;
1378
+ } else {
1379
+ @$wp_filesystem->chmod($default_backup_dir, 0775);
1380
+ return new WP_Error('writable_error', __('The folder exists, but your webserver does not have permission to write to it.', 'updraftplus').' '.__('You will need to consult with your web hosting provider to find out to set permissions for a WordPress plugin to write to the directory.', 'updraftplus'));
1381
+ }
1382
+ }
1383
 
1384
  return true;
1385
  }
1393
  function scan_old_dirs() {
1394
  $dirArr = scandir(WP_CONTENT_DIR);
1395
  foreach($dirArr as $dir) {
1396
+ if (preg_match('/-old$/', $dir)) return true;
1397
  }
1398
  return false;
1399
  }
1531
  </tr>
1532
  <tr>
1533
  <th><?php _e('Email','updraftplus'); ?>:</th>
1534
+ <td><input type="text" title="<?php _e('To send to more than one address, separate each address with a comma.', 'updraftplus'); ?>" style="width:260px" name="updraft_email" value="<?php echo UpdraftPlus_Options::get_updraft_option('updraft_email'); ?>" /> <br><?php _e('Enter an address here to have a report sent (and the whole backup, if you choose) to it.','updraftplus'); ?></td>
1535
  </tr>
1536
 
1537
  <tr>
1609
  subaction: 'lastlog',
1610
  nonce: '<?php echo wp_create_nonce('updraftplus-credentialtest-nonce'); ?>'
1611
  };
1612
+ function updraft_showlastlog(repeat){
1613
  jQuery.get(ajaxurl, lastlog_sdata, function(response) {
1614
  nexttimer = 1500;
1615
  if (lastlog_lastmessage == response) { nexttimer = 4500; }
1616
+ if (repeat) { setTimeout(function(){updraft_showlastlog(true);}, nexttimer);}
1617
  jQuery('#updraft_lastlogcontainer').html(response);
1618
  lastlog_lastmessage = response;
1619
  });
1623
  subaction: 'lastbackup',
1624
  nonce: '<?php echo wp_create_nonce('updraftplus-credentialtest-nonce'); ?>'
1625
  };
1626
+ var lastbackup_laststatus = '<?php echo esc_html($last_backup_html);?>';
1627
  function updraft_showlastbackup(){
1628
  jQuery.get(ajaxurl, lastbackup_sdata, function(response) {
1629
  if (lastbackup_laststatus == response) {
1630
+ setTimeout(function(){updraft_showlastbackup();}, 7000);
1631
  } else {
1632
  jQuery('#updraft_last_backup').html(response);
1633
  }
1651
  }
1652
  function updraft_updatehistory(rescan) {
1653
  if (rescan == 1) {
1654
+ jQuery('#updraft_existing_backups').html('<p style="text-align:center;"><em><?php _e('Rescanning (looking for backups that you have uploaded manually into the internal backup store)...', 'updraftplus'); ?></em></p>');
1655
  }
1656
  jQuery.get(ajaxurl, { action: 'updraft_ajax', subaction: 'historystatus', nonce: '<?php echo wp_create_nonce('updraftplus-credentialtest-nonce'); ?>', rescan: rescan }, function(response) {
1657
  jQuery('#updraft_existing_backups').html(response);
1670
 
1671
  updraft_check_same_times();
1672
 
1673
+ jQuery( "#updraft-delete-modal" ).dialog({
1674
+ autoOpen: false, height: 260, width: 430, modal: true,
1675
+ buttons: {
1676
+ '<?php _e('Delete','updraftplus');?>': function() {
1677
+ alert("TODO");
1678
+ },
1679
+ '<?php _e('Cancel','updraftplus');?>': function() { jQuery(this).dialog("close"); }
1680
+ }
1681
+ });
1682
+
1683
  jQuery( "#updraft-restore-modal" ).dialog({
1684
  autoOpen: false, height: 505, width: 590, modal: true,
1685
  buttons: {
1701
  }
1702
  });
1703
 
1704
+ jQuery("#updraft-iframe-modal" ).dialog({
1705
+ autoOpen: false, height: 500, width: 780, modal: true
1706
+ });
1707
+
1708
+
1709
+ jQuery("#updraft-backupnow-modal" ).dialog({
1710
+ autoOpen: false, height: 265, width: 390, modal: true,
1711
  buttons: {
1712
  '<?php _e('Backup Now','updraftplus');?>': function() {
1713
+ jQuery(this).dialog("close");
1714
+ jQuery('#updraft_backup_started').html('<em><?php _e('Requesting start of backup...', 'updraftplus');?></em>').slideDown('');
1715
+ jQuery.post(ajaxurl, { action: 'updraft_ajax', subaction: 'backupnow', nonce: '<?php echo wp_create_nonce('updraftplus-credentialtest-nonce'); ?>' }, function(response) {
1716
+ jQuery('#updraft_backup_started').html(response);
1717
+ setTimeout(function() {jQuery.get('<?php echo site_url(); ?>');}, 5100);
1718
+ setTimeout(function() {updraft_showlastlog();}, 6000);
1719
+ setTimeout(function() {updraft_activejobs_update();}, 6000);
1720
+ setTimeout(function() {
1721
+ jQuery('#updraft_lastlogmessagerow').fadeOut('slow', function() {
1722
+ jQuery(this).fadeIn('slow');
1723
+ });
1724
+ },
1725
+ 3200
1726
+ );
1727
+ setTimeout(function() {jQuery('#updraft_backup_started').fadeOut('slow');}, 60000);
1728
+ // Should be redundant (because of the polling for the last log line), but harmless (invokes page load)
1729
+ });
1730
  },
1731
  '<?php _e('Cancel','updraftplus');?>': function() { jQuery(this).dialog("close"); }
1732
  }
1733
  });
1734
 
1735
+ jQuery( "#updraft-migrate-modal" ).dialog({
1736
+ autoOpen: false, height: 265, width: 390, modal: true,
1737
+ buttons: {
1738
+ '<?php _e('Close','updraftplus');?>': function() { jQuery(this).dialog("close"); }
1739
+ }
1740
+ });
1741
+
1742
  jQuery('#enableexpertmode').click(function() {
1743
  jQuery('.expertmode').fadeIn();
1744
+ updraft_activejobs_update();
1745
+ setInterval(function() {updraft_activejobs_update()}, 15000);
1746
+ jQuery('#enableexpertmode').off('click');
1747
  return false;
1748
  });
1749
  <?php if (!@is_writable($updraft_dir)) echo "jQuery('.backupdirrow').show();\n"; ?>
1750
+ setTimeout(function(){updraft_showlastlog(true);}, 1200);
1751
  jQuery('.updraftplusmethod').hide();
1752
  <?php
1753
  if ($active_service) echo "jQuery('.${active_service}').show();";
1770
  </tr>
1771
  <tr>
1772
  <th><?php _e('Expert settings','updraftplus');?>:</th>
1773
+ <td><a id="enableexpertmode" href="#enableexpertmode"><?php _e('Show expert settings','updraftplus');?></a> - <?php _e("click this to show some further options; don't bother with this unless you have a problem or are curious.",'updraftplus');?> <?php do_action('updraftplus_expertsettingsdescription'); ?></td>
1774
  </tr>
1775
  <?php
1776
  $delete_local = UpdraftPlus_Options::get_updraft_option('updraft_delete_local', 1);
1793
  if(@is_writable($updraft_dir)) {
1794
  $dir_info = '<span style="color:green">'.__('Backup directory specified is writable, which is good.','updraftplus').'</span>';
1795
  } else {
1796
+ $dir_info = '<span style="color:red">'.__('Backup directory specified is <b>not</b> writable, or does not exist.','updraftplus').' <span style="font-size:110%;font-weight:bold"><a href="options-general.php?page=updraftplus&action=updraft_create_backup_dir&nonce='.wp_create_nonce('create_backup_dir').'">'.__('Click here to attempt to create the directory and set the permissions','updraftplus').'</a></span>, '.__('or, to reset this option','updraftplus').' <a href="#" onclick="jQuery(\'#updraft_dir\').val(\''.WP_CONTENT_DIR.'/updraft\'); return false;">'.__('click here','updraftplus').'</a>. '.__('If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process.','updraftplus').'</span>';
1797
  }
1798
 
1799
  echo $dir_info.' '.__("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...).",'updraftplus');?></td>
1842
  <?php
1843
  }
1844
 
1845
+ function show_double_warning($text, $extraclass = '') {
1846
+
1847
+ ?><div class="error updraftplusmethod <?php echo $extraclass; ?>"><p><?php echo $text; ?></p></div>
1848
+
1849
+ <p><?php echo $text; ?></p>
1850
+
1851
+ <?php
1852
+
1853
+ }
1854
+
1855
+ function curl_check($service, $has_fallback = false, $extraclass = '') {
1856
  // Check requirements
1857
  if (!function_exists("curl_init")) {
1858
+
1859
+ $this->show_double_warning('<strong>'.__('Warning','updraftplus').':</strong> '.sprintf(__('Your web server\'s PHP installation does not included a <strong>required</strong> (for %s) module (%s). Please contact your web hosting provider\'s support and ask for them to enable it.', 'updraftplus'), $service, 'Curl').' '.sprintf(__("Your options are 1) Install/enable %s or 2) Change web hosting companies - %s is a standard PHP component, and required by all cloud backup plugins that we know of.",'updraftplus'), 'Curl', 'Curl'), $extraclass);
1860
+
1861
  } else {
1862
  $curl_version = curl_version();
1863
  $curl_ssl_supported= ($curl_version['features'] & CURL_VERSION_SSL);
1865
  if ($has_fallback) {
1866
  ?><p><strong><?php _e('Warning','updraftplus'); ?>:</strong> <?php echo sprintf(__("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).",'updraftplus'),$service);?></p><?php
1867
  } else {
1868
+ $this->show_double_warning('<p><strong>'.__('Warning','updraftplus').':</strong> '.sprintf(__("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.",'updraftplus'),$service).'</p>', $extraclass);
1869
  }
1870
  } else {
1871
  ?><p><em><?php echo sprintf(__("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.", 'updraftplus'),$service);?></em></p><?php
1873
  }
1874
  }
1875
 
1876
+ function recursive_directory_size($directories) {
1877
+
1878
+ if (is_string($directories)) $directories = array($directories);
1879
+
1880
+ $size = 0;
1881
+
1882
+ foreach ($directories as $dir) $size += $this->recursive_directory_size_raw($dir);
1883
+
1884
+ if ($size > 1073741824) {
1885
+ return round($size / 1073741824, 1).' Gb';
1886
+ } elseif ($size > 1048576) {
1887
+ return round($size / 1048576, 1).' Mb';
1888
+ } elseif ($size > 1024) {
1889
+ return round($size / 1024, 1).' Kb';
1890
+ } else {
1891
+ return round($size, 1).' b';
1892
+ }
1893
+
1894
+ }
1895
+
1896
+ function recursive_directory_size_raw($directory) {
1897
+
1898
  $size = 0;
1899
  if(substr($directory,-1) == '/') $directory = substr($directory,0,-1);
1900
 
1907
  if(is_file($path)) {
1908
  $size += filesize($path);
1909
  } elseif(is_dir($path)) {
1910
+ $handlesize = $this->recursive_directory_size_raw($path);
1911
+ if($handlesize >= 0) { $size += $handlesize; }# else { return -1; }
1912
  }
1913
  }
1914
  }
1915
  closedir($handle);
1916
  }
1917
+
1918
+ return $size;
1919
+
 
 
 
 
 
 
1920
  }
1921
 
1922
  function existing_backup_table($backup_history = false) {
1940
  $entities = '';
1941
  ?>
1942
  <tr>
1943
+ <td><a href="javascript:updraft_delete('<?php echo $key;?>', '<?php echo $value['nonce']; ?>');" class="updraftplus-remove" style="display: none;border-radius:100%; -moz-border-radius: 100%; -webkit-border-radius: 100%; font-size: 1.5em; width: 1em; height: 1em;text-align:center;text-decoration:none;font-weight:bold;line-height: 1;" title="<?php echo __('Delete this backup set', 'updraftplus');?>">×</a></td><td><b><?php echo $pretty_date?></b></td>
1944
  <td>
1945
  <?php if (isset($value['db'])) {
1946
  $entities .= '/db/';
1994
  </td>
1995
  </tr>
1996
  <script>
1997
+ function updraft_delete(key, nonce) {
1998
+ jQuery('#updraft_delete_timestamp').val(key);
1999
+ jQuery('#updraft_delete_nonce').val(nonce);
2000
+ jQuery('#updraft-delete-modal').dialog('open');
2001
+ }
2002
  function updraft_restore_setoptions(entities) {
2003
  var howmany = 0;
2004
  jQuery('input[name="updraft_restore[]"]').each(function(x,y){
2031
  $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history');
2032
  if (!is_array($backup_history)) $backup_history = array();
2033
 
2034
+ $updraft_dir = $updraftplus->backups_dir_location();
2035
+ if (!is_dir($updraft_dir)) return;
2036
+
2037
  // Accumulate a list of known files
2038
  foreach ($backup_history as $btime => $bdata) {
2039
+ $found_file = false;
2040
  foreach ($bdata as $key => $value) {
2041
  // Record which set this file is found in
2042
  if (preg_match('/^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-[\-a-z]+\.(zip|gz|gz\.crypt)$/i', $value, $matches)) {
2043
  $nonce = $matches[2];
2044
+ // if (empty($bdata['service']) && !is_file($updraft_dir.'/'.$value)) {
2045
+ if (isset($bdata['service']) && $bdata['service'] == 'none' && !is_file($updraft_dir.'/'.$value)) {
2046
+ # File no longer present
2047
+ } else {
2048
+ $found_file = true;
2049
+ $known_files[$value] = $nonce;
2050
+ $known_nonces[$nonce] = $btime;
2051
+ }
2052
  }
2053
  }
2054
+ if (!$found_file) {
2055
+ unset($backup_history[$btime]);
2056
+ $changes = true;
2057
+ }
2058
  }
 
 
 
 
2059
 
2060
  if (!$handle = opendir($updraft_dir)) return;
2061
 
2070
  $type = $matches[3];
2071
  // The time from the filename does not include seconds. Need to identify the seconds to get the right time
2072
  if (isset($known_nonces[$nonce])) $btime = $known_nonces[$nonce];
2073
+ // No cloud backup known of this file
2074
+ if (!isset($backup_history[$btime])) $backup_history[$btime] = array( 'service' => 'none' );
2075
  $backup_history[$btime][$type] = $entry;
2076
  $backup_history[$btime][$type.'-size'] = filesize($updraft_dir.'/'.$entry);
2077
  $backup_history[$btime]['nonce'] = $nonce;
2086
 
2087
  }
2088
 
2089
+ // Return values: false = 'not yet' (not necessarily terminal); WP_Error = terminal failure; true = success
2090
  function restore_backup($timestamp) {
2091
 
2092
  @set_time_limit(900);
2095
  $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history');
2096
  if(!is_array($backup_history[$timestamp])) {
2097
  echo '<p>'.__('This backup does not exist in the backup history - restoration aborted. Timestamp:','updraftplus')." $timestamp</p><br/>";
2098
+ return new WP_Error('does_not_exist', 'Backup does not exist in the backup history');
2099
  }
2100
 
2101
  // request_filesystem_credentials passes on fields just via hidden name/value pairs.
2147
  if (count($_POST['updraft_restore']) == 0) {
2148
  echo '<p>'.__('ABORT: Could not find the information on which entities to restore.', 'updraftplus').'</p>';
2149
  echo '<p>'.__('If making a request for support, please include this information:','updraftplus').' '.count($_POST).' : '.htmlspecialchars(serialize($_POST)).'</p>';
2150
+ return new WP_Error('missing_info', 'Backup information not found');
2151
  }
2152
 
2153
  /*
2157
 
2158
  $backupable_entities = $updraftplus->get_backupable_file_entities(true, true);
2159
 
2160
+ $backup_set = $backup_history[$timestamp];
2161
+ uksort($backup_set, array($this, 'sort_restoration_entities'));
2162
+
2163
+ // We use a single object for each entity, because we want to store information about the backup set
2164
+ if(!class_exists('WP_Upgrader')) require_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
2165
+ require_once(UPDRAFTPLUS_DIR.'/includes/updraft-restorer.php');
2166
+ $restorer = new Updraft_Restorer();
2167
+
2168
+ foreach($backup_set as $type => $file) {
2169
  // All restorable entities must be given explicitly, as we can store other arbitrary data in the history array
2170
 
2171
  if (!isset($backupable_entities[$type]) && 'db' != $type) continue;
2183
  continue;
2184
  }
2185
 
2186
+ if ($type == 'wpcore' && is_multisite() && 0 === $restorer->ud_backup_is_multisite) {
2187
+ echo "<p>$type: <strong>".__('Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file.', 'updraftplus')."</strong></p>";
2188
+ continue;
2189
+ }
2190
+
2191
  $fullpath = $updraft_dir.$file;
2192
 
2193
  echo "Looking for $type archive: file name: ".htmlspecialchars($file)."<br>";
2211
  # Types: uploads, themes, plugins, others, db
2212
  if(is_readable($fullpath)) {
2213
 
 
 
 
 
2214
  $info = (isset($backupable_entities[$type])) ? $backupable_entities[$type] : array();
2215
+
2216
  $val = $restorer->restore_backup($file, $type, $service, $info);
2217
 
2218
  if(is_wp_error($val)) {
2219
  foreach ($val->get_error_messages() as $msg) {
2220
  echo '<strong>'.__('Error message', 'updraftplus').':</strong> '.htmlspecialchars($msg).'<br>';
2221
  }
2222
+ echo '</div>'; //close the updraft_restore_progress div even if we error
2223
+ return $val;
2224
+ } elseif (false === $val) {
2225
  echo '</div>'; //close the updraft_restore_progress div even if we error
2226
  return false;
2227
  }
2234
  return true;
2235
  }
2236
 
2237
+ function sort_restoration_entities($a, $b) {
2238
+ if ($a == $b) return 0;
2239
+ # Put the database first
2240
+ if ($a == 'db') return -1;
2241
+ if ($b == 'db') return 1;
2242
+ return strcmp($a, $b);
2243
+ }
2244
 
2245
  }
2246
 
backup.php CHANGED
@@ -19,6 +19,8 @@ class UpdraftPlus_Backup {
19
 
20
  var $zip_preferpcl = false;
21
 
 
 
22
  // This function recursively packs the zip, dereferencing symlinks but packing into a single-parent tree for universal unpacking
23
  function makezip_recursive_add($zipfile, $fullpath, $use_path_when_storing, $original_fullpath) {
24
 
@@ -109,15 +111,87 @@ class UpdraftPlus_Backup {
109
  if ($this->zip_preferpcl || (!extension_loaded('zip') && !method_exists('ZipArchive', 'AddFile'))) {
110
  if(!class_exists('PclZip')) require_once(ABSPATH.'/wp-admin/includes/class-pclzip.php');
111
  $zip_object = new PclZip($destination);
 
112
  $zipcode = $zip_object->create($source, PCLZIP_OPT_REMOVE_PATH, WP_CONTENT_DIR);
113
  if ($zipcode == 0 ) {
114
- $updraftplus->log("PclZip Error: ".$zip_object->errorName());
115
  return $zip_object->errorCode();
116
  } else {
117
  return true;
118
  }
119
  }
120
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  $this->existing_files = array();
122
 
123
  // If the file exists, then we should grab its index of files inside, and sizes
@@ -125,12 +199,14 @@ class UpdraftPlus_Backup {
125
  if (file_exists($destination) && is_readable($destination)) {
126
  $zip = new ZipArchive;
127
  $zip->open($destination);
128
- $updraftplus->log(basename($destination).": Zip file already exists, with ".$zip->numFiles." files");
129
- for ($i=0; $i<$zip->numFiles; $i++) {
130
  $si = $zip->statIndex($i);
131
  $name = $si['name'];
132
  $this->existing_files[$name] = $si['size'];
133
  }
 
 
134
  } elseif (file_exists($destination)) {
135
  $updraftplus->log("Zip file already exists, but is not readable; will remove: $destination");
136
  @unlink($destination);
@@ -188,6 +264,9 @@ class UpdraftPlus_Backup {
188
 
189
  global $updraftplus;
190
 
 
 
 
191
  // Short-circuit the null case, because we want to detect later if something useful happenned
192
  if (count($this->zipfiles_dirbatched) == 0 && count($this->zipfiles_batched) == 0) return true;
193
 
@@ -195,7 +274,7 @@ class UpdraftPlus_Backup {
195
 
196
  $data_added_since_reopen = 0;
197
 
198
- $zip = new ZipArchive();
199
  if (file_exists($zipfile)) {
200
  $opencode = $zip->open($zipfile);
201
  $original_size = filesize($zipfile);
@@ -210,43 +289,187 @@ class UpdraftPlus_Backup {
210
  while ($dir = array_pop($this->zipfiles_dirbatched)) {
211
  $zip->addEmptyDir($dir);
212
  }
 
213
  foreach ($this->zipfiles_batched as $file => $add_as) {
214
  $fsize = filesize($file);
 
 
 
215
  if (!isset($this->existing_files[$add_as]) || $this->existing_files[$add_as] != $fsize) {
216
 
217
  @touch($zipfile);
218
  $zip->addFile($file, $add_as);
 
219
 
220
  $data_added_since_reopen += $fsize;
221
  # 25Mb - force a write-out and re-open
222
- if ($data_added_since_reopen > 26214400 || (time() - $this->zipfiles_lastwritetime) > 2) {
 
 
223
 
224
  $before_size = filesize($zipfile);
225
  clearstatcache();
226
 
227
- if ($data_added_since_reopen > 26214400) {
228
- $updraftplus->log("Adding batch to zip file: over 25Mb added on this batch (".round($data_added_since_reopen/1048576,1)." Mb); re-opening (prior size: ".round($before_size/1024,1).' Kb)');
 
 
 
 
229
  } else {
230
- $updraftplus->log("Adding batch to zip file: over 2 seconds have passed since the last write (".round($data_added_since_reopen/1048576,1)." Mb); re-opening (prior size: ".round($before_size/1024,1).' Kb)');
231
  }
232
  if (!$zip->close()) {
233
- $updraftplus->log("zip::Close returned an error");
234
  }
235
  unset($zip);
236
- $zip = new ZipArchive();
237
  $opencode = $zip->open($zipfile);
238
  if ($opencode !== true) return array($opencode, 0);
239
- $data_added_since_reopen = 0;
240
- $this->zipfiles_lastwritetime = time();
241
  // Call here, in case we've got so many big files that we don't complete the whole routine
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();
252
  $ret = $zip->close();
@@ -264,6 +487,21 @@ class UpdraftPlus_Backup {
264
 
265
  if ($whichone != "others") $updraftplus->log("Beginning creation of dump of $whichone");
266
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
267
  $full_path = $create_in_dir.'/'.$backup_file_basename.'-'.$whichone.'.zip';
268
  $time_now = time();
269
 
@@ -305,10 +543,11 @@ class UpdraftPlus_Backup {
305
  $kbsize = filesize($full_path)/1024;
306
  $rate = round($kbsize/$timetaken, 1);
307
  $updraftplus->log("Created $whichone zip - file size is ".round($kbsize,1)." Kb in ".round($timetaken,1)." s ($rate Kb/s)");
 
 
308
  }
309
 
310
  return basename($full_path);
311
  }
312
 
313
-
314
- }
19
 
20
  var $zip_preferpcl = false;
21
 
22
+ var $binzip = false;
23
+
24
  // This function recursively packs the zip, dereferencing symlinks but packing into a single-parent tree for universal unpacking
25
  function makezip_recursive_add($zipfile, $fullpath, $use_path_when_storing, $original_fullpath) {
26
 
111
  if ($this->zip_preferpcl || (!extension_loaded('zip') && !method_exists('ZipArchive', 'AddFile'))) {
112
  if(!class_exists('PclZip')) require_once(ABSPATH.'/wp-admin/includes/class-pclzip.php');
113
  $zip_object = new PclZip($destination);
114
+ // TODO: WP_CONTENT_DIR: may not apply
115
  $zipcode = $zip_object->create($source, PCLZIP_OPT_REMOVE_PATH, WP_CONTENT_DIR);
116
  if ($zipcode == 0 ) {
117
+ $updraftplus->log("PclZip Error: ".$zip_object->errorInfo(true));
118
  return $zip_object->errorCode();
119
  } else {
120
  return true;
121
  }
122
  }
123
 
124
+ // TODO: Experimental: make live
125
+ if (defined('UPDRAFTPLUS_EXPERIMENTAL_BINZIP') && UPDRAFTPLUS_EXPERIMENTAL_BINZIP == true && $this->binzip === false) {
126
+ $updraftplus->log('Checking if we have a zip executable available');
127
+ $binzip = $updraftplus->find_working_bin_zip();
128
+ if (is_string($binzip)) {
129
+ $updraftplus->log("Found one: $binzip");
130
+ $this->binzip = $binzip;
131
+ }
132
+ }
133
+
134
+ // TODO: Handle stderr?
135
+ if (defined('UPDRAFTPLUS_EXPERIMENTAL_BINZIP') && UPDRAFTPLUS_EXPERIMENTAL_BINZIP == true && is_string($this->binzip)) {
136
+
137
+ if (is_string($source)) $source = array($source);
138
+
139
+ $all_ok = true;
140
+
141
+ $debug = UpdraftPlus_Options::get_updraft_option('updraft_debug_mode');
142
+
143
+ # Don't use -q, as we rely on output to process to detect useful activity
144
+ # Don't use -v either: the extra logging makes things much slower
145
+ $zip_params = ($debug) ? '-v' : '';
146
+
147
+ $orig_size = file_exists($destination) ? filesize($destination) : 0;
148
+ clearstatcache();
149
+
150
+ foreach ($source as $s) {
151
+
152
+ $exec = "cd ".escapeshellarg(dirname($s))."; /usr/bin/zip $zip_params -u -r ".escapeshellarg($destination)." ".escapeshellarg(basename($s))." ";
153
+
154
+ $updraftplus->log("Attempting binary zip ($exec)");
155
+
156
+ $handle = popen($exec, "r");
157
+
158
+ $something_useful_happened = $updraftplus->something_useful_happened;
159
+
160
+ if ($handle) {
161
+ while (!feof($handle)) {
162
+ $w = fgets($handle, 1024);
163
+ if ($w && $debug) $updraftplus->log("Output from zip: ".trim($w), false);
164
+ if (!$something_useful_happened && file_exists($destination)) {
165
+ $new_size = filesize($destination);
166
+ if ($new_size > $orig_size + 20) {
167
+ $updraftplus->something_useful_happened();
168
+ $something_useful_happened = true;
169
+ }
170
+ clearstatcache();
171
+ }
172
+ }
173
+ $ret = pclose($handle);
174
+ if ($ret != 0) {
175
+ $updraftplus->log("Binary zip: error (code: $ret)");
176
+ if ($w && !$debug) $updraftplus->log("Last output from zip: ".trim($w), false);
177
+ $all_ok = false;
178
+ }
179
+ } else {
180
+ $updraftplus->log("Error: popen failed");
181
+ $all_ok = false;
182
+ }
183
+
184
+ }
185
+
186
+ if ($all_ok) {
187
+ $updraftplus->log("Binary zip: apparently successful");
188
+ return true;
189
+ } else {
190
+ $updraftplus->log("Binary zip: an error occured, so we will run over again with ZipArchive");
191
+ }
192
+
193
+ }
194
+
195
  $this->existing_files = array();
196
 
197
  // If the file exists, then we should grab its index of files inside, and sizes
199
  if (file_exists($destination) && is_readable($destination)) {
200
  $zip = new ZipArchive;
201
  $zip->open($destination);
202
+
203
+ for ($i=0; $i < $zip->numFiles; $i++) {
204
  $si = $zip->statIndex($i);
205
  $name = $si['name'];
206
  $this->existing_files[$name] = $si['size'];
207
  }
208
+
209
+ $updraftplus->log(basename($destination).": Zip file already exists, with ".count($this->existing_files)." files");
210
  } elseif (file_exists($destination)) {
211
  $updraftplus->log("Zip file already exists, but is not readable; will remove: $destination");
212
  @unlink($destination);
264
 
265
  global $updraftplus;
266
 
267
+ $maxzipbatch = $updraftplus->jobdata_get('maxzipbatch', 26214400);
268
+ if ((int)$maxzipbatch < 1) $maxzipbatch = 26214400;
269
+
270
  // Short-circuit the null case, because we want to detect later if something useful happenned
271
  if (count($this->zipfiles_dirbatched) == 0 && count($this->zipfiles_batched) == 0) return true;
272
 
274
 
275
  $data_added_since_reopen = 0;
276
 
277
+ $zip = new ZipArchive;
278
  if (file_exists($zipfile)) {
279
  $opencode = $zip->open($zipfile);
280
  $original_size = filesize($zipfile);
289
  while ($dir = array_pop($this->zipfiles_dirbatched)) {
290
  $zip->addEmptyDir($dir);
291
  }
292
+
293
  foreach ($this->zipfiles_batched as $file => $add_as) {
294
  $fsize = filesize($file);
295
+
296
+ $sofar = 0;
297
+
298
  if (!isset($this->existing_files[$add_as]) || $this->existing_files[$add_as] != $fsize) {
299
 
300
  @touch($zipfile);
301
  $zip->addFile($file, $add_as);
302
+ $sofar++;
303
 
304
  $data_added_since_reopen += $fsize;
305
  # 25Mb - force a write-out and re-open
306
+ if ($data_added_since_reopen > $maxzipbatch || (time() - $this->zipfiles_lastwritetime) > 1.5) {
307
+
308
+ $something_useful_sizetest = false;
309
 
310
  $before_size = filesize($zipfile);
311
  clearstatcache();
312
 
313
+ if ($data_added_since_reopen > $maxzipbatch) {
314
+
315
+ $something_useful_sizetest = true;
316
+
317
+ $updraftplus->log("Adding batch to zip file: over ".round($maxzipbatch/1048576,1)." Mb added on this batch (".round($data_added_since_reopen/1048576,1)." Mb, ".count($this->zipfiles_batched)." files batched, $sofar added so far); re-opening (prior size: ".round($before_size/1024,1).' Kb)');
318
+
319
  } else {
320
+ $updraftplus->log("Adding batch to zip file: over 1.5 seconds have passed since the last write (".round($data_added_since_reopen/1048576,1)." Mb); re-opening (prior size: ".round($before_size/1024,1).' Kb)');
321
  }
322
  if (!$zip->close()) {
323
+ $updraftplus->log("ZipArchive::Close returned an error");
324
  }
325
  unset($zip);
326
+ $zip = new ZipArchive;
327
  $opencode = $zip->open($zipfile);
328
  if ($opencode !== true) return array($opencode, 0);
 
 
329
  // Call here, in case we've got so many big files that we don't complete the whole routine
330
+ if (filesize($zipfile) > $before_size) {
331
+
332
+ # Need to make sure that something_useful_happened() is always called
333
+
334
+ # How long since the current run began? If it's taken long (and we're in danger of not making it at all), or if that is forseeable in future because of general slowness, then we should reduce the parameters.
335
+ if (!$something_useful_sizetest) {
336
+ $updraftplus->something_useful_happened();
337
+ } else {
338
+
339
+ // Do this as early as possible
340
+ $updraftplus->something_useful_happened();
341
+
342
+ $time_since_began = max(microtime(true)- $this->zipfiles_lastwritetime, 0.000001);
343
+ $normalised_time_since_began = $time_since_began*($maxzipbatch/$data_added_since_reopen);
344
+
345
+ // Don't measure speed until after ZipArchive::close()
346
+ $rate = round($data_added_since_reopen/$time_since_began, 1);
347
+
348
+ $updraftplus->log(sprintf("A useful amount of data was added after this amount of zip processing: %s s (normalised: %s s, rate: %s Kb/s)", round($time_since_began, 1), round($normalised_time_since_began, 1), round($rate/1024, 1)));
349
+
350
+ // We want to detect not only that we need to reduce the size of batches, but also the capability to increase them. This is particularly important because of ZipArchive()'s (understandable, given the tendency of PHP processes being terminated without notice) practice of first creating a temporary zip file via copying before acting on that zip file (so the information is atomic). Unfortunately, once the size of the zip file gets over 100Mb, the copy operation beguns to be significant. By the time you've hit 500Mb on many web hosts the copy is the majority of the time taken. So we want to do more in between these copies if possible.
351
+
352
+ /* "Could have done more" - detect as:
353
+ - A batch operation would still leave a "good chunk" of time in a run
354
+ - "Good chunk" means that the time we took to add the batch is less than 50% of a run time
355
+ - We can do that on any run after the first (when at least one ceiling on the maximum time is known)
356
+ - But in the case where a max_execution_time is long (so that resumptions are never needed), and we're always on run 0, we will automatically increase chunk size if the batch took less than 6 seconds.
357
+ */
358
+
359
+ // At one stage we had a strategy of not allowing check-ins to have more than 20s between them. However, once the zip file got to a certain size, PHP's habit of copying the entire zip file first meant that it *always* went over 18s, and thence a drop in the max size was inevitable - which was bad, because with the copy time being something that only grew, the outcome was less data being copied every time
360
+
361
+ // Gather the data. We try not to do this unless necessary (may be time-sensitive)
362
+ if ($updraftplus->current_resumption >= 1) {
363
+ $time_passed = $updraftplus->jobdata_get('run_times');
364
+ if (!is_array($time_passed)) $time_passed = array();
365
+ list($max_time, $timings_string, $run_times_known) = $updraftplus->max_time_passed($time_passed, $updraftplus->current_resumption-1);
366
+ } else {
367
+ $run_times_known = 0;
368
+ $max_time = -1;
369
+ }
370
+
371
+ // How many is the most seconds we
372
+ // $max_tolerate_seconds =
373
+
374
+ // We set at 18, to allow approximately unexpected 10% extra in the batch to take it to 20s
375
+ // if (($run_times_known <1 && $normalised_time_since_began > 18) || ($run_times_known >=1 && $normalised_time_since_began > $max_time)) {
376
+ // TODO: This is disabled via 1==0 - remove it properly
377
+ if (1==0 && $normalised_time_since_began > 18) {
378
+
379
+ // Don't do more than would have accounted for 18 normalised seconds at the same rate
380
+ // The line below means, do whichever-is-least-of 10% less, or what would have accounted for 18 normalised seconds - but never go lower than 1Mb.
381
+ $new_maxzipbatch = max( floor(min($maxzipbatch*(18/$normalised_time_since_began), $maxzipbatch*0.9)), 1048576);
382
+ if ($new_maxzipbatch < $maxzipbatch) {
383
+ $updraftplus->jobdata_set("maxzipbatch", $new_maxzipbatch);
384
+ $updraftplus->log("More than 18 (normalised) seconds passed since the last check-in, so we will adjust the amount of data we attempt in each batch (time_passed=$time_since_began, normalised_time_passed=$normalised_time_since_began, old_max_bytes=$maxzipbatch, new_max_bytes=$new_maxzipbatch)");
385
+ $maxzipbatch = $new_maxzipbatch;
386
+ } else {
387
+ $updraftplus->log("More than 18 (normalised) seconds passed since the last check-in, but the zip-writing threshold is already at its lower limit (1Mb), so will not be further reduced (max_bytes=$maxzipbatch, time_passed=$time_since_began, normalised_time_passed=$normalised_time_since_began)");
388
+ }
389
+ } else {
390
+
391
+ if ($normalised_time_since_began<6 || ($updraftplus->current_resumption >=1 && $run_times_known >=1 && $time_since_began < 0.6*$max_time )) {
392
+
393
+ // How much can we increase it by?
394
+ if ($normalised_time_since_began <6) {
395
+ if ($run_times_known > 0 && $max_time >0) {
396
+ $new_maxzipbatch = min(floor(max(
397
+ $maxzipbatch*6/$normalised_time_since_began, $maxzipbatch*((0.6*$max_time)/$normalised_time_since_began))),
398
+ 200*1024*1024
399
+ );
400
+ } else {
401
+ # Maximum of 200Mb in a batch
402
+ $new_maxzipbatch = min( floor($maxzipbatch*6/$normalised_time_since_began),
403
+ 200*1024*1024
404
+ );
405
+ }
406
+ } else {
407
+ // Use up to 60% of available time
408
+ $new_maxzipbatch = min(
409
+ floor($maxzipbatch*((0.6*$max_time)/$normalised_time_since_began)),
410
+ 200*1024*1024
411
+ );
412
+ }
413
+
414
+ # Throttle increases - don't increase by more than 2x in one go - ???
415
+ # $new_maxzipbatch = floor(min(2*$maxzipbatch, $new_maxzipbatch));
416
+ # Also don't allow anything that is going to be more than 18 seconds - actually, that's harmful because of the basically fixed time taken to copy the file
417
+ # $new_maxzipbatch = floor(min(18*$rate ,$new_maxzipbatch));
418
+
419
+ // Final sanity check
420
+ if ($new_maxzipbatch > 1024*1024) $updraftplus->jobdata_set("maxzipbatch", $new_maxzipbatch);
421
+
422
+ if ($new_maxzipbatch <= 1024*1024) {
423
+ $updraftplus->log("Unexpected new_maxzipbatch value obtained (time=$time_since_began, normalised_time=$normalised_time_since_began, max_time=$max_time, data points known=$run_times_known, old_max_bytes=$maxzipbatch, new_max_bytes=$new_maxzipbatch)");
424
+ } elseif ($new_maxzipbatch > $maxzipbatch) {
425
+ $updraftplus->log("Performance is good - will increase the amount of data we attempt to batch (time=$time_since_began, normalised_time=$normalised_time_since_began, max_time=$max_time, data points known=$run_times_known, old_max_bytes=$maxzipbatch, new_max_bytes=$new_maxzipbatch)");
426
+ } elseif ($new_maxzipbatch < $maxzipbatch) {
427
+ // Ironically, we thought we were speedy...
428
+ $updraftplus->log("Adjust: Reducing maximum amount of batched data (time=$time_since_began, normalised_time=$normalised_time_since_began, max_time=$max_time, data points known=$run_times_known, new_max_bytes=$new_maxzipbatch, old_max_bytes=$maxzipbatch)");
429
+ } else {
430
+ $updraftplus->log("Performance is good - but we will not increase the amount of data we batch, as we are already at the present limit (time=$time_since_began, normalised_time=$normalised_time_since_began, max_time=$max_time, data points known=$run_times_known, max_bytes=$maxzipbatch)");
431
+ }
432
+
433
+ if ($new_maxzipbatch > 1024*1024) $maxzipbatch = $new_maxzipbatch;
434
+ }
435
+
436
+ // Detect excessive slowness
437
+ // Don't do this until we're on at least resumption 7, as we want to allow some time for things to settle down and the maxiumum time to be accurately known (since reducing the batch size unnecessarily can itself cause extra slowness, due to PHP's usage of temporary zip files)
438
+
439
+ // We use a percentage-based system as much as possible, to avoid the various criteria being in conflict with each other (i.e. a run being both 'slow' and 'fast' at the same time, which is increasingly likely as max_time gets smaller).
440
+
441
+ if (!$updraftplus->something_useful_happened && $updraftplus->current_resumption >= 7) {
442
+
443
+ $updraftplus->something_useful_happened();
444
+
445
+ if ($run_times_known >= 5 && ($time_since_began > 0.8 * $max_time || $time_since_began + 7 > $max_time)) {
446
+
447
+ $new_maxzipbatch = max(floor($maxzipbatch*0.8), 20971520);
448
+ if ($new_maxzipbatch < $maxzipbatch) {
449
+ $maxzipbatch = $new_maxzipbatch;
450
+ $updraftplus->jobdata_set("maxzipbatch", $new_maxzipbatch);
451
+ $updraftplus->log("We are within a small amount of the expected maximum amount of time available; the zip-writing thresholds will be reduced (time_passed=$time_since_began, normalised_time_passed=$normalised_time_since_began, max_time=$max_time, data points known=$run_times_known, old_max_bytes=$maxzipbatch, new_max_bytes=$new_maxzipbatch)");
452
+ } else {
453
+ $updraftplus->log("We are within a small amount of the expected maximum amount of time available, but the zip-writing threshold is already at its lower limit (20Mb), so will not be further reduced (max_time=$max_time, data points known=$run_times_known, max_bytes=$maxzipbatch)");
454
+ }
455
+ }
456
+
457
+ } else {
458
+ $updraftplus->something_useful_happened();
459
+ }
460
+ }
461
+ }
462
+ $data_added_since_reopen = 0;
463
+ }
464
  clearstatcache();
465
+ $this->zipfiles_lastwritetime = time();
466
  }
467
  }
468
  $this->zipfiles_added++;
469
  // Don't call something_useful_happened() here - nothing necessarily happens until close() is called
470
  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)");
471
  }
472
+
473
  // Reset the array
474
  $this->zipfiles_batched = array();
475
  $ret = $zip->close();
487
 
488
  if ($whichone != "others") $updraftplus->log("Beginning creation of dump of $whichone");
489
 
490
+ if (is_string($create_from_dir) && !file_exists($create_from_dir)) {
491
+ $flag_error = true;
492
+ $updraftplus->log("Does not exist: $create_from_dir");
493
+ if ('mu-plugins' == $whichone) {
494
+ if (!function_exists('get_mu_plugins')) require_once(ABSPATH.'wp-admin/includes/plugin.php');
495
+ $mu_plugins = get_mu_plugins();
496
+ if (count($mu_plugins) == 0) {
497
+ $updraftplus->log("There appear to be no mu-plugins to back up. Will not raise an error.");
498
+ $flag_error = false;
499
+ }
500
+ }
501
+ if ($flag_error) $updraftplus->error(sprintf(__("%s - could not back this entity up; the corresponding directory does not exist (%s)", 'updraftplus'), $whichone, $create_from_dir));
502
+ return false;
503
+ }
504
+
505
  $full_path = $create_in_dir.'/'.$backup_file_basename.'-'.$whichone.'.zip';
506
  $time_now = time();
507
 
543
  $kbsize = filesize($full_path)/1024;
544
  $rate = round($kbsize/$timetaken, 1);
545
  $updraftplus->log("Created $whichone zip - file size is ".round($kbsize,1)." Kb in ".round($timetaken,1)." s ($rate Kb/s)");
546
+ // We can now remove any left-over temporary files from this job
547
+ $updraftplus->clean_temporary_files('_'.$updraftplus->nonce."-$whichone");
548
  }
549
 
550
  return basename($full_path);
551
  }
552
 
553
+ }
 
images/dreamobjects_logo-horiz-2013.png ADDED
Binary file
images/rackspacecloud-logo.png CHANGED
Binary file
includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php CHANGED
@@ -48,6 +48,8 @@ abstract class Dropbox_ConsumerAbstract
48
  try {
49
  $this->getAccessToken();
50
  } catch(Dropbox_Exception $e) {
 
 
51
  $this->getRequestToken();
52
  $this->authorise();
53
  }
@@ -78,11 +80,16 @@ abstract class Dropbox_ConsumerAbstract
78
  private function authorise()
79
  {
80
  // Only redirect if using CLI
81
- if (PHP_SAPI !== 'cli') {
82
  $url = $this->getAuthoriseUrl();
83
  header('Location: ' . $url);
84
  exit;
85
  }
 
 
 
 
 
86
  }
87
 
88
  /**
48
  try {
49
  $this->getAccessToken();
50
  } catch(Dropbox_Exception $e) {
51
+ global $updraftplus;
52
+ $updraftplus->log($e->getMessage().' - need to reauthenticate with Dropbox');
53
  $this->getRequestToken();
54
  $this->authorise();
55
  }
80
  private function authorise()
81
  {
82
  // Only redirect if using CLI
83
+ if (PHP_SAPI !== 'cli' && (!defined('DOING_CRON') || !DOING_CRON)) {
84
  $url = $this->getAuthoriseUrl();
85
  header('Location: ' . $url);
86
  exit;
87
  }
88
+ global $updraftplus;
89
+ $updraftplus->log('Dropbox reauthorisation needed, but running from cron or CLI, so not possible');
90
+ UpdraftPlus_Options::update_updraft_option("updraft_dropboxtk_request_token",'');
91
+ $updraftplus->error(sprintf(__('You need to re-authenticate with %s, as your existing credentials are not working.', 'updraftplus'), 'Dropbox'));
92
+ exit;
93
  }
94
 
95
  /**
includes/Dropbox/OAuth/Storage/Encrypter.php CHANGED
@@ -32,7 +32,7 @@ class Dropbox_Encrypter
32
  public function __construct($key)
33
  {
34
  if (!extension_loaded('mcrypt')) {
35
- throw new Dropbox_Exception('The storage encrypter requires the MCrypt extension');
36
  } elseif (($length = mb_strlen($key, '8bit')) !== self::KEY_SIZE) {
37
  throw new Dropbox_Exception('Expecting a ' . self::KEY_SIZE . ' byte key, got ' . $length);
38
  } else {
@@ -48,15 +48,22 @@ class Dropbox_Encrypter
48
  */
49
  public function encrypt($token)
50
  {
 
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);
61
  return base64_encode($iv . $cipherText);
62
  }
32
  public function __construct($key)
33
  {
34
  if (!extension_loaded('mcrypt')) {
35
+ throw new Dropbox_Exception('The storage encrypter requires the PHP MCrypt extension to be available. Please check your PHP configuration.');
36
  } elseif (($length = mb_strlen($key, '8bit')) !== self::KEY_SIZE) {
37
  throw new Dropbox_Exception('Expecting a ' . self::KEY_SIZE . ' byte key, got ' . $length);
38
  } else {
48
  */
49
  public function encrypt($token)
50
  {
51
+ // This now sends all Windows users to MCRYPT_RAND - used to send PHP>5.3 to MCRYPT_DEV_URANDOM, but we came across a user this failed for
52
  // Only MCRYPT_RAND is available on Windows prior to PHP 5.3
53
  if (version_compare(phpversion(), '5.3.0', '<') && strtoupper(substr(php_uname('s'), 0, 3)) === 'WIN') {
54
  $crypt_source = MCRYPT_RAND;
55
  } elseif (@is_readable("/dev/urandom")) {
56
+ // Note that is_readable is not a true test of whether the mcrypt_create_iv call would work, because when open_basedir restrictions exist, is_readable returns false, but mcrypt_create_iv is not subject to that restriction internally, so would actually have succeeded.
57
  $crypt_source = MCRYPT_DEV_URANDOM;
58
  } else {
59
  $crypt_source = MCRYPT_RAND;
60
  }
61
+ $iv = @mcrypt_create_iv(self::IV_SIZE, $crypt_source);
62
+
63
+ if ($iv === false && $crypt_source != MCRYPT_RAND) {
64
+ $iv = mcrypt_create_iv(self::IV_SIZE, MCRYPT_RAND);
65
+ }
66
+
67
  $cipherText = @mcrypt_encrypt(self::CIPHER, $this->key, $token, self::MODE, $iv);
68
  return base64_encode($iv . $cipherText);
69
  }
includes/S3.php CHANGED
@@ -496,7 +496,12 @@ class S3
496
  return false;
497
  } elseif (isset($rest->response->body))
498
  {
499
- $body = new SimpleXMLElement($rest->response->body);
 
 
 
 
 
500
  return (string) $body->UploadId;
501
  }
502
 
@@ -2048,7 +2053,7 @@ final class S3Request
2048
  $this->resource
2049
  );
2050
  }
2051
- }
2052
 
2053
  curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
2054
  curl_setopt($curl, CURLOPT_HEADER, false);
496
  return false;
497
  } elseif (isset($rest->response->body))
498
  {
499
+ // DreamObjects already returns a SimpleXMLElement here. Not sure how that works.
500
+ if (is_a($rest->response->body, 'SimpleXMLElement')) {
501
+ $body = $rest->response->body;
502
+ } else {
503
+ $body = new SimpleXMLElement($rest->response->body);
504
+ }
505
  return (string) $body->UploadId;
506
  }
507
 
2053
  $this->resource
2054
  );
2055
  }
2056
+ }
2057
 
2058
  curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
2059
  curl_setopt($curl, CURLOPT_HEADER, false);
includes/images/ui-bg_diagonals-thick_18_b81900_40x40.png ADDED
Binary file
includes/images/ui-bg_diagonals-thick_20_666666_40x40.png ADDED
Binary file
includes/images/ui-bg_flat_10_000000_40x100.png ADDED
Binary file
includes/images/ui-bg_glass_100_f6f6f6_1x400.png ADDED
Binary file
includes/images/ui-bg_glass_100_fdf5ce_1x400.png ADDED
Binary file
includes/images/ui-bg_glass_65_ffffff_1x400.png ADDED
Binary file
includes/images/ui-bg_gloss-wave_35_f6a828_500x100.png ADDED
Binary file
includes/images/ui-bg_highlight-soft_100_eeeeee_1x100.png ADDED
Binary file
includes/images/ui-bg_highlight-soft_75_ffe45c_1x100.png ADDED
Binary file
includes/images/ui-icons_222222_256x240.png ADDED
Binary file
includes/images/ui-icons_228ef1_256x240.png ADDED
Binary file
includes/images/ui-icons_ef8c08_256x240.png ADDED
Binary file
includes/images/ui-icons_ffd27a_256x240.png ADDED
Binary file
includes/images/ui-icons_ffffff_256x240.png ADDED
Binary file
includes/updraft-restorer.php CHANGED
@@ -1,6 +1,8 @@
1
  <?php
2
  class Updraft_Restorer extends WP_Upgrader {
3
 
 
 
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');
@@ -16,6 +18,7 @@ class Updraft_Restorer extends WP_Upgrader {
16
  $this->strings['old_move_failed'] = __('Could not delete old directory.','updraftplus');
17
  $this->strings['new_move_failed'] = __('Could not move new directory into place. Check your wp-content/upgrade folder.','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)
@@ -100,7 +103,8 @@ class Updraft_Restorer extends WP_Upgrader {
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') {
 
104
 
105
  global $wp_filesystem;
106
 
@@ -136,11 +140,11 @@ class Updraft_Restorer extends WP_Upgrader {
136
  if (!in_array($file, $do_not_overwrite)) {
137
  # First, move the existing one, if necessary (may not be present)
138
  if ($wp_filesystem->exists($dest_dir.$file)) {
139
- if ($make_backup) {
140
  if ( !$wp_filesystem->move($dest_dir.$file, $dest_dir.$file.'-old', true) ) {
141
  return new WP_Error('old_move_failed', $this->strings['old_move_failed']." (wp-content/$file)");
142
  }
143
- } else {
144
  if (!$wp_filesystem->delete($dest_dir.$file, true)) {
145
  return new WP_Error('old_delete_failed', $this->strings['old_delete_failed']." ($file)");
146
  }
@@ -150,8 +154,15 @@ class Updraft_Restorer extends WP_Upgrader {
150
  }
151
  }
152
  # Now, move in the new one
153
- if ( !$wp_filesystem->move($working_dir . "/".$file, $dest_dir.$file, true) ) {
154
- return new WP_Error('new_move_failed', $this->strings['new_move_failed']);
 
 
 
 
 
 
 
155
  }
156
  }
157
  }
@@ -161,6 +172,11 @@ class Updraft_Restorer extends WP_Upgrader {
161
 
162
  }
163
 
 
 
 
 
 
164
  // $backup_file is just the basename
165
  function restore_backup($backup_file, $type, $service, $info) {
166
 
@@ -169,7 +185,7 @@ class Updraft_Restorer extends WP_Upgrader {
169
  return;
170
  }
171
 
172
- global $wp_filesystem;
173
  $this->init();
174
  $this->backup_strings();
175
 
@@ -177,6 +193,7 @@ class Updraft_Restorer extends WP_Upgrader {
177
  if(!$res) exit;
178
 
179
  $wp_dir = trailingslashit($wp_filesystem->abspath());
 
180
 
181
  @set_time_limit(1800);
182
 
@@ -192,16 +209,62 @@ class Updraft_Restorer extends WP_Upgrader {
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');
@@ -256,11 +319,53 @@ class Updraft_Restorer extends WP_Upgrader {
256
 
257
  $start_time = microtime(true);
258
 
 
 
 
 
 
 
 
 
 
259
  while (!gzeof($dbhandle)) {
260
  // Up to 1Mb
261
  $buffer = rtrim(gzgets($dbhandle, 1048576));
262
  // Discard comments
263
- if (substr($buffer, 0, 1) == '#' || empty($buffer)) continue;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
264
 
265
  $sql_line .= $buffer;
266
 
@@ -270,10 +375,67 @@ class Updraft_Restorer extends WP_Upgrader {
270
  $line++;
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) {
278
  $req = $wpdb->query($sql_line);
279
  if (!$req) $last_error = $wpdb->last_error;
@@ -301,6 +463,9 @@ class Updraft_Restorer extends WP_Upgrader {
301
  $sql_line = '';
302
 
303
  }
 
 
 
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);
@@ -308,21 +473,29 @@ class Updraft_Restorer extends WP_Upgrader {
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);
316
  // A filter, to allow add-ons to perform the install of non-standard entities, or to indicate that it's not possible
317
  if ($movedin === false) {
318
  show_message($this->strings['not_possible']);
319
  } elseif ($movedin !== true) {
320
- if ( !$wp_filesystem->move($wp_dir . "wp-content/$dirname", $wp_dir . "wp-content/$dirname-old", true) ) {
 
 
 
 
 
 
321
  return new WP_Error('old_move_failed', $this->strings['old_move_failed']);
322
  }
323
 
324
  show_message($this->strings['moving_backup']);
325
- if ( !$wp_filesystem->move($working_dir . "/$dirname", $wp_dir . "wp-content/$dirname", true) ) {
326
  return new WP_Error('new_move_failed', $this->strings['new_move_failed']);
327
  }
328
  }
@@ -337,16 +510,152 @@ class Updraft_Restorer extends WP_Upgrader {
337
  switch($type) {
338
  case 'wpcore':
339
  @$wp_filesystem->chmod($wp_dir, FS_CHMOD_DIR);
 
 
340
  break;
341
  case 'uploads':
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);
349
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
350
  }
351
 
352
  }
1
  <?php
2
  class Updraft_Restorer extends WP_Upgrader {
3
 
4
+ var $ud_backup_is_multisite = -1;
5
+
6
  function backup_strings() {
7
  $this->strings['not_possible'] = __('UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually.','updraftplus');
8
  $this->strings['no_package'] = __('Backup file not available.','updraftplus');
18
  $this->strings['old_move_failed'] = __('Could not delete old directory.','updraftplus');
19
  $this->strings['new_move_failed'] = __('Could not move new directory into place. Check your wp-content/upgrade folder.','updraftplus');
20
  $this->strings['delete_failed'] = __('Failed to delete working directory after restoring.','updraftplus');
21
+ $this->strings['multisite_error'] = __('You are running on WordPress multisite - but your backup is not of a multisite site.', 'updraftplus');
22
  }
23
 
24
  // This returns a wp_filesystem location (and we musn't change that, as we must retain compatibility with the class parent)
103
  // 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
104
  // Must use only wp_filesystem
105
  // $dest_dir must already have a trailing slash
106
+ // $preserve_existing: 0 = overwrite with no backup; 1 = make backup of existing; 2 = do nothing if there is existing
107
+ function move_backup_in($working_dir, $dest_dir, $preserve_existing = 1, $do_not_overwrite = array('plugins', 'themes', 'uploads', 'upgrade'), $type = 'not-others', $send_actions = false) {
108
 
109
  global $wp_filesystem;
110
 
140
  if (!in_array($file, $do_not_overwrite)) {
141
  # First, move the existing one, if necessary (may not be present)
142
  if ($wp_filesystem->exists($dest_dir.$file)) {
143
+ if ($preserve_existing == 1) {
144
  if ( !$wp_filesystem->move($dest_dir.$file, $dest_dir.$file.'-old', true) ) {
145
  return new WP_Error('old_move_failed', $this->strings['old_move_failed']." (wp-content/$file)");
146
  }
147
+ } elseif ($preserve_existing == 0) {
148
  if (!$wp_filesystem->delete($dest_dir.$file, true)) {
149
  return new WP_Error('old_delete_failed', $this->strings['old_delete_failed']." ($file)");
150
  }
154
  }
155
  }
156
  # Now, move in the new one
157
+ if (2 == $preserve_existing && $wp_filesystem->exists($dest_dir.$file)) {
158
+ # Remove it - so that we are clean later
159
+ @$wp_filesystem->delete($working_dir.'/'.$file, true);
160
+ } else {
161
+ if ($wp_filesystem->move($working_dir . "/".$file, $dest_dir.$file, true) ) {
162
+ if ($send_actions) do_action('updraftplus_restored_'.$type.'_one', $file);
163
+ } else {
164
+ return new WP_Error('new_move_failed', $this->strings['new_move_failed']);
165
+ }
166
  }
167
  }
168
  }
172
 
173
  }
174
 
175
+ function str_replace_once($needle, $replace, $haystack) {
176
+ $pos = strpos($haystack,$needle);
177
+ return ($pos !== false) ? substr_replace($haystack,$replace,$pos,strlen($needle)) : $haystack;
178
+ }
179
+
180
  // $backup_file is just the basename
181
  function restore_backup($backup_file, $type, $service, $info) {
182
 
185
  return;
186
  }
187
 
188
+ global $wp_filesystem, $updraftplus_addons_migrator;
189
  $this->init();
190
  $this->backup_strings();
191
 
193
  if(!$res) exit;
194
 
195
  $wp_dir = trailingslashit($wp_filesystem->abspath());
196
+ $wp_content_dir = trailingslashit($wp_filesystem->wp_content_dir());
197
 
198
  @set_time_limit(1800);
199
 
209
  if (is_wp_error($working_dir)) return $working_dir;
210
  $working_dir_filesystem = WP_CONTENT_DIR.'/upgrade/'.basename($working_dir);
211
 
212
+ global $table_prefix;
213
+ // We copy the variable because we may be importing with a different prefix (e.g. on multisite imports of individual blog data)
214
+ $import_table_prefix = $table_prefix;
215
+
216
  @set_time_limit(1800);
217
 
218
+ if ($type == 'others') {
219
 
220
  $dirname = basename($info['path']);
221
 
222
  // 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
223
 
224
+ $this->move_backup_in($working_dir, $wp_content_dir, true, array('plugins', 'themes', 'uploads', 'upgrade'), 'others');
225
+
226
+ } elseif (is_multisite() && $this->ud_backup_is_multisite === 0 && ( ( 'plugins' == $type || 'themes' == $type ) || ( 'uploads' == $type && isset($updraftplus_addons_migrator['new_blogid'])) ) && $wp_filesystem->is_dir($working_dir.'/'.$type)) {
227
+ # Migrating a single site into a multisite
228
+ if ('plugins' == $type || 'themes' == $type) {
229
+ // Only move in entities that are not already there (2)
230
+ $this->move_backup_in($working_dir.'/'.$type, $wp_content_dir.$type.'/', 2, array(), $type, true);
231
+ @$wp_filesystem->delete($working_dir.'/'.$type);
232
+ } else {
233
+ // Uploads
234
+
235
+ show_message($this->strings['moving_old']);
236
+
237
+ switch_to_blog($updraftplus_addons_migrator['new_blogid']);
238
+
239
+ $ud = wp_upload_dir();
240
+ $wpud = $ud['basedir'];
241
+ $fsud = trailingslashit($wp_filesystem->find_folder($wpud));
242
+ restore_current_blog();
243
 
244
+ // TODO: What is below will move the entire uploads directory if blog id is 1. Detect this situation. (Can that happen? We created a new blog, so should not be possible).
245
+
246
+ // TODO: the upload dir is not necessarily reachable through wp_filesystem - try ordinary method instead
247
+ if (is_string($fsud)) {
248
+ // This is not expected to exist, since we created a new blog
249
+
250
+ if ( $wp_filesystem->exists($fsud) && !$wp_filesystem->move($fsud, untrailingslashit($fsud)."-old", true) ) {
251
+ return new WP_Error('old_move_failed', $this->strings['old_move_failed']);
252
+ }
253
+
254
+ show_message($this->strings['moving_backup']);
255
+
256
+ if ( !$wp_filesystem->move($working_dir . "/".$type, $fsud, true) ) {
257
+ return new WP_Error('new_move_failed', $this->strings['new_move_failed']);
258
+ }
259
+ /*
260
+ $this->move_backup_in($working_dir.'/'.$type, $wp_content_dir.$type.'/', 1, array(), $type);
261
+ @$wp_filesystem->delete($working_dir.'/'.$type);*/
262
+ } else {
263
+ return new WP_Error('move_failed', $this->strings['new_move_failed']);
264
+ }
265
+
266
+
267
+ }
268
  } elseif ('db' == $type) {
269
 
270
  do_action('updraftplus_restore_db_pre');
319
 
320
  $start_time = microtime(true);
321
 
322
+ // TODO: Print a warning if restoring to a different WP version
323
+ $old_wpversion = '';
324
+ $old_siteurl = '';
325
+ $old_table_prefix = '';
326
+ $old_siteinfo = array();
327
+ $gathering_siteinfo = true;
328
+
329
+ $restoring_table = '';
330
+
331
  while (!gzeof($dbhandle)) {
332
  // Up to 1Mb
333
  $buffer = rtrim(gzgets($dbhandle, 1048576));
334
  // Discard comments
335
+ if (empty($buffer) || substr($buffer, 0, 1) == '#') {
336
+ if ('' == $old_siteurl && preg_match('/^\# Backup of: (http(.*))$/', $buffer, $matches)) {
337
+ $old_siteurl = $matches[1];
338
+ echo '<strong>'.__('Backup of:', 'updraftplus').'</strong> '.htmlspecialchars($old_siteurl).'<br>';
339
+ do_action('updraftplus_restore_db_record_old_siteurl', $old_siteurl);
340
+ } elseif ('' == $old_table_prefix && preg_match('/^\# Table prefix: (\S+)$/', $buffer, $matches)) {
341
+ $old_table_prefix = $matches[1];
342
+ echo '<strong>'.__('Old table prefix:', 'updraftplus').'</strong> '.htmlspecialchars($old_table_prefix).'<br>';
343
+ } elseif ($gathering_siteinfo && preg_match('/^\# Site info: (\S+)$/', $buffer, $matches)) {
344
+ if ('end' == $matches[1]) {
345
+ $gathering_siteinfo = false;
346
+ // Sanity checks
347
+ if (isset($old_siteinfo['multisite']) && !$old_siteinfo['multisite'] && is_multisite()) {
348
+ // Just need to check that you're crazy
349
+ if (!defined('UPDRAFTPLUS_EXPERIMENTAL_IMPORTINTOMULTISITE') || UPDRAFTPLUS_EXPERIMENTAL_IMPORTINTOMULTISITE != true) {
350
+ return new WP_Error('multisite_error', $this->strings['multisite_error']);
351
+ }
352
+ // Got the needed code?
353
+ if (!class_exists('UpdraftPlusAddOn_MultiSite') || !class_exists('UpdraftPlus_Addons_Migrator')) {
354
+ return new WP_Error('missing_addons', __('To import an ordinary WordPress site into a multisite installation requires both the multisite and migrator add-ons.', 'updraftplus'));
355
+ }
356
+ }
357
+ } elseif (preg_match('/^([^=]+)=(.*)$/', $matches[1], $kvmatches)) {
358
+ $key = $kvmatches[1];
359
+ $val = $kvmatches[2];
360
+ echo '<strong>'.__('Site information:','updraftplus').'</strong>'.' '.htmlspecialchars($key).' = '.htmlspecialchars($val).'<br>';
361
+ $old_siteinfo[$key]=$val;
362
+ if ('multisite') {
363
+ if ($val) { $this->ud_backup_is_multisite=1; } else { $this->ud_backup_is_multisite = 0;}
364
+ }
365
+ }
366
+ }
367
+ continue;
368
+ }
369
 
370
  $sql_line .= $buffer;
371
 
375
  $line++;
376
 
377
  # The timed overhead of this is negligible
378
+ if (preg_match('/^\s*drop table if exists \`?([^\`]*)\`?\s*;/i', $sql_line, $matches)) {
379
+
380
+ if (!isset($printed_new_table_prefix)) {
381
+ $import_table_prefix = $this->pre_sql_actions($import_table_prefix);
382
+ if (false===$import_table_prefix || is_wp_error($import_table_prefix)) return $import_table_prefix;
383
+ $printed_new_table_prefix = true;
384
+ }
385
+
386
+ $table_name = $matches[1];
387
+ // Legacy, less reliable - in case it was not caught before
388
+ if ($old_table_prefix == '' && preg_match('/^([a-z0-9]+)_.*$/i', $table_name, $tmatches)) {
389
+ $old_table_prefix = $tmatches[1].'_';
390
+ echo '<strong>'.__('Old table prefix:', 'updraftplus').'</strong> '.htmlspecialchars($old_table_prefix).'<br>';
391
+ }
392
+ if ('' != $old_table_prefix && $import_table_prefix != $old_table_prefix) {
393
+ $sql_line = $this->str_replace_once($old_table_prefix, $import_table_prefix, $sql_line);
394
+ }
395
+ } elseif (preg_match('/^\s*create table \`?([^\`\(]*)\`?\s*\(/i', $sql_line, $matches)) {
396
+
397
+ if (!isset($printed_new_table_prefix)) {
398
+ $import_table_prefix = $this->pre_sql_actions($import_table_prefix);
399
+ if (false===$import_table_prefix || is_wp_error($import_table_prefix)) return $import_table_prefix;
400
+ $printed_new_table_prefix = true;
401
+ }
402
+
403
+ if ($restoring_table) {
404
+
405
+ $this->restored_table($restoring_table, $import_table_prefix, $old_table_prefix);
406
+
407
+ // After restoring the options table, we can set old_siteurl if on legacy (i.e. not already set)
408
+ if ($restoring_table == $import_table_prefix.'options') {
409
+
410
+ if ('' == $old_siteurl) {
411
+ global $updraftplus_addons_migrator;
412
+ if (isset($updraftplus_addon_migrator['new_blogid'])) switch_to_blog($updraftplus_addon_migrator['new_blogid']);
413
+
414
+ $old_siteurl = $wpdb->get_row("SELECT option_value FROM $wpdb->options WHERE option_name='siteurl'")->option_value;
415
+ do_action('updraftplus_restore_db_record_old_siteurl', $old_siteurl);
416
+
417
+ if (isset($updraftplus_addon_migrator['new_blogid'])) restore_current_blog();
418
+ }
419
+
420
+ }
421
+
422
+ }
423
+
424
+ $table_name = $matches[1];
425
+ echo '<strong>'.__('Restoring table','updraftplus').":</strong> ".htmlspecialchars($table_name);
426
+ if ('' != $old_table_prefix && $import_table_prefix != $old_table_prefix) {
427
+ $new_table_name = $this->str_replace_once($old_table_prefix, $import_table_prefix, $table_name);
428
+ echo ' - '.__('will restore as:', 'updraftplus').' '.htmlspecialchars($new_table_name);
429
+ $sql_line = $this->str_replace_once($old_table_prefix, $import_table_prefix, $sql_line);
430
+ } else {
431
+ $new_table_name = $table_name;
432
+ }
433
+ $restoring_table = $new_table_name;
434
+ echo '<br>';
435
+ } elseif ('' != $old_table_prefix && preg_match('/^\s*insert into \`?([^\`]*)\`?\s+values/i', $sql_line, $matches)) {
436
+ if ($import_table_prefix != $old_table_prefix) $sql_line = $this->str_replace_once($old_table_prefix, $import_table_prefix, $sql_line);
437
  }
438
+
439
  if ($use_wpdb) {
440
  $req = $wpdb->query($sql_line);
441
  if (!$req) $last_error = $wpdb->last_error;
463
  $sql_line = '';
464
 
465
  }
466
+
467
+ if ($restoring_table) $this->restored_table($restoring_table, $import_table_prefix, $old_table_prefix);
468
+
469
  $time_taken = microtime(true) - $start_time;
470
  echo sprintf(__('Finished: lines processed: %d in %.2f seconds','updraftplus'),$line, $time_taken)."<br>";
471
  gzclose($dbhandle);
473
 
474
  } else {
475
 
476
+ // Default action: used for plugins, themes and uploads
477
+
478
  $dirname = basename($info['path']);
479
 
480
  show_message($this->strings['moving_old']);
481
 
482
+ $movedin = apply_filters('updraftplus_restore_movein_'.$type, $working_dir, $wp_dir, $wp_content_dir);
483
  // A filter, to allow add-ons to perform the install of non-standard entities, or to indicate that it's not possible
484
  if ($movedin === false) {
485
  show_message($this->strings['not_possible']);
486
  } elseif ($movedin !== true) {
487
+ if ($wp_filesystem->exists($wp_content_dir.$dirname."-old")) {
488
+ // Is better to warn and delete the backup than abort mid-restore and leave inconsistent site
489
+ echo $wp_content_dir.$dirname."-old: ".__('This directory already exists, and will be replaced', 'updraftplus').'<br>';
490
+ # In theory, supply true as the 3rd parameter of true achieves this; in practice, not always so (leads to support requests)
491
+ $wp_filesystem->delete($wp_content_dir.$dirname."-old", true);
492
+ }
493
+ if ( !$wp_filesystem->move($wp_content_dir . $dirname, $wp_content_dir."$dirname-old", false) ) {
494
  return new WP_Error('old_move_failed', $this->strings['old_move_failed']);
495
  }
496
 
497
  show_message($this->strings['moving_backup']);
498
+ if ( !$wp_filesystem->move($working_dir . "/$dirname", $wp_content_dir.$dirname, true) ) {
499
  return new WP_Error('new_move_failed', $this->strings['new_move_failed']);
500
  }
501
  }
510
  switch($type) {
511
  case 'wpcore':
512
  @$wp_filesystem->chmod($wp_dir, FS_CHMOD_DIR);
513
+ // In case we restored a .htaccess which is incorrect for the local setup
514
+ $this->flush_rewrite_rules();
515
  break;
516
  case 'uploads':
517
+ @$wp_filesystem->chmod($wp_content_dir.$dirname, 0775, true);
518
  break;
519
  case 'db':
520
+ do_action('updraftplus_restored_db', array('expected_oldsiteurl' => $old_siteurl), $import_table_prefix);
521
+ $this->flush_rewrite_rules();
522
  break;
523
  default:
524
+ @$wp_filesystem->chmod($wp_content_dir.$dirname, FS_CHMOD_DIR);
525
  }
526
+
527
+ return true;
528
+
529
+ }
530
+
531
+ function pre_sql_actions($import_table_prefix) {
532
+
533
+ $import_table_prefix = apply_filters('updraftplus_restore_set_table_prefix', $import_table_prefix, $this->ud_backup_is_multisite);
534
+
535
+ if (!is_string($import_table_prefix)) {
536
+ if ($import_table_prefix === false) {
537
+ echo '<p>'.__('Please supply the requested information, and then continue.', 'updraftplus').'</p>';
538
+ return false;
539
+ } else {
540
+ return new WP_Error('invalid_table_prefix', __('Error:', 'updraftplus').' '.serialize($import_table_prefix));
541
+ }
542
+ }
543
+
544
+ echo '<strong>'.__('New table prefix:', 'updraftplus').'</strong> '.htmlspecialchars($import_table_prefix).'<br>';
545
+
546
+ return $import_table_prefix;
547
+
548
+ }
549
+
550
+ function option_filter_get($which) {
551
+ global $wpdb;
552
+ $row = $wpdb->get_row($wpdb->prepare("SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $which));
553
+ // Has to be get_row instead of get_var because of funkiness with 0, false, null values
554
+ if (is_object($row)) {
555
+ return $row->option_value;
556
+ }
557
+ return false;
558
+ }
559
+
560
+ function option_filter_permalink_structure($val) {
561
+ return $this->option_filter_get('permalink_structure');
562
+ }
563
+
564
+ function option_filter_page_on_front($val) {
565
+ return $this->option_filter_get('page_on_front');
566
+ }
567
+
568
+ function option_filter_rewrite_rules($val) {
569
+ return $this->option_filter_get('rewrite_rules');
570
+ }
571
+
572
+ // function option_filter($which) {
573
+ // if (strpos($which, 'pre_option') !== false) { echo "OPT_FILT: $which<br>\n"; }
574
+ // return false;
575
+ // }
576
+
577
+ function flush_rewrite_rules() {
578
+
579
+ // We have to deal with the fact that the procedures used call get_option, which could be looking at the wrong table prefix, or have the wrong thing cached
580
+
581
+ // add_filter('all', array($this, 'option_filter'));
582
+
583
+ global $updraftplus_addons_migrator;
584
+ if (isset($updraftplus_addon_migrator['new_blogid'])) switch_to_blog($updraftplus_addon_migrator['new_blogid']);
585
+
586
+ foreach (array('permalink_structure', 'rewrite_rules', 'page_on_front') as $opt) {
587
+ add_filter('pre_option_'.$opt, array($this, 'option_filter_'.$opt));
588
+ }
589
+
590
+ global $wp_rewrite;
591
+ $wp_rewrite->init();
592
+ flush_rewrite_rules(true);
593
+
594
+ foreach (array('permalink_structure', 'rewrite_rules', 'page_on_front') as $opt) {
595
+ remove_filter('pre_option_'.$opt, array($this, 'option_filter_'.$opt));
596
+ }
597
+
598
+ if (isset($updraftplus_addon_migrator['new_blogid'])) restore_current_blog();
599
+
600
+ // remove_filter('all', array($this, 'option_filter'));
601
+
602
+ }
603
+
604
+ function restored_table($table, $import_table_prefix, $old_table_prefix) {
605
+
606
+ global $wpdb;
607
+
608
+ // WordPress has an option name predicated upon the table prefix. Yuk.
609
+ if ($table == $import_table_prefix.'options' && $import_table_prefix != $old_table_prefix) {
610
+ echo sprintf(__('Table prefix has changed: changing %s table field(s) accordingly:', 'updraftplus'),'option').' ';
611
+ if (false === $wpdb->query("UPDATE $wpdb->options SET option_name='${import_table_prefix}user_roles' WHERE option_name='${old_table_prefix}user_roles' LIMIT 1")) {
612
+ echo __('Error','updraftplus');
613
+ } else {
614
+ echo __('OK', 'updraftplus');
615
+ }
616
+ echo '<br>';
617
+ } elseif ($table == $import_table_prefix.'usermeta' && $import_table_prefix != $old_table_prefix) {
618
+
619
+ echo sprintf(__('Table prefix has changed: changing %s table field(s) accordingly:', 'updraftplus'),'usermeta').' ';
620
+
621
+ $meta_keys = $wpdb->get_results("SELECT umeta_id, meta_key
622
+ FROM ${import_table_prefix}usermeta
623
+ WHERE meta_key
624
+ LIKE '".str_replace('_', '\_', $old_table_prefix)."%'");
625
+
626
+ $old_prefix_length = strlen($old_table_prefix);
627
+
628
+ $errors_occurred = false;
629
+ foreach ($meta_keys as $meta_key ) {
630
+
631
+ //Create new meta key
632
+ $new_meta_key = $import_table_prefix . substr($meta_key->meta_key, $old_prefix_length);
633
+
634
+ $query = "UPDATE " . $import_table_prefix . "usermeta
635
+ SET meta_key='".$new_meta_key."'
636
+ WHERE umeta_id=".$meta_key->umeta_id;
637
+
638
+ if (false === $wpdb->query($query)) {
639
+ $errors_occurred = true;
640
+ }
641
+
642
+ }
643
+ if ($errors_occurred) {
644
+ echo __('Error', 'updraftplus');
645
+ } else {
646
+ echo __('OK', 'updraftplus');
647
+ }
648
+ echo "<br>";
649
+
650
+ }
651
+
652
+ do_action('updraftplus_restored_db_table', $table);
653
+
654
+ // Re-generate permalinks. Do this last - i.e. make sure everything else is fixed up first.
655
+ if ($table == $import_table_prefix.'options') {
656
+ $this->flush_rewrite_rules();
657
+ }
658
+
659
  }
660
 
661
  }
index.html ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
5
+ <title>UpdraftPlus backup/restore/clone/migrate for WordPress</title>
6
+ </head>
7
+ <body>
8
+
9
+ <h1>UpdraftPlus Backup / Restore / Clone / Migrate plugin for WordPress</h1>
10
+
11
+ <div class="block-content"><p><a href="http://updraftplus.com" rel="nofollow">UpdraftPlus, a backup/restore/clone/migration plugin for WordPress</a> simplifies backups (and restoration). Backup into the cloud (Amazon S3, Dropbox, Google Drive, Rackspace Cloud, DreamObjects, FTP, SFTP, WebDAV and email) and restore with a single click. Backups of files and database can have separate schedules.</p>
12
+
13
+ <ul>
14
+ <li>Thousands of users: widely tested and reliable (over 140,000 downloads). Ranks in the top 1% on rankwp.com (228 out of 25,000 plugins).</li>
15
+ <li>Top-quality: ranks 45th out of 25,000 plugins for quality on rankwp.com (top 0.25% - last checked 23rd May 2013).</li>
16
+ <li>Supports backups to Amazon S3, Dropbox, Rackspace Cloud Files, Google Drive, DreamHost DreamObjects, FTP and email. Also (via an add-on) FTP over SSL, SFTP and WebDAV. (Note: Microsoft forbid SkyDrive to be used by backup software). </li>
17
+ <li>Quick restore (both file and database backups)</li>
18
+ <li>Backup automatically on a repeating schedule</li>
19
+ <li>Site duplicator/migrator: can copy sites, and (with add-on) move them to new locations</li>
20
+ <li>Files and databases can have separate schedules</li>
21
+ <li>Failed uploads are automatically resumed/retried</li>
22
+ <li>Select which files to backup (plugins, themes, content, other)</li>
23
+ <li>Select which components of a backup to restore</li>
24
+ <li>Download backup archives direct from your WordPress dashboard</li>
25
+ <li>Database backups can be encrypted for security</li>
26
+ <li>Debug mode that gives full logging of the backup</li>
27
+ <li>Internationalised (translations very welcome - see below)</li>
28
+ <li>Premium version and support available - <a href="http://updraftplus.com" rel="nofollow">http://updraftplus.com</a></li>
29
+ <li>Tested and supported on all current PHP versions (5.2, 5.3, 5.4)</li>
30
+ </ul>
31
+
32
+ <h4>Don't Risk Anything Less</h4>
33
+
34
+ <p>Your backups are worth the same as your entire investment in your website. The day may come when you get hacked, or your hosting company does, or they go bust - without good backups, you lose everything. Do you really want to entrust all your work to plugins with only a few thousand downloads, or that has no professional backup or support? Believe us - writing a reliable backup plugin that works consistently across the huge range of WordPress deployments is hard.</p>
35
+
36
+ <h4>UpdraftPlus Addons And Premium</h4>
37
+
38
+ <p>UpdraftPlus is not crippled in any way - it is fully functional, with no annoying omissions. What we do have is various extra features, and guaranteed support, available <a href="http://updraftplus.com/" rel="nofollow">from our website, updraftplus.com</a>.</p>
39
+
40
+ <p>If you need WordPress multisite compatibility (you'll know if you do), <a href="http://updraftplus.com/shop/" rel="nofollow">then you need UpdraftPlus Premium</a>.</p>
41
+
42
+ <h4>Professional / Enterprise support agreements available</h4>
43
+
44
+ <p>UpdraftPlus is written by professional WordPress developers. If your site needs guaranteed support, then we are available. Just <a href="http://updraftplus.com/shop/" rel="nofollow">go to our shop.</a></p>
45
+
46
+ <h4>Are you multi-lingual? Can you translate?</h4>
47
+
48
+ <p>Are you able to translate UpdraftPlus into another language? Are you ready to help speakers of your language? UpdraftPlus itself is ready and waiting - the only work needed is the translating. The translation process is easy, and web-based - go here for instructions: <a href="http://updraftplus.com/translate/" rel="nofollow">http://updraftplus.com/translate/</a>. (Or if you're an expert WordPress translator already, then just pick out the .pot file from the wp-content/plugins/updraftplus/languages/ directory).</p>
49
+
50
+ <p>Many thanks to the existing translators:</p>
51
+
52
+ <ul>
53
+ <li>Deutsch / German (de_DE): Marcel Herrguth - <a href="mailto:mherrguth@mrgeneration.de" rel="nofollow">mherrguth@mrgeneration.de</a></li>
54
+ <li>Español / Spanish (es_ES): Fernando Villasmil - <a href="mailto:villasmil.fernando@gmail.com" rel="nofollow">villasmil.fernando@gmail.com</a></li>
55
+ <li>Magyar / Hungarian (hu_HU): Szépe Viktor - <a href="http://www.szepe.net" rel="nofollow">http://www.szepe.net</a></li>
56
+ <li>Nederlands / Dutch (nl_NL): Hans van der Vlist - <a href="mailto:hansvandervlist@gmail.com" rel="nofollow">hansvandervlist@gmail.com</a></li>
57
+ <li>Polski / Polish (pl_PL): Bartosz Kaczmarek - <a href="mailto:barth.kaczmarek@gmail.com" rel="nofollow">barth.kaczmarek@gmail.com</a></li>
58
+ </ul>
59
+
60
+ <h4>Other support</h4>
61
+
62
+ <p>We hang out in the support forum for this plugin - <a href="http://wordpress.org/support/plugin/updraftplus" rel="nofollow">http://wordpress.org/support/plugin/updraftplus</a> - however, to save our time so that we can spend it on development, please read the plugin's Frequently Asked Questions - <a href="http://updraftplus.com/support/frequently-asked-questions/" rel="nofollow">http://updraftplus.com/support/frequently-asked-questions/</a> - before going there, and ensure that you have updated to the latest released version of UpdraftPlus.</p>
63
+
64
+ </div>
65
+
66
+ </body>
67
+ </html>
languages/updraftplus-it_IT.mo ADDED
Binary file
languages/updraftplus-it_IT.po ADDED
@@ -0,0 +1,2256 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Translation of UpdraftPlus in Italian
2
+ # This file is distributed under the same license as the UpdraftPlus package.
3
+ msgid ""
4
+ msgstr ""
5
+ "PO-Revision-Date: 2013-06-18 14:03:22+0000\n"
6
+ "MIME-Version: 1.0\n"
7
+ "Content-Type: text/plain; charset=UTF-8\n"
8
+ "Content-Transfer-Encoding: 8bit\n"
9
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
10
+ "X-Generator: GlotPress/0.1\n"
11
+ "Project-Id-Version: UpdraftPlus\n"
12
+
13
+ #: addons/migrator.php:447
14
+ msgid "<strong>Search and replacing table:</strong> %s"
15
+ msgstr "<strong>Ricerca e sostituizione della tabella:</strong> %s"
16
+
17
+ #: addons/migrator.php:93
18
+ msgid "Site Name:"
19
+ msgstr "Nome Sito:"
20
+
21
+ #: addons/migrator.php:95
22
+ msgid "Site Domain:"
23
+ msgstr "Nome Dominio:"
24
+
25
+ #: addons/migrator.php:112
26
+ msgid "Migrated site (from UpdraftPlus)"
27
+ msgstr "Sito migrato (da UpdraftPlus)"
28
+
29
+ #: addons/migrator.php:141
30
+ msgid "<strong>ERROR</strong>: Site URL already taken."
31
+ msgstr "<strong>ERRORE</strong>: URL del sito già preso."
32
+
33
+ #: addons/migrator.php:148
34
+ msgid "New site:"
35
+ msgstr "Nuovo Sito:"
36
+
37
+ #: addons/migrator.php:80
38
+ msgid "Information needed to continue:"
39
+ msgstr "Informazioni necessarie per continuare:"
40
+
41
+ #: addons/migrator.php:81
42
+ msgid "Please supply the following information:"
43
+ msgstr "Prego, inserire le seguenti informazioni:"
44
+
45
+ #: addons/migrator.php:84
46
+ msgid "Enter details for where this new site is to live within your multisite install:"
47
+ msgstr "Inserire i dettagli per il nuovo sito all'interno di una installazione multi-sito:"
48
+
49
+ #: addons/migrator.php:38
50
+ msgid "Processed plugin:"
51
+ msgstr "Plugin processato:"
52
+
53
+ #: addons/migrator.php:46
54
+ msgid "Network activating theme:"
55
+ msgstr "Attivazione del tema da rete: "
56
+
57
+ #: addons/sftp.php:23
58
+ msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time) when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there."
59
+ msgstr "Alcuni server pubblicizzano che l'FTP criptato è disponibile, ma poi ritornano un errore di time-out (dopo un lungo periodo di tempo) quando si prova ad utilizzarlo. Se questo dovesse succedere, vai in \"Opzioni Avanzate\" (sotto) e disabilitare SSL."
60
+
61
+ #: addons/sftp.php:50
62
+ msgid "Check your file permissions: Could not successfully create and enter directory:"
63
+ msgstr "Controlla i tuoi permessi di accesso al file: non è possibile creare ed accedere alla cartella:"
64
+
65
+ #: methods/dropbox.php:271
66
+ msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it."
67
+ msgstr "L'installazione di PHP sul tuo server non include un modulo necessario (%s). Contattare il supporto del provider di web hosting, e chiedere di abilitarlo."
68
+
69
+ #: methods/s3.php:469
70
+ msgid "Please check your access credentials."
71
+ msgstr "Si prega di verificare i propri dati di accesso."
72
+
73
+ #: methods/s3.php:447
74
+ msgid "The error reported by %s was:"
75
+ msgstr "L'errore riportato da %s è:"
76
+
77
+ #: includes/updraft-restorer.php:586
78
+ msgid "Please supply the requested information, and then continue."
79
+ msgstr "Si prega di fornire le informazioni richieste, e quindi di continuare."
80
+
81
+ #: includes/updraft-restorer.php:593
82
+ msgid "New table prefix:"
83
+ msgstr "Nuovo prefisso di tabella:"
84
+
85
+ #: includes/updraft-restorer.php:490
86
+ msgid "Cannot drop tables, so deleting instead (%s)"
87
+ msgstr "Impossibile eliminare le tabelle dal database, la cancellazione avverrà tramite comando DELETE (%s)"
88
+
89
+ #: includes/updraft-restorer.php:394
90
+ msgid "To import an ordinary WordPress site into a multisite installation requires both the multisite and migrator add-ons."
91
+ msgstr "Per importare un sito WordPress comune in una installazione multi-sito è necessario sia il multisite che il migrator add-on."
92
+
93
+ #: includes/updraft-restorer.php:400
94
+ msgid "Site information:"
95
+ msgstr "Informazioni sul sito:"
96
+
97
+ #: includes/updraft-restorer.php:485
98
+ msgid "Cannot create new tables, so skipping this command (%s)"
99
+ msgstr "Impossibile creare nuove tabelle, il comando è tralasciato (%s)"
100
+
101
+ #: includes/updraft-restorer.php:350 includes/updraft-restorer.php:365
102
+ msgid "Warning:"
103
+ msgstr "Attenzione:"
104
+
105
+ #: includes/updraft-restorer.php:350
106
+ msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site."
107
+ msgstr "Il tuo utente per l'accesso al database non ha i diritti per creare tabelle. Cercheremo di ripristinare semplicemente svuotando le tabelle; questo dovrebbe funzionare fino a quando a) si esegue il ripristino di una versione di WordPress con la stessa struttura di database, e b) Il database importato non contiene le tabelle che non sono già presenti sul sito sul quale importare."
108
+
109
+ #: includes/updraft-restorer.php:365
110
+ msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure"
111
+ msgstr "Il tuo utente del database non dispone dell'autorizzazione per eliminare tabelle. Cercheremo di ripristinare semplicemente svuotando le tabelle; questo dovrebbe funzionare fino a quando si esegue il ripristino da una versione di WordPress con la stessa struttura del database."
112
+
113
+ #: includes/updraft-restorer.php:21
114
+ msgid "You are running on WordPress multisite - but your backup is not of a multisite site."
115
+ msgstr "Esecuzione su un sito WordPress multi-sito - ma il tuo backup non è per un sito multi-sito. "
116
+
117
+ #: admin.php:2300
118
+ msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file."
119
+ msgstr "Esclusione del ripristino del core WordPress quando si importa un singolo sito in una installazione multi-sito. Se c'è qualcosa di necessario nella tua cartella WordPress allora sarà necessario ri-aggiungerlo manualmente dal file .zip."
120
+
121
+ #: admin.php:1967
122
+ msgid "Your web server's PHP installation does not included a <strong>required</strong> (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it."
123
+ msgstr "L'installazione PHP del tuo server web non ha incluso un modulo <strong>necessario</strong> (per %s - nome modulo %s). Contattare il supporto del provider di web hosting e chiedere di abilitarlo."
124
+
125
+ #: admin.php:1967
126
+ msgid "Your options are 1) Install/enable %s or 2) Change web hosting companies - %s is a standard PHP component, and required by all cloud backup plugins that we know of."
127
+ msgstr "Le opzioni disponibili sono: 1) Installare/abilitare %s oppure 2) Cambiare società di web hosting -%s è un componente standard di PHP, ed è richiesto da tutti i plug-in di cloud backup conosciuti."
128
+
129
+ #: admin.php:1846
130
+ msgid "Close"
131
+ msgstr "Chiudi"
132
+
133
+ #: admin.php:1774
134
+ msgid "Unexpected response:"
135
+ msgstr "Risposta sconosciuta:"
136
+
137
+ #: admin.php:1623
138
+ msgid "To send to more than one address, separate each address with a comma."
139
+ msgstr "Per inviare a più di un indirizzo, separate ognuno da una virgola."
140
+
141
+ #: admin.php:1351
142
+ msgid "PHP information"
143
+ msgstr "Informazioni PHP"
144
+
145
+ #: admin.php:1247
146
+ msgid "show PHP information (phpinfo)"
147
+ msgstr "Mostra informazioni PHP (phpinfo)"
148
+
149
+ #: admin.php:1259
150
+ msgid "zip executable found:"
151
+ msgstr "zip eseguibile trovato:"
152
+
153
+ #: admin.php:1196
154
+ msgid "Migrate Site"
155
+ msgstr "Migrare sito"
156
+
157
+ #: admin.php:1200
158
+ msgid "Migration of data from another site happens through the \"Restore\" button. A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site. UpdraftPlus modifies the restoration operation appropriately, to fit the backup data to the new site."
159
+ msgstr "La migrazione dei dati da un altro sito avviene attraverso il pulsante \"Ripristina\". Un \"migrazione\" è in definitiva la stessa cosa di un ripristino, ma utilizzando gli archivi di backup che si importano da un altro sito. UpdraftPlus modifica l'operazione di ripristino in modo appropriato, per soddisfare i dati di backup al nuovo sito."
160
+
161
+ #: admin.php:1200
162
+ msgid "<a href=\"%s\">Read this article to see step-by-step how it's done.</a>"
163
+ msgstr "<a href=\"%s\">Leggi questo articolo per vedere passo-passo com'è fatto.</a>"
164
+
165
+ #: admin.php:1202
166
+ msgid "Do you want to migrate or clone/duplicate a site?"
167
+ msgstr "Vuoi migrare o clonare/duplicare un sito?"
168
+
169
+ #: admin.php:1202
170
+ msgid "Then, try out our \"Migrator\" add-on. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand."
171
+ msgstr "Prova il nostro \"Migrator\" add-on. Dopo averlo usato una volta, avrete ammortizzato il costo di acquisto rispetto al tempo necessario per copiare un sito a mano."
172
+
173
+ #: admin.php:1202
174
+ msgid "Get it here."
175
+ msgstr "Lo trovi qui."
176
+
177
+ #: admin.php:1127
178
+ msgid "Deleting... please allow time for the communications with the remote storage to complete."
179
+ msgstr "Eliminazione ... Si prega di lasciare il tempo per le comunicazioni con l'archiviazione remota per completare"
180
+
181
+ #: admin.php:1126
182
+ msgid "Also delete from remote storage"
183
+ msgstr "Cancellazione anche dall'archiviazione remota"
184
+
185
+ #: admin.php:983
186
+ msgid "Latest UpdraftPlus.com news:"
187
+ msgstr "Ultime notizie da UpdraftPlus.com:"
188
+
189
+ #: admin.php:963
190
+ msgid "Clone/Migrate"
191
+ msgstr "Clona/Migra"
192
+
193
+ #: admin.php:856
194
+ msgid "News"
195
+ msgstr "Notizie"
196
+
197
+ #: admin.php:856
198
+ msgid "Premium"
199
+ msgstr "Premium"
200
+
201
+ #: admin.php:469
202
+ msgid "Local archives deleted: %d"
203
+ msgstr "Archivi locali cancellati: %d"
204
+
205
+ #: admin.php:470
206
+ msgid "Remote archives deleted: %d"
207
+ msgstr "Archivi remoti cancellati: %d"
208
+
209
+ #: backup.php:498
210
+ msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)"
211
+ msgstr "%s - impossibile eseguire il backup di questo; la cartella corrispondente non esiste (%s) "
212
+
213
+ #: admin.php:392
214
+ msgid "Backup set not found"
215
+ msgstr "Set di backup non trovato"
216
+
217
+ #: admin.php:468
218
+ msgid "The backup set has been removed."
219
+ msgstr "Il backup è stato rimosso."
220
+
221
+ #: updraftplus.php:2034
222
+ msgid "Subscribe to the UpdraftPlus blog to get up-to-date news and offers"
223
+ msgstr "Iscriviti al blog di UpdraftPlus per avere le ultime notizie e le offerte"
224
+
225
+ #: updraftplus.php:2034
226
+ msgid "Blog link"
227
+ msgstr "Collegamento al Blog"
228
+
229
+ #: updraftplus.php:2034
230
+ msgid "RSS link"
231
+ msgstr "Collegamento RSS"
232
+
233
+ #: methods/s3.php:315
234
+ msgid "Testing %s Settings..."
235
+ msgstr "Analisi impostazioni di %s..."
236
+
237
+ #: admin.php:1002
238
+ msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above."
239
+ msgstr "In alternativa, è possibile inserire manualmente nella cartella UpdraftPlus (solitamente wp-content/updraft), ad esempio via FTP, e quindi utilizzare il link \"nuova scansione\" di cui sopra."
240
+
241
+ #: admin.php:208
242
+ msgid "Notice"
243
+ msgstr "Nota"
244
+
245
+ #: admin.php:208
246
+ msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request."
247
+ msgstr "Modalità di debug di UpdraftPlus attivata. E' possibile visualizzare avvisi di debug in questa pagina non solamente di UpdraftPlus, ma di qualsiasi altro plug-in installato. Si prega verificare che l'avviso che state vedendo sia generato da UpdraftPlus prima di inviare una richiesta di supporto."
248
+
249
+ #: admin.php:213
250
+ msgid "W3 Total Cache's object cache is active. This is known to have a bug that messes with all scheduled tasks (including backup jobs)."
251
+ msgstr "W3 Total Cache è attivo. E' noto che questo componente ha un bug che scombussola tutti i task schedulati (inclusi i processi di backup)"
252
+
253
+ #: admin.php:213
254
+ msgid "Go here to turn it off."
255
+ msgstr "Vai qui per disattivarlo."
256
+
257
+ #: admin.php:213
258
+ msgid "<a href=\"%s\">Go here</a> for more information."
259
+ msgstr "<a href=\"%s\">Vai qui</a> per maggiori informazioni."
260
+
261
+ #: updraftplus.php:987
262
+ msgid "Errors encountered:"
263
+ msgstr "Errori riscontrati:"
264
+
265
+ #: admin.php:1743
266
+ msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..."
267
+ msgstr "Rescan in corsco (ricerca di backup uploadati manualmente nello spazio interno di archiviazione).."
268
+
269
+ #: admin.php:1049
270
+ msgid "Begun looking for this entity"
271
+ msgstr "Inizio ricerca di questo termine"
272
+
273
+ #: addons/migrator.php:387
274
+ msgid "SQL update commands run:"
275
+ msgstr "Comandi di aggiornamento SQL eseguiti:"
276
+
277
+ #: addons/migrator.php:388
278
+ msgid "Errors:"
279
+ msgstr "Errori:"
280
+
281
+ #: addons/migrator.php:389
282
+ msgid "Time taken (seconds):"
283
+ msgstr "Tempo necessario (secondi):"
284
+
285
+ #: addons/migrator.php:476
286
+ msgid "rows: %d"
287
+ msgstr "linee: %d"
288
+
289
+ #: addons/migrator.php:541
290
+ msgid "\"%s\" has no primary key, manual change needed on row %s."
291
+ msgstr "\"%s\" non ha una chiave primaria, necessaria modifica manuale sulla linea %s."
292
+
293
+ #: addons/dropbox-folders.php:21
294
+ msgid "Store at"
295
+ msgstr "Archivia in"
296
+
297
+ #: addons/migrator.php:302
298
+ msgid "Nothing to do: the site URL is already: %s"
299
+ msgstr "Nessuna modifica: l'URL del sito &egrave; gi&agrave;: %s"
300
+
301
+ #: addons/migrator.php:307
302
+ msgid "Warning: the database's site URL (%s) is different to what we expected (%s)"
303
+ msgstr "Attenzione: l'URL del database del sito (%s) è differente dalla posizione originale (%s)"
304
+
305
+ #: addons/migrator.php:314
306
+ msgid "Database search and replace: replace %s in backup dump with %s"
307
+ msgstr "Ricerca e sostituzione del database: sostituisci %s nel backup con %s"
308
+
309
+ #: addons/migrator.php:332
310
+ msgid "Could not get list of tables"
311
+ msgstr "Impossibile caricare la lista delle tabelle"
312
+
313
+ #: addons/migrator.php:343
314
+ msgid "<strong>Search and replacing table:</strong> %s: already done"
315
+ msgstr "<strong>Ricerca e Sostituzione Tabella:</strong> %s: già fatto"
316
+
317
+ #: addons/migrator.php:384
318
+ msgid "Tables examined:"
319
+ msgstr "Tabelle esaminate:"
320
+
321
+ #: addons/migrator.php:385
322
+ msgid "Rows examined:"
323
+ msgstr "Righe esaminate:"
324
+
325
+ #: addons/migrator.php:386
326
+ msgid "Changes made:"
327
+ msgstr "Cambiamenti fatti:"
328
+
329
+ #: addons/sftp.php:139
330
+ msgid "%s Error: Failed to download"
331
+ msgstr "Errore %s: download fallito"
332
+
333
+ #: addons/sftp.php:183
334
+ msgid "Resuming partial uploads is not supported, so you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file."
335
+ msgstr "Non è possibile riprendere upload parziali, è quindi necessario assicurarsi che il vostro server web permetta ai processi PHP di funzionare abbastanza a lungo per caricare il vostro file di backup più grande."
336
+
337
+ #: addons/sftp.php:188
338
+ msgid "Host"
339
+ msgstr "Host"
340
+
341
+ #: addons/sftp.php:195
342
+ msgid "Port"
343
+ msgstr "Porta"
344
+
345
+ #: addons/sftp.php:209
346
+ msgid "Password"
347
+ msgstr "Password"
348
+
349
+ #: addons/sftp.php:225
350
+ msgid "Directory path"
351
+ msgstr "Percorso cartella"
352
+
353
+ #: addons/sftp.php:227
354
+ msgid "Where to change directory to after logging in - often this is relative to your home directory."
355
+ msgstr "Dove cambiare cartella dopo il login - spesso questo è relativo alla vostra cartella di home."
356
+
357
+ #: addons/sftp.php:263
358
+ msgid "host name"
359
+ msgstr "Nome Host"
360
+
361
+ #: addons/sftp.php:267
362
+ msgid "username"
363
+ msgstr "Nome Utente"
364
+
365
+ #: addons/sftp.php:271
366
+ msgid "password"
367
+ msgstr "Password"
368
+
369
+ #: addons/sftp.php:276
370
+ msgid "Failure: Port must be an integer."
371
+ msgstr "Errore: la porta deve essere un numero intero."
372
+
373
+ #: addons/sftp.php:316
374
+ msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully created a file in that location."
375
+ msgstr "Errore: Abbiamo fatto il log-in e siamo passati alla cartella indicata, ma non si è riuscito a creare un file in quella posizione."
376
+
377
+ #: addons/fixtime.php:77 addons/fixtime.php:87
378
+ msgid "starting from next time it is"
379
+ msgstr "Inizio prossima volta è "
380
+
381
+ #: addons/fixtime.php:77 addons/fixtime.php:87
382
+ msgid "Enter in format HH:MM (e.g. 14:22)"
383
+ msgstr "Inserire in formato HH:MM (esmpio 14:22)"
384
+
385
+ #: addons/multisite.php:121
386
+ msgid "Multisite Install"
387
+ msgstr "Installazione Multi-sito"
388
+
389
+ #: addons/multisite.php:127
390
+ msgid "You do not have sufficient permissions to access this page."
391
+ msgstr "Non si dispone di autorizzazioni sufficienti per accedere a questa pagina."
392
+
393
+ #: addons/multisite.php:146
394
+ msgid "You do not have permission to access this page."
395
+ msgstr "Non hai il permesso di accedere a questa pagina."
396
+
397
+ #: addons/multisite.php:208
398
+ msgid "Must-use plugins"
399
+ msgstr "Plugin essenziali"
400
+
401
+ #: addons/multisite.php:215
402
+ msgid "Blog uploads"
403
+ msgstr "Caricamenti dal blog"
404
+
405
+ #: addons/migrator.php:164
406
+ msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s"
407
+ msgstr "Tutti i riferimenti alla posizione del sito nel database saranno sostituiti con l'URL del sito attuale, che è:%s"
408
+
409
+ #: addons/migrator.php:164
410
+ msgid "Search and replace site location in the database (migrate)"
411
+ msgstr "Ricerca e sostituzione della posizione del sito nel database (migrazione)"
412
+
413
+ #: addons/migrator.php:164
414
+ msgid "(learn more)"
415
+ msgstr "(ulteriori informazioni)"
416
+
417
+ #: addons/migrator.php:251 addons/migrator.php:365
418
+ msgid "Failed: the %s operation was not able to start."
419
+ msgstr "Errore: Non è stato possibile avviare l'operazione %s"
420
+
421
+ #: addons/migrator.php:253 addons/migrator.php:367
422
+ msgid "Failed: we did not understand the result returned by the %s operation."
423
+ msgstr "Errore: Codice di ritorno dell'operazione %s non conosciuto."
424
+
425
+ #: addons/migrator.php:274
426
+ msgid "Database: search and replace site URL"
427
+ msgstr "Database: ricerca e sostituzione dell'URL del sito"
428
+
429
+ #: addons/migrator.php:277
430
+ msgid "This option was not selected."
431
+ msgstr "Questa opzione non è stata selezionata."
432
+
433
+ #: addons/migrator.php:292 addons/migrator.php:297
434
+ msgid "Error: unexpected empty parameter (%s, %s)"
435
+ msgstr "Errore: parametro vuoto inatteso (%s, %s)"
436
+
437
+ #: addons/morefiles.php:63
438
+ msgid "The above files comprise everything in a WordPress installation."
439
+ msgstr "I file sopra comprendono tutto in una installazione di WordPress"
440
+
441
+ #: addons/morefiles.php:70
442
+ msgid "WordPress core (including any additions to your WordPress root directory)"
443
+ msgstr "WordPress core (comprese le eventuali aggiunte alla cartella principale di WordPress)"
444
+
445
+ #: addons/morefiles.php:82
446
+ msgid "Any other directory on your server that you wish to back up"
447
+ msgstr "Ogni altra cartella sul tuo server che vorresti fosse backuppata"
448
+
449
+ #: addons/morefiles.php:83
450
+ msgid "More Files"
451
+ msgstr "Altri files"
452
+
453
+ #: addons/morefiles.php:98
454
+ msgid "Enter the directory:"
455
+ msgstr "Inserire la catrella"
456
+
457
+ #: addons/morefiles.php:102
458
+ msgid "If you are not sure what this option is for, then you will not want it, and should turn it off."
459
+ msgstr "Se non si è sicuri di cosa serva questa opzione, si consiglia di disattivarla."
460
+
461
+ #: addons/morefiles.php:102
462
+ msgid "If using it, enter an absolute path (it is not relative to your WordPress install)."
463
+ msgstr "Se utilizzato, inserire un percorso assoluto (non è relativo alla vostra installazione di WordPress)."
464
+
465
+ #: addons/morefiles.php:104
466
+ msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver."
467
+ msgstr "Fare attenzione a ciò che si inserisce: se si inserisce / allora verrà creato un file .zip contenente il tuo intero webserver"
468
+
469
+ #: addons/morefiles.php:134
470
+ msgid "If entering multiple files/directories, then separate them with commas."
471
+ msgstr "Se si immettono files e/o cartelle multiple, separateli con una virgola."
472
+
473
+ #: addons/morefiles.php:176 addons/morefiles.php:253
474
+ msgid "No backup of %s directories: there was nothing found to back up"
475
+ msgstr "Nessun backup della cartella %s: non si è trovato nulla da backuppare"
476
+
477
+ #: addons/morefiles.php:176
478
+ msgid "more"
479
+ msgstr "altro"
480
+
481
+ #: addons/sftp.php:23
482
+ msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use."
483
+ msgstr "E' disponibile l' FTP crittografato, e sarà utilizzato automaticamente come prima scelta (per poi passare al non criptato, se non dovesse andare a buon fine), a meno che non si disattivi utilizzando le opzioni avanzate. Il pulsante 'Test FTP Login' vi dirà che tipo di connessione è in uso."
484
+
485
+ #: addons/sftp.php:23
486
+ msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below."
487
+ msgstr "La crittografia esplicita viene utilizzato come impostazione predefinita. Per forzare la crittografia implicita (porta 990), aggiungere: 990 al vostro server FTP sotto."
488
+
489
+ #: addons/sftp.php:30 addons/sftp.php:31 addons/sftp.php:32
490
+ msgid "No %s found"
491
+ msgstr "%s non trovato"
492
+
493
+ #: addons/sftp.php:30
494
+ msgid "SFTP host setting"
495
+ msgstr "Settaggi dell'host SFTP"
496
+
497
+ #: addons/sftp.php:31
498
+ msgid "SFTP user setting"
499
+ msgstr "Settaggio utente SFTP"
500
+
501
+ #: addons/sftp.php:32
502
+ msgid "SFTP password"
503
+ msgstr "Password SFTP"
504
+
505
+ #: addons/sftp.php:302
506
+ msgid "Check your file permissions: Could not successfully create and enter:"
507
+ msgstr "Controllare le autorizzazioni file: Impossibile creare ed entrare con successo:"
508
+
509
+ #: methods/ftp.php:170
510
+ msgid "FTP Server"
511
+ msgstr "Server FTP"
512
+
513
+ #: methods/ftp.php:174
514
+ msgid "FTP Login"
515
+ msgstr "Login FTP"
516
+
517
+ #: methods/ftp.php:178
518
+ msgid "FTP Password"
519
+ msgstr "Password FTP"
520
+
521
+ #: methods/ftp.php:182
522
+ msgid "Remote Path"
523
+ msgstr "Percorso Remoto"
524
+
525
+ #: methods/ftp.php:183
526
+ msgid "Needs to already exist"
527
+ msgstr "Deve essere esistente"
528
+
529
+ #: methods/ftp.php:204
530
+ msgid "Failure: No server details were given."
531
+ msgstr "Errore: Nessun dettaglio sul server è stato fornito."
532
+
533
+ #: methods/ftp.php:219
534
+ msgid "Failure: we did not successfully log in with those credentials."
535
+ msgstr "Errore: Non è possibile eseguire il log-in con queste credenziali"
536
+
537
+ #: methods/ftp.php:227
538
+ msgid "Failure: an unexpected internal UpdraftPlus error occurred when testing the credentials - please contact the developer"
539
+ msgstr "Errore: si è verificato un errore interno imprevisto di UpdraftPlus durante la prova le credenziali - si prega di contattare lo sviluppatore"
540
+
541
+ #: methods/ftp.php:231
542
+ msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:"
543
+ msgstr "Abbiamo effettuato correttamente il login, e confermato la nostra capacità di creare un file nella directory data (tipo di accesso:"
544
+
545
+ #: methods/ftp.php:234
546
+ msgid "Failure: we successfully logged in, but were not able to create a file in the given directory."
547
+ msgstr "Errore: Log-in eseguito correttamente, ma non siamo riusciti a creare un file nella directory data."
548
+
549
+ #: addons/webdav.php:40 addons/webdav.php:148 addons/webdav.php:181
550
+ #: addons/sftp.php:28
551
+ msgid "No %s settings were found"
552
+ msgstr "Non sono state trovate impostazioni di %s"
553
+
554
+ #: addons/webdav.php:116 addons/webdav.php:120
555
+ msgid "Chunk %s: A %s error occurred"
556
+ msgstr "Parte %s: rilevato errore %s "
557
+
558
+ #: addons/webdav.php:193 addons/webdav.php:199 addons/webdav.php:211
559
+ msgid "WebDAV Error"
560
+ msgstr "Errore WebDAV"
561
+
562
+ #: addons/webdav.php:199
563
+ msgid "Error opening remote file: Failed to download"
564
+ msgstr "Errore nell'apertura di file remoto: impossibile eseguire il download"
565
+
566
+ #: addons/webdav.php:211
567
+ msgid "Local write failed: Failed to download"
568
+ msgstr "Scrittura locale non riuscita: impossibile eseguire il download"
569
+
570
+ #: addons/webdav.php:245
571
+ msgid "WebDAV URL"
572
+ msgstr "URL WebDAV"
573
+
574
+ #: addons/webdav.php:249
575
+ msgid "Enter a complete URL, beginning with webdav:// or webdavs:// and including path, username, password and port as required - e.g.%s"
576
+ msgstr "Inserire un URL completo, che inizi con webdav:// o webdavs:// completo di percorso, nome utente, password e della porta come richiesto - ad esempio %s"
577
+
578
+ #: addons/webdav.php:291 addons/sftp.php:290
579
+ msgid "Failed"
580
+ msgstr "Errore"
581
+
582
+ #: addons/webdav.php:305
583
+ msgid "Failed: We were not able to place a file in that directory - please check your credentials."
584
+ msgstr "Errore: impossibile copiare un file in quella directory - controlla le tue autorizzazioni"
585
+
586
+ #: addons/morefiles.php:40 addons/morefiles.php:253
587
+ msgid "WordPress Core"
588
+ msgstr "Core WordPerss"
589
+
590
+ #: addons/morefiles.php:44
591
+ msgid "Over-write wp-config.php"
592
+ msgstr "Sovrascrittura wp-config.php"
593
+
594
+ #: addons/morefiles.php:44
595
+ msgid "(learn more about this important option)"
596
+ msgstr "(ulteriori informazioni riguardo questa importante opzione)"
597
+
598
+ #: methods/dropbox.php:288
599
+ msgid "Authenticate with Dropbox"
600
+ msgstr "Autenticazione con DropBox"
601
+
602
+ #: methods/dropbox.php:289
603
+ 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."
604
+ msgstr "<strong>Dopo</strong> aver salvato le impostazioni (facendo clic su 'Salva modifiche' sotto), fare clic su questo link per completare l'autenticazione con Dropbox."
605
+
606
+ #: methods/dropbox.php:332
607
+ msgid "you have authenticated your %s account"
608
+ msgstr "Hai autenticato il tuo account %s"
609
+
610
+ #: methods/dropbox.php:335
611
+ msgid "though part of the returned information was not as expected - your mileage may vary"
612
+ msgstr "anche se parte delle informazioni restituite non era come previsto - la situazione potrebbe essere diversa"
613
+
614
+ #: methods/dropbox.php:338
615
+ msgid "Your %s account name: %s"
616
+ msgstr "Nome del tuo account %s: %s"
617
+
618
+ #: methods/ftp.php:44 methods/ftp.php:115
619
+ msgid "FTP login failure"
620
+ msgstr "Errore login FTP"
621
+
622
+ #: methods/ftp.php:63
623
+ msgid "FTP upload failed"
624
+ msgstr "Errore upload FTP"
625
+
626
+ #: methods/ftp.php:150
627
+ msgid "Settings test result"
628
+ msgstr "Settaggio del risultato del test"
629
+
630
+ #: methods/ftp.php:166
631
+ msgid "Only non-encrypted FTP is supported by regular UpdraftPlus."
632
+ msgstr "UpdraftPlus regolare supporta solo FTP non cifrato."
633
+
634
+ #: methods/ftp.php:166
635
+ msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available."
636
+ msgstr "Se si desidera la crittografia (ad esempio per memorizzare dati aziendali sensibili), è disponibile un add-on."
637
+
638
+ #: methods/s3.php:299
639
+ msgid "%s Error: Failed to download %s. Check your permissions and credentials."
640
+ msgstr "Errore %s: Impossibile eseguire il download di %s. Controllare le autorizzazioni e le credenziali."
641
+
642
+ #: methods/s3.php:243 methods/s3.php:303
643
+ msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials."
644
+ msgstr "Errore %s: Impossibile accedere al bucket %s. Controllare le autorizzazioni e le credenziali."
645
+
646
+ #: methods/s3.php:365
647
+ msgid "Get your access key and secret key <a href=\"%s\">from your %s console</a>, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist."
648
+ msgstr "Ottieni la tua chiave di accesso e la chiave segreta <a href=\"%s\">dalla console %s</a>, quindi scegli un nome bucket (Globally Unique - tutti gli utenti %s) (lettere e numeri) (e facoltativamente un percorso) da utilizzare per lo storage. Il bucket verrà creato, se non esiste già."
649
+
650
+ #: methods/s3.php:365
651
+ msgid "If you see errors about SSL certificates, then please go here for help."
652
+ msgstr "Se si trovano errori sui certificati SSL, allora vai qui per un aiuto."
653
+
654
+ #: methods/s3.php:368
655
+ msgid "%s access key"
656
+ msgstr "Chiave di accesso %s"
657
+
658
+ #: methods/s3.php:372
659
+ msgid "%s secret key"
660
+ msgstr "Chiave segreta %s"
661
+
662
+ #: methods/s3.php:376
663
+ msgid "%s location"
664
+ msgstr "posizione %s"
665
+
666
+ #: methods/s3.php:377
667
+ msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath"
668
+ msgstr "Inserire solo il nome del bucket oppure il bucket e il percorso. Esempi: mybucket, mybucket/mypath"
669
+
670
+ #: methods/s3.php:398
671
+ msgid "API secret"
672
+ msgstr "API segreto"
673
+
674
+ #: methods/s3.php:418
675
+ msgid "Failure: No bucket details were given."
676
+ msgstr "Errore: Nessun dettaglio del bucket è stato inserito."
677
+
678
+ #: methods/s3.php:429
679
+ msgid "Region"
680
+ msgstr "regione"
681
+
682
+ #: methods/s3.php:446
683
+ msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)."
684
+ msgstr "Errore: Impossibile accedere o creare il bucket con successo. Si prega di verificare le credenziali di accesso, e se queste sono corrette si consiglia di provare un altro nome del bucket (un altro utente %s potrebbe già aver preso il suo nome)."
685
+
686
+ #: methods/s3.php:458 methods/s3.php:469
687
+ msgid "Failure"
688
+ msgstr "Errore"
689
+
690
+ #: methods/s3.php:458 methods/s3.php:469
691
+ msgid "We successfully accessed the bucket, but the attempt to create a file in it failed."
692
+ msgstr "Accesso al bucket ottenuto, ma il tentativo di creare un file in esso è fallito."
693
+
694
+ #: methods/s3.php:460
695
+ msgid "We accessed the bucket, and were able to create files within it."
696
+ msgstr "Accesso al bucket ottenuto, ed è stato possibile creare files al suo interno."
697
+
698
+ #: methods/s3.php:462
699
+ msgid "The communication with %s was encrypted."
700
+ msgstr "La comunicazione con %s era cifrata"
701
+
702
+ #: methods/s3.php:464
703
+ msgid "The communication with %s was not encrypted."
704
+ msgstr "La comunicazione con %s non era cifrata."
705
+
706
+ #: methods/dropbox.php:35
707
+ msgid "The %s PHP module is not installed"
708
+ msgstr "Il modulo PHP %s non è installato"
709
+
710
+ #: methods/dropbox.php:41 methods/dropbox.php:210
711
+ msgid "You do not appear to be authenticated with Dropbox"
712
+ msgstr "Sembra che non si sia autenticati con Dropbox"
713
+
714
+ #: methods/dropbox.php:52
715
+ msgid "error: %s (see log file for more)"
716
+ msgstr "errore: %s (vedi il file di log per maggiori informazioni)"
717
+
718
+ #: methods/dropbox.php:139 methods/dropbox.php:144
719
+ msgid "error: failed to upload file to %s (see log file for more)"
720
+ msgstr "Errore: Impossibile caricare il file %s (vedi il file di log per maggiori informazioni)"
721
+
722
+ #: methods/dropbox.php:283
723
+ msgid "Need to use sub-folders?"
724
+ msgstr "Si vuole utilizzare le sotto-cartelle?"
725
+
726
+ #: methods/dropbox.php:283
727
+ msgid "Backups are saved in"
728
+ msgstr "I backup vengono salvati in"
729
+
730
+ #: methods/dropbox.php:283
731
+ msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then "
732
+ msgstr "Se si esegue il backup di più siti nello stesso Dropbox e si vuole organizzare con sottocartelle, allora"
733
+
734
+ #: methods/dropbox.php:283
735
+ msgid "there's an add-on for that."
736
+ msgstr "c'è un add-on per questo."
737
+
738
+ #: methods/cloudfiles.php:400
739
+ msgid "US or UK Cloud"
740
+ msgstr "Cloud USA oppure UK"
741
+
742
+ #: methods/cloudfiles.php:406
743
+ msgid "US (default)"
744
+ msgstr "USA (default)"
745
+
746
+ #: methods/cloudfiles.php:407
747
+ msgid "UK"
748
+ msgstr "UK"
749
+
750
+ #: methods/cloudfiles.php:412
751
+ msgid "Cloud Files username"
752
+ msgstr "Nome utente per file Cloud"
753
+
754
+ #: methods/cloudfiles.php:416
755
+ msgid "Cloud Files API key"
756
+ msgstr "Chiave API Cloud Files"
757
+
758
+ #: methods/cloudfiles.php:420
759
+ msgid "Cloud Files container"
760
+ msgstr "Contenitore di files remoti"
761
+
762
+ #: methods/googledrive.php:422 methods/cloudfiles.php:386
763
+ msgid "UpdraftPlus's %s module <strong>requires</strong> %s. Please do not file any support requests; there is no alternative."
764
+ msgstr "il modulo %s di UpdraftPlus <strong>richiede</strong> %s. Si prega di non presentare alcuna richiesta di supporto, non ci sono alternative."
765
+
766
+ #: methods/cloudfiles.php:434 methods/cloudfiles.php:439
767
+ msgid "Failure: No %s was given."
768
+ msgstr "Errore: %s non è stato fornito."
769
+
770
+ #: methods/cloudfiles.php:434
771
+ msgid "API key"
772
+ msgstr "Chiave API"
773
+
774
+ #: methods/cloudfiles.php:439
775
+ msgid "Username"
776
+ msgstr "Username"
777
+
778
+ #: methods/cloudfiles.php:459
779
+ msgid "Failure: No container details were given."
780
+ msgstr "Errore: nessun dettaglio sul contenitore è stato dato."
781
+
782
+ #: methods/cloudfiles.php:485
783
+ msgid "Cloud Files error - we accessed the container, but failed to create a file within it"
784
+ msgstr "Errore File remoto - abbiamo accede al contenitore, ma è impossiile creare un file all'interno di esso"
785
+
786
+ #: methods/cloudfiles.php:489
787
+ msgid "We accessed the container, and were able to create files within it."
788
+ msgstr "Si può accedere al contenitore, ed è possibile creare files al suo interno."
789
+
790
+ #: methods/email.php:16
791
+ msgid "WordPress Backup"
792
+ msgstr "Backup di WordPress"
793
+
794
+ #: methods/email.php:16
795
+ msgid "Backup is of:"
796
+ msgstr "Il backup è di:"
797
+
798
+ #: methods/email.php:16
799
+ msgid "Be wary; email backups may fail because of file size limitations on mail servers."
800
+ msgstr "Attenzione: il backup via email potrebbe fallire a causa di limiti di dimensione dei file sui server di posta."
801
+
802
+ #: methods/email.php:26
803
+ msgid "Note:"
804
+ msgstr "Nota:"
805
+
806
+ #: methods/email.php:27
807
+ msgid "The email address entered above will be used. If choosing \"E-Mail\", then <strong>be aware</strong> that mail servers tend to have size limits; typically around 10-20Mb; backups larger than any limits will not arrive. If you really need a large backup via email, then you could fund a new feature (to break the backup set into configurable-size pieces) - but the demand has not yet existed for such a feature."
808
+ msgstr "Verrà utilizzato l'indirizzo email inserito sopra. Se si sceglie \"E-Mail\", <strong>fare attenzione</strong> che i server di posta tendono ad avere limiti di dimensione, in genere intorno a 10-20Mb; i backup più grandi del limite non arriveranno. Se davvero si necessita di un backup grande via email, allora si potrebbe finanziare una nuova funzionalità (per dividere il set di backup in pezzi di dimensione configurabile) - ma ancora non esiste una tale funzione."
809
+
810
+ #: methods/s3.php:145
811
+ msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details"
812
+ msgstr "upload di %s: impossibile ottenere l'uploadID per il caricamento multiparte - vedere il file di log per maggiori dettagli"
813
+
814
+ #: methods/s3.php:168
815
+ msgid "%s error: file %s was shortened unexpectedly"
816
+ msgstr "Errore %s: il file %s è stato accorciato in modo imprevisto"
817
+
818
+ #: methods/s3.php:178
819
+ msgid "%s chunk %s: upload failed"
820
+ msgstr "%s parte %s: caricamento fallito"
821
+
822
+ #: methods/s3.php:192
823
+ msgid "%s upload (%s): re-assembly failed (see log for more details)"
824
+ msgstr "Caricamento di %s (%s) riassemblaggio fallito (vedere il log per maggiori dettagli)"
825
+
826
+ #: methods/s3.php:196
827
+ msgid "%s re-assembly error (%s): (see log file for more)"
828
+ msgstr "%s re-assembly error (%s): (guarda il file di log per più informazioni)"
829
+
830
+ #: methods/s3.php:208
831
+ msgid "%s Error: Failed to create bucket %s. Check your permissions and credentials."
832
+ msgstr "Errore %s: Impossibile creare il bucket %s. Controllare le autorizzazioni e le credenziali."
833
+
834
+ #: methods/googledrive.php:432
835
+ msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users."
836
+ msgstr "Per informazioni più esaustive, compresi screenshot, segui questo collegamento. La descrizione che segue è sufficiente per gli utenti più esperti."
837
+
838
+ #: methods/googledrive.php:433
839
+ msgid "Follow this link to your Google API Console, and there create a Client ID in the API Access section."
840
+ msgstr "Segui questo link per la vostra Google API Console, e ci crea un ID cliente nella sezione Accesso API."
841
+
842
+ #: methods/googledrive.php:433
843
+ msgid "Select 'Web Application' as the application type."
844
+ msgstr "Selezionare 'Applicazione Web' come il tipo di applicazione."
845
+
846
+ #: methods/googledrive.php:433
847
+ msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked"
848
+ msgstr "È necessario aggiungere quanto segue come reindirizzamento autorizzato URI (alla voce \"Altre opzioni\") quando richiesto"
849
+
850
+ #: methods/googledrive.php:433
851
+ 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."
852
+ msgstr "N.B. Se si installa UpdraftPlus su diversi siti WordPress, allora non si può riutilizzare il vostro ID cliente, è necessario crearne uno nuovo per ogni sito dalla vostra console Google API."
853
+
854
+ #: methods/googledrive.php:436
855
+ msgid "You do not have the SimpleXMLElement installed. Google Drive backups will <b>not</b> work until you do."
856
+ msgstr "SimpleXMLElement non è installato. Il backups su Google Drive <b>NON</b> funziona senza di esso."
857
+
858
+ #: methods/googledrive.php:443
859
+ msgid "Client ID"
860
+ msgstr "ID Cliente"
861
+
862
+ #: methods/googledrive.php:444
863
+ msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here."
864
+ msgstr "Se Google in seguito visualizzerà il messaggio \"invalid_client\", allora non si è inserito un ID cliente valido."
865
+
866
+ #: methods/googledrive.php:447
867
+ msgid "Client Secret"
868
+ msgstr "Segreto del Client"
869
+
870
+ #: methods/googledrive.php:451
871
+ msgid "Folder ID"
872
+ msgstr "ID Cartella"
873
+
874
+ #: methods/googledrive.php:452
875
+ 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)"
876
+ msgstr "<strong> Questo NON è il nome della cartella</strong>. Per ottenere l'ID di una cartella accedere alla cartella in Google Drive da web browser e copiare l'ID dalla barra degli indirizzi del browser. E' la parte che viene dopo <kbd>#folders/.</kbd> Lasciare vuoto per usare la cartella principale)"
877
+
878
+ #: methods/googledrive.php:455
879
+ msgid "Authenticate with Google"
880
+ msgstr "Autentica con Google"
881
+
882
+ #: methods/googledrive.php:456
883
+ 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."
884
+ msgstr "<strong>Dopo</strong> aver salvato le impostazioni (facendo clic su 'Salva modifiche' sotto), fare clic su questo collegamento per completare l'autenticazione con Google."
885
+
886
+ #: methods/cloudfiles.php:53 methods/cloudfiles.php:57
887
+ #: methods/cloudfiles.php:208 methods/cloudfiles.php:256
888
+ #: methods/cloudfiles.php:260 methods/cloudfiles.php:469
889
+ #: methods/cloudfiles.php:472 methods/cloudfiles.php:475
890
+ msgid "Cloud Files authentication failed"
891
+ msgstr "Autenticazione dei file remoti fallita"
892
+
893
+ #: methods/cloudfiles.php:61 methods/cloudfiles.php:264
894
+ #: methods/cloudfiles.php:282
895
+ msgid "Cloud Files error - failed to create and access the container"
896
+ msgstr "Errore Files remoti - impossibile creare ed accedere al contenitore"
897
+
898
+ #: methods/cloudfiles.php:88
899
+ msgid "%s Error: Failed to open local file"
900
+ msgstr "Errore %s: Impossibile aprire il file locale"
901
+
902
+ #: methods/cloudfiles.php:105 methods/cloudfiles.php:147
903
+ msgid "%s Error: Failed to upload"
904
+ msgstr "Errore %s: Impossibile caricare il file."
905
+
906
+ #: methods/cloudfiles.php:169
907
+ msgid "Cloud Files error - failed to re-assemble chunks"
908
+ msgstr "Errore File remoti - impossibile riassemblare il blocco di dati."
909
+
910
+ #: methods/cloudfiles.php:178 methods/cloudfiles.php:179
911
+ msgid "Cloud Files error - failed to upload file"
912
+ msgstr "Errore File remoti - impossibile caricare il file"
913
+
914
+ #: methods/cloudfiles.php:310 methods/cloudfiles.php:327
915
+ msgid "Cloud Files Error"
916
+ msgstr "Errore File remoti"
917
+
918
+ #: methods/cloudfiles.php:310
919
+ msgid "Error opening local file: Failed to download"
920
+ msgstr "Errore durante l'apertura del file locale: Impossibile fare il download"
921
+
922
+ #: methods/cloudfiles.php:327
923
+ msgid "Error downloading remote file: Failed to download ("
924
+ msgstr "Errore durante il download del file remoto: Impossibile scaricare ("
925
+
926
+ #: methods/cloudfiles.php:336
927
+ msgid "Cloud Files error - no such file exists at Cloud Files"
928
+ msgstr "Errore File remoti - il file non esiste tra i file remoti"
929
+
930
+ #: methods/cloudfiles.php:340
931
+ msgid "Cloud Files error - failed to download the file"
932
+ msgstr "Errore File remoti - impossibile scaricare il file"
933
+
934
+ #: methods/cloudfiles.php:349
935
+ msgid "Testing - Please Wait..."
936
+ msgstr "Verifica - attendere prego..."
937
+
938
+ #: methods/cloudfiles.php:363 methods/cloudfiles.php:426
939
+ msgid "Test %s Settings"
940
+ msgstr "Settaggi del test %s"
941
+
942
+ #: methods/cloudfiles.php:396
943
+ 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."
944
+ msgstr "Ottieni la tua chiave API <a href=\"https://mycloud.rackspace.com/\"> dalla console cloud di Rackspace </a> (leggi le istruzioni <a href=\"http://www.rackspace.com/knowledge_center/article/rackspace-cloud-essentials-1-generating-your-api-key\">qui</a>), quindi scegliere il nome del contenitore da utilizzare per lo storage. Il contenitore verrà creato, se non esiste già."
945
+
946
+ #: methods/cloudfiles.php:396
947
+ msgid "Also, you should read this important FAQ."
948
+ msgstr "Inoltre, si dovrebbe leggere questa importante FAQ."
949
+
950
+ #: methods/googledrive.php:191
951
+ msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes"
952
+ msgstr "Account pieno: il tuo account %s ha solamente %d bytes liberi, ma il file da caricare è di %d bytes"
953
+
954
+ #: methods/googledrive.php:201
955
+ msgid "Failed to upload to %s"
956
+ msgstr "Impossibile caricare su %s"
957
+
958
+ #: methods/googledrive.php:305
959
+ msgid "An error occurred during %s upload (see log for more details)"
960
+ msgstr "Si è verificato un errore durante il caricamento di %s (vedi log per maggiori dettagli)"
961
+
962
+ #: methods/googledrive.php:344
963
+ msgid "Google Drive error: %d: could not download: could not find a record of the Google Drive file ID for this file"
964
+ msgstr "Errore di Google Drive: %d: impossibile scaricare: impossibile trovare un record del file di ID di Google Drive per questo file"
965
+
966
+ #: methods/googledrive.php:349
967
+ msgid "Could not find %s in order to download it"
968
+ msgstr "Impossibile trovare %s per poterlo scaricare"
969
+
970
+ #: methods/googledrive.php:361
971
+ msgid "Google Drive "
972
+ msgstr "Google Drive"
973
+
974
+ #: methods/googledrive.php:361
975
+ msgid "error: zero-size file was downloaded"
976
+ msgstr "errore: è stato caricato un file di dimensione nulla."
977
+
978
+ #: methods/googledrive.php:379
979
+ msgid "Account is not authorized."
980
+ msgstr "Account non autorizzato."
981
+
982
+ #: methods/googledrive.php:412 methods/cloudfiles.php:376
983
+ 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."
984
+ msgstr "%s è una buona scelta, perché UpdraftPlus supporta i caricamenti frammentati - non importa quanto sia grande il vostro sito, UpdraftPlus può caricare un po 'alla volta, senza avere problemi con il timeout."
985
+
986
+ #: includes/updraft-restorer.php:472
987
+ msgid "will restore as:"
988
+ msgstr "sarà ripristinato come:"
989
+
990
+ #: includes/updraft-restorer.php:502
991
+ msgid "An error (%s) occured:"
992
+ msgstr "Si è verificato un errore (%s)"
993
+
994
+ #: includes/updraft-restorer.php:502
995
+ msgid "the database query being run was:"
996
+ msgstr "la query di database in corso di esecuzione è:"
997
+
998
+ #: includes/updraft-restorer.php:505
999
+ msgid "Too many database errors have occurred - aborting restoration (you will need to restore manually)"
1000
+ msgstr "Si sono verificati troppi errori di database - ripristino annullato (è necessario ripristinare manualmente)"
1001
+
1002
+ #: includes/updraft-restorer.php:512
1003
+ msgid "Database lines processed: %d in %.2f seconds"
1004
+ msgstr "Linee di database processate: %d in %.2f secondi"
1005
+
1006
+ #: includes/updraft-restorer.php:525
1007
+ msgid "Finished: lines processed: %d in %.2f seconds"
1008
+ msgstr "Finito: linee processate: %d in %.2f secondi"
1009
+
1010
+ #: includes/updraft-restorer.php:659 includes/updraft-restorer.php:668
1011
+ msgid "Table prefix has changed: changing %s table field(s) accordingly:"
1012
+ msgstr "Il prefisso di tabella è cambiato: cambio in accordo i campo(i) della tabella %s:"
1013
+
1014
+ #: includes/updraft-restorer.php:663 includes/updraft-restorer.php:695
1015
+ msgid "OK"
1016
+ msgstr "OK"
1017
+
1018
+ #: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:91
1019
+ msgid "You need to re-authenticate with %s, as your existing credentials are not working."
1020
+ msgstr "È necessario autenticare nuovamente con %s, le credenziali esistenti non funzionano."
1021
+
1022
+ #: methods/webdav.php:13 methods/webdav.php:34 methods/webdav.php:50
1023
+ #: methods/sftp.php:13 methods/sftp.php:34 methods/sftp.php:50
1024
+ msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s"
1025
+ msgstr "L'add-on %s di UpdraftPlus non è installato - ottenerlo da %s"
1026
+
1027
+ #: methods/webdav.php:63 methods/sftp.php:63
1028
+ msgid "%s support is available as an add-on"
1029
+ msgstr "Il supporto a %s è disponibile con un add-on"
1030
+
1031
+ #: methods/webdav.php:63 methods/sftp.php:63
1032
+ msgid "follow this link to get it"
1033
+ msgstr "Clicca su questo collegamento per averlo."
1034
+
1035
+ #: methods/googledrive.php:111
1036
+ 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."
1037
+ msgstr "Nessun token di aggiornamento è stato ricevuto da Google. Questo spesso significa che si è inserito il \"Segreto Client\" in modo errato, o che non si è stati ancora ri-autenticati (sotto) in quanto correzione. Si prega di ricontrollare, e di seguire il link per autenticarsi nuovamente. Infine, se questo non dovesse funzionare, utilizzare la modalità expert per cancellare tutte le impostazioni, creare un nuovo nuovo ID cliente di Google / segreto, e iniziare nuovamente."
1038
+
1039
+ #: methods/googledrive.php:116
1040
+ msgid "Authorization failed"
1041
+ msgstr "Autorizzazione fallita"
1042
+
1043
+ #: methods/googledrive.php:137
1044
+ msgid "Your %s quota usage: %s %% used, %s available"
1045
+ msgstr "Quota di utilizzo %s: %s %% utilizzata, %s disponibile"
1046
+
1047
+ #: methods/googledrive.php:143 methods/cloudfiles.php:489
1048
+ msgid "Success"
1049
+ msgstr "Success"
1050
+
1051
+ #: methods/googledrive.php:143
1052
+ msgid "you have authenticated your %s account."
1053
+ msgstr "hai autenticato il tuo account %s."
1054
+
1055
+ #: methods/googledrive.php:159 methods/googledrive.php:220
1056
+ msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive."
1057
+ msgstr "Non si è ancora ottenuto un token di accesso da parte di Google - è necessario autorizzare o ri-autorizzare la connessione a Google Drive."
1058
+
1059
+ #: methods/googledrive.php:160 methods/googledrive.php:334
1060
+ msgid "Have not yet obtained an access token from Google (has the user authorised?)"
1061
+ msgstr "Non si è ancora ottenuto il token di accesso da Google (l'utente potrebbe non essere autorizzato)"
1062
+
1063
+ #: includes/updraft-restorer.php:134
1064
+ msgid "wp-config.php from backup: restoring (as per user's request)"
1065
+ msgstr "wp-config.php da backup: ripristino (come da richiesta dell'utente)"
1066
+
1067
+ #: includes/updraft-restorer.php:202
1068
+ msgid "Will not delete the archive after unpacking it, because there was no cloud storage for this backup"
1069
+ msgstr "Non verrà cancellato l'archivio dopo l'estrazione, perché il cloud storage per questo backup non è presente"
1070
+
1071
+ #: includes/updraft-restorer.php:276
1072
+ 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."
1073
+ msgstr "Attenzione: PHP safe_mode &egrave; attivo sul tuo server. Questo pu&ograve; facilmente portare a Timeout. Nel caso dovesse verificarsene uno &egrave; necessario ripristinare manualmente il file tramite phpMyAdmin o simili."
1074
+
1075
+ #: includes/updraft-restorer.php:281
1076
+ msgid "Failed to find database file"
1077
+ msgstr "Impossibile trovare il file del database"
1078
+
1079
+ #: includes/updraft-restorer.php:287
1080
+ msgid "Failed to open database file"
1081
+ msgstr "Impossibile aprire il file del database"
1082
+
1083
+ #: includes/updraft-restorer.php:311
1084
+ msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)"
1085
+ msgstr "Accesso al database: l'accesso diretto a MySQL non è disponibile, quindi si utilizzerà wpdb (sarà notevolmente più lento)"
1086
+
1087
+ #: includes/updraft-restorer.php:378
1088
+ msgid "Backup of:"
1089
+ msgstr "Backup di:"
1090
+
1091
+ #: includes/updraft-restorer.php:382 includes/updraft-restorer.php:432
1092
+ msgid "Old table prefix:"
1093
+ msgstr "Vecchio prefisso di tabella"
1094
+
1095
+ #: includes/updraft-restorer.php:469
1096
+ msgid "Restoring table"
1097
+ msgstr "Ripristino tabella"
1098
+
1099
+ #: admin.php:2308
1100
+ 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)"
1101
+ msgstr "Il file non è localmente presente - occorrerà recuperarlo da storage remoto (per file di grandi dimensioni, è meglio farlo in anticipo dalla console di download)"
1102
+
1103
+ #: admin.php:2314
1104
+ msgid "Archive is expected to be size:"
1105
+ msgstr "Dimensione stimata dell'archivio:"
1106
+
1107
+ #: admin.php:2319
1108
+ msgid "ERROR"
1109
+ msgstr "ERRORE"
1110
+
1111
+ #: admin.php:2322
1112
+ msgid "The backup records do not contain information about the proper size of this file."
1113
+ msgstr "I registri di backup non contengono informazioni valide sulle dimensioni di questo file."
1114
+
1115
+ #: admin.php:2333
1116
+ msgid "Error message"
1117
+ msgstr "Messaggio d'errore"
1118
+
1119
+ #: admin.php:2342 admin.php:2343
1120
+ msgid "Could not find one of the files for restoration"
1121
+ msgstr "Impossibile trovare uno dei file per il ripristino"
1122
+
1123
+ #: includes/updraft-restorer.php:7
1124
+ msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually."
1125
+ msgstr "UpdraftPlus non è in grado di ripristinare direttamente questo tipo di entità. Il ripristino deve essere fatto manualmente."
1126
+
1127
+ #: includes/updraft-restorer.php:8
1128
+ msgid "Backup file not available."
1129
+ msgstr "File di backup non disponibile."
1130
+
1131
+ #: includes/updraft-restorer.php:9
1132
+ msgid "Copying this entity failed."
1133
+ msgstr "Copia di questa entità non è riuscita."
1134
+
1135
+ #: includes/updraft-restorer.php:10
1136
+ msgid "Unpacking backup..."
1137
+ msgstr "Scompattamento del backup..."
1138
+
1139
+ #: includes/updraft-restorer.php:11
1140
+ msgid "Decrypting database (can take a while)..."
1141
+ msgstr "Decriptaggio database (potrebbe richiedere un po' di tempo)..."
1142
+
1143
+ #: includes/updraft-restorer.php:12
1144
+ msgid "Database successfully decrypted."
1145
+ msgstr "Il database decriptato con successo."
1146
+
1147
+ #: includes/updraft-restorer.php:13
1148
+ msgid "Moving old directory out of the way..."
1149
+ msgstr "Sposta le vecchie cartelle..."
1150
+
1151
+ #: includes/updraft-restorer.php:14
1152
+ msgid "Moving unpacked backup in place..."
1153
+ msgstr "Spostamento del backup decompresso in corso..."
1154
+
1155
+ #: includes/updraft-restorer.php:15
1156
+ msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..."
1157
+ msgstr "Ripristino del database (su un sito di grandi dimensioni questa operazione potrebbe richiedere molto tempo - se si verifica un timeout (che può accadere se la vostra società di web hosting ha configurato il vostro hosting per limitare le risorse) è necessario utilizzare un metodo diverso, come ad esempio phpMyAdmin) ..."
1158
+
1159
+ #: includes/updraft-restorer.php:16
1160
+ msgid "Cleaning up rubbish..."
1161
+ msgstr "Pulizia del sistema..."
1162
+
1163
+ #: includes/updraft-restorer.php:17
1164
+ msgid "Could not move old directory out of the way. Perhaps you already have -old directories that need deleting first?"
1165
+ msgstr "Impossibile spostare le vecchie cartelle. Forse hai già cartelle -old che devono essere eliminate?"
1166
+
1167
+ #: includes/updraft-restorer.php:18
1168
+ msgid "Could not delete old directory."
1169
+ msgstr "Impossibile cancellare le vecchie cartelle."
1170
+
1171
+ #: includes/updraft-restorer.php:19
1172
+ msgid "Could not move new directory into place. Check your wp-content/upgrade folder."
1173
+ msgstr "Impossibile muovere la nuova cartella in posizione. Controlla la cartella wp-content/upgrade"
1174
+
1175
+ #: includes/updraft-restorer.php:20
1176
+ msgid "Failed to delete working directory after restoring."
1177
+ msgstr "Impossibile cancellare la catrella di lavoro dopo il rispristino."
1178
+
1179
+ #: includes/updraft-restorer.php:60
1180
+ msgid "Failed to create a temporary directory"
1181
+ msgstr "Impossibile creare una cartella temporanea"
1182
+
1183
+ #: includes/updraft-restorer.php:78
1184
+ msgid "Failed to write out the decrypted database to the filesystem"
1185
+ msgstr "Impossibile scrivere il database decodificato sul filesystem"
1186
+
1187
+ #: includes/updraft-restorer.php:130
1188
+ msgid "wp-config.php from backup: will restore as wp-config-backup.php"
1189
+ msgstr "wp-config.php dal backup: verrà ripristinato come wp-config-backup.php"
1190
+
1191
+ #: admin.php:1922
1192
+ 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."
1193
+ msgstr "Scegliendo questa opzione si riduce la sicurezza, impedendo a UpdraftPlus di utilizzare SSL per l'autenticazione e il trasporto criptato, dove possibile. Si noti che alcuni provider di cloud storage non consentono questo (ad esempio Dropbox), così con quei fornitori questa impostazione non avrà alcun effetto."
1194
+
1195
+ #: admin.php:1946
1196
+ msgid "Save Changes"
1197
+ msgstr "Salva i cambiamenti"
1198
+
1199
+ #: methods/googledrive.php:422 methods/cloudfiles.php:386
1200
+ msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support."
1201
+ msgstr "L'installazione di PHP sull tuo server web non ha incluso un modulo necessario (%s). Contattare il supporto del provider di web hosting."
1202
+
1203
+ #: admin.php:1974
1204
+ 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)."
1205
+ msgstr "L'installazione PHP/Curl sul server web non supporta l'accesso tramite HTTPS. Le comunicazioni con %s saranno crittografate. chiedete al vostro host web di installare Curl/SSL al fine di poter utilizzare la cifratura (tramite un add-on)."
1206
+
1207
+ #: admin.php:1976
1208
+ 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."
1209
+ msgstr ""
1210
+ "L'installazione del web server PHP/Curl non supporta l'accesso tramite HTTPS.\n"
1211
+ "E' impossibile accedere a %s senza questo supporto. Si prega di contattare il supporto del provider di web hosting. %s <strong>richiede</strong> Curl + https. Si prega di non presentare alcuna richiesta a sostegno, non ci sono alternative."
1212
+
1213
+ #: admin.php:1979
1214
+ 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."
1215
+ msgstr "Buona notizie: la comunicazione del tuo sito con %s può essere cifrata. Se si notano errori dovuti alla crittografia, cercare in \"Impostazioni Avanzate\" per ulteriori informazioni."
1216
+
1217
+ #: admin.php:2051
1218
+ msgid "Delete this backup set"
1219
+ msgstr "Cancella questo set di backup"
1220
+
1221
+ #: admin.php:2080
1222
+ msgid "Press here to download"
1223
+ msgstr "Premi qui per il download"
1224
+
1225
+ #: admin.php:2082
1226
+ msgid "(No %s)"
1227
+ msgstr "(Nessun %s)"
1228
+
1229
+ #: admin.php:2092
1230
+ msgid "Backup Log"
1231
+ msgstr "Backup Log"
1232
+
1233
+ #: admin.php:2100
1234
+ msgid "After pressing this button, you will be given the option to choose which components you wish to restore"
1235
+ msgstr "Dopo aver premuto questo pulsante, si potrà scegliere quali componenti si desidera ripristinare"
1236
+
1237
+ #: admin.php:2210
1238
+ msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:"
1239
+ msgstr "Questo backup non esiste nella Cronologia Backup - ripristino interrotto. Timestamp:"
1240
+
1241
+ #: admin.php:2239
1242
+ msgid "UpdraftPlus Restoration: Progress"
1243
+ msgstr "UpdraftPlus Ripristino: avanzamento"
1244
+
1245
+ #: admin.php:2261
1246
+ msgid "ABORT: Could not find the information on which entities to restore."
1247
+ msgstr "ANNULLATO: Impossibile trovare le informazioni sulle entità da ripristinare."
1248
+
1249
+ #: admin.php:2262
1250
+ msgid "If making a request for support, please include this information:"
1251
+ msgstr "Se si fa la richiesta di assistenza, si prega di includere le seguenti informazioni:"
1252
+
1253
+ #: admin.php:2295
1254
+ msgid "This component was not selected for restoration - skipping."
1255
+ msgstr "Questo componente non è stato selezionato per il ripristino - tralasciato."
1256
+
1257
+ #: admin.php:1916
1258
+ msgid "Do not verify SSL certificates"
1259
+ msgstr "Non verificare i certificati SSL"
1260
+
1261
+ #: admin.php:1917
1262
+ 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."
1263
+ msgstr "La scelta di questa opzione riduce la sicurezza impedendo a UpdraftPlus di verificare l'identità dei siti cifrati a cui si collega (ad esempio Dropbox, Google Drive). Ciò significa che UpdraftPlus userà SSL solo per la crittografia del traffico, e non per l'autenticazione."
1264
+
1265
+ #: admin.php:1917
1266
+ msgid "Note that not all cloud backup methods are necessarily using SSL authentication."
1267
+ msgstr "Ricorda che non tutti i metodi di backup su Cloud utilizzano obbligatoriamente un autenticazione SSL."
1268
+
1269
+ #: admin.php:1921
1270
+ msgid "Disable SSL entirely where possible"
1271
+ msgstr "Disattivare SSL del tutto, se possibile"
1272
+
1273
+ #: admin.php:1880
1274
+ msgid "Expert settings"
1275
+ msgstr "Impostazioni avanzate"
1276
+
1277
+ #: admin.php:1881
1278
+ msgid "Show expert settings"
1279
+ msgstr "Mostra impostazioni avanzate"
1280
+
1281
+ #: admin.php:1881
1282
+ msgid "click this to show some further options; don't bother with this unless you have a problem or are curious."
1283
+ msgstr "fare clic su questo elemento per mostrare ulteriori opzioni, non perdete tempo a meno che non hai un problema o sei curioso."
1284
+
1285
+ #: admin.php:1888
1286
+ msgid "Delete local backup"
1287
+ msgstr "Cancella backup locale"
1288
+
1289
+ #: admin.php:1889
1290
+ 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)."
1291
+ msgstr "Deselezionare questa opzione per evitare la cancellazione di alcuni file di backup superflui dal server al termine dell'esecuzione del backup (cioè tutti i file spediti in remoto rimarranno anche a livello locale, e ogni i file a livello locale non sarà soggetti a limiti di mantenimento)."
1292
+
1293
+ #: admin.php:1894
1294
+ msgid "Backup directory"
1295
+ msgstr "Cartella di Backup"
1296
+
1297
+ #: admin.php:1902
1298
+ msgid "Backup directory specified is writable, which is good."
1299
+ msgstr "La cartella di backup specificata è scrivibile, che è buona cosa."
1300
+
1301
+ #: admin.php:1904
1302
+ msgid "Backup directory specified is <b>not</b> writable, or does not exist."
1303
+ msgstr "La cartella di backup specificata <b>NON</b> è scrivibile, o non esiste."
1304
+
1305
+ #: admin.php:1904
1306
+ msgid "Click here to attempt to create the directory and set the permissions"
1307
+ msgstr "Clicca qui per tentare di creare la directory e impostare le autorizzazioni"
1308
+
1309
+ #: admin.php:1904
1310
+ msgid "or, to reset this option"
1311
+ msgstr "o, per resettare questa opzione"
1312
+
1313
+ #: admin.php:1904
1314
+ msgid "click here"
1315
+ msgstr "Clicca qui"
1316
+
1317
+ #: admin.php:1904
1318
+ 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."
1319
+ msgstr "Se questo è infruttuoso controllare i permessi sul vostro server o cambiarlo in un'altra cartella che sia scrivibile dal tuo web server."
1320
+
1321
+ #: admin.php:1907
1322
+ 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...)."
1323
+ msgstr "Questo è dove UpdraftPlus scriverà i file zip che crea inizialmente. Questa cartella deve essere scrivibile dal server web. In genere si desidera avere la cartella all'interno della cartella wp-content (questa è l'impostazione predefinita). <b>Non</b> inserirlo dentro le cartelle di upload, perché causerà problemi di ricorsione (backup di backup di backup di ...)."
1324
+
1325
+ #: admin.php:1911
1326
+ msgid "Use the server's SSL certificates"
1327
+ msgstr "Utilizza i certificati SSL del server"
1328
+
1329
+ #: admin.php:1912
1330
+ 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."
1331
+ msgstr "Per impostazione predefinita UpdraftPlus utilizza il proprio archivio di certificati SSL per verificare l'identità dei siti remoti (cioè per assicurarsi che sta parlando con il vero Dropbox, Amazon S3, ecc, e non un attaccante). Teniamo questi certificati aggiornati. Tuttavia, se si verificasse un errore SSL, allora la scelta di questa opzione può aiutare ( Scegliendo questa opzione, si permette a UpdraftPlus di utilizzare la collezione di certificati del vostro web server) ."
1332
+
1333
+ #: admin.php:1618
1334
+ msgid "Use WordShell for automatic backup, version control and patching"
1335
+ msgstr "Utilizza WordShell per il backup automatico, il controllo di versione e per gestire le patch"
1336
+
1337
+ #: admin.php:1622
1338
+ msgid "Email"
1339
+ msgstr "E-mail"
1340
+
1341
+ #: admin.php:1623
1342
+ msgid "Enter an address here to have a report sent (and the whole backup, if you choose) to it."
1343
+ msgstr "Inserire un indirizzo qui per avere l'invio del rapporto (e l'intero backup, se scelto)."
1344
+
1345
+ #: admin.php:1627
1346
+ msgid "Database encryption phrase"
1347
+ msgstr "Frase di crittografia del database"
1348
+
1349
+ #: admin.php:1634
1350
+ 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)."
1351
+ msgstr "Se si immette del testo qui, verrà utilizzato per cifrare i backup (Rijndael). <strong>Si prega di fare una copia separata di essa e di non perderla, o tutti i backup <em>saranno inutili</em>. </strong> Al momento, solo il file di database è crittografato. Questa è anche la chiave utilizzata per decifrare i backup da questa interfaccia di amministrazione (quindi se la si cambia, la decrittografia automatica non funzionerà fino a quando non si cambia di nuovo)."
1352
+
1353
+ #: admin.php:1634
1354
+ msgid "You can also decrypt a database manually here."
1355
+ msgstr "Qui puoi anche decrittare manualmente un database."
1356
+
1357
+ #: admin.php:1637
1358
+ msgid "Manually decrypt a database backup file"
1359
+ msgstr "Decifra manualmente un file di backup del database"
1360
+
1361
+ #: admin.php:1641
1362
+ msgid "Drop encrypted database files (db.crypt.gz files) here to upload them for decryption"
1363
+ msgstr "Eliminare i file di database crittografati (file db.crypt.gz) qui per caricarli per la decrittazione"
1364
+
1365
+ #: admin.php:1644
1366
+ msgid "Use decryption key"
1367
+ msgstr "Utilizzo chiave di decrittazione"
1368
+
1369
+ #: admin.php:1658
1370
+ msgid "Copying Your Backup To Remote Storage"
1371
+ msgstr "Copia del backup per archiviazione remota"
1372
+
1373
+ #: admin.php:1662
1374
+ msgid "Choose your remote storage"
1375
+ msgstr "Scegli il tuo Storage Remoto"
1376
+
1377
+ #: admin.php:1674
1378
+ msgid "None"
1379
+ msgstr "Nessuno"
1380
+
1381
+ #: admin.php:1787 admin.php:1808 admin.php:1839
1382
+ msgid "Cancel"
1383
+ msgstr "Annulla"
1384
+
1385
+ #: admin.php:1822
1386
+ msgid "Requesting start of backup..."
1387
+ msgstr "Inizio del backup richiesto..."
1388
+
1389
+ #: admin.php:1873
1390
+ msgid "Advanced / Debugging Settings"
1391
+ msgstr "Impostazioni Avanzate e di Debug"
1392
+
1393
+ #: admin.php:1876
1394
+ msgid "Debug mode"
1395
+ msgstr "Debug mode"
1396
+
1397
+ #: admin.php:1877
1398
+ 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."
1399
+ msgstr "Spunta qui per ricevere maggiori informazioni e email sul processo di backup - utile se qualcosa è andato storto. <strong>Si deve</strong> inviare questo log se si sta inoltrando una segnalazione di bug."
1400
+
1401
+ #: admin.php:1618
1402
+ msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org."
1403
+ msgstr "Le cartelle sopra contengono tutto, tranne il core di WordPress che può essere scaricato da WordPress.org."
1404
+
1405
+ #: admin.php:1618
1406
+ msgid "Or, get the \"More Files\" add-on from our shop."
1407
+ msgstr "Oppure, ottenere l'add-on \"More Files\" dal nostro negozio online."
1408
+
1409
+ #: admin.php:1535
1410
+ msgid "Daily"
1411
+ msgstr "Giornaliero"
1412
+
1413
+ #: admin.php:1535
1414
+ msgid "Weekly"
1415
+ msgstr "Settimanale"
1416
+
1417
+ #: admin.php:1535
1418
+ msgid "Fortnightly"
1419
+ msgstr "Quindicinale"
1420
+
1421
+ #: admin.php:1535
1422
+ msgid "Monthly"
1423
+ msgstr "Mensile"
1424
+
1425
+ #: admin.php:1544 admin.php:1562
1426
+ msgid "and retain this many backups"
1427
+ msgstr "e conservare questo numero di backup"
1428
+
1429
+ #: admin.php:1551
1430
+ msgid "Database backup intervals"
1431
+ msgstr "Intervalli di backup del batabase"
1432
+
1433
+ #: admin.php:1569
1434
+ 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."
1435
+ msgstr "Se si desidera pianificare automaticamente i backup, scegliere la pianificazione dal menu a tendina sopra. I backup avverranno agli intervalli indicati. Se due pianificazioni coincidono, avverranno entrambi insieme. Se si sceglie \"manuale\", allora sarà necessario fare clic sul pulsante \"Esegui Backup\" ogni volta che si desidera una copia di backup."
1436
+
1437
+ #: admin.php:1570
1438
+ msgid "To fix the time at which a backup should take place,"
1439
+ msgstr "Fissare il momento in cui un backup deve avvenire,"
1440
+
1441
+ #: admin.php:1570
1442
+ msgid "e.g. if your server is busy at day and you want to run overnight"
1443
+ msgstr "ad esempio, se il server è occupato di giorno si può eseguirlo durante la notte"
1444
+
1445
+ #: admin.php:1570
1446
+ msgid "use the \"Fix Time\" add-on"
1447
+ msgstr "utilizzare il \"Fix Time\" add-on"
1448
+
1449
+ #: admin.php:1574
1450
+ msgid "Include in files backup"
1451
+ msgstr "Includere nei files di backup"
1452
+
1453
+ #: admin.php:1584
1454
+ msgid "Any other directories found inside wp-content"
1455
+ msgstr "Eventuali altre directory trovati dentro wp-content"
1456
+
1457
+ #: admin.php:1590
1458
+ msgid "Exclude these:"
1459
+ msgstr "Escludi questi:"
1460
+
1461
+ #: admin.php:1592
1462
+ msgid "If entering multiple files/directories, then separate them with commas"
1463
+ msgstr "Se si immettono più file / cartelle, separarli con le virgole"
1464
+
1465
+ #: admin.php:1288
1466
+ msgid "Debug Database Backup"
1467
+ msgstr "Debug Database Backup"
1468
+
1469
+ #: admin.php:1288
1470
+ 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.."
1471
+ msgstr "Questo causerà un backup immediato del database. La pagina non riuscirà a caricarsi fino a che non finisce il processo(cioè, non in programma). Il backup potrebbe andare in timeout; in realtà questo pulsante è solo utile per verificare che il backup sia in grado di passare le fasi iniziali, o per piccoli siti WordPress .."
1472
+
1473
+ #: admin.php:1294
1474
+ msgid "Wipe Settings"
1475
+ msgstr "Pulizia dei settaggi"
1476
+
1477
+ #: admin.php:1295
1478
+ 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."
1479
+ msgstr "Questo pulsante consente di cancellare tutte le impostazioni di UpdraftPlus (ma non i vostri backup esistenti nel vostro cloud storage). Sarà quindi necessario inserire di nuovo tutte le impostazioni. Se lo si desidera è possibile farlo prima della disattivazione / disinstallazione di UpdraftPlus."
1480
+
1481
+ #: admin.php:1298
1482
+ msgid "Wipe All Settings"
1483
+ msgstr "Pulizia di tutti i settaggi"
1484
+
1485
+ #: admin.php:1298
1486
+ msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?"
1487
+ msgstr "Questa operazione eliminerà tutte le impostazioni di UpdraftPlus - si è sicuri di volerlo fare?"
1488
+
1489
+ #: admin.php:1300
1490
+ msgid "Active jobs"
1491
+ msgstr "Processi attivi"
1492
+
1493
+ #: admin.php:1379
1494
+ msgid "%s: began at: %s; next resumption: %d (after %ss)"
1495
+ msgstr "%s: iniziata a: %s; prossima ripresa: %d (dopo %ss)"
1496
+
1497
+ #: admin.php:1379
1498
+ msgid "show log"
1499
+ msgstr "Mostra log"
1500
+
1501
+ #: admin.php:1379
1502
+ msgid "delete schedule"
1503
+ msgstr "elimina programmazione"
1504
+
1505
+ #: admin.php:1386
1506
+ msgid "(None)"
1507
+ msgstr "(Nessuno)"
1508
+
1509
+ #: admin.php:1318
1510
+ msgid "Unknown response:"
1511
+ msgstr "Risposta sconosciuta"
1512
+
1513
+ #: admin.php:1409 admin.php:1765
1514
+ msgid "Delete"
1515
+ msgstr "Cancella"
1516
+
1517
+ #: admin.php:1451
1518
+ msgid "The request to the filesystem to create the directory failed."
1519
+ msgstr "La richiesta di creazione della cartella al file system è fallita."
1520
+
1521
+ #: admin.php:1465
1522
+ msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems"
1523
+ msgstr "La cartella è stata creata, ma abbiamo dovuto cambiare i permessi dei file a 777 (tutto scrivibile) per essere in grado di scrivere. Si consiglia di verificare con il fornitore di hosting che questo non causerà alcun problema"
1524
+
1525
+ #: admin.php:1469
1526
+ msgid "The folder exists, but your webserver does not have permission to write to it."
1527
+ msgstr "La cartella esiste, ma il server web non ha il permesso di scrivere."
1528
+
1529
+ #: admin.php:1469
1530
+ msgid "You will need to consult with your web hosting provider to find out to set permissions for a WordPress plugin to write to the directory."
1531
+ msgstr "È necessario consultare il proprio web hosting provider per sapere come impostare le autorizzazioni per permettere a un plugin di WordPress di scrivere nella cartella."
1532
+
1533
+ #: admin.php:1509
1534
+ msgid "Download log file"
1535
+ msgstr "Scarica il file di log"
1536
+
1537
+ #: admin.php:1515
1538
+ msgid "No backup has been completed."
1539
+ msgstr "Nessun backup è stato completato."
1540
+
1541
+ #: admin.php:1532
1542
+ msgid "File backup intervals"
1543
+ msgstr "Intervallo di creazione backup"
1544
+
1545
+ #: admin.php:1535
1546
+ msgid "Manual"
1547
+ msgstr "Manuale"
1548
+
1549
+ #: admin.php:1535
1550
+ msgid "Every 4 hours"
1551
+ msgstr "Ogni 4 ore"
1552
+
1553
+ #: admin.php:1535
1554
+ msgid "Every 8 hours"
1555
+ msgstr "Ogni 8 ore"
1556
+
1557
+ #: admin.php:1535
1558
+ msgid "Every 12 hours"
1559
+ msgstr "Ogni 12 ore"
1560
+
1561
+ #: admin.php:1214
1562
+ msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity after about 10 seconds. WordPress should start the backup running in the background."
1563
+ msgstr "Per continuare, premere 'Esegui Backup'. Poi, guarda il campo 'Ultimo Messaggio di log' per l'attività dopo circa 10 secondi. WordPress dovrebbe avviare il backup in esecuzione in background."
1564
+
1565
+ #: admin.php:1216
1566
+ msgid "Does nothing happen when you schedule backups?"
1567
+ msgstr "Non succede nulla quando si pianifica i backup?"
1568
+
1569
+ #: admin.php:1216
1570
+ msgid "Go here for help."
1571
+ msgstr "Vai qui per l'aiuto."
1572
+
1573
+ #: admin.php:1222
1574
+ msgid "Multisite"
1575
+ msgstr "Multi-sito"
1576
+
1577
+ #: admin.php:1226
1578
+ msgid "Do you need WordPress Multisite support?"
1579
+ msgstr "Hai bisogno di supporto per WordPress multi-sito?"
1580
+
1581
+ #: admin.php:1226
1582
+ msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on."
1583
+ msgstr "Si prega di verificare UpdraftPlus Premium, oppure l'add-on stand-alone multi-sito."
1584
+
1585
+ #: admin.php:1231
1586
+ msgid "Configure Backup Contents And Schedule"
1587
+ msgstr "Configurare Contenuti di backup e Pianificazione"
1588
+
1589
+ #: admin.php:1237
1590
+ msgid "Debug Information And Expert Options"
1591
+ msgstr "Informazioni di debug e Opzioni Avanzate"
1592
+
1593
+ #: admin.php:1240
1594
+ msgid "Web server:"
1595
+ msgstr "Web server:"
1596
+
1597
+ #: admin.php:1243
1598
+ msgid "Peak memory usage"
1599
+ msgstr "Utilizzo di memoria (picco)"
1600
+
1601
+ #: admin.php:1244
1602
+ msgid "Current memory usage"
1603
+ msgstr "Utilizzo di memoria attuale"
1604
+
1605
+ #: admin.php:1245
1606
+ msgid "PHP memory limit"
1607
+ msgstr "Limite di memoria PHP"
1608
+
1609
+ #: admin.php:1246
1610
+ msgid "%s version:"
1611
+ msgstr "Versione %s"
1612
+
1613
+ #: admin.php:1250 admin.php:1252 admin.php:1259
1614
+ msgid "Yes"
1615
+ msgstr "Si"
1616
+
1617
+ #: admin.php:1252 admin.php:1259
1618
+ msgid "No"
1619
+ msgstr "No"
1620
+
1621
+ #: admin.php:1255
1622
+ msgid "PHP has support for ZipArchive::addFile:"
1623
+ msgstr "PHP supporta ZipArchive::addFile:"
1624
+
1625
+ #: admin.php:1261
1626
+ msgid "Total (uncompressed) on-disk data:"
1627
+ msgstr "Totale (non compresso) dati su disco:"
1628
+
1629
+ #: admin.php:1262
1630
+ msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options."
1631
+ msgstr "N.B. Questo conteggio si basa su quello che era, o non era, escluso l'ultima volta che sono state salvate le opzioni."
1632
+
1633
+ #: admin.php:1269
1634
+ msgid "count"
1635
+ msgstr "conteggio"
1636
+
1637
+ #: admin.php:1275
1638
+ 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."
1639
+ msgstr "I pulsanti sotto eseguono immediatamente un backup, indipendentemente dallo scheduler di WordPress. Se questi funzionano, mentre i backup schedulati e il pulsante \"Backup Now\" non fanno assolutamente nulla (cioè nemmeno produrre un file di log), allora significa che lo scheduler non funziona. Si dovrebbe quindi disabilitare tutti gli altri plugin, e provare a premere il pulsante \"Esegui Backup\". Se non funziona, allora contattare la società di web hosting e chiedere loro se hanno disabilitato wp-cron. Se invece funziona, ri-attivare tutti gli altri plugin uno per uno, in modo da trovare quello che genera il problema e segnalare il bug allo sviluppatore."
1640
+
1641
+ #: admin.php:1283
1642
+ msgid "Debug Full Backup"
1643
+ msgstr "Debug backup completo"
1644
+
1645
+ #: admin.php:1283
1646
+ msgid "This will cause an immediate backup. The page will stall loading until it finishes (ie, unscheduled)."
1647
+ msgstr "Questo causerà un backup immediato. La pagina non verrà caricata fino a che non finirà il backup(cioè, non programmato)."
1648
+
1649
+ #: admin.php:1001
1650
+ msgid "UpdraftPlus - Upload backup files"
1651
+ msgstr "UpdraftPlus - Carica file di backup"
1652
+
1653
+ #: admin.php:1002
1654
+ msgid "Upload files into UpdraftPlus. Use this to import backups made on a different WordPress installation."
1655
+ msgstr "Carica file in UpdraftPlus. Utilizzare questa funzione per importare i backup fatti su una diversa installazione di WordPress."
1656
+
1657
+ #: admin.php:1006
1658
+ msgid "Drop backup zips here"
1659
+ msgstr "Eliminare file zip di backup qui"
1660
+
1661
+ #: admin.php:1007 admin.php:1642
1662
+ msgid "or"
1663
+ msgstr "oppure"
1664
+
1665
+ #: admin.php:1020 admin.php:1330
1666
+ msgid "calculating..."
1667
+ msgstr "sto calcolando..."
1668
+
1669
+ #: admin.php:1078 admin.php:1100 admin.php:1778
1670
+ #: includes/updraft-restorer.php:589
1671
+ msgid "Error:"
1672
+ msgstr "Errore:"
1673
+
1674
+ #: admin.php:1088
1675
+ msgid "You should:"
1676
+ msgstr "Dovresti:"
1677
+
1678
+ #: admin.php:1095
1679
+ msgid "Download error: the server sent us a response (JSON) which we did not understand"
1680
+ msgstr "Errore di Download: il server ha inviato una risposta (JSON) non conosciuta."
1681
+
1682
+ #: admin.php:1100
1683
+ msgid "Download error: the server sent us a response which we did not understand."
1684
+ msgstr "Errore di Download: il server ha inviato una risposta non conosciuta."
1685
+
1686
+ #: admin.php:1115
1687
+ msgid "Delete backup set"
1688
+ msgstr "Cancellazione del set di backup"
1689
+
1690
+ #: admin.php:1118
1691
+ msgid "Are you sure that you wish to delete this backup set?"
1692
+ msgstr "Sei sicuro di voler cancellare questo set di backup?"
1693
+
1694
+ #: admin.php:1133
1695
+ msgid "Restore backup"
1696
+ msgstr "Ripristina backup"
1697
+
1698
+ #: admin.php:1134
1699
+ msgid "Restore backup from"
1700
+ msgstr "Ripristina backup da"
1701
+
1702
+ #: admin.php:1135
1703
+ 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)."
1704
+ msgstr "Il ripristino sostituirà i temi di questo sito, i plugin, gli upload, e i database e / o altre cartelle di contenuti (in base a ciò che è contenuto nel set di backup, e alla selezione)."
1705
+
1706
+ #: admin.php:1135
1707
+ msgid "Choose the components to restore"
1708
+ msgstr "Scegli i componenti da ripristinare"
1709
+
1710
+ #: admin.php:1144
1711
+ msgid "Your web server has PHP's so-called safe_mode active."
1712
+ msgstr "Il tuo server web ha il safe_mode PHP attivo."
1713
+
1714
+ #: admin.php:1144
1715
+ 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>."
1716
+ msgstr "Questo rende i time-out molto più probabili. Si consiglia di disabilitare il safe_mode, oppure di ripristinare una sola entità per volta,<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/\">oppure di fare il ripristino manualmente</a>."
1717
+
1718
+ #: admin.php:1157
1719
+ msgid "The following entity cannot be restored automatically: \"%s\"."
1720
+ msgstr "Le seguenti entità non può essere ripristinata automaticamente: \"%s\"."
1721
+
1722
+ #: admin.php:1157
1723
+ msgid "You will need to restore it manually."
1724
+ msgstr "Sarà necessario fare il ripristino manualmente."
1725
+
1726
+ #: admin.php:1164
1727
+ msgid "%s restoration options:"
1728
+ msgstr "Opzione di ripristino %s:"
1729
+
1730
+ #: admin.php:1172
1731
+ 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"
1732
+ msgstr "È possibile cercare e sostituire il database (per la migrazione di un sito web verso una nuova posizione/URL) con il Migrator add-on - segui questo collegamento per maggiori informazioni"
1733
+
1734
+ #: admin.php:1193
1735
+ msgid "Do read this helpful article of useful things to know before restoring."
1736
+ msgstr "Si prega di leggere questo articolo esplicativo di cose utili da sapere prima di ripristinare."
1737
+
1738
+ #: admin.php:1213
1739
+ msgid "Perform a one-time backup"
1740
+ msgstr "Eseguire un backup singolo"
1741
+
1742
+ #: admin.php:943
1743
+ msgid "Time now"
1744
+ msgstr "Ora attuale"
1745
+
1746
+ #: admin.php:947
1747
+ msgid "Last finished backup run"
1748
+ msgstr "Ultimo backup eseguito"
1749
+
1750
+ #: admin.php:953 admin.php:1820
1751
+ msgid "Backup Now"
1752
+ msgstr "Esegui Backup"
1753
+
1754
+ #: admin.php:960 admin.php:1794 admin.php:2100
1755
+ msgid "Restore"
1756
+ msgstr "Ripristino"
1757
+
1758
+ #: admin.php:969
1759
+ msgid "Last log message"
1760
+ msgstr "Ultimo messaggio di Log"
1761
+
1762
+ #: admin.php:971
1763
+ msgid "(Nothing yet logged)"
1764
+ msgstr "(Niente è stato loggato)"
1765
+
1766
+ #: admin.php:972
1767
+ msgid "Download most recently modified log file"
1768
+ msgstr "Scarica il file di log più recente"
1769
+
1770
+ #: admin.php:976
1771
+ msgid "Backups, logs & restoring"
1772
+ msgstr "Backups, logs & rispristino"
1773
+
1774
+ #: admin.php:977
1775
+ msgid "Press to see available backups"
1776
+ msgstr "Premi per vedere backup disponibili"
1777
+
1778
+ #: admin.php:977
1779
+ msgid "%d set(s) available"
1780
+ msgstr "%d set Disponibili"
1781
+
1782
+ #: admin.php:991
1783
+ msgid "Downloading and restoring"
1784
+ msgstr "Download e Ripristino."
1785
+
1786
+ #: admin.php:993
1787
+ msgid "Downloading"
1788
+ msgstr "Download"
1789
+
1790
+ #: admin.php:993
1791
+ 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."
1792
+ msgstr "La pressione di un pulsante per il Database/Plugins/Temi/Uploads/Altri farà in modo che UpdraftPlus provi a prendere il file di backup dallo storage remoto (se presente - ad esempio Amazon S3, Dropbox, Google Drive, FTP) verso il server web. Poi vi sarà possibile scaricarlo sul computer locale. Se l'operazione di recupero da memoria remota smettesse di progredire (attendere 30 secondi per essere sicuri), premere di nuovo per riprendere. Ricorda che puoi anche visitare direttamente il sito del servizio di cloud storage."
1793
+
1794
+ #: admin.php:994
1795
+ msgid "Restoring"
1796
+ msgstr "Ripristino"
1797
+
1798
+ #: admin.php:994
1799
+ 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."
1800
+ msgstr "Premere il pulsante per il backup che si desidera ripristinare. Se il sito è di grandi dimensioni e si utilizza lo storage remoto, allora si deve prima fare clic su ciascuna entità, al fine di recuperarlo di nuovo nel server web. Questo consentirà di evitare timeout che possono verificarsi durante il processo di ripristino stesso."
1801
+
1802
+ #: admin.php:994
1803
+ msgid "More tasks:"
1804
+ msgstr "Altre attività: "
1805
+
1806
+ #: admin.php:994
1807
+ msgid "upload backup files"
1808
+ msgstr "Carica i file di backup"
1809
+
1810
+ #: admin.php:994
1811
+ 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."
1812
+ msgstr "Premere qui per guardare dentro la cartella UpdraftPlus (nel tuo spazio web hosting) per ogni nuovo set di backup che hai caricato. La posizione di questa cartella è impostata nelle impostazioni avanzate, di seguito."
1813
+
1814
+ #: admin.php:994
1815
+ msgid "rescan folder for new backup sets"
1816
+ msgstr "ri-analizza la cartella per nuovi set di backup"
1817
+
1818
+ #: admin.php:995
1819
+ msgid "Opera web browser"
1820
+ msgstr "Browser web Opera"
1821
+
1822
+ #: admin.php:995
1823
+ msgid "If you are using this, then turn Turbo/Road mode off."
1824
+ msgstr "Se stai utilizzando questo, allora imposta Turbo/Road Mode su off"
1825
+
1826
+ #: admin.php:997
1827
+ msgid "Google Drive"
1828
+ msgstr "Google Drive"
1829
+
1830
+ #: admin.php:997
1831
+ msgid "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)."
1832
+ msgstr "Google ha cambiato la loro impostazione di autorizzazioni di recente (aprile 2013). Per scaricare o ripristinare da Google Drive, <strong>è necessario</strong>autenticarsi nuovamente (utilizzando il link nella sezione di configurazione di Google Drive)."
1833
+
1834
+ #: admin.php:999
1835
+ msgid "This is a count of the contents of your Updraft directory"
1836
+ msgstr "Questo è un conteggio dei contenuti della cartella Updraft"
1837
+
1838
+ #: admin.php:999
1839
+ msgid "Web-server disk space in use by UpdraftPlus"
1840
+ msgstr "Spazio sul server web in uso da UpdraftPlus"
1841
+
1842
+ #: admin.php:999
1843
+ msgid "refresh"
1844
+ msgstr "aggiorna"
1845
+
1846
+ #: admin.php:856
1847
+ msgid "By UpdraftPlus.Com"
1848
+ msgstr "By UpdraftPlus.Com"
1849
+
1850
+ #: admin.php:856
1851
+ msgid "Lead developer's homepage"
1852
+ msgstr "Vai alla homepage dello sviluppatore"
1853
+
1854
+ #: admin.php:856
1855
+ msgid "Donate"
1856
+ msgstr "Dona"
1857
+
1858
+ #: admin.php:856
1859
+ msgid "Other WordPress plugins"
1860
+ msgstr "Altri plugin WordPress"
1861
+
1862
+ #: admin.php:856
1863
+ msgid "Version"
1864
+ msgstr "Versione"
1865
+
1866
+ #: admin.php:860
1867
+ msgid "Your backup has been restored."
1868
+ msgstr "Il backup è stato ripristinato."
1869
+
1870
+ #: admin.php:860
1871
+ 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."
1872
+ msgstr "Le cartelle vecchie (temi, upload, plugin, quali che siano) sono state mantenute con \"-old\" aggiunto al nome. Rimuoverli quando si è soddisfatti che il backup è andato a buon fine."
1873
+
1874
+ #: admin.php:866
1875
+ msgid "Old directories successfully deleted."
1876
+ msgstr "Vecchie cartelle cancellate correttamente."
1877
+
1878
+ #: admin.php:869
1879
+ 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)."
1880
+ msgstr "Il tuo limite di memoria PHP (fissato dalla società di web hosting) è piuttosto basso. UpdraftPlus ha provato ad alzarlo, ma senza successo. Questo plugin può funzionare con un limite di memoria di meno di 64 Mb - soprattutto se si dispone di file di grandi dimensioni caricati (anche se d'altra parte, molti siti funzionano anche con un limite di 32Mb - il comportamento potrebbe essere differente a seconda dei casi)."
1881
+
1882
+ #: admin.php:869
1883
+ msgid "Current limit is:"
1884
+ msgstr "Il limite corrente è:"
1885
+
1886
+ #: admin.php:873
1887
+ 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:"
1888
+ msgstr "Il tuo max_execution_time di PHP è inferiore a 60 secondi. Questo significa forse che si sta eseguendo in safe_mode. Disabilitare safe_mode o modificare il file php.ini per impostare max_execution_time ad un numero più alto. Se non lo fai, sarà necessario di più per completare un backup. Il limite attuale è:"
1889
+
1890
+ #: admin.php:873
1891
+ msgid "seconds"
1892
+ msgstr "secondi"
1893
+
1894
+ #: admin.php:878
1895
+ 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)."
1896
+ msgstr "Sono state trovate vecchie cartelle di un backup precedente (informazione tecnica: questi si trovano in wp-content, e con suffisso -old). Utilizzare questo pulsante per eliminarle (se si è verificato che il ripristino ha funzionato)."
1897
+
1898
+ #: admin.php:882
1899
+ msgid "Delete Old Directories"
1900
+ msgstr "Elimina Vecchie Cartelle"
1901
+
1902
+ #: admin.php:882
1903
+ msgid "Are you sure you want to delete the old directories? This cannot be undone."
1904
+ msgstr "Sei sicuro di voler cancellare le vecchie cartelle? Questa operazione non può essere annullata."
1905
+
1906
+ #: admin.php:896
1907
+ msgid "Existing Schedule And Backups"
1908
+ msgstr "Pianificazione e backup esistenti"
1909
+
1910
+ #: admin.php:900
1911
+ msgid "JavaScript warning"
1912
+ msgstr "Notifiche JavaScript"
1913
+
1914
+ #: admin.php:901
1915
+ msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser."
1916
+ msgstr "Questa interfaccia di amministrazione utilizza JavaScript. È necessario attivarne la gestione all'interno del tuo browser, oppure utilizzare un browser che supporti JavaScript."
1917
+
1918
+ #: admin.php:914 admin.php:927
1919
+ msgid "Nothing currently scheduled"
1920
+ msgstr "Nessuna schedulazione."
1921
+
1922
+ #: admin.php:919
1923
+ msgid "At the same time as the files backup"
1924
+ msgstr "Contemporaneamente al backup dei file"
1925
+
1926
+ #: admin.php:939
1927
+ msgid "All the times shown in this section are using WordPress's configured time zone, which you can set in Settings -> General"
1928
+ msgstr "Tutti gli orari riportati in questa sezione utilizzano il fuso orario configurato di WordPress, che è possibile impostare in Impostazioni -> Generali"
1929
+
1930
+ #: admin.php:939
1931
+ msgid "Next scheduled backups"
1932
+ msgstr "Prossimo Backup programmato"
1933
+
1934
+ #: admin.php:941
1935
+ msgid "Files"
1936
+ msgstr "Files"
1937
+
1938
+ #: admin.php:942 admin.php:1161 admin.php:1164 admin.php:2055 admin.php:2062
1939
+ #: admin.php:2289
1940
+ msgid "Database"
1941
+ msgstr "Database"
1942
+
1943
+ #: admin.php:204
1944
+ msgid "Your website is hosted using the %s web server."
1945
+ msgstr "Il tuo sito web è ospitato utilizzando il web server %s."
1946
+
1947
+ #: admin.php:204
1948
+ msgid "Please consult this FAQ if you have problems backing up."
1949
+ msgstr "Si prega di consultare questa FAQ se hai problemi di backup."
1950
+
1951
+ #: admin.php:217 admin.php:221
1952
+ msgid "Click here to authenticate your %s account (you will not be able to back up to %s without it)."
1953
+ msgstr "Clicca qui per autenticare il tuo account %s (non sarai in grado di eseguire il backup su %s senza di essa)."
1954
+
1955
+ #: admin.php:372
1956
+ 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"
1957
+ msgstr "L'archivio di backup per il ripristino di questo file non è stato trovato. Il metodo di archiviazione remota in uso (%s) non ci permette di recuperare i file. Per procedere con questo ripristino, è necessario ottenere una copia di questo file e posizionarlo all'interno della cartella di lavoro di UpdraftPlus"
1958
+
1959
+ #: admin.php:387
1960
+ msgid "Nothing yet logged"
1961
+ msgstr "Niente ancora loggato"
1962
+
1963
+ #: admin.php:477
1964
+ msgid "Schedule backup"
1965
+ msgstr "backup programmato"
1966
+
1967
+ #: admin.php:480
1968
+ msgid "Failed."
1969
+ msgstr "Fallito."
1970
+
1971
+ #: admin.php:483
1972
+ msgid "OK. You should soon see activity in the \"Last log message\" field below."
1973
+ msgstr "OK. A breve si dovrebbe vedere l'attività nel campo \"Ultimo Messaggio di log\" di seguito."
1974
+
1975
+ #: admin.php:483
1976
+ msgid "Nothing happening? Follow this link for help."
1977
+ msgstr "Non succede niente? Segui questo collegamento per un aiuto."
1978
+
1979
+ #: admin.php:502
1980
+ msgid "Job deleted"
1981
+ msgstr "Processo cancellato"
1982
+
1983
+ #: admin.php:508
1984
+ msgid "Could not find that job - perhaps it has already finished?"
1985
+ msgstr "Impossibile trovare il processo - forse è già stata completata."
1986
+
1987
+ #: admin.php:520 includes/updraft-restorer.php:661
1988
+ #: includes/updraft-restorer.php:693
1989
+ msgid "Error"
1990
+ msgstr "Errore"
1991
+
1992
+ #: admin.php:535
1993
+ msgid "Download failed"
1994
+ msgstr "Download fallito"
1995
+
1996
+ #: admin.php:549 admin.php:1088
1997
+ msgid "File ready."
1998
+ msgstr "File pronto."
1999
+
2000
+ #: admin.php:557
2001
+ msgid "Download in progress"
2002
+ msgstr "Download in corso"
2003
+
2004
+ #: admin.php:560
2005
+ msgid "No local copy present."
2006
+ msgstr "Nessuna copia locale presente."
2007
+
2008
+ #: admin.php:668
2009
+ msgid "Bad filename format - this does not look like a file created by UpdraftPlus"
2010
+ msgstr "Errore nel formato del nome del file - questo file sembra non sia stato creato da UpdraftPlus"
2011
+
2012
+ #: admin.php:747
2013
+ msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus"
2014
+ msgstr "Errore nel formato del nome del file - questo file non sembra un file di database crittografato e creato da UpdraftPlus"
2015
+
2016
+ #: admin.php:776
2017
+ msgid "Restore successful!"
2018
+ msgstr "Ripristino avvenuto con successo!"
2019
+
2020
+ #: admin.php:777 admin.php:815 admin.php:834
2021
+ msgid "Actions"
2022
+ msgstr "Azioni"
2023
+
2024
+ #: admin.php:777 admin.php:792 admin.php:815 admin.php:834
2025
+ msgid "Return to UpdraftPlus Configuration"
2026
+ msgstr "Ritorno a Configurazione di UpdraftPlus"
2027
+
2028
+ #: admin.php:804
2029
+ msgid "Remove old directories"
2030
+ msgstr "Rimuove vecchie cartelle"
2031
+
2032
+ #: admin.php:810
2033
+ msgid "Old directories successfully removed."
2034
+ msgstr "Vecchie cartelle rimosse con successo."
2035
+
2036
+ #: admin.php:813
2037
+ msgid "Old directory removal failed for some reason. You may want to do this manually."
2038
+ msgstr "Problemi nella rimozione della vecchia cartella, prova a cancellarla manualmente."
2039
+
2040
+ #: admin.php:825
2041
+ msgid "Backup directory could not be created"
2042
+ msgstr "Impossibile creare la cartella di backup"
2043
+
2044
+ #: admin.php:832
2045
+ msgid "Backup directory successfully created."
2046
+ msgstr "Cartella di backup creata con successo."
2047
+
2048
+ #: admin.php:849
2049
+ msgid "Your settings have been wiped."
2050
+ msgstr "Le tue impostazioni sono state cancellate."
2051
+
2052
+ #: updraftplus.php:2014 updraftplus.php:2020
2053
+ msgid "Please help UpdraftPlus by giving a positive review at wordpress.org"
2054
+ msgstr "Si prega di aiutare UpdraftPlus dando un giudizio positivo su wordpress.org"
2055
+
2056
+ #: updraftplus.php:2027
2057
+ msgid "Need even more features and support? Check out UpdraftPlus Premium"
2058
+ msgstr "Hai bisogno di ancora più funzionalità e supporto? Scopri UpdraftPlus Premium"
2059
+
2060
+ #: updraftplus.php:2037
2061
+ msgid "Check out UpdraftPlus.Com for help, add-ons and support"
2062
+ msgstr "Scopri UpdraftPlus.Com per aiuto, add-on e supporto"
2063
+
2064
+ #: updraftplus.php:2040
2065
+ msgid "Want to say thank-you for UpdraftPlus?"
2066
+ msgstr "Vuoi ringraziare per UpdraftPlus?"
2067
+
2068
+ #: updraftplus.php:2040
2069
+ msgid "Please buy our very cheap 'no adverts' add-on."
2070
+ msgstr "Si prega di acquistare il nostro economicissimo add-on 'no adverts' (senza pubblicità)"
2071
+
2072
+ #: backup.php:35
2073
+ msgid "Infinite recursion: consult your log for more information"
2074
+ msgstr "Ricursione infinita: consultare il log per maggiori informazioni"
2075
+
2076
+ #: backup.php:535
2077
+ msgid "Could not create %s zip. Consult the log file for more information."
2078
+ msgstr "Impossibile creare il file zip %s. Consultare il file di registro per ulteriori informazioni."
2079
+
2080
+ #: admin.php:100 admin.php:117
2081
+ msgid "Allowed Files"
2082
+ msgstr "File consentiti"
2083
+
2084
+ #: admin.php:180
2085
+ msgid "Settings"
2086
+ msgstr "Settaggi"
2087
+
2088
+ #: admin.php:184
2089
+ msgid "Add-Ons / Pro Support"
2090
+ msgstr "Add-Ons / Supporto Versione Pro"
2091
+
2092
+ #: admin.php:196 admin.php:200 admin.php:204 admin.php:213 admin.php:1967
2093
+ #: admin.php:1974 admin.php:1976
2094
+ msgid "Warning"
2095
+ msgstr "Attenzione"
2096
+
2097
+ #: admin.php:196
2098
+ 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."
2099
+ msgstr "Hai meno di %s di spazio libero su disco che UpdraftPlus può utilizzare per creare copie di backup. UpdraftPlus potrebbero ben esaurire lo spazio disponibile. Contattare il gestore del server (ad esempio, la vostra società di web hosting) per risolvere questo problema."
2100
+
2101
+ #: admin.php:200
2102
+ 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."
2103
+ msgstr "UpdraftPlus non supporta ufficialmente le versioni di WordPress prima di %s. Potrebbe essere funzionante, ma se non lo fosse, si avvisa del fatto che nessun supporto è disponibile fino a quando non si esegue l'aggiornamento di WordPress."
2104
+
2105
+ #: updraftplus.php:935
2106
+ msgid "The backup has not finished; a resumption is scheduled within 5 minutes"
2107
+ msgstr "Il backup non è terminato, verrà ripreso entro 5 minuti"
2108
+
2109
+ #: updraftplus.php:1006
2110
+ msgid "Backed up"
2111
+ msgstr "Backup eseguito"
2112
+
2113
+ #: updraftplus.php:1006
2114
+ msgid "WordPress backup is complete"
2115
+ msgstr "WordPress backup è completo"
2116
+
2117
+ #: updraftplus.php:1006
2118
+ msgid "Backup contains"
2119
+ msgstr "Il backup contiene"
2120
+
2121
+ #: updraftplus.php:1006
2122
+ msgid "Latest status"
2123
+ msgstr "Ultimo stato"
2124
+
2125
+ #: updraftplus.php:1260
2126
+ msgid "Backup directory (%s) is not writable, or does not exist."
2127
+ msgstr "La cartella di backup (%s) non è scrivibile o non esiste."
2128
+
2129
+ #: updraftplus.php:1408
2130
+ msgid "Could not read the directory"
2131
+ msgstr "Impossibile leggere la cartella."
2132
+
2133
+ #: updraftplus.php:1425
2134
+ msgid "Could not save backup history because we have no backup array. Backup probably failed."
2135
+ msgstr "Impossibile salvare la cronologia di backup perché non c'è un backup array. Backup probabilmente fallito."
2136
+
2137
+ #: updraftplus.php:1454
2138
+ msgid "Could not open the backup file for writing"
2139
+ msgstr "Impossibile aprire il file di backup per la scrittura"
2140
+
2141
+ #: updraftplus.php:1472
2142
+ msgid "Generated: %s"
2143
+ msgstr "Generato: %s"
2144
+
2145
+ #: updraftplus.php:1473
2146
+ msgid "Hostname: %s"
2147
+ msgstr "Nome Host: %s"
2148
+
2149
+ #: updraftplus.php:1474
2150
+ msgid "Database: %s"
2151
+ msgstr "atabase: %s"
2152
+
2153
+ #: updraftplus.php:1534
2154
+ msgid "The backup directory is not writable."
2155
+ msgstr "La cartella di backup non è scrivibile."
2156
+
2157
+ #: updraftplus.php:1555
2158
+ msgid "Table: %s"
2159
+ msgstr "Tabella: %s"
2160
+
2161
+ #: updraftplus.php:1560
2162
+ msgid "Skipping non-WP table: %s"
2163
+ msgstr "Salta tabelle non-WP: %s"
2164
+
2165
+ #: updraftplus.php:1655
2166
+ msgid "Delete any existing table %s"
2167
+ msgstr "Elimina ogni tabella esistente %s"
2168
+
2169
+ #: updraftplus.php:1664
2170
+ msgid "Table structure of table %s"
2171
+ msgstr "Struttura della tabella %s"
2172
+
2173
+ #: updraftplus.php:1670
2174
+ msgid "Error with SHOW CREATE TABLE for %s."
2175
+ msgstr "Errore con SHOW CREATE TABLE per %s."
2176
+
2177
+ #: updraftplus.php:1761
2178
+ msgid "End of data contents of table %s"
2179
+ msgstr "Fine del contenuto dati di tabella%s"
2180
+
2181
+ #: updraftplus.php:1934 includes/updraft-restorer.php:66
2182
+ msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered."
2183
+ msgstr "Decifratura fallita. Il file di database è criptato, ma non è immesso nessuna chiave di crittografia."
2184
+
2185
+ #: updraftplus.php:1947 includes/updraft-restorer.php:81
2186
+ msgid "Decryption failed. The most likely cause is that you used the wrong key."
2187
+ msgstr "Decriptaggio fallito: La causa più probabile è che sia stata utilizzata una chiave errata."
2188
+
2189
+ #: updraftplus.php:1947
2190
+ msgid "The decryption key used:"
2191
+ msgstr "La chiave di decriptaggio utilizzata è:"
2192
+
2193
+ #: updraftplus.php:1962
2194
+ msgid "File not found"
2195
+ msgstr "File non trovato"
2196
+
2197
+ #: updraftplus.php:2012
2198
+ msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?"
2199
+ msgstr "Puoi tradurre? Vuoi migliorare UpdraftPlus per chi parla della tua lingua?"
2200
+
2201
+ #: updraftplus.php:2014 updraftplus.php:2020
2202
+ msgid "Like UpdraftPlus and can spare one minute?"
2203
+ msgstr "Ti piace UpdraftPlus e puoi dedicarci un minuto?"
2204
+
2205
+ #: updraftplus.php:521
2206
+ msgid "Themes"
2207
+ msgstr "Temi"
2208
+
2209
+ #: updraftplus.php:522
2210
+ msgid "Uploads"
2211
+ msgstr "Uploads"
2212
+
2213
+ #: updraftplus.php:537
2214
+ msgid "Others"
2215
+ msgstr "Altri"
2216
+
2217
+ #: updraftplus.php:823
2218
+ msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings."
2219
+ msgstr "Impossibile creare files nella cartella di backup. Il backup è annullato - controlla i settaggi di UpdraftPlus"
2220
+
2221
+ #: updraftplus.php:893
2222
+ msgid "Encryption error occurred when encrypting database. Encryption aborted."
2223
+ msgstr "Errore di crittografia durante la crittografia del database. Crittografia interrotta."
2224
+
2225
+ #: updraftplus.php:929
2226
+ msgid "The backup apparently succeeded and is now complete"
2227
+ msgstr "Il backup apparentemente è riuscito ed ora è completo"
2228
+
2229
+ #: updraftplus.php:932
2230
+ msgid "The backup attempt has finished, apparently unsuccessfully"
2231
+ msgstr "Il tentativo di backup è terminato, a quanto pare senza successo"
2232
+
2233
+ #: options.php:26
2234
+ msgid "UpdraftPlus Backups"
2235
+ msgstr "Backup di UpdraftPlus "
2236
+
2237
+ #: updraftplus.php:306 updraftplus.php:311 updraftplus.php:316 admin.php:217
2238
+ #: admin.php:221
2239
+ msgid "UpdraftPlus notice:"
2240
+ msgstr "Note di UpdraftPlus:"
2241
+
2242
+ #: updraftplus.php:306
2243
+ msgid "The log file could not be read."
2244
+ msgstr "Il file di log non pu&ograve; essere letto."
2245
+
2246
+ #: updraftplus.php:311
2247
+ msgid "No log files were found."
2248
+ msgstr "Nessun file di log trovato."
2249
+
2250
+ #: updraftplus.php:316
2251
+ msgid "The given file could not be read."
2252
+ msgstr "Il file passato non può essere letto"
2253
+
2254
+ #: updraftplus.php:520
2255
+ msgid "Plugins"
2256
+ msgstr "Plugins"
languages/updraftplus-pl_PL.mo ADDED
Binary file
languages/updraftplus-pl_PL.po ADDED
@@ -0,0 +1,2020 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Translation of UpdraftPlus in Polish
2
+ # This file is distributed under the same license as the UpdraftPlus package.
3
+ msgid ""
4
+ msgstr ""
5
+ "PO-Revision-Date: 2013-05-20 18:57:52+0000\n"
6
+ "MIME-Version: 1.0\n"
7
+ "Content-Type: text/plain; charset=UTF-8\n"
8
+ "Content-Transfer-Encoding: 8bit\n"
9
+ "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
10
+ "X-Generator: GlotPress/0.1\n"
11
+ "Project-Id-Version: UpdraftPlus\n"
12
+
13
+ #: addons/migrator.php:245
14
+ msgid "SQL update commands run:"
15
+ msgstr "Uruchomiona aktualizacja poleceń SQL:"
16
+
17
+ #: addons/migrator.php:246
18
+ msgid "Errors:"
19
+ msgstr "Błędy:"
20
+
21
+ #: addons/migrator.php:247
22
+ msgid "Time taken (seconds):"
23
+ msgstr "Upłynęło czasu (sekundy):"
24
+
25
+ #: addons/migrator.php:305
26
+ msgid "Search and replacing table: %s"
27
+ msgstr "Wyszukiwanie i zastępowanie tabeli: %s"
28
+
29
+ #: addons/migrator.php:334
30
+ msgid "rows: %d"
31
+ msgstr "wiersze: %d"
32
+
33
+ #: addons/migrator.php:399
34
+ msgid "\"%s\" has no primary key, manual change needed on row %s."
35
+ msgstr "\"%s\" nie ma klucza podstawowego, potrzebna instrukcja zmiany w szeregu %s."
36
+
37
+ #: addons/dropbox-folders.php:21
38
+ msgid "Store at"
39
+ msgstr "Przechowuj w"
40
+
41
+ #: addons/migrator.php:159
42
+ msgid "Nothing to do: the site URL is already: %s"
43
+ msgstr "Nic nie zrobiono: strona URL jest już: %s"
44
+
45
+ #: addons/migrator.php:164
46
+ msgid "Warning: the database's site URL (%s) is different to what we expected (%s)"
47
+ msgstr "Ostrzeżenie: adres URL bazy danych (%s) jest inny od tego, którego oczekiwaliśmy (%s). "
48
+
49
+ #: addons/migrator.php:171
50
+ msgid "Database search and replace: replace %s in backup dump with %s"
51
+ msgstr "Szukaj w bazie danych i zastąp: zastąp %s w zrzucie kopii zapasowej %s"
52
+
53
+ #: addons/migrator.php:190
54
+ msgid "Could not get list of tables"
55
+ msgstr "Nie udało się uzyskać listy tabel"
56
+
57
+ #: addons/migrator.php:201
58
+ msgid "<strong>Search and replacing table:</strong> %s: already done"
59
+ msgstr "<strong>Wyszukiwanie i zastępowanie tabeli:</strong> %s: ciągle takie samo"
60
+
61
+ #: addons/migrator.php:242
62
+ msgid "Tables examined:"
63
+ msgstr "Badane tabele:"
64
+
65
+ #: addons/migrator.php:243
66
+ msgid "Rows examined:"
67
+ msgstr "Badane wiersze:"
68
+
69
+ #: addons/migrator.php:244
70
+ msgid "Changes made:"
71
+ msgstr "Zmiany dokonane:"
72
+
73
+ #: addons/sftp.php:128
74
+ msgid "%s Error: Failed to download"
75
+ msgstr "%s Błąd: Nie udało się pobrać"
76
+
77
+ #: addons/sftp.php:172
78
+ msgid "Resuming partial uploads is not supported, so you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file."
79
+ msgstr "Cześciowe wznawianie przesyłanych nie jest obsługiwane, więc musisz upewnić się, że serwer WWW umożliwia PHP uruchomienie procesów wystarczająco długo, aby załadować swój największy plik kopii zapasowej."
80
+
81
+ #: addons/sftp.php:177
82
+ msgid "Host"
83
+ msgstr "Host"
84
+
85
+ #: addons/sftp.php:184
86
+ msgid "Port"
87
+ msgstr "Port"
88
+
89
+ #: addons/sftp.php:198
90
+ msgid "Password"
91
+ msgstr "Hasło"
92
+
93
+ #: addons/sftp.php:214
94
+ msgid "Directory path"
95
+ msgstr "ścieżka do katalogu"
96
+
97
+ #: addons/sftp.php:216
98
+ msgid "Where to change directory to after logging in - often this is relative to your home directory."
99
+ msgstr "Gdzie zmienić katalog po zalogowaniu się - często jest to w katalogu domowym."
100
+
101
+ #: addons/sftp.php:252
102
+ msgid "host name"
103
+ msgstr "nazwa hosta"
104
+
105
+ #: addons/sftp.php:256
106
+ msgid "username"
107
+ msgstr "nazwa użytkownika"
108
+
109
+ #: addons/sftp.php:260
110
+ msgid "password"
111
+ msgstr "hasło"
112
+
113
+ #: addons/sftp.php:265
114
+ msgid "Failure: Port must be an integer."
115
+ msgstr "Awaria: Port musi być liczbą całkowitą."
116
+
117
+ #: addons/sftp.php:305
118
+ msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully created a file in that location."
119
+ msgstr "Niepowodzenie: byliśmy w stanie zalogować się i przejść do wskazanego katalogu, ale nie udało się pomyślnie utworzony pliku w tej lokalizacji."
120
+
121
+ #: addons/fixtime.php:77 addons/fixtime.php:87
122
+ msgid "starting from next time it is"
123
+ msgstr "począwszy od jej kolejnego"
124
+
125
+ #: addons/fixtime.php:77 addons/fixtime.php:87
126
+ msgid "Enter in format HH:MM (e.g. 14:22)"
127
+ msgstr "Wprowadź w formacie HH: MM (np. 14:22)"
128
+
129
+ #: addons/multisite.php:121
130
+ msgid "Multisite Install"
131
+ msgstr "Instalacja na wielu serwerach"
132
+
133
+ #: addons/multisite.php:127
134
+ msgid "You do not have sufficient permissions to access this page."
135
+ msgstr "Nie masz wystarczających uprawnień, aby uzyskać dostęp do tej strony."
136
+
137
+ #: addons/multisite.php:146
138
+ msgid "You do not have permission to access this page."
139
+ msgstr "Nie masz dostępu do tej części strony."
140
+
141
+ #: addons/multisite.php:204
142
+ msgid "Must-use plugins"
143
+ msgstr "Musisz-użyć wtyczek"
144
+
145
+ #: addons/multisite.php:205
146
+ msgid "Blog uploads"
147
+ msgstr "Przesłane pliki bloga"
148
+
149
+ #: addons/migrator.php:25
150
+ msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s"
151
+ msgstr "Wszystkie odniesienia do lokalizacji witryny w bazie danych zostaną zastąpione aktualnym adresem URL witryny, która jest: %s"
152
+
153
+ #: addons/migrator.php:25
154
+ msgid "Search and replace site location in the database (migrate)"
155
+ msgstr "Znajdź i zastąpić lokalizację witryny w bazie danych (migracja)"
156
+
157
+ #: addons/migrator.php:25
158
+ msgid "(learn more)"
159
+ msgstr "(dowiedz się więcej)"
160
+
161
+ #: addons/migrator.php:110 addons/migrator.php:223
162
+ msgid "Failed: the %s operation was not able to start."
163
+ msgstr "Nie powiodło się: operacja %s nie była w stanie wystartować."
164
+
165
+ #: addons/migrator.php:112 addons/migrator.php:225
166
+ msgid "Failed: we did not understand the result returned by the %s operation."
167
+ msgstr "Nie powiodło się: nie rozumiem wyniku zwróconego przez %s operację."
168
+
169
+ #: addons/migrator.php:133
170
+ msgid "Database: search and replace site URL"
171
+ msgstr "Baza danych: wyszukiwanie i zamiana strony URL"
172
+
173
+ #: addons/migrator.php:136
174
+ msgid "This option was not selected."
175
+ msgstr "Ta opcja nie została wybrana."
176
+
177
+ #: addons/migrator.php:149 addons/migrator.php:154
178
+ msgid "Error: unexpected empty parameter (%s, %s)"
179
+ msgstr "Błąd: nieoczekiwanie pusty parametr (%s, %s)"
180
+
181
+ #: addons/morefiles.php:63
182
+ msgid "The above files comprise everything in a WordPress installation."
183
+ msgstr "Powyższe pliki zawierają wszystko, co w instalacji WordPress."
184
+
185
+ #: addons/morefiles.php:70
186
+ msgid "WordPress core (including any additions to your WordPress root directory)"
187
+ msgstr "Jądro WordPressa (w tym wszelkie dodatki do katalogu głównego WordPressa)"
188
+
189
+ #: addons/morefiles.php:82
190
+ msgid "Any other directory on your server that you wish to back up"
191
+ msgstr "Każdy inny katalog na serwerze, który chcesz utworzyć kopię zapasową"
192
+
193
+ #: addons/morefiles.php:83
194
+ msgid "More Files"
195
+ msgstr "Więcej plików"
196
+
197
+ #: addons/morefiles.php:98
198
+ msgid "Enter the directory:"
199
+ msgstr "Wpisz katalog:"
200
+
201
+ #: addons/morefiles.php:102
202
+ msgid "If you are not sure what this option is for, then you will not want it, and should turn it off."
203
+ msgstr "Jeśli nie jesteś pewien czy ta opcja istnieje, wtedy nie będzie tego chciał i powinien to wyłączyć."
204
+
205
+ #: addons/morefiles.php:102
206
+ msgid "If using it, enter an absolute path (it is not relative to your WordPress install)."
207
+ msgstr "Jeśli używasz tego, wpisz ścieżkę bezwzględną (nie pozostaje w stosunku do Twojej instalacji WordPressa)."
208
+
209
+ #: addons/morefiles.php:104
210
+ msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver."
211
+ msgstr "Uważaj, co wpisujesz - jeśli wpiszesz / to naprawdę spróbuje utworzyć paczkę zip zawierającą całość serwera WWW."
212
+
213
+ #: addons/morefiles.php:134
214
+ msgid "If entering multiple files/directories, then separate them with commas."
215
+ msgstr "W przypadku wprowadzania wielu plików/katalogów, rozdziel je przecinkami."
216
+
217
+ #: addons/morefiles.php:176 addons/morefiles.php:253
218
+ msgid "No backup of %s directories: there was nothing found to back up"
219
+ msgstr "Brak kopii zapasowej z %s katalogów: nie znaleziono tutaj kopii zapasowych"
220
+
221
+ #: addons/morefiles.php:176
222
+ msgid "more"
223
+ msgstr "więcej"
224
+
225
+ #: addons/sftp.php:23
226
+ msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful), unless you disable it using the expert options. The 'Test FTP Login' button will tell you what type of connection is in use."
227
+ msgstr "Szyfrowanie FTP jest dostępne, więc będzie automatycznie próbował szyfrować (przed wycofaniem się bez szyfrowania, jeśli się nie powiedzie), chyba, że ​​je wyłączysz za pomocą opcji ekspertów. Przycisk Test 'ftp login' powie, jaki typ połączenia jest używany."
228
+
229
+ #: addons/sftp.php:23
230
+ msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time, by which time when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there."
231
+ msgstr "Niektóre serwery reklamują szyfrowanie FTP jako dostępne, ale potem kończy się czas (w czasie, w którym próbował z niego korzystać. Jeśli znajdziesz to zdarzenie, a następnie przejdziesz do \"Opcje Zaawansowane\" (poniżej) i wyłączysz SSL."
232
+
233
+ #: addons/sftp.php:23
234
+ msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below."
235
+ msgstr "Jawne szyfrowanie jest używane domyślnie: aby wymusić niejawne szyfrowanie (port 990), dodaj :990 do serwera FTP poniżej."
236
+
237
+ #: addons/sftp.php:30 addons/sftp.php:31 addons/sftp.php:32
238
+ msgid "No %s found"
239
+ msgstr "Nie %s znaleziono"
240
+
241
+ #: addons/sftp.php:30
242
+ msgid "SFTP host setting"
243
+ msgstr "Ustawienia hosta SFTP"
244
+
245
+ #: addons/sftp.php:31
246
+ msgid "SFTP user setting"
247
+ msgstr "Ustawienia użytkownika SFTP"
248
+
249
+ #: addons/sftp.php:32
250
+ msgid "SFTP password"
251
+ msgstr "hasło SFTP:"
252
+
253
+ #: addons/sftp.php:50 addons/sftp.php:291
254
+ msgid "Check your file permissions: Could not successfully create and enter:"
255
+ msgstr "Sprawdź swoje uprawnienia do plików: nie można pomyślnie utworzyć i zatwierdzić:"
256
+
257
+ #: methods/ftp.php:151
258
+ msgid "FTP Server"
259
+ msgstr "Serwer FTP"
260
+
261
+ #: methods/ftp.php:155
262
+ msgid "FTP Login"
263
+ msgstr "Login FTP"
264
+
265
+ #: methods/ftp.php:159
266
+ msgid "FTP Password"
267
+ msgstr "Hasło FTP"
268
+
269
+ #: methods/ftp.php:163
270
+ msgid "Remote Path"
271
+ msgstr "Ścieżka zdalna"
272
+
273
+ #: methods/ftp.php:164
274
+ msgid "Needs to already exist"
275
+ msgstr "Musi już istnieć"
276
+
277
+ #: methods/ftp.php:185
278
+ msgid "Failure: No server details were given."
279
+ msgstr "Awaria: brak podanych danych serwera."
280
+
281
+ #: methods/ftp.php:200
282
+ msgid "Failure: we did not successfully log in with those credentials."
283
+ msgstr "Awaria: logowanie niepomyślne do tych mandatów."
284
+
285
+ #: methods/ftp.php:208
286
+ msgid "Failure: an unexpected internal UpdraftPlus error occurred when testing the credentials - please contact the developer"
287
+ msgstr "Awaria: nieoczekiwany błąd wewnętrzny UpdraftPlus wystąpił podczas testowania poświadczenia - skontaktuj się z deweloperem"
288
+
289
+ #: methods/ftp.php:212
290
+ msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:"
291
+ msgstr "Sukces: udało nam się zalogować i potwierdzić naszą zdolność do tworzenia pliku w danym katalogu (wpisz login:"
292
+
293
+ #: methods/ftp.php:215
294
+ msgid "Failure: we successfully logged in, but were not able to create a file in the given directory."
295
+ msgstr "Awaria: logowanie pomyślne, ale nie był w stanie utworzyć pliku w danym katalogu."
296
+
297
+ #: addons/webdav.php:40 addons/webdav.php:170 addons/sftp.php:28
298
+ msgid "No %s settings were found"
299
+ msgstr "Nie znaleziono %s ustawień"
300
+
301
+ #: addons/webdav.php:116 addons/webdav.php:120
302
+ msgid "Chunk %s: A %s error occurred"
303
+ msgstr "Klocek %s: wystąpił %s błąd"
304
+
305
+ #: addons/webdav.php:182 addons/webdav.php:188 addons/webdav.php:200
306
+ msgid "WebDAV Error"
307
+ msgstr "Błąd WebDAV"
308
+
309
+ #: addons/webdav.php:188
310
+ msgid "Error opening remote file: Failed to download"
311
+ msgstr "Błąd otwarcia pliku zdalnego: Nie udało się pobrać"
312
+
313
+ #: addons/webdav.php:200
314
+ msgid "Local write failed: Failed to download"
315
+ msgstr "Zapis lokalny nie powiódł się: Nie udało się pobrać"
316
+
317
+ #: addons/webdav.php:234
318
+ msgid "WebDAV URL"
319
+ msgstr "WebDAV URL"
320
+
321
+ #: addons/webdav.php:238
322
+ msgid "Enter a complete URL, beginning with webdav:// or webdavs:// and including path, username, password and port as required - e.g.%s"
323
+ msgstr "Wprowadź pełny adres URL zaczynając z webdav:// lub webdavs:// w tym ścieżkę, nazwę użytkownika, hasło i port jest wymagane - na przykład %s"
324
+
325
+ #: addons/webdav.php:280 addons/sftp.php:279
326
+ msgid "Failed"
327
+ msgstr "Niepowodzenie"
328
+
329
+ #: addons/webdav.php:294
330
+ msgid "Failed: We were not able to place a file in that directory - please check your credentials."
331
+ msgstr "Niepowodzenie: Nie byliśmy w stanie umieścić pliku w tym katalogu - proszę sprawdzić swoje dane."
332
+
333
+ #: addons/morefiles.php:40 addons/morefiles.php:253
334
+ msgid "WordPress Core"
335
+ msgstr "Jądro WordPressa"
336
+
337
+ #: addons/morefiles.php:44
338
+ msgid "Over-write wp-config.php"
339
+ msgstr "Nadpisz wp-config.php"
340
+
341
+ #: addons/morefiles.php:44
342
+ msgid "(learn more about this important option)"
343
+ msgstr "(dowiedz się więcej o tej ważnej opcji)"
344
+
345
+ #: methods/dropbox.php:269
346
+ msgid "Authenticate with Dropbox"
347
+ msgstr "Uwierzytelnianie z Dropbox"
348
+
349
+ #: methods/dropbox.php:270
350
+ 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."
351
+ msgstr "<strong> Po </ strong> zapisaniu ustawień (kliknij poniżej \"Zapisz zmiany\"), a następnie wróć tu raz i kliknij na ten link, aby zakończyć uwierzytelnianie z Dropbox."
352
+
353
+ #: methods/dropbox.php:327
354
+ msgid "you have authenticated your %s account"
355
+ msgstr "uwierzytelnianie Twojego %s konta"
356
+
357
+ #: methods/dropbox.php:330
358
+ msgid "though part of the returned information was not as expected - your mileage may vary"
359
+ msgstr "choć nie było części zwróconej informacji jak się spodziewano - przebieg może się wahać"
360
+
361
+ #: methods/dropbox.php:333
362
+ msgid "Your %s account name: %s"
363
+ msgstr "Twoja %s nazwa konta: %s"
364
+
365
+ #: methods/ftp.php:44 methods/ftp.php:96
366
+ msgid "FTP login failure"
367
+ msgstr "Błąd logowania FTP"
368
+
369
+ #: methods/ftp.php:63
370
+ msgid "FTP upload failed"
371
+ msgstr "Przesłanie plików FTP zakończone niepowodzeniem"
372
+
373
+ #: methods/ftp.php:131
374
+ msgid "Settings test result"
375
+ msgstr "Wynik testu ustawień"
376
+
377
+ #: methods/ftp.php:147
378
+ msgid "Only non-encrypted FTP is supported by regular UpdraftPlus."
379
+ msgstr "Tylko nieszyfrowane FTP jest obsługiwane regularnie przez UpdraftPlus."
380
+
381
+ #: methods/ftp.php:147
382
+ msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available."
383
+ msgstr "Jeśli chcesz szyfrowania (np. jprzechowujesz poufne dane biznesowe), to dodatek jest dostępny."
384
+
385
+ #: methods/s3.php:271
386
+ msgid "%s Error: Failed to download %s. Check your permissions and credentials."
387
+ msgstr "%s Błąd: nie udało się pobrać %s. Sprawdź swoje uprawnienia i poświadczenia. "
388
+
389
+ #: methods/s3.php:275
390
+ msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials."
391
+ msgstr "%s Błąd: brak dostępu do pojemnika %s. Sprawdź swoje uprawnienia i poświadczenia. "
392
+
393
+ #: methods/s3.php:323
394
+ msgid "Get your access key and secret key <a href=\"%s\">from your %s console</a>, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist."
395
+ msgstr "Zdobądź klucz dostępu i tajny klucz <a href=\"%s\">z Twojej %s konsoli</a>, następnie (wyjątkowy - wszyscy %s użytkownicy) nazwę pojemnika (litery i cyfry) (i opcjonalnie ścieżkę) aby używać do przechowywania. Ten pojemnik zostanie utworzony dla Ciebie, jeśli już nie istnieje. "
396
+
397
+ #: methods/s3.php:323
398
+ msgid "If you see errors about SSL certificates, then please go here for help."
399
+ msgstr "Jeśli widzisz błędy dotyczące certyfikatów SSL, przejdź tutaj aby uzyskać pomoc."
400
+
401
+ #: methods/s3.php:326
402
+ msgid "%s access key"
403
+ msgstr "%s klucz dostępu "
404
+
405
+ #: methods/s3.php:330
406
+ msgid "%s secret key"
407
+ msgstr "%s tajny klucz"
408
+
409
+ #: methods/s3.php:334
410
+ msgid "%s location"
411
+ msgstr "%s lokalizacja"
412
+
413
+ #: methods/s3.php:335
414
+ msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath"
415
+ msgstr "Wprowadź tylko nazwę pojemnika lub pojemnika i ścieżki. Przykłady: mójpojemnik, mójpojemnik/mojaścieżka. "
416
+
417
+ #: methods/s3.php:362
418
+ msgid "API secret"
419
+ msgstr "API poufne"
420
+
421
+ #: methods/s3.php:382
422
+ msgid "Failure: No bucket details were given."
423
+ msgstr "Awaria: brak podanych danych pojemnika."
424
+
425
+ #: methods/s3.php:393
426
+ msgid "Region"
427
+ msgstr "Region"
428
+
429
+ #: methods/s3.php:403
430
+ msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)."
431
+ msgstr "Niepowodzenie: nie mogliśmy uzyskać dostępu lub stworzyć takiego pojemnika. Prosimy o sprawdzenie poświadczeń dostępu, a jeśli te są poprawne, to spróbuj innej nazwy pojemnika (jako inny %s użytkownik może już podjąć swoje imię). "
432
+
433
+ #: methods/s3.php:414 methods/s3.php:425
434
+ msgid "Failure"
435
+ msgstr "Niepowodzenie"
436
+
437
+ #: methods/s3.php:414 methods/s3.php:425
438
+ msgid "We successfully accessed the bucket, but the attempt to create a file in it failed."
439
+ msgstr "Z powodzeniem obejrzano pojemnik, ale próba utworzenia w nich pliku zakończyła się niepowodzeniem."
440
+
441
+ #: methods/s3.php:416
442
+ msgid "We accessed the bucket, and were able to create files within it."
443
+ msgstr "Mamy dostęp do pojemnika i byliśmy w stanie tworzyć w nim pliki."
444
+
445
+ #: methods/s3.php:418
446
+ msgid "The communication with %s was encrypted."
447
+ msgstr "Komunikacja z %s była szyfrowana."
448
+
449
+ #: methods/s3.php:420
450
+ msgid "The communication with %s was not encrypted."
451
+ msgstr "Komunikacja z %s nie była szyfrowana."
452
+
453
+ #: methods/dropbox.php:35
454
+ msgid "The %s PHP module is not installed"
455
+ msgstr "%s Moduł PHP nie jest zainstalowany"
456
+
457
+ #: methods/dropbox.php:41 methods/dropbox.php:208
458
+ msgid "You do not appear to be authenticated with Dropbox"
459
+ msgstr "Nie wygląda na to, aby była autoryzacja z Dropboxem"
460
+
461
+ #: methods/dropbox.php:52
462
+ msgid "error: %s (see log file for more)"
463
+ msgstr "błąd: %s (zajrzyj w plik dziennika, by dowiedzieć się więcej)"
464
+
465
+ #: methods/dropbox.php:139 methods/dropbox.php:144
466
+ msgid "error: failed to upload file to %s (see log file for more)"
467
+ msgstr "Błąd: nie udało się załadować pliku do %s (zajrzyj do pliku dziennika, by zobaczyć więcej)"
468
+
469
+ #: methods/dropbox.php:264
470
+ msgid "Need to use sub-folders?"
471
+ msgstr "Potrzebujesz użyć podfolderów?"
472
+
473
+ #: methods/dropbox.php:264
474
+ msgid "Backups are saved in"
475
+ msgstr "Kopie zapasowe są zapisywane w"
476
+
477
+ #: methods/dropbox.php:264
478
+ msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then "
479
+ msgstr "Jeśli masz kopie zapasowe kilku stron w tym samym Dropboxie i chcesz zorganizować podfoldery, wówczas"
480
+
481
+ #: methods/dropbox.php:264
482
+ msgid "there's an add-on for that."
483
+ msgstr "tam jest dodatek do tego."
484
+
485
+ #: methods/cloudfiles.php:370
486
+ msgid "US or UK Cloud"
487
+ msgstr "US lub UK chmura"
488
+
489
+ #: methods/cloudfiles.php:376
490
+ msgid "US (default)"
491
+ msgstr "US (domyślnie)"
492
+
493
+ #: methods/cloudfiles.php:377
494
+ msgid "UK"
495
+ msgstr "UK"
496
+
497
+ #: methods/cloudfiles.php:382
498
+ msgid "Cloud Files username"
499
+ msgstr "Nazwa użytkownika wirtualnej chmury"
500
+
501
+ #: methods/cloudfiles.php:386
502
+ msgid "Cloud Files API key"
503
+ msgstr "Klucz API wirtualnej chmury"
504
+
505
+ #: methods/cloudfiles.php:390
506
+ msgid "Cloud Files container"
507
+ msgstr "Pojemnik plików wirtualnej chmury"
508
+
509
+ #: methods/cloudfiles.php:400
510
+ msgid "UpdraftPlus's %s module <strong>requires</strong> %s. Please do not file any support requests; there is no alternative."
511
+ msgstr "Moduł %s UpdraftPlusa <strong> wymagany </ strong> s%. Proszę nie zgłaszać próśb o wsparcie; nie ma alternatywy."
512
+
513
+ #: methods/cloudfiles.php:418 methods/cloudfiles.php:423
514
+ msgid "Failure: No %s was given."
515
+ msgstr "Awaria: nie %s została podana."
516
+
517
+ #: methods/cloudfiles.php:418
518
+ msgid "API key"
519
+ msgstr "Klucz API"
520
+
521
+ #: methods/cloudfiles.php:423
522
+ msgid "Username"
523
+ msgstr "Nazwa użytkownika"
524
+
525
+ #: methods/cloudfiles.php:443
526
+ msgid "Failure: No container details were given."
527
+ msgstr "Awaria: brak danych pojemnika."
528
+
529
+ #: methods/cloudfiles.php:469
530
+ msgid "Cloud Files error - we accessed the container, but failed to create a file within it"
531
+ msgstr "Błąd plików w chmurze - mamy dostęp do pojemnika, ale nie udało się utworzyć w nim plików"
532
+
533
+ #: methods/cloudfiles.php:473
534
+ msgid "We accessed the container, and were able to create files within it."
535
+ msgstr "Mamy dostęp do pojemnika i byliśmy w stanie tworzyć w nim pliki."
536
+
537
+ #: methods/email.php:15
538
+ msgid "WordPress Backup"
539
+ msgstr "Kopia zapasowa WordPressa"
540
+
541
+ #: methods/email.php:15
542
+ msgid "Backup is of:"
543
+ msgstr "Kopia zapasowa jest z:"
544
+
545
+ #: methods/email.php:15
546
+ msgid "Be wary; email backups may fail because of file size limitations on mail servers."
547
+ msgstr "Uważaj, e-mail kopii zapasowej może nie zapisać się na serwerze pocztowym z powodu ograniczenia rozmiaru plików na tymże."
548
+
549
+ #: methods/email.php:24
550
+ msgid "Note:"
551
+ msgstr "Uwaga:"
552
+
553
+ #: methods/email.php:25
554
+ msgid "The email address entered above will be used. If choosing \"E-Mail\", then <strong>be aware</strong> that mail servers tend to have size limits; typically around 10-20Mb; backups larger than any limits will not arrive. If you really need a large backup via email, then you could fund a new feature (to break the backup set into configurable-size pieces) - but the demand has not yet existed for such a feature."
555
+ msgstr "Wprowadzony powyżej adres e-mail zostanie użyty. Jeśli wybierzesz \"E-Mail\", to <strong>należy pamiętać</strong>, że serwery pocztowe mają tendencję do ograniczenia wielkości, zwykle około 10-20Mb; większe kopie przez te ograniczenia nie przejdą. Jeśli naprawdę potrzebujesz dużej kopii zapasowej, aby przesłać za pośrednictwem poczty elektronicznej, możesz finansować nową funkcję (podzielenie zestawu kopii zapasowych do konfiguracji wielkości kawałków) - ale popyt na taką cechę jeszcze nie istnieje."
556
+
557
+ #: methods/s3.php:145
558
+ msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details"
559
+ msgstr "%s przesyłanie: przesyłanie identyfikatora dla wielu części zakończone niepowodzeniem - zobacz plik dziennika, by uzyskać więcej informacji. "
560
+
561
+ #: methods/s3.php:168
562
+ msgid "%s error: file %s was shortened unexpectedly"
563
+ msgstr "%s błąd: plik %s był niespodziewanie skrócony "
564
+
565
+ #: methods/s3.php:178
566
+ msgid "%s chunk %s: upload failed"
567
+ msgstr "%s kawałek %s: przesyłanie zakończone niepowodzeniem "
568
+
569
+ #: methods/s3.php:192
570
+ msgid "%s upload (%s): re-assembly failed (see log for more details)"
571
+ msgstr "%s przesłane (%s): ponowne niepowodzenie (zobacz plik dziennika, by uzyskać więcej informacji) "
572
+
573
+ #: methods/s3.php:196
574
+ msgid "%s re-assembly error (%s): (see log file for more)"
575
+ msgstr "%s ponowny błąd (%s): (zobacz plik dziennika, by uzyskać więcej informacji) "
576
+
577
+ #: methods/s3.php:208
578
+ msgid "%s Error: Failed to create bucket %s. Check your permissions and credentials."
579
+ msgstr "%s Błąd: nie udało się utworzyć pojemnika %s. Sprawdź swoje uprawnienia i poświadczenia. "
580
+
581
+ #: methods/googledrive.php:401
582
+ msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users."
583
+ msgstr "Dla większej pomocy, w tym zrzuty ekranu, kliknij na ten link. Poniższy opis jest wystarczający dla bardziej zaawansowanych użytkowników."
584
+
585
+ #: methods/googledrive.php:402
586
+ msgid "Follow this link to your Google API Console, and there create a Client ID in the API Access section."
587
+ msgstr "Śledź ten link do konsoli Google API i tam utwórz identyfikator klienta w sekcji dostęp API (API Access)."
588
+
589
+ #: methods/googledrive.php:402
590
+ msgid "Select 'Web Application' as the application type."
591
+ msgstr "Wybierz 'aplikację www' jako typ aplikacji."
592
+
593
+ #: methods/googledrive.php:402
594
+ msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked"
595
+ msgstr "Musisz dodać kolejne upoważnienie kiedy zapyta o przekierowanie URL (pod \"Więcej opcji\")"
596
+
597
+ #: methods/googledrive.php:402
598
+ 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."
599
+ msgstr "Nota bene jeśli zainstalujesz UpdraftPlus na kilku stronach WordPressa, to nie możesz ponownie użyć identyfikatora klienta; należy utworzyć nowy w każdym miejscu z konsoli Google API."
600
+
601
+ #: methods/googledrive.php:405
602
+ msgid "You do not have the SimpleXMLElement installed. Google Drive backups will <b>not</b> work until you do."
603
+ msgstr "Nie masz zanstalowanego SimpleXMLElement. Kopie zapasowe Google Drive nie <b>będą</ b> działać, dopóki tego nie zrobisz."
604
+
605
+ #: methods/googledrive.php:412
606
+ msgid "Client ID"
607
+ msgstr "Cleint ID (identyfikator)"
608
+
609
+ #: methods/googledrive.php:413
610
+ msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here."
611
+ msgstr "Jeśli Google później pokazał komunikat \"invalid_client\", to nie wprowadzono poprawnego identyfikatora klienta (client ID)."
612
+
613
+ #: methods/googledrive.php:416
614
+ msgid "Client Secret"
615
+ msgstr "Tajemniczy klient."
616
+
617
+ #: methods/googledrive.php:420
618
+ msgid "Folder ID"
619
+ msgstr "Folder ID (identyfikator folderu)"
620
+
621
+ #: methods/googledrive.php:421
622
+ 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)"
623
+ msgstr "<strong>To NIE jest nazwa folderu</ strong>. Aby uzyskać identyfikator folderu przejdź do tego folderu w Google Drive w przeglądarce internetowej i skopiuj identyfikator z przeglądarki w pasku adresu. Jest to część, która przychodzi po <kbd>#folders/.</kbd> Zostaw puste, aby użyć folderu głównego)"
624
+
625
+ #: methods/googledrive.php:424
626
+ msgid "Authenticate with Google"
627
+ msgstr "Uwierzytelnianie z Google"
628
+
629
+ #: methods/googledrive.php:425
630
+ 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."
631
+ msgstr "<strong>Po</ strong> zapisaniu ustawień (kliknij poniżej \"Zapisz zmiany\"), a następnie wróć tu raz i kliknij na ten link, aby zakończyć uwierzytelnianie z Google."
632
+
633
+ #: methods/cloudfiles.php:53 methods/cloudfiles.php:57
634
+ #: methods/cloudfiles.php:238 methods/cloudfiles.php:242
635
+ #: methods/cloudfiles.php:453 methods/cloudfiles.php:456
636
+ #: methods/cloudfiles.php:459
637
+ msgid "Cloud Files authentication failed"
638
+ msgstr "Uwierzytelnianie plików z wirtualnej chmury nie powiodło się"
639
+
640
+ #: methods/cloudfiles.php:61 methods/cloudfiles.php:246
641
+ #: methods/cloudfiles.php:264
642
+ msgid "Cloud Files error - failed to create and access the container"
643
+ msgstr "Błąd plików chmury - nie udało się utworzyć i uzyskać dostępu"
644
+
645
+ #: methods/cloudfiles.php:88
646
+ msgid "%s Error: Failed to open local file"
647
+ msgstr "%s Błąd: Nie udało się otworzyć pliku lokalnego"
648
+
649
+ #: methods/cloudfiles.php:105 methods/cloudfiles.php:147
650
+ msgid "%s Error: Failed to upload"
651
+ msgstr "%s Błąd: Nie udało się przesłać"
652
+
653
+ #: methods/cloudfiles.php:169
654
+ msgid "Cloud Files error - failed to re-assemble chunks"
655
+ msgstr "Błąd plików w chmurze - nie udało się ponownie zebrać klocków"
656
+
657
+ #: methods/cloudfiles.php:178 methods/cloudfiles.php:179
658
+ msgid "Cloud Files error - failed to upload file"
659
+ msgstr "Błąd plików w chmurze - nie udało siię załadować pliku"
660
+
661
+ #: methods/cloudfiles.php:292 methods/cloudfiles.php:309
662
+ msgid "Cloud Files Error"
663
+ msgstr "Błąd plików w chmurze"
664
+
665
+ #: methods/cloudfiles.php:292
666
+ msgid "Error opening local file: Failed to download"
667
+ msgstr "Błąd otwarcia pliku lokalnego: Nie udało się pobrać"
668
+
669
+ #: methods/cloudfiles.php:309
670
+ msgid "Error downloading remote file: Failed to download ("
671
+ msgstr "Błąd podczas pobierania pliku zdalnego: Nie udało się pobrać ("
672
+
673
+ #: methods/cloudfiles.php:318
674
+ msgid "Cloud Files error - no such file exists at Cloud Files"
675
+ msgstr "Błąd plików w chmurze - plik nie istnieje w chmurze"
676
+
677
+ #: methods/cloudfiles.php:322
678
+ msgid "Cloud Files error - failed to download the file"
679
+ msgstr "Błąd plików w chmurze - nie udało się pobrać pliku"
680
+
681
+ #: methods/cloudfiles.php:331
682
+ msgid "Testing - Please Wait..."
683
+ msgstr "Testowanie - Proszę czekać..."
684
+
685
+ #: methods/cloudfiles.php:345 methods/cloudfiles.php:410
686
+ msgid "Test %s Settings"
687
+ msgstr "Test %s Ustawienia"
688
+
689
+ #: methods/cloudfiles.php:366
690
+ 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."
691
+ msgstr "Zdobądź swój klucz API <a href=\"https://mycloud.rackspace.com/\"> z konsoli chmury Rackspace</a> (przeczytaj instrukcje <a href=\"http://www.rackspace.com/knowledge_center/article/rackspace-cloud-essentials-1-generating-your-api-key\">here</a>), a następnie wybierz nazwę pojemnika używanego do przechowywania. Pojemnik ten zostanie utworzony dla ciebie, jeśli nie istnieje."
692
+
693
+ #: methods/cloudfiles.php:366
694
+ msgid "Also, you should read this important FAQ."
695
+ msgstr "Ponadto, powinieneś przeczytać FAQ."
696
+
697
+ #: methods/googledrive.php:191
698
+ msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded is %d bytes"
699
+ msgstr "Konto pełne: na Twoim %s koncie zostało tylko%d bajtów, a plik do przesłania ma %d bajtów."
700
+
701
+ #: methods/googledrive.php:201
702
+ msgid "Failed to upload to %s"
703
+ msgstr "Nie udało się przesłać do %s"
704
+
705
+ #: methods/googledrive.php:289
706
+ msgid "An error occurred during %s upload (see log for more details)"
707
+ msgstr "Wystąpił błąd podczas %s przesyłania (zobacz dziennik, by uzyskać więcej szczegółów)"
708
+
709
+ #: methods/googledrive.php:328
710
+ msgid "Google Drive error: %d: could not download: could not find a record of the Google Drive file ID for this file"
711
+ msgstr "Błąd Google Drive: %d: nie można pobrać: nie można znaleźć zapisu ID z Google Drive dla tego pliku"
712
+
713
+ #: methods/googledrive.php:333
714
+ msgid "Could not find %s in order to download it"
715
+ msgstr "Nie można znaleźć %s aby to pobrać"
716
+
717
+ #: methods/googledrive.php:345
718
+ msgid "Google Drive "
719
+ msgstr "Google Drive"
720
+
721
+ #: methods/googledrive.php:345
722
+ msgid "error: zero-size file was downloaded"
723
+ msgstr "błąd: zeo-rozmiar pliku został pobrany"
724
+
725
+ #: methods/googledrive.php:363
726
+ msgid "Account is not authorized."
727
+ msgstr "Konto nie ma uprawnień."
728
+
729
+ #: methods/googledrive.php:395 methods/cloudfiles.php:358
730
+ 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."
731
+ msgstr "%s jest doskonałym wyborem, ponieważ UpdraftPlus obsługuje pofragmentowane przesłane pliki - bez względu na to, jak duża jest witryna, UpdraftPlus może przesłać to w krótkim czasie i nie dać się udaremnić przez jego limity."
732
+
733
+ #: includes/updraft-restorer.php:328
734
+ msgid "will restore as:"
735
+ msgstr "przywróć jako:"
736
+
737
+ #: includes/updraft-restorer.php:348
738
+ msgid "An error (%s) occured:"
739
+ msgstr "Wystąpił (%s) błąd:"
740
+
741
+ #: includes/updraft-restorer.php:348
742
+ msgid "the database query being run was:"
743
+ msgstr "Wprowadzone zapytanie do bazy danych:"
744
+
745
+ #: includes/updraft-restorer.php:351
746
+ msgid "Too many database errors have occurred - aborting restoration (you will need to restore manually)"
747
+ msgstr "Wystąpiło zbyt wiele błędów bazy danych - przerywanie przywracania (trzeba będzie przywrócić ręcznie)"
748
+
749
+ #: includes/updraft-restorer.php:358
750
+ msgid "Database lines processed: %d in %.2f seconds"
751
+ msgstr "Przetwarzanie bazy danych: %d w %.2f secondach"
752
+
753
+ #: includes/updraft-restorer.php:370
754
+ msgid "Finished: lines processed: %d in %.2f seconds"
755
+ msgstr "Zakończone: przetwarzane: %d w %.2f secondach"
756
+
757
+ #: includes/updraft-restorer.php:475 includes/updraft-restorer.php:484
758
+ msgid "Table prefix has changed: changing %s table field(s) accordingly:"
759
+ msgstr "Zmieniono prefiks tabeli: zmiana %s obszaru tabel:"
760
+
761
+ #: includes/updraft-restorer.php:479 includes/updraft-restorer.php:513
762
+ msgid "OK"
763
+ msgstr "OK"
764
+
765
+ #: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:91
766
+ msgid "You need to re-authenticate with %s, as your existing credentials are not working."
767
+ msgstr "Potrzebujesz do ponownej autoryzacji z %s, jako że Twoje istniejące poświadczenia nie działają. "
768
+
769
+ #: methods/webdav.php:13 methods/webdav.php:34 methods/webdav.php:50
770
+ #: methods/sftp.php:13 methods/sftp.php:34 methods/sftp.php:50
771
+ msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s"
772
+ msgstr "Nie masz zainstalowanego dodatku %s UpdraftPlus - dostań go z %s"
773
+
774
+ #: methods/webdav.php:63 methods/sftp.php:63
775
+ msgid "%s support is available as an add-on"
776
+ msgstr "%s wsparcie jest dostępne jako dodatek"
777
+
778
+ #: methods/webdav.php:63 methods/sftp.php:63
779
+ msgid "follow this link to get it"
780
+ msgstr "przestrzegaj tego łącza, aby je zdobyć"
781
+
782
+ #: methods/googledrive.php:111
783
+ 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."
784
+ msgstr "Nie odświeżono Google. To często oznacza, że wprowadzono błędnie identyfikator klienta lub, że nie został ponownie uwierzytelniony (poniżej) od czasu skorygowania tego. Sprawdź ponownie, a następnie kliknij jeszcze raz link uwierzytelniania. W końcu jeśli to nie pomoże, należy użyć trybu eksperta, aby wymazać wszystkie ustawienia i utworzyć nowy identyfikator klienta Google i zacząć od nowa."
785
+
786
+ #: methods/googledrive.php:116
787
+ msgid "Authorization failed"
788
+ msgstr "Autoryzacja nie powiodła się"
789
+
790
+ #: methods/googledrive.php:137
791
+ msgid "Your %s quota usage: %s %% used, %s available"
792
+ msgstr "Twoje %s wykorzystanie kontyngentu: %s %% używane, %s dostępne"
793
+
794
+ #: methods/googledrive.php:143 methods/cloudfiles.php:473
795
+ msgid "Success"
796
+ msgstr "Sukces"
797
+
798
+ #: methods/googledrive.php:143
799
+ msgid "you have authenticated your %s account."
800
+ msgstr "Uwierzytelnianie Twojego %s konta."
801
+
802
+ #: methods/googledrive.php:159
803
+ msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive."
804
+ msgstr "Jeszcze nie otrzymano tokena dostępu z Google - potrzebujesz autoryzacji lub ponownie zezwól na połączenie z Google Drive."
805
+
806
+ #: methods/googledrive.php:160 methods/googledrive.php:318
807
+ msgid "Have not yet obtained an access token from Google (has the user authorised?)"
808
+ msgstr "Jeszcze nie otrzymano tokena dostępu z Google (jesteś oprawnionym użytkownikiem?)"
809
+
810
+ #: includes/updraft-restorer.php:130
811
+ msgid "wp-config.php from backup: restoring (as per user's request)"
812
+ msgstr "wp-config.php z kopii zapasowej: przywracanie (na życzenie użytkownika)"
813
+
814
+ #: includes/updraft-restorer.php:190
815
+ msgid "Will not delete the archive after unpacking it, because there was no cloud storage for this backup"
816
+ msgstr "Czy nie usuwać archiwum po rozpakowaniu go, ponieważ nie było miejsca w chmuerze dla kopii zapasowej"
817
+
818
+ #: includes/updraft-restorer.php:218
819
+ 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."
820
+ msgstr "Ostrzeżenie: PHP tryb_bezpieczny jest aktywny na serwerze. Limity czasu są bardzo prawdopodobne. Jeśli to nastąpi, to będzie trzeba ręcznie przywrócić plik za pomocą phpMyAdmin lub inny sposób."
821
+
822
+ #: includes/updraft-restorer.php:223
823
+ msgid "Failed to find database file"
824
+ msgstr "Nie udało się znaleźć pliku bazy danych"
825
+
826
+ #: includes/updraft-restorer.php:229
827
+ msgid "Failed to open database file"
828
+ msgstr "Nie udało się otworzyć pliku bazy danych"
829
+
830
+ #: includes/updraft-restorer.php:253
831
+ msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)"
832
+ msgstr "Dostęp do bazy danych: Bezpośredni dostęp do MySQL nie jest dostępny, więc spadają z powrotem do wpdb (to będzie znacznie wolniejsze)"
833
+
834
+ #: includes/updraft-restorer.php:279
835
+ msgid "Backup of:"
836
+ msgstr "Kopia zapasowa z:"
837
+
838
+ #: includes/updraft-restorer.php:283 includes/updraft-restorer.php:301
839
+ msgid "Old table prefix:"
840
+ msgstr "Prefiks starej tabeli:"
841
+
842
+ #: includes/updraft-restorer.php:325
843
+ msgid "Restoring table"
844
+ msgstr "Przywracanie tabeli"
845
+
846
+ #: admin.php:2071
847
+ 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)"
848
+ msgstr "Plik nie występuje lokalnie - wymaga pobierania z magazynu zdalnego (dla dużych plików lepiej to zrobić wcześniej z konsoli do pobrania)"
849
+
850
+ #: admin.php:2077
851
+ msgid "Archive is expected to be size:"
852
+ msgstr "Archiwum ma mieć rozmiar:"
853
+
854
+ #: admin.php:2082
855
+ msgid "ERROR"
856
+ msgstr "BŁĄD"
857
+
858
+ #: admin.php:2085
859
+ msgid "The backup records do not contain information about the proper size of this file."
860
+ msgstr "Zapisy kopii zapasowej nie zawierają informacji na temat właściwego rozmiaru tego pliku."
861
+
862
+ #: admin.php:2100
863
+ msgid "Error message"
864
+ msgstr "Komunikat o błędzie"
865
+
866
+ #: admin.php:2106 admin.php:2107
867
+ msgid "Could not find one of the files for restoration"
868
+ msgstr "Nie można znaleźć jednego z plików do przywrócenia"
869
+
870
+ #: includes/updraft-restorer.php:5
871
+ msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually."
872
+ msgstr "UpdraftPlus nie jest w stanie bezpośrednio przywrócić tego rodzaju jednostki. Musi zostać przywrócona ręcznie."
873
+
874
+ #: includes/updraft-restorer.php:6
875
+ msgid "Backup file not available."
876
+ msgstr "Plik kopii zapasowej nie jest dostępny."
877
+
878
+ #: includes/updraft-restorer.php:7
879
+ msgid "Copying this entity failed."
880
+ msgstr "Kopiowanie jednostki nie powiodło się."
881
+
882
+ #: includes/updraft-restorer.php:8
883
+ msgid "Unpacking backup..."
884
+ msgstr "Rozpakowywanie kopii zapasowej..."
885
+
886
+ #: includes/updraft-restorer.php:9
887
+ msgid "Decrypting database (can take a while)..."
888
+ msgstr "Odszyfrowywanie danych (może chwilę potrwać)..."
889
+
890
+ #: includes/updraft-restorer.php:10
891
+ msgid "Database successfully decrypted."
892
+ msgstr "Baza danych pomyślnie odszyfrowana."
893
+
894
+ #: includes/updraft-restorer.php:11
895
+ msgid "Moving old directory out of the way..."
896
+ msgstr "Przenoszenie starego katalogu..."
897
+
898
+ #: includes/updraft-restorer.php:12
899
+ msgid "Moving unpacked backup in place..."
900
+ msgstr "Przenoszenie rozpakowanej kopii zapasowej w miejscu..."
901
+
902
+ #: includes/updraft-restorer.php:13
903
+ msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..."
904
+ msgstr "Przywracanie bazy danych (na dużej stronie może to zająć dużo czasu - jeśli czas dobiegnie końca(co może się zdarzyć, jeśli firma hostingowa nie skonfigurowała hostingu ograniczającego zasoby), należy użyć innej metody, np. phpMyAdmin)..."
905
+
906
+ #: includes/updraft-restorer.php:14
907
+ msgid "Cleaning up rubbish..."
908
+ msgstr "Sprzątanie śmieci..."
909
+
910
+ #: includes/updraft-restorer.php:15
911
+ msgid "Could not move old directory out of the way. Perhaps you already have -old directories that need deleting first?"
912
+ msgstr "Nie można przenieść stary katalog z tej ścieżki. Być może masz już -stare katalogi, które wymagają usunięcia w pierwszej kolejności?"
913
+
914
+ #: includes/updraft-restorer.php:16
915
+ msgid "Could not delete old directory."
916
+ msgstr "Nie można usunąć starego katalogu."
917
+
918
+ #: includes/updraft-restorer.php:17
919
+ msgid "Could not move new directory into place. Check your wp-content/upgrade folder."
920
+ msgstr "Nie można przenieść nowego katalogu w to miejsce. Sprawdź folder wp-content/upgrade."
921
+
922
+ #: includes/updraft-restorer.php:18
923
+ msgid "Failed to delete working directory after restoring."
924
+ msgstr "Nie udało się usunąć katalogu roboczego po przywróceniu."
925
+
926
+ #: includes/updraft-restorer.php:57
927
+ msgid "Failed to create a temporary directory"
928
+ msgstr "Nie udało się utworzyć katalogu tymczasowego"
929
+
930
+ #: includes/updraft-restorer.php:75
931
+ msgid "Failed to write out the decrypted database to the filesystem"
932
+ msgstr "Nie udało się zapisać odszyfrowanej bazy danych do systemu plików"
933
+
934
+ #: includes/updraft-restorer.php:126
935
+ msgid "wp-config.php from backup: will restore as wp-config-backup.php"
936
+ msgstr "wp-config.php z kopii zapasowej: przywróć jako wp-config-backup.php"
937
+
938
+ #: admin.php:1716
939
+ 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."
940
+ msgstr "Wybranie tej opcji obniża bezpieczeństwo zatrzymując UpdraftPlus z wykorzystaniem SSL do uwierzytelniania i zaszyfrowanych danych, tam gdzie to możliwe. Należy pamiętać, że niektórzy dostawcy pamięci w chmurze na to nie pozwalają (np. Dropbox), więc u tych dostawców to ustawienie nie będzie miało na nic wpływu."
941
+
942
+ #: admin.php:1740
943
+ msgid "Save Changes"
944
+ msgstr "Zapisz zmiany"
945
+
946
+ #: admin.php:1750
947
+ msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support."
948
+ msgstr "Serwer sieci instalacji PHP nie zawiera wymaganego modułu (%s). Prosimy o kontakt z dostawcą usługi hostingowej."
949
+
950
+ #: admin.php:1750
951
+ 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."
952
+ msgstr "UpdraftPlus %s wymaga <strong> modułu </ strong> Curl. Jedynymi opcjami zdobycia tego działania są: 1) Zainstaluj/włącz falowanie lub 2) Zatrudnij nas lub kogoś innego do dodania kodu opcji wsparcia w UpdraftPlus. 3) Poczekaj na kogoś innego, aby to zrobił."
953
+
954
+ #: admin.php:1756
955
+ 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)."
956
+ msgstr "Serwer sieci Web w PHP/instalacji Curl nie obsługuje połączenia HTTPS. Komunikacja z %s będzie nieszyfrowana. Zapytaj sieć hostingową o zainstalowanie Curl/SSL w celu uzyskania zdolności do szyfrowania (poprzez dodatki)."
957
+
958
+ #: admin.php:1758
959
+ 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."
960
+ msgstr "Serwer sieci Web w PHP/instalacja Curl nie obsługuje połączenia HTTPS. Nie możemy przejść %s bez tego wsparcia. Prosimy o kontakt z Twoim dostawcą usługi hostingowej. %s <strong wymaga</ strong> Curl + https. Proszę nie składać żadnych próśb o wsparcie, nie ma tutaj alternatywy."
961
+
962
+ #: admin.php:1761
963
+ 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."
964
+ msgstr "Dobre wiadomości: komunikacja witryny z %s może być szyfrowana. Jeśli pojawią się jakieś błędy z szyfrowaniem, spójrz w \"Ustawienia zaawansowane\", aby uzyskać pomoc."
965
+
966
+ #: admin.php:1833
967
+ msgid "Delete this backup set"
968
+ msgstr "Usuń ten zestaw kopii zapasowej "
969
+
970
+ #: admin.php:1862
971
+ msgid "Press here to download"
972
+ msgstr "Naciśnij tutaj, aby pobrać"
973
+
974
+ #: admin.php:1864
975
+ msgid "(No %s)"
976
+ msgstr "(Nie %s)"
977
+
978
+ #: admin.php:1874
979
+ msgid "Backup Log"
980
+ msgstr "Dziennik kopii zapasowej"
981
+
982
+ #: admin.php:1882
983
+ msgid "After pressing this button, you will be given the option to choose which components you wish to restore"
984
+ msgstr "Po naciśnięciu tego przycisku, będziesz mieć możliwość wyboru, które składniki chcesz przywrócić"
985
+
986
+ #: admin.php:1986
987
+ msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:"
988
+ msgstr "Ta kopia zapasowa nie istnieje w historii kopii zapasowych - przywracanie przerwane. Datownik:"
989
+
990
+ #: admin.php:2015
991
+ msgid "UpdraftPlus Restoration: Progress"
992
+ msgstr "UpdraftPlus Przywracanie: w toku"
993
+
994
+ #: admin.php:2037
995
+ msgid "ABORT: Could not find the information on which entities to restore."
996
+ msgstr "UWAGA: nie można znaleźć informacji, których podmioty są do przywrócenia."
997
+
998
+ #: admin.php:2038
999
+ msgid "If making a request for support, please include this information:"
1000
+ msgstr "W przypadku składania wniosku o wsparcie, należy podać następujące informacje:"
1001
+
1002
+ #: admin.php:2063
1003
+ msgid "This component was not selected for restoration - skipping."
1004
+ msgstr "Składnik ten nie został wybrany do przywrócenia - pomijajam."
1005
+
1006
+ #: admin.php:1710
1007
+ msgid "Do not verify SSL certificates"
1008
+ msgstr "Brak weryfikacji certyfikatów SSL"
1009
+
1010
+ #: admin.php:1711
1011
+ 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."
1012
+ msgstr "Wybranie tej opcji obniża bezpieczeństwo powodując zatrzymanie UpdraftPlus z weryfikowania tożsamości zaszyfrowanych stron, które łączą się np. z Dropboxem czy Google Drive. Oznacza to, że UpdraftPlus będzie działał tylko za pomocą protokołu SSL do szyfrowania ruchu, a nie do uwierzytelniania."
1013
+
1014
+ #: admin.php:1711
1015
+ msgid "Note that not all cloud backup methods are necessarily using SSL authentication."
1016
+ msgstr "Należy pamiętać, że nie wszystkie metody tworzenia kopii zapasowych w chmurze zawsze używają uwierzytelniania protokołu SSL."
1017
+
1018
+ #: admin.php:1715
1019
+ msgid "Disable SSL entirely where possible"
1020
+ msgstr "Wyłącz SSL całkowiecie, kiedy jest to możliwe"
1021
+
1022
+ #: admin.php:1674
1023
+ msgid "Expert settings"
1024
+ msgstr "Ustawienia dla ekspertów"
1025
+
1026
+ #: admin.php:1675
1027
+ msgid "Show expert settings"
1028
+ msgstr "Pokaż ustawienia dla ekspertów"
1029
+
1030
+ #: admin.php:1675
1031
+ msgid "click this to show some further options; don't bother with this unless you have a problem or are curious."
1032
+ msgstr "kliknij, aby zobaczyć jakieś inne opcje; nie przejmuj się tym, chyba że masz wątpliwości lub jesteś ciekawy."
1033
+
1034
+ #: admin.php:1682
1035
+ msgid "Delete local backup"
1036
+ msgstr "Skasuj lokalne kopie zapasowe"
1037
+
1038
+ #: admin.php:1683
1039
+ 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)."
1040
+ msgstr "Usuń zaznaczenie tego, aby zapobiec usunięciu wszelkich zbędnych plików kopii zapasowej z serwera po zakończeniu tworzenia kopii zapasowej (wszystkie pliki wysyłane zdalnie również pozostaną na miejscu, a wszystkie pliki przechowywane lokalnie nie będą podlegały ograniczeniom retencyjnych)."
1041
+
1042
+ #: admin.php:1688
1043
+ msgid "Backup directory"
1044
+ msgstr "Katalog kopii zapasowej"
1045
+
1046
+ #: admin.php:1696
1047
+ msgid "Backup directory specified is writable, which is good."
1048
+ msgstr "Określony katalog kopii zapasowej jest zapisany, czyli w porządku."
1049
+
1050
+ #: admin.php:1698
1051
+ msgid "Backup directory specified is <b>not</b> writable, or does not exist."
1052
+ msgstr "Archiwizacja danych katalogu nie <b>jest</ b> zapisana, lub nie istnieje."
1053
+
1054
+ #: admin.php:1698
1055
+ msgid "Click here to attempt to create the directory and set the permissions"
1056
+ msgstr "Kliknij tutaj, aby próbować utworzyć katalog i ustawić uprawnienia"
1057
+
1058
+ #: admin.php:1698
1059
+ msgid "or, to reset this option"
1060
+ msgstr "lub, aby zresetować tą opcję"
1061
+
1062
+ #: admin.php:1698
1063
+ msgid "click here"
1064
+ msgstr "kliknij tutaj"
1065
+
1066
+ #: admin.php:1698
1067
+ 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."
1068
+ msgstr "Jeśli to nie pomoże sprawdź uprawnienia na serwerze lub zmień to do innego katalogu, który jest zapisywalny przez proces serwera WWW."
1069
+
1070
+ #: admin.php:1701
1071
+ 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...)."
1072
+ msgstr "Miejsce, gdzie UpdraftPlus zapisze pliki początkowe. Katalog ten musi być zapisywalny przez serwer WWW. Zazwyczaj będziesz go miał wewnątrz folderu wp-content (jest to ustawienie domyślne). <b> Nie </ b> umieszczenie przesłanego polecenia dir wewnątrz, będzie powodować problemy rekursji (tworzenie kopii zapasowych kopii zapasowych kopii zapasowych ...)."
1073
+
1074
+ #: admin.php:1705
1075
+ msgid "Use the server's SSL certificates"
1076
+ msgstr "Korzystanie z serwera z certyfikatem SSL"
1077
+
1078
+ #: admin.php:1706
1079
+ 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."
1080
+ msgstr "Domyślnie UpdraftPlus wykorzystuje własny magazyn certyfikatów SSL w celu weryfikacji tożsamości odległych miejsc (np. aby upewnić się, że komunikuje się z prawdziwym Dropbox, Amazon S3, itd., a nie z wrogiem). Trzymamy to na bieżąco. Jednak, jeśli masz błąd SSL, a następnie wybierzesz tą opcję (co powoduje, że Updraft będzie używało Twojego serwera) może to pomóc."
1081
+
1082
+ #: admin.php:1447
1083
+ msgid "Use WordShell for automatic backup, version control and patching"
1084
+ msgstr "Użyj WordShell do automatycznego tworzenia kopii zapasowych, kontroli wersji i patchowania (łatania)."
1085
+
1086
+ #: admin.php:1451
1087
+ msgid "Email"
1088
+ msgstr "Email"
1089
+
1090
+ #: admin.php:1452
1091
+ msgid "Enter an address here to have a report sent (and the whole backup, if you choose) to it."
1092
+ msgstr "Aby wysłać raport (i cały backup, jeśli zdecydujesz) wpisz tutaj swój adres."
1093
+
1094
+ #: admin.php:1456
1095
+ msgid "Database encryption phrase"
1096
+ msgstr "Zwrot szyfrowania bazy danych"
1097
+
1098
+ #: admin.php:1463
1099
+ 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)."
1100
+ msgstr "Wprowadź tutaj tekst, który jest używany do szyfrowania kopii zapasowych (Rijndael). <strong> Zrób oddzielny rejestr, aby nie stracić ani jego ani wszystkich kopii zapasowych <em> będą </ em> bezużyteczne. </ strong> Obecnie tylko plik bazy danych jest szyfrowany. To także klucz używany do tworzenia kopii zapasowych deszyfrowania z tego interfejsu administratora (jeśli więc chcesz go zmienić, wtedy automatyczne deszyfrowanie nie będzie działać dopóki nie zostanie ono zmienione z powrotem)."
1101
+
1102
+ #: admin.php:1463
1103
+ msgid "You can also decrypt a database manually here."
1104
+ msgstr "Można również odszyfrować tutaj bazy danych ręcznie."
1105
+
1106
+ #: admin.php:1466
1107
+ msgid "Manually decrypt a database backup file"
1108
+ msgstr "Ręcznie odszyfrowuj plik kopii zapasowej bazy danych"
1109
+
1110
+ #: admin.php:1470
1111
+ msgid "Drop encrypted database files (db.crypt.gz files) here to upload them for decryption"
1112
+ msgstr "Przeciągnij zaszyfrowane pliki baz danych (pliki db.crypt.gz), żeby wysłać je do deszyfrowania"
1113
+
1114
+ #: admin.php:1473
1115
+ msgid "Use decryption key"
1116
+ msgstr "Użyj klucza deszyfrowania"
1117
+
1118
+ #: admin.php:1487
1119
+ msgid "Copying Your Backup To Remote Storage"
1120
+ msgstr "Kopiowanie Twojej kopii zapasowej do magazynu zdalnego"
1121
+
1122
+ #: admin.php:1491
1123
+ msgid "Choose your remote storage"
1124
+ msgstr "Wybierz miejsce zdalnego przechowywania"
1125
+
1126
+ #: admin.php:1503
1127
+ msgid "None"
1128
+ msgstr "Żaden"
1129
+
1130
+ #: admin.php:1597 admin.php:1618 admin.php:1643
1131
+ msgid "Cancel"
1132
+ msgstr "Anuluj"
1133
+
1134
+ #: admin.php:1627
1135
+ msgid "Requesting start of backup..."
1136
+ msgstr "Żądanie rozpoczęcia tworzenia kopii zapasowej... "
1137
+
1138
+ #: admin.php:1667
1139
+ msgid "Advanced / Debugging Settings"
1140
+ msgstr "Zaawansowanie/ustawienia debugowania"
1141
+
1142
+ #: admin.php:1670
1143
+ msgid "Debug mode"
1144
+ msgstr "Tryb debugowania"
1145
+
1146
+ #: admin.php:1671
1147
+ 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."
1148
+ msgstr "Sprawdź to, aby otrzymać więcej informacji i e-maile w procesie tworzenia kopii zapasowej - przydatne, jeśli coś jest nie tak. Wówczas <strong> musisz </ strong> wysłać nam ten dziennik, jeśli wykryjesz błąd."
1149
+
1150
+ #: admin.php:1447
1151
+ msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org."
1152
+ msgstr "Wszystkie powyższe katalogi, z wyjątkiem samego jądra WordPressa, które można pobrać na nowo z WordPress.org."
1153
+
1154
+ #: admin.php:1447
1155
+ msgid "Or, get the \"More Files\" add-on from our shop."
1156
+ msgstr "Albo dostać \"więcej plików\" dodatki w naszym sklepie."
1157
+
1158
+ #: admin.php:1364
1159
+ msgid "Daily"
1160
+ msgstr "Codziennie"
1161
+
1162
+ #: admin.php:1364
1163
+ msgid "Weekly"
1164
+ msgstr "Co tydzień"
1165
+
1166
+ #: admin.php:1364
1167
+ msgid "Fortnightly"
1168
+ msgstr "Co 2 tygodnie"
1169
+
1170
+ #: admin.php:1364
1171
+ msgid "Monthly"
1172
+ msgstr "Co miesiąc"
1173
+
1174
+ #: admin.php:1373 admin.php:1391
1175
+ msgid "and retain this many backups"
1176
+ msgstr "i zachowaj dla wielu kopii zapasowych"
1177
+
1178
+ #: admin.php:1380
1179
+ msgid "Database backup intervals"
1180
+ msgstr "Częstotliwość tworzenia kopii zapasowych bazy danych"
1181
+
1182
+ #: admin.php:1398
1183
+ 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."
1184
+ msgstr "Jeśli chcesz zaplanować automatyczne wykonywanie kopii zapasowych, wybierz to powyżej z rozwijanego menu harmonogramu. Kopie zapasowe będą występować w określonych odstępach. Jeżeli dwa schematy są takie same, wówczas obie kopie odbędą się razem. Jeśli wybierzesz \"Backup Now\", następnie należy kliknąć przycisk \"Backup Now\", gdy chcesz wystąpienie kopii zapasowych."
1185
+
1186
+ #: admin.php:1399
1187
+ msgid "To fix the time at which a backup should take place,"
1188
+ msgstr "Aby ustalić czas, w którym kopia zapasowa powinna nastąpić,"
1189
+
1190
+ #: admin.php:1399
1191
+ msgid "e.g. if your server is busy at day and you want to run overnight"
1192
+ msgstr "na przykład jeśli serwer jest zajęty w dzień i chcesz uruchomić w ciągu nocy"
1193
+
1194
+ #: admin.php:1399
1195
+ msgid "use the \"Fix Time\" add-on"
1196
+ msgstr "użyj dodatku \"Fix Time\""
1197
+
1198
+ #: admin.php:1403
1199
+ msgid "Include in files backup"
1200
+ msgstr "Uwzględnij pliki w kopii zapasowej"
1201
+
1202
+ #: admin.php:1413
1203
+ msgid "Any other directories found inside wp-content"
1204
+ msgstr "Wszelkie inne katalogi znajdź wewnątrz wp-content"
1205
+
1206
+ #: admin.php:1419
1207
+ msgid "Exclude these:"
1208
+ msgstr "Wyłączyć te:"
1209
+
1210
+ #: admin.php:1421
1211
+ msgid "If entering multiple files/directories, then separate them with commas"
1212
+ msgstr "W przypadku wprowadzania wielu plików/katalogów rozdziel je przecinkami"
1213
+
1214
+ #: admin.php:1138
1215
+ msgid "Debug Database Backup"
1216
+ msgstr "Debuguj bazę danych kopii zapasowej"
1217
+
1218
+ #: admin.php:1138
1219
+ 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.."
1220
+ msgstr "Spowoduje to natychmiastową kopię zapasową bazy danych. Strona zacznie się ładować aż do zakończenia (tj. nieplanowane). Backupowi może również zabraknąć czasu, naprawdę ten przycisk jest przydatny tylko dla sprawdzenia, że tworzenie kopii zapasowych jest w stanie dotrzeć na początkowych etapach, lub dla małych witryn WordPress .."
1221
+
1222
+ #: admin.php:1144
1223
+ msgid "Wipe Settings"
1224
+ msgstr "Ustawienia wipe"
1225
+
1226
+ #: admin.php:1145
1227
+ 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."
1228
+ msgstr "Ten przycisk usuwa wszystkie ustawienia UpdraftPlus (ale nie każde z istniejących kopii zapasowych z pamięci masowej w chmurze). Następnie należy wprowadzić wszystkie ustawienia ponownie. Możesz to zrobić także przed wyłączeniem/deinstalacją UpdraftPlus jeśli chcesz."
1229
+
1230
+ #: admin.php:1148
1231
+ msgid "Wipe All Settings"
1232
+ msgstr "Wszystkie ustawienia wipe"
1233
+
1234
+ #: admin.php:1148
1235
+ msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?"
1236
+ msgstr "Spowoduje to usunięcie wszystkich ustawień UpdraftPlus - czy na pewno chcesz to zrobić?"
1237
+
1238
+ #: admin.php:1150
1239
+ msgid "Active jobs"
1240
+ msgstr "Aktywne zadania"
1241
+
1242
+ #: admin.php:1151
1243
+ msgid "Refresh your page in order to update this list."
1244
+ msgstr "Odśwież stronę w celu aktualizacji listy. "
1245
+
1246
+ #: admin.php:1164
1247
+ msgid "%s: began at: %s; next resumption: %d (after %ss)"
1248
+ msgstr "%s: rozpoczął się: %s; następne wznowienie: %d (po %ss) "
1249
+
1250
+ #: admin.php:1164
1251
+ msgid "show log"
1252
+ msgstr "pokaż plik dziennika"
1253
+
1254
+ #: admin.php:1164
1255
+ msgid "delete schedule"
1256
+ msgstr "usuń harmonogram "
1257
+
1258
+ #: admin.php:1171
1259
+ msgid "(None)"
1260
+ msgstr "(Żadne) "
1261
+
1262
+ #: admin.php:1188
1263
+ msgid "Unknown response:"
1264
+ msgstr "Nieznane odpowiedzi:"
1265
+
1266
+ #: admin.php:1238 admin.php:1594
1267
+ msgid "Delete"
1268
+ msgstr "Usuń"
1269
+
1270
+ #: admin.php:1280
1271
+ msgid "The request to the filesystem to create the directory failed."
1272
+ msgstr "Żądanie, aby utworzyć system plików nie powiodło się."
1273
+
1274
+ #: admin.php:1294
1275
+ msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems"
1276
+ msgstr "Folder został stworzony, ale musieliśmy zmienić jego uprawnienia do plików na 777 (prawa zapisu), aby móc to zapisać. Należy skontaktować się z dostawcą usług hostingowych, aby nie spowodowało to żadnych problemów."
1277
+
1278
+ #: admin.php:1298
1279
+ msgid "The folder exists, but your webserver does not have permission to write to it."
1280
+ msgstr "Folder istnieje, ale twój serwer www nie ma uprawnień do jego zapisu."
1281
+
1282
+ #: admin.php:1298
1283
+ msgid "You will need to consult with your web hosting provider to find out to set permissions for a WordPress plugin to write to the directory."
1284
+ msgstr "Musisz skontaktować się z dostawcą usługi hostingowej, aby dowiedzieć się jak ustawić uprawnienia dla wtyczki Wordpressa, aby zapisać do tego katalogu."
1285
+
1286
+ #: admin.php:1338
1287
+ msgid "Download log file"
1288
+ msgstr "Pobieranie pliku dziennika"
1289
+
1290
+ #: admin.php:1344
1291
+ msgid "No backup has been completed."
1292
+ msgstr "Kopia zapasowa nie została ukończona."
1293
+
1294
+ #: admin.php:1361
1295
+ msgid "File backup intervals"
1296
+ msgstr "Okresy tworzenia kopii zapasowych plików"
1297
+
1298
+ #: admin.php:1364
1299
+ msgid "Manual"
1300
+ msgstr "Ręczny"
1301
+
1302
+ #: admin.php:1364
1303
+ msgid "Every 4 hours"
1304
+ msgstr "Co 4 godziny"
1305
+
1306
+ #: admin.php:1364
1307
+ msgid "Every 8 hours"
1308
+ msgstr "Co 8 godzn"
1309
+
1310
+ #: admin.php:1364
1311
+ msgid "Every 12 hours"
1312
+ msgstr "Co 12 godzin"
1313
+
1314
+ #: admin.php:1067
1315
+ msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity after about 10 seconds. WordPress should start the backup running in the background."
1316
+ msgstr "Aby kontynuować, naciśnij 'Backup Now' (twórz kopię teraz). Następnie obejrzyj 'ostatnią wiadomość dziennika' aktywności po około 10 sekundach. WordPress powinien rozpocząć tworzenie kopii zapasowej w tle. "
1317
+
1318
+ #: admin.php:1069
1319
+ msgid "Does nothing happen when you schedule backups?"
1320
+ msgstr "Co zrobić, gdy zaplanowane tworzenie kopii zapasowej się nie wydarzy?"
1321
+
1322
+ #: admin.php:1069
1323
+ msgid "Go here for help."
1324
+ msgstr "Przyjdź tutaj, jeśli potrzebujesz pomocy."
1325
+
1326
+ #: admin.php:1075
1327
+ msgid "Multisite"
1328
+ msgstr "Wiele stron"
1329
+
1330
+ #: admin.php:1079
1331
+ msgid "Do you need WordPress Multisite support?"
1332
+ msgstr "Czy potrzebujesz wsparcia Wordpress Multisite (wiele stron)?"
1333
+
1334
+ #: admin.php:1079
1335
+ msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on."
1336
+ msgstr "Proszę sprawdzić UpdraftPlus Premium lub samodzielnie dodatki dla wielu stron (Multisite)."
1337
+
1338
+ #: admin.php:1084
1339
+ msgid "Configure Backup Contents And Schedule"
1340
+ msgstr "Skonfiguruj harmonogram tworzenia kopii zapasowych i zawartości"
1341
+
1342
+ #: admin.php:1090
1343
+ msgid "Debug Information And Expert Options"
1344
+ msgstr "Debuguj informacje i opcje ekspert."
1345
+
1346
+ #: admin.php:1093
1347
+ msgid "Web server:"
1348
+ msgstr "Serwer sieci:"
1349
+
1350
+ #: admin.php:1096
1351
+ msgid "Peak memory usage"
1352
+ msgstr "Maksymalne wykorzystanie pamięci"
1353
+
1354
+ #: admin.php:1097
1355
+ msgid "Current memory usage"
1356
+ msgstr "Aktualne zużycie pamięci"
1357
+
1358
+ #: admin.php:1098
1359
+ msgid "PHP memory limit"
1360
+ msgstr "Limit pamięci PHP"
1361
+
1362
+ #: admin.php:1099
1363
+ msgid "%s version:"
1364
+ msgstr "%s wersja:"
1365
+
1366
+ #: admin.php:1102 admin.php:1104 admin.php:1109
1367
+ msgid "Yes"
1368
+ msgstr "Tak"
1369
+
1370
+ #: admin.php:1104 admin.php:1109
1371
+ msgid "No"
1372
+ msgstr "Nie"
1373
+
1374
+ #: admin.php:1107
1375
+ msgid "PHP has support for ZipArchive::addFile:"
1376
+ msgstr "PHP posiada wsparcie dla ZipArchive (archiwum ZIP)::dodajPlik: "
1377
+
1378
+ #: admin.php:1109
1379
+ msgid "/usr/bin/zip can be executed:"
1380
+ msgstr "/usr/bin/zip może być wykonane: "
1381
+
1382
+ #: admin.php:1111
1383
+ msgid "Total (uncompressed) on-disk data:"
1384
+ msgstr "Wszystkie (nieskompresowane) dane na dysku: "
1385
+
1386
+ #: admin.php:1112
1387
+ msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options."
1388
+ msgstr "Nota bene ilość ta była oparta, lub nie, o ostatnie zapisane opcje. "
1389
+
1390
+ #: admin.php:1119
1391
+ msgid "count"
1392
+ msgstr "obliczanie"
1393
+
1394
+ #: admin.php:1125
1395
+ 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."
1396
+ msgstr "Przyciski poniżej wykonują natychmiast kopię zapasową, niezależnie od harmonogramu WordPressa. Jeśli te prace podczas zaplanowanych kopii zapasowych i \"Backup Now \" nie przynoszą rezultatu (tj. nie wytwarzają nawet pliku dziennika), to oznacza to, że harmonogram jest uszkodzony. Następnie należy wyłączyć wszystkie inne wtyczki i spróbować nacisnąć \"Backup Now \". Jeśli to się nie powiedzie, skontaktuj się z firmą hostingową i zapytaj, czy mają wyłączony wp-cron. Jeśli to się uda, a następnie ponownie aktywujesz inne wtyczki jeden po drugim, i znajdziesz ten, który jest problemem, zgłoś błąd do nich."
1397
+
1398
+ #: admin.php:1133
1399
+ msgid "Debug Full Backup"
1400
+ msgstr "Debuguj pełną kopię zapasową"
1401
+
1402
+ #: admin.php:1133
1403
+ msgid "This will cause an immediate backup. The page will stall loading until it finishes (ie, unscheduled)."
1404
+ msgstr "Spowoduje to natychmiastową kopię. Strona zacznie się ładować aż do zakończenia (tj. nieplanowane)."
1405
+
1406
+ #: admin.php:874
1407
+ msgid "UpdraftPlus - Upload backup files"
1408
+ msgstr "UpdraftPlus - przesyłanie plików kopii zapasowej"
1409
+
1410
+ #: admin.php:875
1411
+ msgid "Upload files into UpdraftPlus. Use this to import backups made on a different WordPress installation."
1412
+ msgstr "Prześlij pliki do UpdraftPlus. Służy to do importowania kopii zapasowych wykonanych na innej instalacji WordPressa."
1413
+
1414
+ #: admin.php:879
1415
+ msgid "Drop backup zips here"
1416
+ msgstr "Wrzuć kopię zapasową tutaj"
1417
+
1418
+ #: admin.php:880 admin.php:1471
1419
+ msgid "or"
1420
+ msgstr "lub"
1421
+
1422
+ #: admin.php:893 admin.php:1194
1423
+ msgid "calculating..."
1424
+ msgstr "obliczanie..."
1425
+
1426
+ #: admin.php:951 admin.php:973
1427
+ msgid "Error:"
1428
+ msgstr "Błąd:"
1429
+
1430
+ #: admin.php:961
1431
+ msgid "You should:"
1432
+ msgstr "Powinieneś:"
1433
+
1434
+ #: admin.php:968
1435
+ msgid "Download error: the server sent us a response (JSON) which we did not understand"
1436
+ msgstr "Pobierz błąd: serwer wysłał nam odpowiedź (JSON), które nie rozumie"
1437
+
1438
+ #: admin.php:973
1439
+ msgid "Download error: the server sent us a response which we did not understand."
1440
+ msgstr "Pobierz błąd: serwer wysłał nam odpowiedź, które nie rozumie."
1441
+
1442
+ #: admin.php:988
1443
+ msgid "Delete backup set"
1444
+ msgstr "Usuń zestaw kopii zapasowych "
1445
+
1446
+ #: admin.php:991
1447
+ msgid "Are you sure that you wish to delete this backup set?"
1448
+ msgstr "Czy jesteś pewien, że chcesz usunąć ten zestaw kopii zapasowych? "
1449
+
1450
+ #: admin.php:997
1451
+ msgid "Delete from remote storage (if any)"
1452
+ msgstr "Usuń z magazynu zdalnego (jeśli są) "
1453
+
1454
+ #: admin.php:998
1455
+ msgid "Delete from UpdraftPlus's memory"
1456
+ msgstr "Usuń z pamięci UpdraftPlus. "
1457
+
1458
+ #: admin.php:1003
1459
+ msgid "Restore backup"
1460
+ msgstr "Przywróć kopię zapasową"
1461
+
1462
+ #: admin.php:1004
1463
+ msgid "Restore backup from"
1464
+ msgstr "Przywróć kopię zapasową z"
1465
+
1466
+ #: admin.php:1005
1467
+ 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)."
1468
+ msgstr "Przywracanie zastąpi w tej witrynie motywy, wtyczki, przesłane pliki, bazę danych i/lub inne katalogi zawartości (zgodnie z tym co jest zawarte w zestawie kopii zapasowych, i Twojej selekcji)."
1469
+
1470
+ #: admin.php:1005
1471
+ msgid "Choose the components to restore"
1472
+ msgstr "Wybierz składniki do przywrócenia"
1473
+
1474
+ #: admin.php:1014
1475
+ msgid "Your web server has PHP's so-called safe_mode active."
1476
+ msgstr "Twój serwer PHP musi mieć aktywny tryb_bezpieczny."
1477
+
1478
+ #: admin.php:1014
1479
+ 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>."
1480
+ msgstr "To powoduje, że prawdopodobnie skończył się czas. Zaleca się wyłączyć tryb_bezpieczny lub przywrócić tylko jeden podmiot, <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/\">lub przywrócić manualnie</a>."
1481
+
1482
+ #: admin.php:1027
1483
+ msgid "The following entity cannot be restored automatically: \"%s\"."
1484
+ msgstr "Poniższa jednostka nie może zostać przywrócona automatycznie: \"%s\"."
1485
+
1486
+ #: admin.php:1027
1487
+ msgid "You will need to restore it manually."
1488
+ msgstr "Będziesz musiał przywrócić to ręcznie."
1489
+
1490
+ #: admin.php:1034
1491
+ msgid "%s restoration options:"
1492
+ msgstr "%s opcje przywracania:"
1493
+
1494
+ #: admin.php:1042
1495
+ 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"
1496
+ msgstr "Możesz wyszukać i zastąpić bazy danych (dla migracji witryny do nowej lokalizacji/URL) z migratora dodatków - tu łlink, aby uzyskać więcej informacji"
1497
+
1498
+ #: admin.php:1063
1499
+ msgid "Do read this helpful article of useful things to know before restoring."
1500
+ msgstr "Przeczytaj artykuł o przydatnych rzeczach, jakie powinieneś wiedzieć przed przywracaniem."
1501
+
1502
+ #: admin.php:1066
1503
+ msgid "Perform a one-time backup"
1504
+ msgstr "Wykonywanie kopii zapasowej w jednym czasie"
1505
+
1506
+ #: admin.php:827
1507
+ msgid "Time now"
1508
+ msgstr "Czas teraz"
1509
+
1510
+ #: admin.php:831
1511
+ msgid "Last finished backup run"
1512
+ msgstr "Ostatnia zakończona kopia zapasowa"
1513
+
1514
+ #: admin.php:836 admin.php:1625
1515
+ msgid "Backup Now"
1516
+ msgstr "Zrób kopię teraz"
1517
+
1518
+ #: admin.php:843 admin.php:1604 admin.php:1882
1519
+ msgid "Restore"
1520
+ msgstr "Przywróć"
1521
+
1522
+ #: admin.php:850
1523
+ msgid "Last log message"
1524
+ msgstr "Ostatni plik dziennika"
1525
+
1526
+ #: admin.php:852
1527
+ msgid "(Nothing yet logged)"
1528
+ msgstr "(Jeszcze nie zalogowano)"
1529
+
1530
+ #: admin.php:853
1531
+ msgid "Download most recently modified log file"
1532
+ msgstr "Pobierz ostatnio zmodyfikowany plik dziennika"
1533
+
1534
+ #: admin.php:857
1535
+ msgid "Backups, logs & restoring"
1536
+ msgstr "Kopie zapasowe, logi & przywracanie"
1537
+
1538
+ #: admin.php:858
1539
+ msgid "Press to see available backups"
1540
+ msgstr "Naciśnij, aby zobaczyć dostępne kopie zapasowe"
1541
+
1542
+ #: admin.php:858
1543
+ msgid "%d set(s) available"
1544
+ msgstr "%d dostępne zestaw(y)"
1545
+
1546
+ #: admin.php:864
1547
+ msgid "Downloading and restoring"
1548
+ msgstr "Pobieranie i przywracanie "
1549
+
1550
+ #: admin.php:866
1551
+ msgid "Downloading"
1552
+ msgstr "Pobieranie"
1553
+
1554
+ #: admin.php:866
1555
+ 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."
1556
+ msgstr "Naciśnięcie przycisku dla Baza danych/Wtyczki/Motywy/Przesłane/Inne spowoduje, że UpdraftPlus będzie starał się doprowadzić plik kopii zapasowej z powrotem z magazynu zdalnego (jeśli w ogóle - np. Amazon S3, Dropbox, Google Drive, FTP) na serwer. Potem będziesz mógł ściągnąć go na swój komputer. Jeśli sprowadzanie z magazynu zdalnego zatrzymało się (odczekaj 30 sekund, aby się upewnić), a następnie naciśnij przycisk, aby wznowić. Pamiętaj, że możesz również odwiedzić bezpośrednio dostawcę pamięci w chmurze."
1557
+
1558
+ #: admin.php:867
1559
+ msgid "Restoring"
1560
+ msgstr "Przywracanie"
1561
+
1562
+ #: admin.php:867
1563
+ 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."
1564
+ msgstr "Naciśnij przycisk dla kopii zapasowej, którą chcesz przywrócić. Jeśli witryna jest duża i używasz magazynu zdalnego, to należy najpierw kliknąć na każdy podmiot w celu pobrania go z powrotem na serwer. Zapobiegnie to limitowi czasu od występującego podczas procesu odnawiania."
1565
+
1566
+ #: admin.php:867
1567
+ msgid "More tasks:"
1568
+ msgstr "Więcej zadań:"
1569
+
1570
+ #: admin.php:867
1571
+ msgid "upload backup files"
1572
+ msgstr "Prześlij pliki kopii zapasowej"
1573
+
1574
+ #: admin.php:867
1575
+ 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."
1576
+ msgstr "Naciśnij tutaj, aby zajrzeć do swojego katalogu UpdraftPlus (w internetowej przestrzeni hostingowej) dla każdej nowej kopii zapasowej, która została przesłana. Lokalizacja tego katalogu znajduje się w ustawieniach dla ekspertów - poniżej."
1577
+
1578
+ #: admin.php:867
1579
+ msgid "rescan folder for new backup sets"
1580
+ msgstr "Przeskanuj folder dla nowych zestawów kopii zapasowych"
1581
+
1582
+ #: admin.php:868
1583
+ msgid "Opera web browser"
1584
+ msgstr "Przeglądarka Opera"
1585
+
1586
+ #: admin.php:868
1587
+ msgid "If you are using this, then turn Turbo/Road mode off."
1588
+ msgstr "Jeśli tego używaszu, przełącz tryb Turbo/Road w tryb off."
1589
+
1590
+ #: admin.php:870
1591
+ msgid "Google Drive"
1592
+ msgstr "Google Drive"
1593
+
1594
+ #: admin.php:870
1595
+ msgid "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)."
1596
+ msgstr "Google niedawno zmieniło swoje uprawnienia konfiguracji (kwiecień 2013 r.). Aby pobrać lub przywrócić z dysku Google, <strong> musisz </ strong> najpierw uwierzytelnić (za pomocą łącza w sekcji konfiguracji Drive Google)."
1597
+
1598
+ #: admin.php:872
1599
+ msgid "This is a count of the contents of your Updraft directory"
1600
+ msgstr "To jest zawartość katalogu Updraft"
1601
+
1602
+ #: admin.php:872
1603
+ msgid "Web-server disk space in use by UpdraftPlus"
1604
+ msgstr "Web-server miejsce na dysku używane przez UpdraftPlus"
1605
+
1606
+ #: admin.php:872
1607
+ msgid "refresh"
1608
+ msgstr "odśwież"
1609
+
1610
+ #: admin.php:740
1611
+ msgid "By UpdraftPlus.Com"
1612
+ msgstr "przez UpdraftPlus.Com"
1613
+
1614
+ #: admin.php:740
1615
+ msgid "Lead developer's homepage"
1616
+ msgstr "Załaduj stronę developera"
1617
+
1618
+ #: admin.php:740
1619
+ msgid "Donate"
1620
+ msgstr "Dotacja"
1621
+
1622
+ #: admin.php:740
1623
+ msgid "Other WordPress plugins"
1624
+ msgstr "Inne wtyczki Wordpressa"
1625
+
1626
+ #: admin.php:740
1627
+ msgid "Version"
1628
+ msgstr "Wersja"
1629
+
1630
+ #: admin.php:744
1631
+ msgid "Your backup has been restored."
1632
+ msgstr "Twoja kopia zapasowa została przywrócona."
1633
+
1634
+ #: admin.php:744
1635
+ 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."
1636
+ msgstr "Twoje stare (motywy, przesłane pliki, wtyczki, cokolwiek) katalogi zostały zachowane z \"-stare\" starą nazwą. Usuń je, jeśli jesteś zadowolony z przywracania plików."
1637
+
1638
+ #: admin.php:750
1639
+ msgid "Old directories successfully deleted."
1640
+ msgstr "Stare katalogi zostały pomyślnie usunięte."
1641
+
1642
+ #: admin.php:753
1643
+ 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)."
1644
+ msgstr "Limit pamięci PHP (ustawiony przez firmę hostingową) jest bardzo niski. UpdraftPlus próbował ją podnieść, ale nie powiodło się. Wtyczka może walczyć z limitem pamięci mniejszej niż 64 Mb - zwłaszcza jeśli masz bardzo duże prezsłane pliki (choć z drugiej strony, wiele stron będzie bhe sukces z limitem 32 MB - Twoje doświadczenia mogą ulec zmianie)."
1645
+
1646
+ #: admin.php:753
1647
+ msgid "Current limit is:"
1648
+ msgstr "Obecny limit wynosi:"
1649
+
1650
+ #: admin.php:757
1651
+ 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:"
1652
+ msgstr "Maksymalny_czas_realzacji PHP wynosi mniej niż 60 sekund. To prawdopodobnie znaczy, że działa w trybie_bezpiecznym. Aby wyłączyć tryb_bezpieczny lub zmodyfikować php.ini- ustaw maksymalny_czas_realizacji do wyższej liczby. Jeśli tego nie zrobisz, potem będzie potrzebne do wykonania kopii zapasowej (ale to wszystko). Obecny limit wynosi:"
1653
+
1654
+ #: admin.php:757
1655
+ msgid "seconds"
1656
+ msgstr "sekunda"
1657
+
1658
+ #: admin.php:762
1659
+ 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)."
1660
+ msgstr "Masz stare katalogi z poprzedniej kopii zapasowej (informacja techniczna: te znajdują się w wp-content, przyrostek z -old). Użyj tego przycisku, aby je usunąć (po sprawdzeniu, że przywrócenie pracowało)."
1661
+
1662
+ #: admin.php:766
1663
+ msgid "Delete Old Directories"
1664
+ msgstr "Usuń stare katalogi"
1665
+
1666
+ #: admin.php:766
1667
+ msgid "Are you sure you want to delete the old directories? This cannot be undone."
1668
+ msgstr "Jesteś pewny, że chcesz usunąć stare katalogi? Ta czynność jest nieodwracalna."
1669
+
1670
+ #: admin.php:780
1671
+ msgid "Existing Schedule And Backups"
1672
+ msgstr "Istniejący harmonogram i kopie zapasowe"
1673
+
1674
+ #: admin.php:784
1675
+ msgid "JavaScript warning"
1676
+ msgstr "Ostrzeżenie JavaScript"
1677
+
1678
+ #: admin.php:785
1679
+ msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser."
1680
+ msgstr "Ten interfejs administratora wykorzystuje JavaScript. Musisz włączyć go w swojej przeglądarce, lub użyj przeglądarki obsługującej JavaScript."
1681
+
1682
+ #: admin.php:798 admin.php:811
1683
+ msgid "Nothing currently scheduled"
1684
+ msgstr "Nic nie zostało zaplanowane"
1685
+
1686
+ #: admin.php:803
1687
+ msgid "At the same time as the files backup"
1688
+ msgstr "W tym samym czasie, co kopii zapasowych plików"
1689
+
1690
+ #: admin.php:823
1691
+ msgid "All the times shown in this section are using WordPress's configured time zone, which you can set in Settings -> General"
1692
+ msgstr "Wszystkie czasy podane w tej sekcji używają skonfigurowanej strefy czasowej WordPressa, które można ustawić w Ustawienia -> Ogólne"
1693
+
1694
+ #: admin.php:823
1695
+ msgid "Next scheduled backups"
1696
+ msgstr "Następne zaplanowane tworzenie kopii zapasowej"
1697
+
1698
+ #: admin.php:825
1699
+ msgid "Files"
1700
+ msgstr "Pliki"
1701
+
1702
+ #: admin.php:826 admin.php:1031 admin.php:1034 admin.php:1837 admin.php:1844
1703
+ #: admin.php:2057
1704
+ msgid "Database"
1705
+ msgstr "Baza danych"
1706
+
1707
+ #: admin.php:190
1708
+ msgid "Your website is hosted using the %s web server."
1709
+ msgstr "Twoja strona jest hostingowana przez %s serwer www."
1710
+
1711
+ #: admin.php:190
1712
+ msgid "Please consult this FAQ if you have problems backing up."
1713
+ msgstr "Proszę zapoznać się z FAQ, jeśli masz problemy z przywracaniem."
1714
+
1715
+ #: admin.php:194 admin.php:198
1716
+ msgid "Click here to authenticate your %s account (you will not be able to back up to %s without it)."
1717
+ msgstr "Kliknij tutaj, aby uwierzytelnić konto %s (nie będzie można tego zrobić %s bez tego)."
1718
+
1719
+ #: admin.php:349
1720
+ 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"
1721
+ msgstr "Nie można znaleźć archiwum kopii zapasowej w celu przywrócenia tego pliku. Zdalna metoda przechowywania w użyciu (% s) nie pozwala na pobieranie plików. Aby dokonać renowacji, trzeba uzyskać kopię tego pliku i umieścić go wewnątrz folderu roboczego UpdraftPlus."
1722
+
1723
+ #: admin.php:364
1724
+ msgid "Nothing yet logged"
1725
+ msgstr "Jeszcze nie zalogowany"
1726
+
1727
+ #: admin.php:366
1728
+ msgid "Schedule backup"
1729
+ msgstr "Harmonogram kopii zapasowej."
1730
+
1731
+ #: admin.php:369
1732
+ msgid "Failed."
1733
+ msgstr "Nie powiodło się."
1734
+
1735
+ #: admin.php:372
1736
+ msgid "OK. You should soon see activity in the \"Last log message\" field below."
1737
+ msgstr "OK. Powinieneś zobaczyć wkrótce w 'ostatniej wiadomości dziennika' poniżej. "
1738
+
1739
+ #: admin.php:372
1740
+ msgid "Nothing happening? Follow this link for help."
1741
+ msgstr "Nic się nie dzieje? Kliknij ten link, aby uzyskać pomoc."
1742
+
1743
+ #: admin.php:389
1744
+ msgid "Job deleted"
1745
+ msgstr "Zadanie usunięte. "
1746
+
1747
+ #: admin.php:395
1748
+ msgid "Could not find that job - perhaps it has already finished?"
1749
+ msgstr "Nie można znaleźć zadania - być może jest już gotowe? "
1750
+
1751
+ #: admin.php:407 includes/updraft-restorer.php:477
1752
+ #: includes/updraft-restorer.php:511
1753
+ msgid "Error"
1754
+ msgstr "Błąd"
1755
+
1756
+ #: admin.php:422
1757
+ msgid "Download failed"
1758
+ msgstr "Pobieranie nie powiodło się"
1759
+
1760
+ #: admin.php:436 admin.php:961
1761
+ msgid "File ready."
1762
+ msgstr "Plik gotowy."
1763
+
1764
+ #: admin.php:444
1765
+ msgid "Download in progress"
1766
+ msgstr "Pobieranie w toku"
1767
+
1768
+ #: admin.php:447
1769
+ msgid "No local copy present."
1770
+ msgstr "Brak kopii obecnego pliku."
1771
+
1772
+ #: admin.php:555
1773
+ msgid "Bad filename format - this does not look like a file created by UpdraftPlus"
1774
+ msgstr "Zły format pliku - to nie wygląda jak plik utworzony przez UpdraftPlus"
1775
+
1776
+ #: admin.php:634
1777
+ msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus"
1778
+ msgstr "Zły format pliku - to nie wygląda jak zaszyfrowany plik bazy danych stworzonej przez UpdraftPlus"
1779
+
1780
+ #: admin.php:663
1781
+ msgid "Restore successful!"
1782
+ msgstr "Przywracanie zakończone powodzeniem!"
1783
+
1784
+ #: admin.php:664 admin.php:699 admin.php:718
1785
+ msgid "Actions"
1786
+ msgstr "Akcje"
1787
+
1788
+ #: admin.php:664 admin.php:679 admin.php:699 admin.php:718
1789
+ msgid "Return to UpdraftPlus Configuration"
1790
+ msgstr "Powróć do konfiguracji UpdraftPlus"
1791
+
1792
+ #: admin.php:688
1793
+ msgid "Remove old directories"
1794
+ msgstr "Usuń stare katalogi"
1795
+
1796
+ #: admin.php:694
1797
+ msgid "Old directories successfully removed."
1798
+ msgstr "Stare katalogi pomyślnie usunięte."
1799
+
1800
+ #: admin.php:697
1801
+ msgid "Old directory removal failed for some reason. You may want to do this manually."
1802
+ msgstr "Stare katalogi nie zostały usunięte z jakiegoś powodu. Można to zrobić ręcznie."
1803
+
1804
+ #: admin.php:709
1805
+ msgid "Backup directory could not be created"
1806
+ msgstr "Kopia zapasowa katalogów nie została utworzone"
1807
+
1808
+ #: admin.php:716
1809
+ msgid "Backup directory successfully created."
1810
+ msgstr "Kopia zapasowa katalogów pomyślnie utworzona."
1811
+
1812
+ #: admin.php:733
1813
+ msgid "Your settings have been wiped."
1814
+ msgstr "Twoje ustawienia zostały wymazane."
1815
+
1816
+ #: updraftplus.php:1903 updraftplus.php:1909
1817
+ msgid "Please help UpdraftPlus by giving a positive review at wordpress.org"
1818
+ msgstr "Proszę pomóż UpdraftPlus dając pozytywną opinię na wordpress.org"
1819
+
1820
+ #: updraftplus.php:1916
1821
+ msgid "Need even more features and support? Check out UpdraftPlus Premium"
1822
+ msgstr "Potrzebujesz jeszcze więcej funkcji i wsparcia? Sprawdź UpdraftPlus Premium"
1823
+
1824
+ #: updraftplus.php:1925
1825
+ msgid "Check out UpdraftPlus.Com for help, add-ons and support"
1826
+ msgstr "Sprawdź UpdraftPlus.Com dla pomocy, dodatków oraz wsparcia"
1827
+
1828
+ #: updraftplus.php:1928
1829
+ msgid "Want to say thank-you for UpdraftPlus?"
1830
+ msgstr "Chcesz podziękować za UpdraftPlus?"
1831
+
1832
+ #: updraftplus.php:1928
1833
+ msgid "Please buy our very cheap 'no adverts' add-on."
1834
+ msgstr "Proszę kupić nasz bardzo tani bez reklam."
1835
+
1836
+ #: backup.php:33
1837
+ msgid "Infinite recursion: consult your log for more information"
1838
+ msgstr "Nieskończonej rekursja: przejrzyj dzienniek, aby uzyskać więcej informacji"
1839
+
1840
+ #: backup.php:492
1841
+ msgid "Could not create %s zip. Consult the log file for more information."
1842
+ msgstr "Nie można utworzyć %s ZIP. Przejrzyj plik dziennika, aby uzyskać więcej informacji."
1843
+
1844
+ #: admin.php:88 admin.php:105
1845
+ msgid "Allowed Files"
1846
+ msgstr "Dozwolone pliki"
1847
+
1848
+ #: admin.php:166
1849
+ msgid "Settings"
1850
+ msgstr "Ustawienia"
1851
+
1852
+ #: admin.php:170
1853
+ msgid "Add-Ons / Pro Support"
1854
+ msgstr "Dodatki / profesjonalne wsparcie"
1855
+
1856
+ #: admin.php:182 admin.php:186 admin.php:190 admin.php:1750 admin.php:1756
1857
+ #: admin.php:1758
1858
+ msgid "Warning"
1859
+ msgstr "Ostrzeżenie"
1860
+
1861
+ #: admin.php:182
1862
+ 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."
1863
+ msgstr "Masz mniej niż %s wolnego miejsca na dysku twardym, który UpdraftPlus potrezbuje do tworzenia kopii zapasowych. UpdraftPlus może zabraknąć miejsca. Skontaktuj się z operatorem serwera (np. firmą hostingową), aby rozwiązać ten problem."
1864
+
1865
+ #: admin.php:186
1866
+ 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."
1867
+ msgstr "UpdraftPlus oficjalnie nie obsługuje wersji WordPressa przed %s. Może on pracować u Ciebie, ale jeśli nie, to proszę pamiętać, że nie będzie dostępne do czasu uaktualnienia WordPressa."
1868
+
1869
+ #: updraftplus.php:853
1870
+ msgid "The backup has not finished; a resumption is scheduled within 5 minutes"
1871
+ msgstr "Przywracanie nie zostało zakończone. Planowane wznowienie w ciągu 5 minut."
1872
+
1873
+ #: updraftplus.php:904
1874
+ msgid "Backed up"
1875
+ msgstr "Wspierane"
1876
+
1877
+ #: updraftplus.php:904
1878
+ msgid "WordPress backup is complete"
1879
+ msgstr "Przywracanie WordPressa zakończone."
1880
+
1881
+ #: updraftplus.php:904
1882
+ msgid "Backup contains"
1883
+ msgstr "Kopia zapasowa zawiera"
1884
+
1885
+ #: updraftplus.php:904
1886
+ msgid "Latest status"
1887
+ msgstr "Ostatni status"
1888
+
1889
+ #: updraftplus.php:1152
1890
+ msgid "Backup directory (%s) is not writable, or does not exist."
1891
+ msgstr "Katalog backup (% s) nie jest zapisywalny, lub nie istnieje."
1892
+
1893
+ #: updraftplus.php:1300
1894
+ msgid "Could not read the directory"
1895
+ msgstr "Nie można odczytać katalogu"
1896
+
1897
+ #: updraftplus.php:1317
1898
+ msgid "Could not save backup history because we have no backup array. Backup probably failed."
1899
+ msgstr "Nie można zapisać kopii zapasowej historii, bo nie mamy kopii zapasowej szeregu. Archiwizacja prawdopodobnie nie powiodła się."
1900
+
1901
+ #: updraftplus.php:1346
1902
+ msgid "Could not open the backup file for writing"
1903
+ msgstr "Nie można otworzyć pliku kopii zapasowej"
1904
+
1905
+ #: updraftplus.php:1362
1906
+ msgid "Generated: %s"
1907
+ msgstr "Wygenerowane: %s"
1908
+
1909
+ #: updraftplus.php:1363
1910
+ msgid "Hostname: %s"
1911
+ msgstr "Nazwa hosta: %s"
1912
+
1913
+ #: updraftplus.php:1364
1914
+ msgid "Database: %s"
1915
+ msgstr "Baza danych: %s"
1916
+
1917
+ #: updraftplus.php:1424
1918
+ msgid "The backup directory is not writable."
1919
+ msgstr "Katalog kopii zapasowej nie jest zapisywalny."
1920
+
1921
+ #: updraftplus.php:1445
1922
+ msgid "Table: %s"
1923
+ msgstr "Tabela: %s"
1924
+
1925
+ #: updraftplus.php:1450
1926
+ msgid "Skipping non-WP table: %s"
1927
+ msgstr "Pomijanietabeli nie-WP:% s"
1928
+
1929
+ #: updraftplus.php:1545
1930
+ msgid "Delete any existing table %s"
1931
+ msgstr "Usuń wszystkie istniejące tabeli %s"
1932
+
1933
+ #: updraftplus.php:1554
1934
+ msgid "Table structure of table %s"
1935
+ msgstr "Struktura tabeli z tabeli %s"
1936
+
1937
+ #: updraftplus.php:1560
1938
+ msgid "Error with SHOW CREATE TABLE for %s."
1939
+ msgstr "Błąd z POKAZANIEM UTWORZONEJ TABELI dla %s."
1940
+
1941
+ #: updraftplus.php:1651
1942
+ msgid "End of data contents of table %s"
1943
+ msgstr "Koniec treści danych z tabeli %s"
1944
+
1945
+ #: updraftplus.php:1823 includes/updraft-restorer.php:63
1946
+ msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered."
1947
+ msgstr "Rozszyfrowanie nie powiodło się. Plik bazy danych jest szyfrowany, ale nie masz wprowadzonego klucza szyfrowania."
1948
+
1949
+ #: updraftplus.php:1836 includes/updraft-restorer.php:78
1950
+ msgid "Decryption failed. The most likely cause is that you used the wrong key."
1951
+ msgstr "Rozszyfrowanie nie powiodło się. Najbardziej prawdopodobną przyczyną jest to, że użyłeś niewłaściwego klucza."
1952
+
1953
+ #: updraftplus.php:1836
1954
+ msgid "The decryption key used:"
1955
+ msgstr "Wykorzystany klucz deszyfrowania:"
1956
+
1957
+ #: updraftplus.php:1851
1958
+ msgid "File not found"
1959
+ msgstr "Nie znaleziono pliku"
1960
+
1961
+ #: updraftplus.php:1901
1962
+ msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?"
1963
+ msgstr "Potrafisz tłumaczyć i chcesz ulepszyć UpdraftPlus?"
1964
+
1965
+ #: updraftplus.php:1903 updraftplus.php:1909
1966
+ msgid "Like UpdraftPlus and can spare one minute?"
1967
+ msgstr "Jak UpdraftPlus może oszczędzić jedną minutę?"
1968
+
1969
+ #: updraftplus.php:441
1970
+ msgid "Themes"
1971
+ msgstr "Motywy"
1972
+
1973
+ #: updraftplus.php:442
1974
+ msgid "Uploads"
1975
+ msgstr "Przesłane"
1976
+
1977
+ #: updraftplus.php:457
1978
+ msgid "Others"
1979
+ msgstr "Inne"
1980
+
1981
+ #: updraftplus.php:743
1982
+ msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings."
1983
+ msgstr "Nie można stworzyć plików w katalogu kopii zapasowych. Kopia zapasowa przerwana - sprawdź ustawienia UpdraftPlus."
1984
+
1985
+ #: updraftplus.php:813
1986
+ msgid "Encryption error occurred when encrypting database. Encryption aborted."
1987
+ msgstr "Wystąpił błąd podczas szyfrowania danych. Szyfrowanie przerwane."
1988
+
1989
+ #: updraftplus.php:847
1990
+ msgid "The backup apparently succeeded and is now complete"
1991
+ msgstr "Udało się wykonać i zakończyć przywracanie."
1992
+
1993
+ #: updraftplus.php:850
1994
+ msgid "The backup attempt has finished, apparently unsuccessfully"
1995
+ msgstr "Próba przywracania zakończona niepomyślnie."
1996
+
1997
+ #: options.php:26
1998
+ msgid "UpdraftPlus Backups"
1999
+ msgstr "UpdraftPlus Backups"
2000
+
2001
+ #: updraftplus.php:294 updraftplus.php:299 updraftplus.php:304 admin.php:194
2002
+ #: admin.php:198
2003
+ msgid "UpdraftPlus notice:"
2004
+ msgstr "UpdraftPlus obwieszczenie:"
2005
+
2006
+ #: updraftplus.php:294
2007
+ msgid "The log file could not be read."
2008
+ msgstr "Plik dziennika nie może być odczytany."
2009
+
2010
+ #: updraftplus.php:299
2011
+ msgid "No log files were found."
2012
+ msgstr "Nie znaleziono plików dziennika."
2013
+
2014
+ #: updraftplus.php:304
2015
+ msgid "The given file could not be read."
2016
+ msgstr "Nie można odczytać podanego pliku."
2017
+
2018
+ #: updraftplus.php:440
2019
+ msgid "Plugins"
2020
+ msgstr "Wtyczki"
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-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,195 +18,193 @@ msgstr ""
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
 
@@ -214,845 +212,1013 @@ msgstr ""
214
  msgid "Infinite recursion: consult your log for more information"
215
  msgstr ""
216
 
217
- #: backup.php:300
218
  #, php-format
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
 
@@ -1065,112 +1231,145 @@ msgid "Backup file not available."
1065
  msgstr ""
1066
 
1067
  #: includes/updraft-restorer.php:7
1068
- msgid "Unpacking backup..."
1069
  msgstr ""
1070
 
1071
  #: includes/updraft-restorer.php:8
1072
- msgid "Decrypting database (can take a while)..."
1073
  msgstr ""
1074
 
1075
  #: includes/updraft-restorer.php:9
1076
- msgid "Database successfully decrypted."
1077
  msgstr ""
1078
 
1079
  #: includes/updraft-restorer.php:10
1080
- msgid "Moving old directory out of the way..."
1081
  msgstr ""
1082
 
1083
  #: includes/updraft-restorer.php:11
1084
- msgid "Moving unpacked backup in place..."
1085
  msgstr ""
1086
 
1087
  #: includes/updraft-restorer.php:12
1088
- msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..."
1089
  msgstr ""
1090
 
1091
  #: includes/updraft-restorer.php:13
1092
- msgid "Cleaning up rubbish..."
1093
  msgstr ""
1094
 
1095
  #: includes/updraft-restorer.php:14
1096
- msgid "Could not move old directory out of the way. Perhaps you already have -old directories that need deleting first?"
1097
  msgstr ""
1098
 
1099
  #: includes/updraft-restorer.php:15
1100
- msgid "Could not delete old directory."
1101
  msgstr ""
1102
 
1103
  #: includes/updraft-restorer.php:16
1104
- msgid "Could not move new directory into place. Check your wp-content/upgrade folder."
1105
  msgstr ""
1106
 
1107
  #: includes/updraft-restorer.php:17
 
 
 
 
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 ""
1173
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1174
  #: methods/webdav.php:13
1175
  #: methods/webdav.php:34
1176
  #: methods/webdav.php:50
@@ -1206,7 +1405,7 @@ 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
 
@@ -1215,15 +1414,6 @@ msgstr ""
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 ""
@@ -1243,10 +1433,6 @@ msgstr ""
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)"
@@ -1275,7 +1461,7 @@ 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 ""
@@ -1332,133 +1518,133 @@ msgstr ""
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
 
@@ -1482,96 +1668,116 @@ msgstr ""
1482
  msgid "The email address entered above will be used. If choosing \"E-Mail\", then <strong>be aware</strong> that mail servers tend to have size limits; typically around 10-20Mb; backups larger than any limits will not arrive. If you really need a large backup via email, then you could fund a new feature (to break the backup set into configurable-size pieces) - but the demand has not yet existed for such a feature."
1483
  msgstr ""
1484
 
1485
- #: methods/s3.php:126
1486
- msgid "S3 upload: getting uploadID for multipart upload failed - see log file for more details"
 
 
 
 
 
 
 
 
 
 
 
1487
  msgstr ""
1488
 
1489
- #: methods/s3.php:158
1490
  #, php-format
1491
- msgid "S3 chunk %s: upload failed"
1492
  msgstr ""
1493
 
1494
- #: methods/s3.php:172
1495
  #, php-format
1496
- msgid "S3 upload (%s): re-assembly failed (see log for more details)"
1497
  msgstr ""
1498
 
1499
- #: methods/s3.php:176
1500
  #, php-format
1501
- msgid "S3 re-assembly error (%s): (see log file for more)"
1502
  msgstr ""
1503
 
1504
- #: methods/s3.php:188
1505
  #, php-format
1506
- msgid "S3 Error: Failed to create bucket %s. Check your permissions and credentials."
1507
  msgstr ""
1508
 
1509
- #: methods/s3.php:243
1510
  #, php-format
1511
- msgid "S3 Error: Failed to download %s. Check your permissions and credentials."
1512
  msgstr ""
1513
 
1514
- #: methods/s3.php:247
1515
  #, php-format
1516
- msgid "S3 Error: Failed to access bucket %s. Check your permissions and credentials."
1517
  msgstr ""
1518
 
1519
- #: methods/s3.php:284
1520
- msgid "Get your access key and secret key <a href=\"http://aws.amazon.com/console/\">from your AWS console</a>, then pick a (globally unique - all Amazon S3 users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist."
 
1521
  msgstr ""
1522
 
1523
- #: methods/s3.php:284
1524
  msgid "If you see errors about SSL certificates, then please go here for help."
1525
  msgstr ""
1526
 
1527
- #: methods/s3.php:287
1528
- msgid "S3 access key"
 
 
 
 
 
 
1529
  msgstr ""
1530
 
1531
- #: methods/s3.php:291
1532
- msgid "S3 secret key"
 
1533
  msgstr ""
1534
 
1535
- #: methods/s3.php:295
1536
- msgid "S3 location"
1537
  msgstr ""
1538
 
1539
- #: methods/s3.php:319
1540
  msgid "API secret"
1541
  msgstr ""
1542
 
1543
- #: methods/s3.php:339
1544
  msgid "Failure: No bucket details were given."
1545
  msgstr ""
1546
 
1547
- #: methods/s3.php:348
1548
- msgid "Amazon region"
1549
  msgstr ""
1550
 
1551
- #: methods/s3.php:358
1552
- msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another S3 user may already have taken your name)."
 
1553
  msgstr ""
1554
 
1555
- #: methods/s3.php:368
1556
- #: methods/s3.php:379
1557
  msgid "Failure"
1558
  msgstr ""
1559
 
1560
- #: methods/s3.php:368
1561
- #: methods/s3.php:379
1562
  msgid "We successfully accessed the bucket, but the attempt to create a file in it failed."
1563
  msgstr ""
1564
 
1565
- #: methods/s3.php:370
1566
  msgid "We accessed the bucket, and were able to create files within it."
1567
  msgstr ""
1568
 
1569
- #: methods/s3.php:372
1570
  #, php-format
1571
  msgid "The communication with %s was encrypted."
1572
  msgstr ""
1573
 
1574
- #: methods/s3.php:374
1575
  #, php-format
1576
  msgid "The communication with %s was not encrypted."
1577
  msgstr ""
@@ -1582,7 +1788,7 @@ 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
 
@@ -1591,108 +1797,108 @@ msgstr ""
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
1639
- #: methods/ftp.php:80
1640
  msgid "FTP login failure"
1641
  msgstr ""
1642
 
1643
- #: methods/ftp.php:49
1644
  msgid "FTP upload failed"
1645
  msgstr ""
1646
 
1647
- #: methods/ftp.php:115
1648
  msgid "Settings test result"
1649
  msgstr ""
1650
 
1651
- #: methods/ftp.php:131
1652
  msgid "Only non-encrypted FTP is supported by regular UpdraftPlus."
1653
  msgstr ""
1654
 
1655
- #: methods/ftp.php:131
1656
  msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available."
1657
  msgstr ""
1658
 
1659
- #: methods/ftp.php:135
1660
  msgid "FTP Server"
1661
  msgstr ""
1662
 
1663
- #: methods/ftp.php:139
1664
  msgid "FTP Login"
1665
  msgstr ""
1666
 
1667
- #: methods/ftp.php:143
1668
  msgid "FTP Password"
1669
  msgstr ""
1670
 
1671
- #: methods/ftp.php:147
1672
  msgid "Remote Path"
1673
  msgstr ""
1674
 
1675
- #: methods/ftp.php:148
1676
  msgid "Needs to already exist"
1677
  msgstr ""
1678
 
1679
- #: methods/ftp.php:166
1680
  msgid "Failure: No server details were given."
1681
  msgstr ""
1682
 
1683
- #: methods/ftp.php:181
1684
  msgid "Failure: we did not successfully log in with those credentials."
1685
  msgstr ""
1686
 
1687
- #: methods/ftp.php:189
1688
  msgid "Failure: an unexpected internal UpdraftPlus error occurred when testing the credentials - please contact the developer"
1689
  msgstr ""
1690
 
1691
- #: methods/ftp.php:193
1692
  msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:"
1693
  msgstr ""
1694
 
1695
- #: methods/ftp.php:196
1696
  msgid "Failure: we successfully logged in, but were not able to create a file in the given directory."
1697
  msgstr ""
1698
 
@@ -1741,62 +1947,62 @@ msgstr ""
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
 
@@ -1808,6 +2014,10 @@ msgstr ""
1808
  msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time, by which time when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there."
1809
  msgstr ""
1810
 
 
 
 
 
1811
  #: addons/sftp.php:30
1812
  #: addons/sftp.php:31
1813
  #: addons/sftp.php:32
@@ -1891,115 +2101,124 @@ msgstr ""
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 ""
2
  msgstr ""
3
  "Project-Id-Version: UpdraftPlus\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2013-05-25 14:03+0100\n"
6
+ "PO-Revision-Date: 2013-05-25 14:03+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:296
22
+ #: updraftplus.php:301
23
+ #: updraftplus.php:306
24
+ #: admin.php:217
25
+ #: admin.php:221
26
  msgid "UpdraftPlus notice:"
27
  msgstr ""
28
 
29
+ #: updraftplus.php:296
30
  msgid "The log file could not be read."
31
  msgstr ""
32
 
33
+ #: updraftplus.php:301
34
  msgid "No log files were found."
35
  msgstr ""
36
 
37
+ #: updraftplus.php:306
38
  msgid "The given file could not be read."
39
  msgstr ""
40
 
41
+ #: updraftplus.php:442
42
  msgid "Plugins"
43
  msgstr ""
44
 
45
+ #: updraftplus.php:443
46
  msgid "Themes"
47
  msgstr ""
48
 
49
+ #: updraftplus.php:444
50
  msgid "Uploads"
51
  msgstr ""
52
 
53
+ #: updraftplus.php:459
54
  msgid "Others"
55
  msgstr ""
56
 
57
+ #: updraftplus.php:745
58
  msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings."
59
  msgstr ""
60
 
61
+ #: updraftplus.php:815
62
  msgid "Encryption error occurred when encrypting database. Encryption aborted."
63
  msgstr ""
64
 
65
+ #: updraftplus.php:851
66
  msgid "The backup apparently succeeded and is now complete"
67
  msgstr ""
68
 
69
+ #: updraftplus.php:854
70
  msgid "The backup attempt has finished, apparently unsuccessfully"
71
  msgstr ""
72
 
73
+ #: updraftplus.php:857
74
  msgid "The backup has not finished; a resumption is scheduled within 5 minutes"
75
  msgstr ""
76
 
77
+ #: updraftplus.php:909
78
+ msgid "Errors encountered:"
79
+ msgstr ""
80
+
81
+ #: updraftplus.php:927
82
  msgid "Backed up"
83
  msgstr ""
84
 
85
+ #: updraftplus.php:927
86
  msgid "WordPress backup is complete"
87
  msgstr ""
88
 
89
+ #: updraftplus.php:927
90
  msgid "Backup contains"
91
  msgstr ""
92
 
93
+ #: updraftplus.php:927
94
  msgid "Latest status"
95
  msgstr ""
96
 
97
+ #: updraftplus.php:1180
98
  #, php-format
99
  msgid "Backup directory (%s) is not writable, or does not exist."
100
  msgstr ""
101
 
102
+ #: updraftplus.php:1328
103
  msgid "Could not read the directory"
104
  msgstr ""
105
 
106
+ #: updraftplus.php:1345
107
  msgid "Could not save backup history because we have no backup array. Backup probably failed."
108
  msgstr ""
109
 
110
+ #: updraftplus.php:1374
111
  msgid "Could not open the backup file for writing"
112
  msgstr ""
113
 
114
+ #: updraftplus.php:1390
115
  #, php-format
116
  msgid "Generated: %s"
117
  msgstr ""
118
 
119
+ #: updraftplus.php:1391
120
  #, php-format
121
  msgid "Hostname: %s"
122
  msgstr ""
123
 
124
+ #: updraftplus.php:1392
125
  #, php-format
126
  msgid "Database: %s"
127
  msgstr ""
128
 
129
+ #: updraftplus.php:1452
130
  msgid "The backup directory is not writable."
131
  msgstr ""
132
 
133
+ #: updraftplus.php:1473
134
  #, php-format
135
  msgid "Table: %s"
136
  msgstr ""
137
 
138
+ #: updraftplus.php:1478
139
  #, php-format
140
  msgid "Skipping non-WP table: %s"
141
  msgstr ""
142
 
143
+ #: updraftplus.php:1573
144
  #, php-format
145
  msgid "Delete any existing table %s"
146
  msgstr ""
147
 
148
+ #: updraftplus.php:1582
149
  #, php-format
150
  msgid "Table structure of table %s"
151
  msgstr ""
152
 
153
+ #: updraftplus.php:1588
154
  #, php-format
155
  msgid "Error with SHOW CREATE TABLE for %s."
156
  msgstr ""
157
 
158
+ #: updraftplus.php:1679
159
  #, php-format
160
  msgid "End of data contents of table %s"
161
  msgstr ""
162
 
163
+ #: updraftplus.php:1851
164
+ #: includes/updraft-restorer.php:63
165
  msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered."
166
  msgstr ""
167
 
168
+ #: updraftplus.php:1864
169
+ #: includes/updraft-restorer.php:78
170
  msgid "Decryption failed. The most likely cause is that you used the wrong key."
171
  msgstr ""
172
 
173
+ #: updraftplus.php:1864
174
  msgid "The decryption key used:"
175
  msgstr ""
176
 
177
+ #: updraftplus.php:1879
178
  msgid "File not found"
179
  msgstr ""
180
 
181
+ #: updraftplus.php:1929
182
  msgid "Can you translate? Want to improve UpdraftPlus for speakers of your language?"
183
  msgstr ""
184
 
185
+ #: updraftplus.php:1931
186
+ #: updraftplus.php:1937
 
 
 
 
 
 
 
187
  msgid "Like UpdraftPlus and can spare one minute?"
188
  msgstr ""
189
 
190
+ #: updraftplus.php:1931
191
+ #: updraftplus.php:1937
192
  msgid "Please help UpdraftPlus by giving a positive review at wordpress.org"
193
  msgstr ""
194
 
195
+ #: updraftplus.php:1944
196
  msgid "Need even more features and support? Check out UpdraftPlus Premium"
197
  msgstr ""
198
 
199
+ #: updraftplus.php:1953
200
  msgid "Check out UpdraftPlus.Com for help, add-ons and support"
201
  msgstr ""
202
 
203
+ #: updraftplus.php:1956
204
  msgid "Want to say thank-you for UpdraftPlus?"
205
  msgstr ""
206
 
207
+ #: updraftplus.php:1956
208
  msgid "Please buy our very cheap 'no adverts' add-on."
209
  msgstr ""
210
 
212
  msgid "Infinite recursion: consult your log for more information"
213
  msgstr ""
214
 
215
+ #: backup.php:493
216
  #, php-format
217
  msgid "Could not create %s zip. Consult the log file for more information."
218
  msgstr ""
219
 
220
+ #: admin.php:102
221
+ #: admin.php:119
222
  msgid "Allowed Files"
223
  msgstr ""
224
 
225
+ #: admin.php:180
226
  msgid "Settings"
227
  msgstr ""
228
 
229
+ #: admin.php:184
230
  msgid "Add-Ons / Pro Support"
231
  msgstr ""
232
 
233
+ #: admin.php:196
234
+ #: admin.php:200
235
+ #: admin.php:204
236
+ #: admin.php:213
237
+ #: admin.php:1788
238
+ #: admin.php:1794
239
+ #: admin.php:1796
240
  msgid "Warning"
241
  msgstr ""
242
 
243
+ #: admin.php:196
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:200
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:204
254
  #, php-format
255
  msgid "Your website is hosted using the %s web server."
256
  msgstr ""
257
 
258
+ #: admin.php:204
259
  msgid "Please consult this FAQ if you have problems backing up."
260
  msgstr ""
261
 
262
+ #: admin.php:208
263
+ msgid "Notice"
264
+ msgstr ""
265
+
266
+ #: admin.php:208
267
+ msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request."
268
+ msgstr ""
269
+
270
+ #: admin.php:213
271
+ msgid "W3 Total Cache's object cache is active. This is known to have a bug that messes with all scheduled tasks (including backup jobs)."
272
+ msgstr ""
273
+
274
+ #: admin.php:213
275
+ msgid "Go here to turn it off."
276
+ msgstr ""
277
+
278
+ #: admin.php:213
279
+ #, php-format
280
+ msgid "<a href=\"%s\">Go here</a> for more information."
281
+ msgstr ""
282
+
283
+ #: admin.php:217
284
+ #: admin.php:221
285
  #, php-format
286
  msgid "Click here to authenticate your %s account (you will not be able to back up to %s without it)."
287
  msgstr ""
288
 
289
+ #: admin.php:372
290
  #, php-format
291
  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"
292
  msgstr ""
293
 
294
+ #: admin.php:387
295
  msgid "Nothing yet logged"
296
  msgstr ""
297
 
298
+ #: admin.php:389
299
+ msgid "Schedule backup"
300
+ msgstr ""
301
+
302
+ #: admin.php:392
303
+ msgid "Failed."
304
+ msgstr ""
305
+
306
+ #: admin.php:395
307
+ msgid "OK. You should soon see activity in the \"Last log message\" field below."
308
+ msgstr ""
309
+
310
+ #: admin.php:395
311
+ msgid "Nothing happening? Follow this link for help."
312
+ msgstr ""
313
+
314
+ #: admin.php:414
315
+ msgid "Job deleted"
316
+ msgstr ""
317
+
318
+ #: admin.php:420
319
+ msgid "Could not find that job - perhaps it has already finished?"
320
+ msgstr ""
321
+
322
+ #: admin.php:432
323
+ #: includes/updraft-restorer.php:477
324
+ #: includes/updraft-restorer.php:511
325
+ msgid "Error"
326
+ msgstr ""
327
+
328
+ #: admin.php:447
329
  msgid "Download failed"
330
  msgstr ""
331
 
332
+ #: admin.php:461
333
+ #: admin.php:986
334
  msgid "File ready."
335
  msgstr ""
336
 
337
+ #: admin.php:469
338
  msgid "Download in progress"
339
  msgstr ""
340
 
341
+ #: admin.php:472
342
  msgid "No local copy present."
343
  msgstr ""
344
 
345
+ #: admin.php:580
346
  msgid "Bad filename format - this does not look like a file created by UpdraftPlus"
347
  msgstr ""
348
 
349
+ #: admin.php:659
350
  msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus"
351
  msgstr ""
352
 
353
+ #: admin.php:688
354
  msgid "Restore successful!"
355
  msgstr ""
356
 
357
+ #: admin.php:689
358
+ #: admin.php:724
359
+ #: admin.php:743
360
  msgid "Actions"
361
  msgstr ""
362
 
363
+ #: admin.php:689
364
+ #: admin.php:704
365
+ #: admin.php:724
366
+ #: admin.php:743
367
  msgid "Return to UpdraftPlus Configuration"
368
  msgstr ""
369
 
370
+ #: admin.php:713
371
  msgid "Remove old directories"
372
  msgstr ""
373
 
374
+ #: admin.php:719
375
  msgid "Old directories successfully removed."
376
  msgstr ""
377
 
378
+ #: admin.php:722
379
  msgid "Old directory removal failed for some reason. You may want to do this manually."
380
  msgstr ""
381
 
382
+ #: admin.php:734
383
  msgid "Backup directory could not be created"
384
  msgstr ""
385
 
386
+ #: admin.php:741
387
  msgid "Backup directory successfully created."
388
  msgstr ""
389
 
390
+ #: admin.php:758
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
391
  msgid "Your settings have been wiped."
392
  msgstr ""
393
 
394
+ #: admin.php:765
395
  msgid "By UpdraftPlus.Com"
396
  msgstr ""
397
 
398
+ #: admin.php:765
399
  msgid "Lead developer's homepage"
400
  msgstr ""
401
 
402
+ #: admin.php:765
403
  msgid "Donate"
404
  msgstr ""
405
 
406
+ #: admin.php:765
407
  msgid "Other WordPress plugins"
408
  msgstr ""
409
 
410
+ #: admin.php:765
411
  msgid "Version"
412
  msgstr ""
413
 
414
+ #: admin.php:769
415
  msgid "Your backup has been restored."
416
  msgstr ""
417
 
418
+ #: admin.php:769
419
  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."
420
  msgstr ""
421
 
422
+ #: admin.php:775
423
  msgid "Old directories successfully deleted."
424
  msgstr ""
425
 
426
+ #: admin.php:778
427
  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)."
428
  msgstr ""
429
 
430
+ #: admin.php:778
431
  msgid "Current limit is:"
432
  msgstr ""
433
 
434
+ #: admin.php:782
435
  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:"
436
  msgstr ""
437
 
438
+ #: admin.php:782
439
  msgid "seconds"
440
  msgstr ""
441
 
442
+ #: admin.php:787
443
  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)."
444
  msgstr ""
445
 
446
+ #: admin.php:791
447
  msgid "Delete Old Directories"
448
  msgstr ""
449
 
450
+ #: admin.php:791
451
  msgid "Are you sure you want to delete the old directories? This cannot be undone."
452
  msgstr ""
453
 
454
+ #: admin.php:805
455
  msgid "Existing Schedule And Backups"
456
  msgstr ""
457
 
458
+ #: admin.php:809
459
  msgid "JavaScript warning"
460
  msgstr ""
461
 
462
+ #: admin.php:810
463
  msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser."
464
  msgstr ""
465
 
466
+ #: admin.php:823
467
+ #: admin.php:836
468
  msgid "Nothing currently scheduled"
469
  msgstr ""
470
 
471
+ #: admin.php:828
472
  msgid "At the same time as the files backup"
473
  msgstr ""
474
 
475
+ #: admin.php:848
476
  msgid "All the times shown in this section are using WordPress's configured time zone, which you can set in Settings -> General"
477
  msgstr ""
478
 
479
+ #: admin.php:848
480
  msgid "Next scheduled backups"
481
  msgstr ""
482
 
483
+ #: admin.php:850
484
  msgid "Files"
485
  msgstr ""
486
 
487
+ #: admin.php:851
488
+ #: admin.php:1056
489
+ #: admin.php:1059
490
+ #: admin.php:1875
491
+ #: admin.php:1882
492
+ #: admin.php:2095
493
  msgid "Database"
494
  msgstr ""
495
 
496
+ #: admin.php:852
497
  msgid "Time now"
498
  msgstr ""
499
 
500
+ #: admin.php:856
501
  msgid "Last finished backup run"
502
  msgstr ""
503
 
504
+ #: admin.php:861
505
+ #: admin.php:1659
506
  msgid "Backup Now"
507
  msgstr ""
508
 
509
+ #: admin.php:868
510
+ #: admin.php:1638
511
+ #: admin.php:1920
512
  msgid "Restore"
513
  msgstr ""
514
 
515
+ #: admin.php:875
516
  msgid "Last log message"
517
  msgstr ""
518
 
519
+ #: admin.php:877
520
  msgid "(Nothing yet logged)"
521
  msgstr ""
522
 
523
+ #: admin.php:878
524
  msgid "Download most recently modified log file"
525
  msgstr ""
526
 
527
+ #: admin.php:882
528
  msgid "Backups, logs & restoring"
529
  msgstr ""
530
 
531
+ #: admin.php:883
532
  msgid "Press to see available backups"
533
  msgstr ""
534
 
535
+ #: admin.php:883
536
  #, php-format
537
  msgid "%d set(s) available"
538
  msgstr ""
539
 
540
+ #: admin.php:889
541
+ msgid "Downloading and restoring"
542
+ msgstr ""
543
+
544
+ #: admin.php:891
545
  msgid "Downloading"
546
  msgstr ""
547
 
548
+ #: admin.php:891
549
  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."
550
  msgstr ""
551
 
552
+ #: admin.php:892
553
  msgid "Restoring"
554
  msgstr ""
555
 
556
+ #: admin.php:892
557
  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."
558
  msgstr ""
559
 
560
+ #: admin.php:892
561
  msgid "More tasks:"
562
  msgstr ""
563
 
564
+ #: admin.php:892
565
  msgid "upload backup files"
566
  msgstr ""
567
 
568
+ #: admin.php:892
569
  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."
570
  msgstr ""
571
 
572
+ #: admin.php:892
573
  msgid "rescan folder for new backup sets"
574
  msgstr ""
575
 
576
+ #: admin.php:893
577
  msgid "Opera web browser"
578
  msgstr ""
579
 
580
+ #: admin.php:893
581
  msgid "If you are using this, then turn Turbo/Road mode off."
582
  msgstr ""
583
 
584
+ #: admin.php:895
585
+ msgid "Google Drive"
586
+ msgstr ""
587
+
588
+ #: admin.php:895
589
+ msgid "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)."
590
+ msgstr ""
591
+
592
+ #: admin.php:897
593
  msgid "This is a count of the contents of your Updraft directory"
594
  msgstr ""
595
 
596
+ #: admin.php:897
597
  msgid "Web-server disk space in use by UpdraftPlus"
598
  msgstr ""
599
 
600
+ #: admin.php:897
601
  msgid "refresh"
602
  msgstr ""
603
 
604
+ #: admin.php:899
605
  msgid "UpdraftPlus - Upload backup files"
606
  msgstr ""
607
 
608
+ #: admin.php:900
609
  msgid "Upload files into UpdraftPlus. Use this to import backups made on a different WordPress installation."
610
  msgstr ""
611
 
612
+ #: admin.php:900
613
+ msgid "Or, you can place them manually into your UpdraftPlus directory (usually wp-content/updraft), e.g. via FTP, and then use the \"rescan\" link above."
614
+ msgstr ""
615
+
616
+ #: admin.php:904
617
  msgid "Drop backup zips here"
618
  msgstr ""
619
 
620
+ #: admin.php:905
621
+ #: admin.php:1505
622
  msgid "or"
623
  msgstr ""
624
 
625
+ #: admin.php:918
626
+ #: admin.php:1205
627
  msgid "calculating..."
628
  msgstr ""
629
 
630
+ #: admin.php:947
631
+ msgid "Begun looking for this entity"
632
+ msgstr ""
633
+
634
+ #: admin.php:976
635
+ #: admin.php:998
636
  msgid "Error:"
637
  msgstr ""
638
 
639
+ #: admin.php:986
640
  msgid "You should:"
641
  msgstr ""
642
 
643
+ #: admin.php:993
644
  msgid "Download error: the server sent us a response (JSON) which we did not understand"
645
  msgstr ""
646
 
647
+ #: admin.php:998
648
  msgid "Download error: the server sent us a response which we did not understand."
649
  msgstr ""
650
 
651
+ #: admin.php:1013
652
+ msgid "Delete backup set"
653
+ msgstr ""
654
+
655
+ #: admin.php:1016
656
+ msgid "Are you sure that you wish to delete this backup set?"
657
+ msgstr ""
658
+
659
+ #: admin.php:1022
660
+ msgid "Delete from remote storage (if any)"
661
+ msgstr ""
662
+
663
+ #: admin.php:1023
664
+ msgid "Delete from UpdraftPlus's memory"
665
+ msgstr ""
666
+
667
+ #: admin.php:1028
668
  msgid "Restore backup"
669
  msgstr ""
670
 
671
+ #: admin.php:1029
672
  msgid "Restore backup from"
673
  msgstr ""
674
 
675
+ #: admin.php:1030
676
  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)."
677
  msgstr ""
678
 
679
+ #: admin.php:1030
680
  msgid "Choose the components to restore"
681
  msgstr ""
682
 
683
+ #: admin.php:1039
684
  msgid "Your web server has PHP's so-called safe_mode active."
685
  msgstr ""
686
 
687
+ #: admin.php:1039
688
  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>."
689
  msgstr ""
690
 
691
+ #: admin.php:1052
692
  #, php-format
693
  msgid "The following entity cannot be restored automatically: \"%s\"."
694
  msgstr ""
695
 
696
+ #: admin.php:1052
697
  msgid "You will need to restore it manually."
698
  msgstr ""
699
 
700
+ #: admin.php:1059
701
  #, php-format
702
  msgid "%s restoration options:"
703
  msgstr ""
704
 
705
+ #: admin.php:1067
706
  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"
707
  msgstr ""
708
 
709
+ #: admin.php:1088
710
  msgid "Do read this helpful article of useful things to know before restoring."
711
  msgstr ""
712
 
713
+ #: admin.php:1091
714
+ msgid "Perform a one-time backup"
715
  msgstr ""
716
 
717
+ #: admin.php:1092
718
+ msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity after about 10 seconds. WordPress should start the backup running in the background."
719
  msgstr ""
720
 
721
+ #: admin.php:1094
722
  msgid "Does nothing happen when you schedule backups?"
723
  msgstr ""
724
 
725
+ #: admin.php:1094
726
  msgid "Go here for help."
727
  msgstr ""
728
 
729
+ #: admin.php:1100
730
  msgid "Multisite"
731
  msgstr ""
732
 
733
+ #: admin.php:1104
734
  msgid "Do you need WordPress Multisite support?"
735
  msgstr ""
736
 
737
+ #: admin.php:1104
738
  msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on."
739
  msgstr ""
740
 
741
+ #: admin.php:1109
742
  msgid "Configure Backup Contents And Schedule"
743
  msgstr ""
744
 
745
+ #: admin.php:1115
746
  msgid "Debug Information And Expert Options"
747
  msgstr ""
748
 
749
+ #: admin.php:1118
750
+ msgid "Web server:"
751
+ msgstr ""
752
+
753
+ #: admin.php:1121
754
  msgid "Peak memory usage"
755
  msgstr ""
756
 
757
+ #: admin.php:1122
758
  msgid "Current memory usage"
759
  msgstr ""
760
 
761
+ #: admin.php:1123
762
  msgid "PHP memory limit"
763
  msgstr ""
764
 
765
+ #: admin.php:1124
766
+ #, php-format
767
+ msgid "%s version:"
768
+ msgstr ""
769
+
770
+ #: admin.php:1127
771
+ #: admin.php:1129
772
+ #: admin.php:1134
773
+ msgid "Yes"
774
+ msgstr ""
775
+
776
+ #: admin.php:1129
777
+ #: admin.php:1134
778
+ msgid "No"
779
+ msgstr ""
780
+
781
+ #: admin.php:1132
782
+ msgid "PHP has support for ZipArchive::addFile:"
783
+ msgstr ""
784
+
785
+ #: admin.php:1134
786
+ msgid "/usr/bin/zip can be executed:"
787
+ msgstr ""
788
+
789
+ #: admin.php:1136
790
+ msgid "Total (uncompressed) on-disk data:"
791
+ msgstr ""
792
+
793
+ #: admin.php:1137
794
+ msgid "N.B. This count is based upon what was, or was not, excluded the last time you saved the options."
795
+ msgstr ""
796
+
797
+ #: admin.php:1144
798
+ msgid "count"
799
+ msgstr ""
800
+
801
+ #: admin.php:1150
802
  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."
803
  msgstr ""
804
 
805
+ #: admin.php:1158
806
  msgid "Debug Full Backup"
807
  msgstr ""
808
 
809
+ #: admin.php:1158
810
  msgid "This will cause an immediate backup. The page will stall loading until it finishes (ie, unscheduled)."
811
  msgstr ""
812
 
813
+ #: admin.php:1163
814
  msgid "Debug Database Backup"
815
  msgstr ""
816
 
817
+ #: admin.php:1163
818
  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.."
819
  msgstr ""
820
 
821
+ #: admin.php:1169
822
  msgid "Wipe Settings"
823
  msgstr ""
824
 
825
+ #: admin.php:1170
826
  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."
827
  msgstr ""
828
 
829
+ #: admin.php:1173
830
  msgid "Wipe All Settings"
831
  msgstr ""
832
 
833
+ #: admin.php:1173
834
  msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?"
835
  msgstr ""
836
 
837
+ #: admin.php:1175
838
+ msgid "Active jobs"
839
+ msgstr ""
840
+
841
+ #: admin.php:1193
842
+ msgid "Unknown response:"
843
+ msgstr ""
844
+
845
+ #: admin.php:1242
846
+ #, php-format
847
+ msgid "%s: began at: %s; next resumption: %d (after %ss)"
848
+ msgstr ""
849
+
850
+ #: admin.php:1242
851
+ msgid "show log"
852
+ msgstr ""
853
+
854
+ #: admin.php:1242
855
+ msgid "delete schedule"
856
+ msgstr ""
857
+
858
+ #: admin.php:1249
859
+ msgid "(None)"
860
+ msgstr ""
861
+
862
+ #: admin.php:1272
863
+ #: admin.php:1628
864
  msgid "Delete"
865
  msgstr ""
866
 
867
+ #: admin.php:1314
868
+ msgid "The request to the filesystem to create the directory failed."
869
+ msgstr ""
870
+
871
+ #: admin.php:1328
872
+ msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems"
873
+ msgstr ""
874
+
875
+ #: admin.php:1332
876
+ msgid "The folder exists, but your webserver does not have permission to write to it."
877
+ msgstr ""
878
+
879
+ #: admin.php:1332
880
+ msgid "You will need to consult with your web hosting provider to find out to set permissions for a WordPress plugin to write to the directory."
881
+ msgstr ""
882
+
883
+ #: admin.php:1372
884
  msgid "Download log file"
885
  msgstr ""
886
 
887
+ #: admin.php:1378
888
  msgid "No backup has been completed."
889
  msgstr ""
890
 
891
+ #: admin.php:1395
892
  msgid "File backup intervals"
893
  msgstr ""
894
 
895
+ #: admin.php:1398
896
  msgid "Manual"
897
  msgstr ""
898
 
899
+ #: admin.php:1398
900
  msgid "Every 4 hours"
901
  msgstr ""
902
 
903
+ #: admin.php:1398
904
  msgid "Every 8 hours"
905
  msgstr ""
906
 
907
+ #: admin.php:1398
908
  msgid "Every 12 hours"
909
  msgstr ""
910
 
911
+ #: admin.php:1398
912
  msgid "Daily"
913
  msgstr ""
914
 
915
+ #: admin.php:1398
916
  msgid "Weekly"
917
  msgstr ""
918
 
919
+ #: admin.php:1398
920
  msgid "Fortnightly"
921
  msgstr ""
922
 
923
+ #: admin.php:1398
924
  msgid "Monthly"
925
  msgstr ""
926
 
927
+ #: admin.php:1407
928
+ #: admin.php:1425
929
  msgid "and retain this many backups"
930
  msgstr ""
931
 
932
+ #: admin.php:1414
933
  msgid "Database backup intervals"
934
  msgstr ""
935
 
936
+ #: admin.php:1432
937
  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."
938
  msgstr ""
939
 
940
+ #: admin.php:1433
941
  msgid "To fix the time at which a backup should take place,"
942
  msgstr ""
943
 
944
+ #: admin.php:1433
945
  msgid "e.g. if your server is busy at day and you want to run overnight"
946
  msgstr ""
947
 
948
+ #: admin.php:1433
949
  msgid "use the \"Fix Time\" add-on"
950
  msgstr ""
951
 
952
+ #: admin.php:1437
953
  msgid "Include in files backup"
954
  msgstr ""
955
 
956
+ #: admin.php:1447
957
  msgid "Any other directories found inside wp-content"
958
  msgstr ""
959
 
960
+ #: admin.php:1453
961
  msgid "Exclude these:"
962
  msgstr ""
963
 
964
+ #: admin.php:1455
965
  msgid "If entering multiple files/directories, then separate them with commas"
966
  msgstr ""
967
 
968
+ #: admin.php:1481
969
  msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org."
970
  msgstr ""
971
 
972
+ #: admin.php:1481
973
  msgid "Or, get the \"More Files\" add-on from our shop."
974
  msgstr ""
975
 
976
+ #: admin.php:1481
977
  msgid "Use WordShell for automatic backup, version control and patching"
978
  msgstr ""
979
 
980
+ #: admin.php:1485
981
  msgid "Email"
982
  msgstr ""
983
 
984
+ #: admin.php:1486
985
  msgid "Enter an address here to have a report sent (and the whole backup, if you choose) to it."
986
  msgstr ""
987
 
988
+ #: admin.php:1490
989
  msgid "Database encryption phrase"
990
  msgstr ""
991
 
992
+ #: admin.php:1497
993
  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)."
994
  msgstr ""
995
 
996
+ #: admin.php:1497
997
  msgid "You can also decrypt a database manually here."
998
  msgstr ""
999
 
1000
+ #: admin.php:1500
1001
  msgid "Manually decrypt a database backup file"
1002
  msgstr ""
1003
 
1004
+ #: admin.php:1504
1005
  msgid "Drop encrypted database files (db.crypt.gz files) here to upload them for decryption"
1006
  msgstr ""
1007
 
1008
+ #: admin.php:1507
1009
  msgid "Use decryption key"
1010
  msgstr ""
1011
 
1012
+ #: admin.php:1521
1013
  msgid "Copying Your Backup To Remote Storage"
1014
  msgstr ""
1015
 
1016
+ #: admin.php:1525
1017
  msgid "Choose your remote storage"
1018
  msgstr ""
1019
 
1020
+ #: admin.php:1537
1021
  msgid "None"
1022
  msgstr ""
1023
 
1024
+ #: admin.php:1606
1025
+ msgid "Rescanning (looking for backups that you have uploaded manually into the internal backup store)..."
1026
+ msgstr ""
1027
+
1028
+ #: admin.php:1631
1029
+ #: admin.php:1652
1030
+ #: admin.php:1678
1031
  msgid "Cancel"
1032
  msgstr ""
1033
 
1034
+ #: admin.php:1661
1035
+ msgid "Requesting start of backup..."
1036
+ msgstr ""
1037
+
1038
+ #: admin.php:1705
1039
  msgid "Advanced / Debugging Settings"
1040
  msgstr ""
1041
 
1042
+ #: admin.php:1708
1043
  msgid "Debug mode"
1044
  msgstr ""
1045
 
1046
+ #: admin.php:1709
1047
  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."
1048
  msgstr ""
1049
 
1050
+ #: admin.php:1712
1051
  msgid "Expert settings"
1052
  msgstr ""
1053
 
1054
+ #: admin.php:1713
1055
  msgid "Show expert settings"
1056
  msgstr ""
1057
 
1058
+ #: admin.php:1713
1059
  msgid "click this to show some further options; don't bother with this unless you have a problem or are curious."
1060
  msgstr ""
1061
 
1062
+ #: admin.php:1720
1063
  msgid "Delete local backup"
1064
  msgstr ""
1065
 
1066
+ #: admin.php:1721
1067
  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)."
1068
  msgstr ""
1069
 
1070
+ #: admin.php:1726
1071
  msgid "Backup directory"
1072
  msgstr ""
1073
 
1074
+ #: admin.php:1734
1075
  msgid "Backup directory specified is writable, which is good."
1076
  msgstr ""
1077
 
1078
+ #: admin.php:1736
1079
  msgid "Backup directory specified is <b>not</b> writable, or does not exist."
1080
  msgstr ""
1081
 
1082
+ #: admin.php:1736
1083
  msgid "Click here to attempt to create the directory and set the permissions"
1084
  msgstr ""
1085
 
1086
+ #: admin.php:1736
1087
  msgid "or, to reset this option"
1088
  msgstr ""
1089
 
1090
+ #: admin.php:1736
1091
  msgid "click here"
1092
  msgstr ""
1093
 
1094
+ #: admin.php:1736
1095
  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."
1096
  msgstr ""
1097
 
1098
+ #: admin.php:1739
1099
  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...)."
1100
  msgstr ""
1101
 
1102
+ #: admin.php:1743
1103
  msgid "Use the server's SSL certificates"
1104
  msgstr ""
1105
 
1106
+ #: admin.php:1744
1107
  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."
1108
  msgstr ""
1109
 
1110
+ #: admin.php:1748
1111
  msgid "Do not verify SSL certificates"
1112
  msgstr ""
1113
 
1114
+ #: admin.php:1749
1115
  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."
1116
  msgstr ""
1117
 
1118
+ #: admin.php:1749
1119
  msgid "Note that not all cloud backup methods are necessarily using SSL authentication."
1120
  msgstr ""
1121
 
1122
+ #: admin.php:1753
1123
  msgid "Disable SSL entirely where possible"
1124
  msgstr ""
1125
 
1126
+ #: admin.php:1754
1127
  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."
1128
  msgstr ""
1129
 
1130
+ #: admin.php:1778
1131
  msgid "Save Changes"
1132
  msgstr ""
1133
 
1134
+ #: admin.php:1788
1135
  #, php-format
1136
  msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support."
1137
  msgstr ""
1138
 
1139
+ #: admin.php:1788
1140
  #, php-format
1141
  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."
1142
  msgstr ""
1143
 
1144
+ #: admin.php:1794
1145
  #, php-format
1146
  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)."
1147
  msgstr ""
1148
 
1149
+ #: admin.php:1796
1150
  #, php-format
1151
  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."
1152
  msgstr ""
1153
 
1154
+ #: admin.php:1799
1155
  #, php-format
1156
  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."
1157
  msgstr ""
1158
 
1159
+ #: admin.php:1871
1160
+ msgid "Delete this backup set"
1161
+ msgstr ""
1162
+
1163
+ #: admin.php:1900
1164
  msgid "Press here to download"
1165
  msgstr ""
1166
 
1167
+ #: admin.php:1902
1168
  #, php-format
1169
  msgid "(No %s)"
1170
  msgstr ""
1171
 
1172
+ #: admin.php:1912
1173
  msgid "Backup Log"
1174
  msgstr ""
1175
 
1176
+ #: admin.php:1920
1177
  msgid "After pressing this button, you will be given the option to choose which components you wish to restore"
1178
  msgstr ""
1179
 
1180
+ #: admin.php:2024
1181
  msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:"
1182
  msgstr ""
1183
 
1184
+ #: admin.php:2053
1185
  msgid "UpdraftPlus Restoration: Progress"
1186
  msgstr ""
1187
 
1188
+ #: admin.php:2075
1189
  msgid "ABORT: Could not find the information on which entities to restore."
1190
  msgstr ""
1191
 
1192
+ #: admin.php:2076
1193
  msgid "If making a request for support, please include this information:"
1194
  msgstr ""
1195
 
1196
+ #: admin.php:2101
1197
  msgid "This component was not selected for restoration - skipping."
1198
  msgstr ""
1199
 
1200
+ #: admin.php:2109
1201
  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)"
1202
  msgstr ""
1203
 
1204
+ #: admin.php:2115
1205
  msgid "Archive is expected to be size:"
1206
  msgstr ""
1207
 
1208
+ #: admin.php:2120
1209
  msgid "ERROR"
1210
  msgstr ""
1211
 
1212
+ #: admin.php:2123
1213
  msgid "The backup records do not contain information about the proper size of this file."
1214
  msgstr ""
1215
 
1216
+ #: admin.php:2138
1217
  msgid "Error message"
1218
  msgstr ""
1219
 
1220
+ #: admin.php:2144
1221
+ #: admin.php:2145
1222
  msgid "Could not find one of the files for restoration"
1223
  msgstr ""
1224
 
1231
  msgstr ""
1232
 
1233
  #: includes/updraft-restorer.php:7
1234
+ msgid "Copying this entity failed."
1235
  msgstr ""
1236
 
1237
  #: includes/updraft-restorer.php:8
1238
+ msgid "Unpacking backup..."
1239
  msgstr ""
1240
 
1241
  #: includes/updraft-restorer.php:9
1242
+ msgid "Decrypting database (can take a while)..."
1243
  msgstr ""
1244
 
1245
  #: includes/updraft-restorer.php:10
1246
+ msgid "Database successfully decrypted."
1247
  msgstr ""
1248
 
1249
  #: includes/updraft-restorer.php:11
1250
+ msgid "Moving old directory out of the way..."
1251
  msgstr ""
1252
 
1253
  #: includes/updraft-restorer.php:12
1254
+ msgid "Moving unpacked backup in place..."
1255
  msgstr ""
1256
 
1257
  #: includes/updraft-restorer.php:13
1258
+ msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..."
1259
  msgstr ""
1260
 
1261
  #: includes/updraft-restorer.php:14
1262
+ msgid "Cleaning up rubbish..."
1263
  msgstr ""
1264
 
1265
  #: includes/updraft-restorer.php:15
1266
+ msgid "Could not move old directory out of the way. Perhaps you already have -old directories that need deleting first?"
1267
  msgstr ""
1268
 
1269
  #: includes/updraft-restorer.php:16
1270
+ msgid "Could not delete old directory."
1271
  msgstr ""
1272
 
1273
  #: includes/updraft-restorer.php:17
1274
+ msgid "Could not move new directory into place. Check your wp-content/upgrade folder."
1275
+ msgstr ""
1276
+
1277
+ #: includes/updraft-restorer.php:18
1278
  msgid "Failed to delete working directory after restoring."
1279
  msgstr ""
1280
 
1281
+ #: includes/updraft-restorer.php:57
1282
  msgid "Failed to create a temporary directory"
1283
  msgstr ""
1284
 
1285
+ #: includes/updraft-restorer.php:75
1286
  msgid "Failed to write out the decrypted database to the filesystem"
1287
  msgstr ""
1288
 
1289
+ #: includes/updraft-restorer.php:126
1290
  msgid "wp-config.php from backup: will restore as wp-config-backup.php"
1291
  msgstr ""
1292
 
1293
+ #: includes/updraft-restorer.php:130
1294
  msgid "wp-config.php from backup: restoring (as per user's request)"
1295
  msgstr ""
1296
 
1297
+ #: includes/updraft-restorer.php:190
1298
  msgid "Will not delete the archive after unpacking it, because there was no cloud storage for this backup"
1299
  msgstr ""
1300
 
1301
+ #: includes/updraft-restorer.php:218
1302
  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."
1303
  msgstr ""
1304
 
1305
+ #: includes/updraft-restorer.php:223
1306
  msgid "Failed to find database file"
1307
  msgstr ""
1308
 
1309
+ #: includes/updraft-restorer.php:229
1310
  msgid "Failed to open database file"
1311
  msgstr ""
1312
 
1313
+ #: includes/updraft-restorer.php:253
1314
  msgid "Database access: Direct MySQL access is not available, so we are falling back to wpdb (this will be considerably slower)"
1315
  msgstr ""
1316
 
1317
+ #: includes/updraft-restorer.php:279
1318
+ msgid "Backup of:"
1319
+ msgstr ""
1320
+
1321
+ #: includes/updraft-restorer.php:283
1322
+ #: includes/updraft-restorer.php:301
1323
+ msgid "Old table prefix:"
1324
+ msgstr ""
1325
+
1326
+ #: includes/updraft-restorer.php:325
1327
  msgid "Restoring table"
1328
  msgstr ""
1329
 
1330
+ #: includes/updraft-restorer.php:328
1331
+ msgid "will restore as:"
1332
+ msgstr ""
1333
+
1334
+ #: includes/updraft-restorer.php:348
1335
  #, php-format
1336
  msgid "An error (%s) occured:"
1337
  msgstr ""
1338
 
1339
+ #: includes/updraft-restorer.php:348
1340
  msgid "the database query being run was:"
1341
  msgstr ""
1342
 
1343
+ #: includes/updraft-restorer.php:351
1344
  msgid "Too many database errors have occurred - aborting restoration (you will need to restore manually)"
1345
  msgstr ""
1346
 
1347
+ #: includes/updraft-restorer.php:358
1348
  #, php-format
1349
  msgid "Database lines processed: %d in %.2f seconds"
1350
  msgstr ""
1351
 
1352
+ #: includes/updraft-restorer.php:370
1353
  #, php-format
1354
  msgid "Finished: lines processed: %d in %.2f seconds"
1355
  msgstr ""
1356
 
1357
+ #: includes/updraft-restorer.php:475
1358
+ #: includes/updraft-restorer.php:484
1359
+ #, php-format
1360
+ msgid "Table prefix has changed: changing %s table field(s) accordingly:"
1361
+ msgstr ""
1362
+
1363
+ #: includes/updraft-restorer.php:479
1364
+ #: includes/updraft-restorer.php:513
1365
+ msgid "OK"
1366
+ msgstr ""
1367
+
1368
+ #: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:91
1369
+ #, php-format
1370
+ msgid "You need to re-authenticate with %s, as your existing credentials are not working."
1371
+ msgstr ""
1372
+
1373
  #: methods/webdav.php:13
1374
  #: methods/webdav.php:34
1375
  #: methods/webdav.php:50
1405
  msgstr ""
1406
 
1407
  #: methods/googledrive.php:143
1408
+ #: methods/cloudfiles.php:473
1409
  msgid "Success"
1410
  msgstr ""
1411
 
1414
  msgid "you have authenticated your %s account."
1415
  msgstr ""
1416
 
 
 
 
 
 
 
 
 
 
1417
  #: methods/googledrive.php:159
1418
  msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive."
1419
  msgstr ""
1433
  msgid "Failed to upload to %s"
1434
  msgstr ""
1435
 
 
 
 
 
1436
  #: methods/googledrive.php:289
1437
  #, php-format
1438
  msgid "An error occurred during %s upload (see log for more details)"
1461
  msgstr ""
1462
 
1463
  #: methods/googledrive.php:395
1464
+ #: methods/cloudfiles.php:358
1465
  #, php-format
1466
  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."
1467
  msgstr ""
1518
  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."
1519
  msgstr ""
1520
 
1521
+ #: methods/cloudfiles.php:53
1522
+ #: methods/cloudfiles.php:57
1523
+ #: methods/cloudfiles.php:238
1524
  #: methods/cloudfiles.php:242
1525
+ #: methods/cloudfiles.php:453
1526
+ #: methods/cloudfiles.php:456
1527
+ #: methods/cloudfiles.php:459
 
1528
  msgid "Cloud Files authentication failed"
1529
  msgstr ""
1530
 
1531
+ #: methods/cloudfiles.php:61
1532
+ #: methods/cloudfiles.php:246
1533
+ #: methods/cloudfiles.php:264
1534
  msgid "Cloud Files error - failed to create and access the container"
1535
  msgstr ""
1536
 
1537
+ #: methods/cloudfiles.php:88
1538
  #, php-format
1539
  msgid "%s Error: Failed to open local file"
1540
  msgstr ""
1541
 
1542
+ #: methods/cloudfiles.php:105
1543
+ #: methods/cloudfiles.php:147
1544
  #, php-format
1545
  msgid "%s Error: Failed to upload"
1546
  msgstr ""
1547
 
1548
+ #: methods/cloudfiles.php:169
1549
  msgid "Cloud Files error - failed to re-assemble chunks"
1550
  msgstr ""
1551
 
1552
+ #: methods/cloudfiles.php:178
1553
+ #: methods/cloudfiles.php:179
1554
  msgid "Cloud Files error - failed to upload file"
1555
  msgstr ""
1556
 
1557
+ #: methods/cloudfiles.php:292
1558
+ #: methods/cloudfiles.php:309
1559
  msgid "Cloud Files Error"
1560
  msgstr ""
1561
 
1562
+ #: methods/cloudfiles.php:292
1563
  msgid "Error opening local file: Failed to download"
1564
  msgstr ""
1565
 
1566
+ #: methods/cloudfiles.php:309
1567
  msgid "Error downloading remote file: Failed to download ("
1568
  msgstr ""
1569
 
1570
+ #: methods/cloudfiles.php:318
1571
  msgid "Cloud Files error - no such file exists at Cloud Files"
1572
  msgstr ""
1573
 
1574
+ #: methods/cloudfiles.php:322
1575
  msgid "Cloud Files error - failed to download the file"
1576
  msgstr ""
1577
 
1578
+ #: methods/cloudfiles.php:331
1579
  msgid "Testing - Please Wait..."
1580
  msgstr ""
1581
 
1582
+ #: methods/cloudfiles.php:345
1583
+ #: methods/cloudfiles.php:410
1584
  #, php-format
1585
  msgid "Test %s Settings"
1586
  msgstr ""
1587
 
1588
+ #: methods/cloudfiles.php:366
1589
  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."
1590
  msgstr ""
1591
 
1592
+ #: methods/cloudfiles.php:366
1593
  msgid "Also, you should read this important FAQ."
1594
  msgstr ""
1595
 
1596
+ #: methods/cloudfiles.php:370
1597
  msgid "US or UK Cloud"
1598
  msgstr ""
1599
 
1600
+ #: methods/cloudfiles.php:376
1601
  msgid "US (default)"
1602
  msgstr ""
1603
 
1604
+ #: methods/cloudfiles.php:377
1605
  msgid "UK"
1606
  msgstr ""
1607
 
1608
+ #: methods/cloudfiles.php:382
1609
  msgid "Cloud Files username"
1610
  msgstr ""
1611
 
1612
+ #: methods/cloudfiles.php:386
1613
  msgid "Cloud Files API key"
1614
  msgstr ""
1615
 
1616
+ #: methods/cloudfiles.php:390
1617
  msgid "Cloud Files container"
1618
  msgstr ""
1619
 
1620
+ #: methods/cloudfiles.php:400
1621
  #, php-format
1622
  msgid "UpdraftPlus's %s module <strong>requires</strong> %s. Please do not file any support requests; there is no alternative."
1623
  msgstr ""
1624
 
1625
+ #: methods/cloudfiles.php:418
1626
+ #: methods/cloudfiles.php:423
1627
  #, php-format
1628
  msgid "Failure: No %s was given."
1629
  msgstr ""
1630
 
1631
+ #: methods/cloudfiles.php:418
1632
  msgid "API key"
1633
  msgstr ""
1634
 
1635
+ #: methods/cloudfiles.php:423
1636
  msgid "Username"
1637
  msgstr ""
1638
 
1639
+ #: methods/cloudfiles.php:443
1640
  msgid "Failure: No container details were given."
1641
  msgstr ""
1642
 
1643
+ #: methods/cloudfiles.php:469
1644
  msgid "Cloud Files error - we accessed the container, but failed to create a file within it"
1645
  msgstr ""
1646
 
1647
+ #: methods/cloudfiles.php:473
1648
  msgid "We accessed the container, and were able to create files within it."
1649
  msgstr ""
1650
 
1668
  msgid "The email address entered above will be used. If choosing \"E-Mail\", then <strong>be aware</strong> that mail servers tend to have size limits; typically around 10-20Mb; backups larger than any limits will not arrive. If you really need a large backup via email, then you could fund a new feature (to break the backup set into configurable-size pieces) - but the demand has not yet existed for such a feature."
1669
  msgstr ""
1670
 
1671
+ #: methods/s3.php:145
1672
+ #, php-format
1673
+ msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details"
1674
+ msgstr ""
1675
+
1676
+ #: methods/s3.php:168
1677
+ #, php-format
1678
+ msgid "%s error: file %s was shortened unexpectedly"
1679
+ msgstr ""
1680
+
1681
+ #: methods/s3.php:178
1682
+ #, php-format
1683
+ msgid "%s chunk %s: upload failed"
1684
  msgstr ""
1685
 
1686
+ #: methods/s3.php:192
1687
  #, php-format
1688
+ msgid "%s upload (%s): re-assembly failed (see log for more details)"
1689
  msgstr ""
1690
 
1691
+ #: methods/s3.php:196
1692
  #, php-format
1693
+ msgid "%s re-assembly error (%s): (see log file for more)"
1694
  msgstr ""
1695
 
1696
+ #: methods/s3.php:208
1697
  #, php-format
1698
+ msgid "%s Error: Failed to create bucket %s. Check your permissions and credentials."
1699
  msgstr ""
1700
 
1701
+ #: methods/s3.php:271
1702
  #, php-format
1703
+ msgid "%s Error: Failed to download %s. Check your permissions and credentials."
1704
  msgstr ""
1705
 
1706
+ #: methods/s3.php:275
1707
  #, php-format
1708
+ msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials."
1709
  msgstr ""
1710
 
1711
+ #: methods/s3.php:289
1712
  #, php-format
1713
+ msgid "Testing %s Settings..."
1714
  msgstr ""
1715
 
1716
+ #: methods/s3.php:326
1717
+ #, php-format
1718
+ msgid "Get your access key and secret key <a href=\"%s\">from your %s console</a>, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist."
1719
  msgstr ""
1720
 
1721
+ #: methods/s3.php:326
1722
  msgid "If you see errors about SSL certificates, then please go here for help."
1723
  msgstr ""
1724
 
1725
+ #: methods/s3.php:329
1726
+ #, php-format
1727
+ msgid "%s access key"
1728
+ msgstr ""
1729
+
1730
+ #: methods/s3.php:333
1731
+ #, php-format
1732
+ msgid "%s secret key"
1733
  msgstr ""
1734
 
1735
+ #: methods/s3.php:337
1736
+ #, php-format
1737
+ msgid "%s location"
1738
  msgstr ""
1739
 
1740
+ #: methods/s3.php:338
1741
+ msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath"
1742
  msgstr ""
1743
 
1744
+ #: methods/s3.php:365
1745
  msgid "API secret"
1746
  msgstr ""
1747
 
1748
+ #: methods/s3.php:385
1749
  msgid "Failure: No bucket details were given."
1750
  msgstr ""
1751
 
1752
+ #: methods/s3.php:396
1753
+ msgid "Region"
1754
  msgstr ""
1755
 
1756
+ #: methods/s3.php:406
1757
+ #, php-format
1758
+ msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name)."
1759
  msgstr ""
1760
 
1761
+ #: methods/s3.php:417
1762
+ #: methods/s3.php:428
1763
  msgid "Failure"
1764
  msgstr ""
1765
 
1766
+ #: methods/s3.php:417
1767
+ #: methods/s3.php:428
1768
  msgid "We successfully accessed the bucket, but the attempt to create a file in it failed."
1769
  msgstr ""
1770
 
1771
+ #: methods/s3.php:419
1772
  msgid "We accessed the bucket, and were able to create files within it."
1773
  msgstr ""
1774
 
1775
+ #: methods/s3.php:421
1776
  #, php-format
1777
  msgid "The communication with %s was encrypted."
1778
  msgstr ""
1779
 
1780
+ #: methods/s3.php:423
1781
  #, php-format
1782
  msgid "The communication with %s was not encrypted."
1783
  msgstr ""
1788
  msgstr ""
1789
 
1790
  #: methods/dropbox.php:41
1791
+ #: methods/dropbox.php:208
1792
  msgid "You do not appear to be authenticated with Dropbox"
1793
  msgstr ""
1794
 
1797
  msgid "error: %s (see log file for more)"
1798
  msgstr ""
1799
 
1800
+ #: methods/dropbox.php:139
1801
+ #: methods/dropbox.php:144
1802
  #, php-format
1803
  msgid "error: failed to upload file to %s (see log file for more)"
1804
  msgstr ""
1805
 
1806
+ #: methods/dropbox.php:264
1807
  msgid "Need to use sub-folders?"
1808
  msgstr ""
1809
 
1810
+ #: methods/dropbox.php:264
1811
  msgid "Backups are saved in"
1812
  msgstr ""
1813
 
1814
+ #: methods/dropbox.php:264
1815
  msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then "
1816
  msgstr ""
1817
 
1818
+ #: methods/dropbox.php:264
1819
  msgid "there's an add-on for that."
1820
  msgstr ""
1821
 
1822
+ #: methods/dropbox.php:269
1823
  msgid "Authenticate with Dropbox"
1824
  msgstr ""
1825
 
1826
+ #: methods/dropbox.php:270
1827
  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."
1828
  msgstr ""
1829
 
1830
+ #: methods/dropbox.php:327
1831
  #, php-format
1832
  msgid "you have authenticated your %s account"
1833
  msgstr ""
1834
 
1835
+ #: methods/dropbox.php:330
1836
  msgid "though part of the returned information was not as expected - your mileage may vary"
1837
  msgstr ""
1838
 
1839
+ #: methods/dropbox.php:333
1840
  #, php-format
1841
  msgid "Your %s account name: %s"
1842
  msgstr ""
1843
 
1844
+ #: methods/ftp.php:44
1845
+ #: methods/ftp.php:96
1846
  msgid "FTP login failure"
1847
  msgstr ""
1848
 
1849
+ #: methods/ftp.php:63
1850
  msgid "FTP upload failed"
1851
  msgstr ""
1852
 
1853
+ #: methods/ftp.php:131
1854
  msgid "Settings test result"
1855
  msgstr ""
1856
 
1857
+ #: methods/ftp.php:147
1858
  msgid "Only non-encrypted FTP is supported by regular UpdraftPlus."
1859
  msgstr ""
1860
 
1861
+ #: methods/ftp.php:147
1862
  msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available."
1863
  msgstr ""
1864
 
1865
+ #: methods/ftp.php:151
1866
  msgid "FTP Server"
1867
  msgstr ""
1868
 
1869
+ #: methods/ftp.php:155
1870
  msgid "FTP Login"
1871
  msgstr ""
1872
 
1873
+ #: methods/ftp.php:159
1874
  msgid "FTP Password"
1875
  msgstr ""
1876
 
1877
+ #: methods/ftp.php:163
1878
  msgid "Remote Path"
1879
  msgstr ""
1880
 
1881
+ #: methods/ftp.php:164
1882
  msgid "Needs to already exist"
1883
  msgstr ""
1884
 
1885
+ #: methods/ftp.php:185
1886
  msgid "Failure: No server details were given."
1887
  msgstr ""
1888
 
1889
+ #: methods/ftp.php:200
1890
  msgid "Failure: we did not successfully log in with those credentials."
1891
  msgstr ""
1892
 
1893
+ #: methods/ftp.php:208
1894
  msgid "Failure: an unexpected internal UpdraftPlus error occurred when testing the credentials - please contact the developer"
1895
  msgstr ""
1896
 
1897
+ #: methods/ftp.php:212
1898
  msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:"
1899
  msgstr ""
1900
 
1901
+ #: methods/ftp.php:215
1902
  msgid "Failure: we successfully logged in, but were not able to create a file in the given directory."
1903
  msgstr ""
1904
 
1947
  msgid "Failed: We were not able to place a file in that directory - please check your credentials."
1948
  msgstr ""
1949
 
1950
+ #: addons/morefiles.php:40
1951
+ #: addons/morefiles.php:253
1952
  msgid "WordPress Core"
1953
  msgstr ""
1954
 
1955
+ #: addons/morefiles.php:44
1956
  msgid "Over-write wp-config.php"
1957
  msgstr ""
1958
 
1959
+ #: addons/morefiles.php:44
1960
  msgid "(learn more about this important option)"
1961
  msgstr ""
1962
 
1963
+ #: addons/morefiles.php:63
1964
  msgid "The above files comprise everything in a WordPress installation."
1965
  msgstr ""
1966
 
1967
+ #: addons/morefiles.php:70
1968
  msgid "WordPress core (including any additions to your WordPress root directory)"
1969
  msgstr ""
1970
 
1971
+ #: addons/morefiles.php:82
1972
  msgid "Any other directory on your server that you wish to back up"
1973
  msgstr ""
1974
 
1975
+ #: addons/morefiles.php:83
1976
  msgid "More Files"
1977
  msgstr ""
1978
 
1979
+ #: addons/morefiles.php:98
1980
  msgid "Enter the directory:"
1981
  msgstr ""
1982
 
1983
+ #: addons/morefiles.php:102
1984
  msgid "If you are not sure what this option is for, then you will not want it, and should turn it off."
1985
  msgstr ""
1986
 
1987
+ #: addons/morefiles.php:102
1988
  msgid "If using it, enter an absolute path (it is not relative to your WordPress install)."
1989
  msgstr ""
1990
 
1991
+ #: addons/morefiles.php:104
1992
  msgid "Be careful what you enter - if you enter / then it really will try to create a zip containing your entire webserver."
1993
  msgstr ""
1994
 
1995
+ #: addons/morefiles.php:134
1996
  msgid "If entering multiple files/directories, then separate them with commas."
1997
  msgstr ""
1998
 
1999
+ #: addons/morefiles.php:176
2000
+ #: addons/morefiles.php:253
2001
  #, php-format
2002
  msgid "No backup of %s directories: there was nothing found to back up"
2003
  msgstr ""
2004
 
2005
+ #: addons/morefiles.php:176
2006
  msgid "more"
2007
  msgstr ""
2008
 
2014
  msgid "Some servers advertise encrypted FTP as available, but then time-out (after a long time, by which time when you attempt to use it. If you find this happenning, then go into the \"Expert Options\" (below) and turn off SSL there."
2015
  msgstr ""
2016
 
2017
+ #: addons/sftp.php:23
2018
+ msgid "Explicit encryption is used by default. To force implicit encryption (port 990), add :990 to your FTP server below."
2019
+ msgstr ""
2020
+
2021
  #: addons/sftp.php:30
2022
  #: addons/sftp.php:31
2023
  #: addons/sftp.php:32
2101
  msgid "Enter in format HH:MM (e.g. 14:22)"
2102
  msgstr ""
2103
 
2104
+ #: addons/multisite.php:121
2105
  msgid "Multisite Install"
2106
  msgstr ""
2107
 
2108
+ #: addons/multisite.php:127
2109
  msgid "You do not have sufficient permissions to access this page."
2110
  msgstr ""
2111
 
2112
+ #: addons/multisite.php:146
2113
  msgid "You do not have permission to access this page."
2114
  msgstr ""
2115
 
2116
+ #: addons/multisite.php:204
2117
  msgid "Must-use plugins"
2118
  msgstr ""
2119
 
2120
+ #: addons/multisite.php:205
2121
  msgid "Blog uploads"
2122
  msgstr ""
2123
 
2124
+ #: addons/migrator.php:25
2125
  #, php-format
2126
  msgid "All references to the site location in the database will be replaced with your current site URL, which is: %s"
2127
  msgstr ""
2128
 
2129
+ #: addons/migrator.php:25
2130
  msgid "Search and replace site location in the database (migrate)"
2131
  msgstr ""
2132
 
2133
+ #: addons/migrator.php:25
2134
  msgid "(learn more)"
2135
  msgstr ""
2136
 
2137
+ #: addons/migrator.php:110
2138
+ #: addons/migrator.php:223
2139
+ #, php-format
2140
+ msgid "Failed: the %s operation was not able to start."
2141
+ msgstr ""
2142
+
2143
+ #: addons/migrator.php:112
2144
+ #: addons/migrator.php:225
2145
+ #, php-format
2146
+ msgid "Failed: we did not understand the result returned by the %s operation."
2147
+ msgstr ""
2148
+
2149
+ #: addons/migrator.php:133
2150
  msgid "Database: search and replace site URL"
2151
  msgstr ""
2152
 
2153
+ #: addons/migrator.php:136
2154
  msgid "This option was not selected."
2155
  msgstr ""
2156
 
2157
+ #: addons/migrator.php:149
2158
+ #: addons/migrator.php:154
2159
  #, php-format
2160
  msgid "Error: unexpected empty parameter (%s, %s)"
2161
  msgstr ""
2162
 
2163
+ #: addons/migrator.php:159
2164
  #, php-format
2165
  msgid "Nothing to do: the site URL is already: %s"
2166
  msgstr ""
2167
 
2168
+ #: addons/migrator.php:164
2169
  #, php-format
2170
+ msgid "Warning: the database's site URL (%s) is different to what we expected (%s)"
2171
  msgstr ""
2172
 
2173
+ #: addons/migrator.php:171
2174
  #, php-format
2175
+ msgid "Database search and replace: replace %s in backup dump with %s"
2176
+ msgstr ""
2177
+
2178
+ #: addons/migrator.php:190
2179
+ msgid "Could not get list of tables"
2180
  msgstr ""
2181
 
2182
+ #: addons/migrator.php:201
2183
  #, php-format
2184
+ msgid "<strong>Search and replacing table:</strong> %s: already done"
2185
  msgstr ""
2186
 
2187
+ #: addons/migrator.php:242
2188
  msgid "Tables examined:"
2189
  msgstr ""
2190
 
2191
+ #: addons/migrator.php:243
2192
  msgid "Rows examined:"
2193
  msgstr ""
2194
 
2195
+ #: addons/migrator.php:244
2196
  msgid "Changes made:"
2197
  msgstr ""
2198
 
2199
+ #: addons/migrator.php:245
2200
  msgid "SQL update commands run:"
2201
  msgstr ""
2202
 
2203
+ #: addons/migrator.php:246
2204
  msgid "Errors:"
2205
  msgstr ""
2206
 
2207
+ #: addons/migrator.php:247
2208
  msgid "Time taken (seconds):"
2209
  msgstr ""
2210
 
2211
+ #: addons/migrator.php:305
2212
+ #, php-format
2213
+ msgid "Search and replacing table: %s"
 
 
 
 
 
 
 
2214
  msgstr ""
2215
 
2216
+ #: addons/migrator.php:334
2217
  #, php-format
2218
  msgid "rows: %d"
2219
  msgstr ""
2220
 
2221
+ #: addons/migrator.php:399
2222
  #, php-format
2223
  msgid "\"%s\" has no primary key, manual change needed on row %s."
2224
  msgstr ""
methods/cloudfiles.php CHANGED
@@ -358,7 +358,19 @@ class UpdraftPlus_BackupModule_cloudfiles {
358
  <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'),'Rackspace Cloud Files');?></em></p></td>
359
  </tr>
360
 
361
-
 
 
 
 
 
 
 
 
 
 
 
 
362
 
363
  <tr class="updraftplusmethod cloudfiles">
364
  <th></th>
@@ -391,20 +403,6 @@ class UpdraftPlus_BackupModule_cloudfiles {
391
  <td><input type="text" style="width: 252px" name="updraft_cloudfiles_path" id="updraft_cloudfiles_path" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_cloudfiles_path')); ?>" /></td>
392
  </tr>
393
 
394
- <tr class="updraftplusmethod cloudfiles">
395
- <th></th>
396
- <td>
397
- <?php
398
- // Check requirements.
399
- if (!function_exists('mb_substr')) {
400
- ?><p><strong><?php _e('Warning','updraftplus'); ?>:</strong> <?php echo sprintf(__('Your web server\'s PHP installation does not included a required module (%s). Please contact your web hosting provider\'s support.', 'updraftplus'), 'mbstring'); ?> <?php echo sprintf(__("UpdraftPlus's %s module <strong>requires</strong> %s. Please do not file any support requests; there is no alternative.",'updraftplus'),'Cloud Files', 'mbstring');?></p><?php
401
- }
402
- global $updraftplus_admin;
403
- $updraftplus_admin->curl_check('Rackspace Cloud Files', false);
404
- ?>
405
- </td>
406
- </tr>
407
-
408
  <tr class="updraftplusmethod cloudfiles">
409
  <th></th>
410
  <td><p><button id="updraft-cloudfiles-test" type="button" class="button-primary" style="font-size:18px !important"><?php echo sprintf(__('Test %s Settings','updraftplus'),'Cloud Files');?></button></p></td>
@@ -424,7 +422,7 @@ class UpdraftPlus_BackupModule_cloudfiles {
424
  return;
425
  }
426
 
427
- $key = $_POST['apikey'];
428
  $user = $_POST['user'];
429
  $path = $_POST['path'];
430
  $authurl = $_POST['authurl'];
@@ -460,10 +458,11 @@ class UpdraftPlus_BackupModule_cloudfiles {
460
  die;
461
  }
462
 
463
- $try_file = md5(rand());
464
 
465
  try {
466
  $object = $cont_obj->create_object($try_file);
 
467
  $object->write('UpdraftPlus test file');
468
  } catch (Exception $e) {
469
  echo __('Cloud Files error - we accessed the container, but failed to create a file within it', 'updraftplus').' ('.$e->getMessage().')';
358
  <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'),'Rackspace Cloud Files');?></em></p></td>
359
  </tr>
360
 
361
+ <tr class="updraftplusmethod cloudfiles">
362
+ <th></th>
363
+ <td>
364
+ <?php
365
+ // Check requirements.
366
+ global $updraftplus_admin;
367
+ if (!function_exists('mb_substr')) {
368
+ $updraftplus_admin->show_double_warning('<strong>'.__('Warning','updraftplus').':</strong> '.sprintf(__('Your web server\'s PHP installation does not included a required module (%s). Please contact your web hosting provider\'s support.', 'updraftplus'), 'mbstring').' '.sprintf(__("UpdraftPlus's %s module <strong>requires</strong> %s. Please do not file any support requests; there is no alternative.",'updraftplus'),'Cloud Files', 'mbstring'), 'cloudfiles');
369
+ }
370
+ $updraftplus_admin->curl_check('Rackspace Cloud Files', false, 'cloudfiles');
371
+ ?>
372
+ </td>
373
+ </tr>
374
 
375
  <tr class="updraftplusmethod cloudfiles">
376
  <th></th>
403
  <td><input type="text" style="width: 252px" name="updraft_cloudfiles_path" id="updraft_cloudfiles_path" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_cloudfiles_path')); ?>" /></td>
404
  </tr>
405
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
406
  <tr class="updraftplusmethod cloudfiles">
407
  <th></th>
408
  <td><p><button id="updraft-cloudfiles-test" type="button" class="button-primary" style="font-size:18px !important"><?php echo sprintf(__('Test %s Settings','updraftplus'),'Cloud Files');?></button></p></td>
422
  return;
423
  }
424
 
425
+ $key = stripslashes($_POST['apikey']);
426
  $user = $_POST['user'];
427
  $path = $_POST['path'];
428
  $authurl = $_POST['authurl'];
458
  die;
459
  }
460
 
461
+ $try_file = md5(rand()).'.txt';
462
 
463
  try {
464
  $object = $cont_obj->create_object($try_file);
465
+ $object->content_type = "text/plain";
466
  $object->write('UpdraftPlus test file');
467
  } catch (Exception $e) {
468
  echo __('Cloud Files error - we accessed the container, but failed to create a file within it', 'updraftplus').' ('.$e->getMessage().')';
methods/dreamobjects.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ require_once(UPDRAFTPLUS_DIR.'/methods/s3.php');
4
+
5
+ class UpdraftPlus_BackupModule_dreamobjects extends UpdraftPlus_BackupModule_s3 {
6
+
7
+ function set_endpoint($obj, $region) {
8
+ $obj->setEndpoint('objects.dreamhost.com');
9
+ }
10
+
11
+ function get_config() {
12
+ return array(
13
+ 'login' => UpdraftPlus_Options::get_updraft_option('updraft_dreamobjects_login'),
14
+ 'pass' => UpdraftPlus_Options::get_updraft_option('updraft_dreamobjects_pass'),
15
+ 'remote_path' => UpdraftPlus_Options::get_updraft_option('updraft_dreamobjects_remote_path'),
16
+ 'whoweare' => 'DreamObjects',
17
+ 'whoweare_long' => 'DreamObjects',
18
+ 'key' => 'dreamobjects'
19
+ );
20
+ }
21
+
22
+ public static function config_print() {
23
+ self::config_print_engine('dreamobjects', 'DreamObjects', 'DreamObjects', 'DreamObjects', 'https://panel.dreamhost.com/index.cgi?tree=storage.dreamhostobjects', '<a href="http://dreamhost.com/cloud/dreamobjects/"><img alt="DreamObjects" src="'.UPDRAFTPLUS_URL.'/images/dreamobjects_logo-horiz-2013.png"></a>');
24
+ }
25
+
26
+ public static function config_print_javascript_onready() {
27
+ self::config_print_javascript_onready_engine('dreamobjects', 'DreamObjects');
28
+ }
29
+
30
+ public static function credentials_test() {
31
+ self::credentials_test_engine(self::get_config());
32
+ }
33
+
34
+ }
35
+ ?>
methods/dropbox.php CHANGED
@@ -11,8 +11,8 @@ class UpdraftPlus_BackupModule_dropbox {
11
  global $updraftplus;
12
 
13
  // Update upload ID
14
- set_transient('updraf_dbid_'.$this->current_file_hash, $uploadid, UPDRAFT_TRANSTIME);
15
- set_transient('updraf_dbof_'.$this->current_file_hash, $offset, UPDRAFT_TRANSTIME);
16
 
17
  if ($this->current_file_size > 0) {
18
  $percent = round(100*($offset/$this->current_file_size),1);
@@ -50,7 +50,6 @@ class UpdraftPlus_BackupModule_dropbox {
50
  } catch (Exception $e) {
51
  $updraftplus->log('Dropbox error: '.$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')');
52
  $updraftplus->error('Dropbox ',sprintf(__('error: %s (see log file for more)','updraftplus'), $e->getMessage()));
53
-
54
  return false;
55
  }
56
 
@@ -106,9 +105,9 @@ class UpdraftPlus_BackupModule_dropbox {
106
  $filesize = $filesize/1024;
107
  $microtime = microtime(true);
108
 
109
- if ($upload_id = get_transient('updraf_dbid_'.$hash)) {
110
  # Resume
111
- $offset = get_transient('updraf_dbof_'.$hash);
112
  $updraftplus->log("This is a resumption: $offset bytes had already been uploaded");
113
  } else {
114
  $offset = 0;
@@ -152,8 +151,8 @@ class UpdraftPlus_BackupModule_dropbox {
152
  $speedps = $filesize/$microtime_elapsed;
153
  $speed = sprintf("%.2d",$filesize)." Kb in ".sprintf("%.2d",$microtime_elapsed)."s (".sprintf("%.2d", $speedps)." Kb/s)";
154
  $updraftplus->log("Dropbox: File upload success (".$file."): $speed");
155
- delete_transient('updraft_duido_'.$hash);
156
- delete_transient('updraft_duidi_'.$hash);
157
  }
158
 
159
  }
@@ -260,6 +259,23 @@ class UpdraftPlus_BackupModule_dropbox {
260
  </td>
261
  </tr>
262
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
263
  <?php
264
 
265
  $defmsg = '<tr class="updraftplusmethod dropbox"><td></td><td><strong>'.__('Need to use sub-folders?','updraftplus').'</strong> '.__('Backups are saved in','updraftplus').' apps/UpdraftPlus. '.__('If you back up several sites into the same Dropbox and want to organise with sub-folders, then ','updraftplus').'<a href="http://updraftplus.com/shop/">'.__("there's an add-on for that.",'updraftplus').'</a></td></tr>';
@@ -273,20 +289,6 @@ class UpdraftPlus_BackupModule_dropbox {
273
  </td>
274
  </tr>
275
 
276
- <tr class="updraftplusmethod dropbox">
277
- <th></th>
278
- <td>
279
- <?php
280
- // Check requirements.
281
- if (!function_exists('mcrypt_encrypt')) {
282
- ?><p><strong><?php _e('Warning','updraftplus'); ?>:</strong> <?php echo sprintf(__('Your web server\'s PHP installation does not included a required module (%s). Please contact your web hosting provider\'s support.', 'updraftplus'), 'mcrypt'); ?> <?php echo sprintf(__("UpdraftPlus's %s module <strong>requires</strong> %s. Please do not file any support requests; there is no alternative.",'updraftplus'),'Dropbox', 'mcrypt');?></p><?php
283
- }
284
- global $updraftplus_admin;
285
- $updraftplus_admin->curl_check('Dropbox', false);
286
- ?>
287
- </td>
288
- </tr>
289
-
290
  <?php
291
  // Legacy: only show this next setting to old users who had a setting stored
292
  if (UpdraftPlus_Options::get_updraft_option('updraft_dropbox_appkey')) {
11
  global $updraftplus;
12
 
13
  // Update upload ID
14
+ $updraftplus->jobdata_set('updraf_dbid_'.$this->current_file_hash, $uploadid);
15
+ $updraftplus->jobdata_set('updraf_dbof_'.$this->current_file_hash, $offset);
16
 
17
  if ($this->current_file_size > 0) {
18
  $percent = round(100*($offset/$this->current_file_size),1);
50
  } catch (Exception $e) {
51
  $updraftplus->log('Dropbox error: '.$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')');
52
  $updraftplus->error('Dropbox ',sprintf(__('error: %s (see log file for more)','updraftplus'), $e->getMessage()));
 
53
  return false;
54
  }
55
 
105
  $filesize = $filesize/1024;
106
  $microtime = microtime(true);
107
 
108
+ if ($upload_id = $updraftplus->jobdata_get('updraf_dbid_'.$hash)) {
109
  # Resume
110
+ $offset = $updraftplus->jobdata_get('updraf_dbof_'.$hash);
111
  $updraftplus->log("This is a resumption: $offset bytes had already been uploaded");
112
  } else {
113
  $offset = 0;
151
  $speedps = $filesize/$microtime_elapsed;
152
  $speed = sprintf("%.2d",$filesize)." Kb in ".sprintf("%.2d",$microtime_elapsed)."s (".sprintf("%.2d", $speedps)." Kb/s)";
153
  $updraftplus->log("Dropbox: File upload success (".$file."): $speed");
154
+ $updraftplus->jobdata_delete('updraft_duido_'.$hash);
155
+ $updraftplus->jobdata_delete('updraft_duidi_'.$hash);
156
  }
157
 
158
  }
259
  </td>
260
  </tr>
261
 
262
+ <tr class="updraftplusmethod dropbox">
263
+ <th></th>
264
+ <td>
265
+ <?php
266
+ // Check requirements.
267
+ global $updraftplus_admin;
268
+ if (!function_exists('mcrypt_encrypt')) {
269
+ $updraftplus_admin->show_double_warning('<strong>'.__('Warning','updraftplus').':</strong> '. sprintf(__('Your web server\'s PHP installation does not included a required module (%s). Please contact your web hosting provider\'s support and ask for them to enable it.', 'updraftplus'), 'mcrypt'));
270
+ /*
271
+ .' '.sprintf(__("UpdraftPlus's %s module <strong>requires</strong> %s. Please do not file any support requests; there is no alternative.",'updraftplus'),'Dropbox', 'mcrypt'), 'dropbox')
272
+ */
273
+ }
274
+ $updraftplus_admin->curl_check('Dropbox', false, 'dropbox');
275
+ ?>
276
+ </td>
277
+ </tr>
278
+
279
  <?php
280
 
281
  $defmsg = '<tr class="updraftplusmethod dropbox"><td></td><td><strong>'.__('Need to use sub-folders?','updraftplus').'</strong> '.__('Backups are saved in','updraftplus').' apps/UpdraftPlus. '.__('If you back up several sites into the same Dropbox and want to organise with sub-folders, then ','updraftplus').'<a href="http://updraftplus.com/shop/">'.__("there's an add-on for that.",'updraftplus').'</a></td></tr>';
289
  </td>
290
  </tr>
291
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
292
  <?php
293
  // Legacy: only show this next setting to old users who had a setting stored
294
  if (UpdraftPlus_Options::get_updraft_option('updraft_dropbox_appkey')) {
methods/email.php CHANGED
@@ -12,7 +12,9 @@ class UpdraftPlus_BackupModule_email {
12
 
13
  foreach ($backup_array as $type => $file) {
14
  $fullpath = $updraft_dir.$file;
15
- wp_mail(UpdraftPlus_Options::get_updraft_option('updraft_email'), __("WordPress Backup",'updraftplus')." ".date('Y-m-d H:i',$updraftplus->backup_time), __("Backup is of:",'updraftplus')." ".$type.". ".__('Be wary; email backups may fail because of file size limitations on mail servers.','updraftplus'), null, array($fullpath));
 
 
16
  $updraftplus->uploaded_file($file);
17
  }
18
  $updraftplus->prune_retained_backups("email", null, null);
12
 
13
  foreach ($backup_array as $type => $file) {
14
  $fullpath = $updraft_dir.$file;
15
+ foreach (explode(',', UpdraftPlus_Options::get_updraft_option('updraft_email')) as $sendmail_addr) {
16
+ wp_mail(trim($sendmail_addr), __("WordPress Backup",'updraftplus')." ".date('Y-m-d H:i',$updraftplus->backup_time), __("Backup is of:",'updraftplus')." ".$type.". ".__('Be wary; email backups may fail because of file size limitations on mail servers.','updraftplus'), null, array($fullpath));
17
+ }
18
  $updraftplus->uploaded_file($file);
19
  }
20
  $updraftplus->prune_retained_backups("email", null, null);
methods/ftp.php CHANGED
@@ -173,8 +173,8 @@ class UpdraftPlus_BackupModule_ftp {
173
  public static function credentials_test() {
174
 
175
  $server = $_POST['server'];
176
- $login = $_POST['login'];
177
- $pass = $_POST['pass'];
178
  $path = $_POST['path'];
179
  $nossl = $_POST['nossl'];
180
 
@@ -219,4 +219,4 @@ class UpdraftPlus_BackupModule_ftp {
219
 
220
  }
221
 
222
- ?>
173
  public static function credentials_test() {
174
 
175
  $server = $_POST['server'];
176
+ $login = stripslashes($_POST['login']);
177
+ $pass = stripslashes($_POST['pass']);
178
  $path = $_POST['path'];
179
  $nossl = $_POST['nossl'];
180
 
219
 
220
  }
221
 
222
+ ?>
methods/googledrive.php CHANGED
@@ -117,7 +117,7 @@ class UpdraftPlus_BackupModule_googledrive {
117
  }
118
  }
119
 
120
- function show_authed_admin_success() {
121
 
122
  global $updraftplus_admin;
123
 
@@ -236,7 +236,7 @@ class UpdraftPlus_BackupModule_googledrive {
236
  $hash = md5($file);
237
  $transkey = 'upd_'.$hash.'_gloc';
238
  // This is unset upon completion, so if it is set then we are resuming
239
- $possible_location = get_transient($transkey);
240
 
241
  if ( empty( $possible_location ) ) {
242
  $updraftplus->log("$file: Attempting to upload file to Google Drive.");
@@ -273,7 +273,7 @@ class UpdraftPlus_BackupModule_googledrive {
273
  $counter++; if ($counter >= 20) $counter=0;
274
 
275
  $res = $gdocs_object->upload_chunk();
276
- if (is_string($res)) set_transient($transkey, $res, UPDRAFT_TRANSTIME);
277
  $p = $gdocs_object->get_upload_percentage();
278
  if ( $p - $d >= 1 ) {
279
  $b = intval( $p - $d );
@@ -295,7 +295,7 @@ class UpdraftPlus_BackupModule_googledrive {
295
 
296
  $updraftplus->log("The file was successfully uploaded to Google Drive in ".number_format_i18n( $gdocs_object->time_taken(), 3)." seconds at an upload speed of ".size_format( $gdocs_object->get_upload_speed() )."/s.");
297
 
298
- delete_transient($transkey);
299
  // unset( $this->options['backup_list'][$id]['location'], $this->options['backup_list'][$id]['attempt'] );
300
  }
301
 
@@ -395,6 +395,20 @@ class UpdraftPlus_BackupModule_googledrive {
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>
117
  }
118
  }
119
 
120
+ public static function show_authed_admin_success() {
121
 
122
  global $updraftplus_admin;
123
 
236
  $hash = md5($file);
237
  $transkey = 'upd_'.$hash.'_gloc';
238
  // This is unset upon completion, so if it is set then we are resuming
239
+ $possible_location = $updraftplus->jobdata_get($transkey);
240
 
241
  if ( empty( $possible_location ) ) {
242
  $updraftplus->log("$file: Attempting to upload file to Google Drive.");
273
  $counter++; if ($counter >= 20) $counter=0;
274
 
275
  $res = $gdocs_object->upload_chunk();
276
+ if (is_string($res)) $updraftplus->jobdata_set($transkey, $res);
277
  $p = $gdocs_object->get_upload_percentage();
278
  if ( $p - $d >= 1 ) {
279
  $b = intval( $p - $d );
295
 
296
  $updraftplus->log("The file was successfully uploaded to Google Drive in ".number_format_i18n( $gdocs_object->time_taken(), 3)." seconds at an upload speed of ".size_format( $gdocs_object->get_upload_speed() )."/s.");
297
 
298
+ $updraftplus->jobdata_delete($transkey);
299
  // unset( $this->options['backup_list'][$id]['location'], $this->options['backup_list'][$id]['attempt'] );
300
  }
301
 
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
+
399
+ <tr class="updraftplusmethod googledrive">
400
+ <th></th>
401
+ <td>
402
+ <?php
403
+ global $updraftplus_admin;
404
+ if (!class_exists('SimpleXMLElement')) {
405
+ $updraftplus_admin->show_double_warning('<strong>'.__('Warning','updraftplus').':</strong> '.sprintf(__('Your web server\'s PHP installation does not included a required module (%s). Please contact your web hosting provider\'s support.', 'updraftplus'), 'SimpleXMLElement').' '.sprintf(__("UpdraftPlus's %s module <strong>requires</strong> %s. Please do not file any support requests; there is no alternative.",'updraftplus'),__('Google Drive', 'updraftplus'), 'SimpleXMLElement'), 'googledrive');
406
+ }
407
+ ?>
408
+
409
+ </td>
410
+ </tr>
411
+
412
  <tr class="updraftplusmethod googledrive">
413
  <th>Google Drive:</th>
414
  <td>
methods/s3.php CHANGED
@@ -2,6 +2,17 @@
2
 
3
  class UpdraftPlus_BackupModule_s3 {
4
 
 
 
 
 
 
 
 
 
 
 
 
5
  // Get an S3 object, after setting our options
6
  function getS3($key, $secret, $useservercerts, $disableverify, $nossl) {
7
  global $updraftplus;
@@ -24,11 +35,11 @@ class UpdraftPlus_BackupModule_s3 {
24
  $s3->SSLCACert = UPDRAFTPLUS_DIR.'/includes/cacert.pem';
25
  }
26
  } else {
27
- $updraftplus->log("S3: Curl/SSL is not available. Communications with Amazon S3 will not be encrypted.");
28
  }
29
  } else {
30
  $s3->useSSL = false;
31
- $updraftplus->log("SSL was disabled via the user's preference. Communications with Amazon S3 will not be encrypted.");
32
  }
33
  return $s3;
34
  }
@@ -55,16 +66,24 @@ class UpdraftPlus_BackupModule_s3 {
55
  }
56
  }
57
 
 
58
  function backup($backup_array) {
59
 
60
  global $updraftplus;
61
 
 
 
 
 
 
62
  $s3 = $this->getS3(
63
- UpdraftPlus_Options::get_updraft_option('updraft_s3_login'), UpdraftPlus_Options::get_updraft_option('updraft_s3_pass'), UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts'), UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify'),
 
 
64
  UpdraftPlus_Options::get_updraft_option('updraft_ssl_nossl')
65
  );
66
 
67
- $bucket_name = untrailingslashit(UpdraftPlus_Options::get_updraft_option('updraft_s3_remote_path'));
68
  $bucket_path = "";
69
  $orig_bucket_name = $bucket_name;
70
 
@@ -73,7 +92,7 @@ class UpdraftPlus_BackupModule_s3 {
73
  $bucket_path = $bmatches[2]."/";
74
  }
75
 
76
- $region = @$s3->getBucketLocation($bucket_name);
77
 
78
  // See if we can detect the region (which implies the bucket exists and is ours), or if not create it
79
  if (!empty($region) || @$s3->putBucket($bucket_name, S3::ACL_PRIVATE)) {
@@ -94,98 +113,99 @@ class UpdraftPlus_BackupModule_s3 {
94
  if ($orig_file_size % 5242880 > 0 ) $chunks++;
95
  $hash = md5($file);
96
 
97
- $updraftplus->log("S3 upload ($region): $file (chunks: $chunks) -> s3://$bucket_name/$bucket_path$file");
98
 
99
  $filepath = $bucket_path.$file;
100
 
101
- // This is extra code for the 1-chunk case, but less overhead (no bothering with transients)
102
  if ($chunks < 2) {
103
  if (!$s3->putObjectFile($fullpath, $bucket_name, $filepath)) {
104
- $updraftplus->log("S3 regular upload: failed ($fullpath)");
105
- $updraftplus->error("$file: ".sprintf(__('%s Error: Failed to upload','updraftplus'),'S3'));
106
  } else {
107
- $updraftplus->log("S3 regular upload: success");
108
  $updraftplus->uploaded_file($file);
109
  }
110
  } else {
111
 
112
  // Retrieve the upload ID
113
- $uploadId = get_transient("updraft_${hash}_uid");
114
  if (empty($uploadId)) {
115
  $s3->setExceptions(true);
116
  try {
117
  $uploadId = $s3->initiateMultipartUpload($bucket_name, $filepath);
118
  } catch (Exception $e) {
119
- $updraftplus->log('S3 error whilst trying initiateMultipartUpload: '.$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')');
120
  $uploadId = false;
121
  }
122
  $s3->setExceptions(false);
123
 
124
  if (empty($uploadId)) {
125
- $updraftplus->log("S3 upload: failed: could not get uploadId for multipart upload ($filepath)");
126
- $updraftplus->error(__("S3 upload: getting uploadID for multipart upload failed - see log file for more details",'updraftplus'));
127
  continue;
128
  } else {
129
- $updraftplus->log("S3 chunked upload: got multipart ID: $uploadId");
130
- set_transient("updraft_${hash}_uid", $uploadId, UPDRAFT_TRANSTIME);
131
  }
132
  } else {
133
- $updraftplus->log("S3 chunked upload: retrieved previously obtained multipart ID: $uploadId");
134
  }
135
 
136
  $successes = 0;
137
  $etags = array();
138
  for ($i = 1 ; $i <= $chunks; $i++) {
139
  # Shorted to upd here to avoid hitting the 45-character limit
140
- $etag = get_transient("upd_${hash}_e$i");
141
  if (strlen($etag) > 0) {
142
- $updraftplus->log("S3 chunk $i: was already completed (etag: $etag)");
143
  $successes++;
144
  array_push($etags, $etag);
145
  } else {
146
  // Sanity check: we've seen a case where an overlap was truncating the file from underneath us
147
  if (filesize($fullpath) < $orig_file_size) {
148
- $updraftplus->error("S3 error: $key: chunk $i: file was truncated underneath us (orig_size=$orig_file_size, now_size=".filesize($fullpath).")");
 
149
  }
150
  $etag = $s3->uploadPart($bucket_name, $filepath, $uploadId, $fullpath, $i);
151
  if ($etag !== false && is_string($etag)) {
152
  $updraftplus->record_uploaded_chunk(round(100*$i/$chunks,1), "$i, $etag", $fullpath);
153
  array_push($etags, $etag);
154
- set_transient("upd_${hash}_e$i", $etag, UPDRAFT_TRANSTIME);
155
  $successes++;
156
  } else {
157
- $updraftplus->log("S3 chunk $i: upload failed");
158
- $updraftplus->error(sprintf(__("S3 chunk %s: upload failed",'updraftplus'),$i));
159
  }
160
  }
161
  }
162
  if ($successes >= $chunks) {
163
- $updraftplus->log("S3 upload: all chunks uploaded; will now instruct S3 to re-assemble");
164
 
165
  $s3->setExceptions(true);
166
  try {
167
- if ($s3->completeMultipartUpload ($bucket_name, $filepath, $uploadId, $etags)) {
168
- $updraftplus->log("S3 upload ($key): re-assembly succeeded");
169
  $updraftplus->uploaded_file($file);
170
  } else {
171
- $updraftplus->log("S3 upload ($key): re-assembly failed ($file)");
172
- $updraftplus->error(sprintf(__('S3 upload (%s): re-assembly failed (see log for more details)','updraftplus'),$key));
173
  }
174
  } catch (Exception $e) {
175
- $updraftplus->log("S3 re-assembly error ($key): ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')');
176
- $updraftplus->error($e->getMessage().": ".sprint(__('S3 re-assembly error (%s): (see log file for more)','updraftplus'),$e->getMessage()));
177
  }
178
  // Remember to unset, as the deletion code later reuses the object
179
  $s3->setExceptions(false);
180
  } else {
181
- $updraftplus->log("S3 upload: upload was not completely successful on this run");
182
  }
183
  }
184
  }
185
- $updraftplus->prune_retained_backups('s3', $this, array('s3_object' => $s3, 's3_orig_bucket_name' => $orig_bucket_name));
186
  } else {
187
- $updraftplus->log("S3 Error: Failed to create bucket $bucket_name.");
188
- $updraftplus->error(sprintf(__('S3 Error: Failed to create bucket %s. Check your permissions and credentials.','updraftplus'),$bucket_name));
189
  }
190
  }
191
 
@@ -193,6 +213,9 @@ class UpdraftPlus_BackupModule_s3 {
193
 
194
  global $updraftplus;
195
 
 
 
 
196
  $s3 = $s3arr['s3_object'];
197
  $orig_bucket_name = $s3arr['s3_orig_bucket_name'];
198
 
@@ -203,15 +226,15 @@ class UpdraftPlus_BackupModule_s3 {
203
  $s3_bucket = $orig_bucket_name;
204
  $s3_uri = $file;
205
  }
206
- $updraftplus->log("S3: Delete remote: bucket=$s3_bucket, URI=$s3_uri");
207
 
208
  $s3->setExceptions(true);
209
  try {
210
  if (!$s3->deleteObject($s3_bucket, $s3_uri)) {
211
- $updraftplus->log("S3: Delete failed");
212
  }
213
  } catch (Exception $e) {
214
- $updraftplus->log('S3 delete failed: '.$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')');
215
  }
216
  $s3->setExceptions(false);
217
 
@@ -221,12 +244,17 @@ class UpdraftPlus_BackupModule_s3 {
221
 
222
  global $updraftplus;
223
 
 
 
 
224
  $s3 = $this->getS3(
225
- UpdraftPlus_Options::get_updraft_option('updraft_s3_login'), UpdraftPlus_Options::get_updraft_option('updraft_s3_pass'), UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts'), UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify'),
 
 
226
  UpdraftPlus_Options::get_updraft_option('updraft_ssl_nossl')
227
  );
228
 
229
- $bucket_name = untrailingslashit(UpdraftPlus_Options::get_updraft_option('updraft_s3_remote_path'));
230
  $bucket_path = "";
231
 
232
  if (preg_match("#^([^/]+)/(.*)$#", $bucket_name, $bmatches)) {
@@ -234,37 +262,43 @@ class UpdraftPlus_BackupModule_s3 {
234
  $bucket_path = $bmatches[2]."/";
235
  }
236
 
237
- $region = @$s3->getBucketLocation($bucket_name);
238
  if (!empty($region)) {
239
  $this->set_endpoint($s3, $region);
240
  $fullpath = $updraftplus->backups_dir_location().'/'.$file;
241
  if (!$s3->getObject($bucket_name, $bucket_path.$file, $fullpath, true)) {
242
- $updraftplus->log("S3 Error: Failed to download $file. Check your permissions and credentials.");
243
- $updraftplus->error(sprintf(__('S3 Error: Failed to download %s. Check your permissions and credentials.','updraftplus'),$file));
244
  }
245
  } else {
246
- $updraftplus->log("S3 Error: Failed to access bucket $bucket_name. Check your permissions and credentials.");
247
- $updraftplus->error(sprintf(__('S3 Error: Failed to access bucket %s. Check your permissions and credentials.','updraftplus'),$bucket_name));
248
  }
249
 
250
  }
251
 
252
  public static function config_print_javascript_onready() {
 
 
 
 
253
  ?>
254
- jQuery('#updraft-s3-test').click(function(){
 
255
  var data = {
256
  action: 'updraft_ajax',
257
  subaction: 'credentials_test',
258
- method: 's3',
259
  nonce: '<?php echo wp_create_nonce('updraftplus-credentialtest-nonce'); ?>',
260
- apikey: jQuery('#updraft_s3_apikey').val(),
261
- apisecret: jQuery('#updraft_s3_apisecret').val(),
262
- path: jQuery('#updraft_s3_path').val(),
263
  disableverify: (jQuery('#updraft_ssl_disableverify').is(':checked')) ? 1 : 0,
264
  useservercerts: (jQuery('#updraft_ssl_useservercerts').is(':checked')) ? 1 : 0,
265
  nossl: (jQuery('#updraft_ssl_nossl').is(':checked')) ? 1 : 0,
266
  };
267
  jQuery.post(ajaxurl, data, function(response) {
 
268
  alert('Settings test result: ' + response);
269
  });
270
  });
@@ -272,44 +306,61 @@ class UpdraftPlus_BackupModule_s3 {
272
  }
273
 
274
  public static function config_print() {
 
 
 
 
 
 
275
 
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>
283
  <td>
284
- <p><?php _e('Get your access key and secret key <a href="http://aws.amazon.com/console/">from your AWS console</a>, then pick a (globally unique - all Amazon S3 users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist.','updraftplus');?> <a href="http://updraftplus.com/faqs/i-get-ssl-certificate-errors-when-backing-up-andor-restoring/"><?php _e('If you see errors about SSL certificates, then please go here for help.','updraftplus');?></a></p>
 
 
 
 
 
 
 
 
 
 
 
 
 
285
  </td></tr>
286
- <tr class="updraftplusmethod s3">
287
- <th><?php _e('S3 access key','updraftplus');?>:</th>
288
- <td><input type="text" autocomplete="off" style="width: 292px" id="updraft_s3_apikey" name="updraft_s3_login" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_s3_login')) ?>" /></td>
289
  </tr>
290
- <tr class="updraftplusmethod s3">
291
- <th><?php _e('S3 secret key','updraftplus');?>:</th>
292
- <td><input type="text" autocomplete="off" style="width: 292px" id="updraft_s3_apisecret" name="updraft_s3_pass" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_s3_pass')); ?>" /></td>
293
  </tr>
294
- <tr class="updraftplusmethod s3">
295
- <th><?php _e('S3 location','updraftplus');?>::</th>
296
- <td>s3://<input type="text" style="width: 292px" name="updraft_s3_remote_path" id="updraft_s3_path" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_s3_remote_path')); ?>" /></td>
297
  </tr>
298
- <tr class="updraftplusmethod s3">
299
  <th></th>
300
- <td><p><button id="updraft-s3-test" type="button" class="button-primary" style="font-size:18px !important"><?php echo sprintf(__('Test %s Settings','updraftplus'),'S3');?></button></p></td>
301
  </tr>
302
 
303
- <tr class="updraftplusmethod s3">
304
- <th></th>
305
- <td>
306
- <?php global $updraftplus_admin; $updraftplus_admin->curl_check('Amazon S3', true); ?>
307
- </td>
308
- </tr>
309
  <?php
310
  }
311
 
312
  public static function credentials_test() {
 
 
 
 
313
 
314
  if (empty($_POST['apikey'])) {
315
  printf(__("Failure: No %s was given.",'updraftplus'),__('API key','updraftplus'));
@@ -321,7 +372,7 @@ class UpdraftPlus_BackupModule_s3 {
321
  }
322
 
323
  $key = $_POST['apikey'];
324
- $secret = $_POST['apisecret'];
325
  $path = $_POST['path'];
326
  $useservercerts = (isset($_POST['useservercerts'])) ? absint($_POST['useservercerts']) : 0;
327
  $disableverify = (isset($_POST['disableverify'])) ? absint($_POST['disableverify']) : 0;
@@ -340,43 +391,54 @@ class UpdraftPlus_BackupModule_s3 {
340
  return;
341
  }
342
 
 
 
343
  $s3 = self::getS3($key, $secret, $useservercerts, $disableverify, $nossl);
344
 
345
- $location = @$s3->getBucketLocation($bucket);
346
  if ($location) {
347
  $bucket_exists = true;
348
- $bucket_verb =__('Amazon region','updraftplus').": $location: ";
349
  // $bucket_verb = "accessed (".__('Amazon region','updraftplus').": $location)";
350
  $bucket_region = $location;
351
  } else {
352
- $try_to_create_bucket = @$s3->putBucket($bucket, S3::ACL_PRIVATE);
 
 
 
 
 
 
 
353
  if ($try_to_create_bucket) {
354
  // $bucket_verb = 'created';
355
  $bucket_verb = '';
356
  $bucket_exists = true;
357
  } else {
358
- _e("Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another S3 user may already have taken your name).",'updraftplus');
 
359
  }
360
  }
361
 
362
  if (isset($bucket_exists)) {
363
  $try_file = md5(rand());
364
- self::set_endpoint($s3, $location);
365
  $s3->setExceptions(true);
366
  try {
 
367
  if (!$s3->putObjectString($try_file, $bucket, $path.$try_file)) {
368
  echo __('Failure','updraftplus').": ${bucket_verb}".__('We successfully accessed the bucket, but the attempt to create a file in it failed.','updraftplus');
369
  } else {
370
  echo __('Success','updraftplus').": ${bucket_verb}".__('We accessed the bucket, and were able to create files within it.','updraftplus').' ';
371
  if ($s3->useSSL) {
372
- echo sprintf(__('The communication with %s was encrypted.', 'updraftplus'), 'Amazon S3');
373
  } else {
374
- echo sprintf(__('The communication with %s was not encrypted.', 'updraftplus'), 'Amazon S3');
375
  }
376
  @$s3->deleteObject($bucket, $path.$try_file);
377
  }
378
  } catch (Exception $e) {
379
- echo __('Failure','updraftplus').": ${bucket_verb}".__('We successfully accessed the bucket, but the attempt to create a file in it failed.','updraftplus').' ('.$e->getMessage().')';
380
  }
381
  }
382
 
2
 
3
  class UpdraftPlus_BackupModule_s3 {
4
 
5
+ function get_config() {
6
+ return array(
7
+ 'login' => UpdraftPlus_Options::get_updraft_option('updraft_s3_login'),
8
+ 'pass' => UpdraftPlus_Options::get_updraft_option('updraft_s3_pass'),
9
+ 'remote_path' => UpdraftPlus_Options::get_updraft_option('updraft_s3_remote_path'),
10
+ 'whoweare' => 'S3',
11
+ 'whoweare_long' => 'Amazon S3',
12
+ 'key' => 's3'
13
+ );
14
+ }
15
+
16
  // Get an S3 object, after setting our options
17
  function getS3($key, $secret, $useservercerts, $disableverify, $nossl) {
18
  global $updraftplus;
35
  $s3->SSLCACert = UPDRAFTPLUS_DIR.'/includes/cacert.pem';
36
  }
37
  } else {
38
+ $updraftplus->log("S3: Curl/SSL is not available. Communications will not be encrypted.");
39
  }
40
  } else {
41
  $s3->useSSL = false;
42
+ $updraftplus->log("SSL was disabled via the user's preference. Communications will not be encrypted.");
43
  }
44
  return $s3;
45
  }
66
  }
67
  }
68
 
69
+
70
  function backup($backup_array) {
71
 
72
  global $updraftplus;
73
 
74
+ $config = $this->get_config();
75
+ $whoweare = $config['whoweare'];
76
+ $whoweare_key = $config['key'];
77
+ $whoweare_keys = substr($whoweare_key, 0, 1);
78
+
79
  $s3 = $this->getS3(
80
+ $config['login'],
81
+ $config['pass'],
82
+ UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts'), UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify'),
83
  UpdraftPlus_Options::get_updraft_option('updraft_ssl_nossl')
84
  );
85
 
86
+ $bucket_name = untrailingslashit($config['remote_path']);
87
  $bucket_path = "";
88
  $orig_bucket_name = $bucket_name;
89
 
92
  $bucket_path = $bmatches[2]."/";
93
  }
94
 
95
+ $region = ($config['key'] == 'dreamobjects') ? $config['whoweare'] : @$s3->getBucketLocation($bucket_name);
96
 
97
  // See if we can detect the region (which implies the bucket exists and is ours), or if not create it
98
  if (!empty($region) || @$s3->putBucket($bucket_name, S3::ACL_PRIVATE)) {
113
  if ($orig_file_size % 5242880 > 0 ) $chunks++;
114
  $hash = md5($file);
115
 
116
+ $updraftplus->log("$whoweare upload ($region): $file (chunks: $chunks) -> s3://$bucket_name/$bucket_path$file");
117
 
118
  $filepath = $bucket_path.$file;
119
 
120
+ // This is extra code for the 1-chunk case, but less overhead (no bothering with transient data)
121
  if ($chunks < 2) {
122
  if (!$s3->putObjectFile($fullpath, $bucket_name, $filepath)) {
123
+ $updraftplus->log("$whoweare regular upload: failed ($fullpath)");
124
+ $updraftplus->error("$file: ".sprintf(__('%s Error: Failed to upload','updraftplus'),$whoweare));
125
  } else {
126
+ $updraftplus->log("$whoweare regular upload: success");
127
  $updraftplus->uploaded_file($file);
128
  }
129
  } else {
130
 
131
  // Retrieve the upload ID
132
+ $uploadId = $updraftplus->jobdata_get("upd_${whoweare_keys}_${hash}_uid");
133
  if (empty($uploadId)) {
134
  $s3->setExceptions(true);
135
  try {
136
  $uploadId = $s3->initiateMultipartUpload($bucket_name, $filepath);
137
  } catch (Exception $e) {
138
+ $updraftplus->log("$whoweare error whilst trying initiateMultipartUpload: ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')');
139
  $uploadId = false;
140
  }
141
  $s3->setExceptions(false);
142
 
143
  if (empty($uploadId)) {
144
+ $updraftplus->log("$whoweare upload: failed: could not get uploadId for multipart upload ($filepath)");
145
+ $updraftplus->error(sprintf(__("%s upload: getting uploadID for multipart upload failed - see log file for more details",'updraftplus'),$whoweare));
146
  continue;
147
  } else {
148
+ $updraftplus->log("$whoweare chunked upload: got multipart ID: $uploadId");
149
+ $updraftplus->jobdata_set("upd_${whoweare_keys}_${hash}_uid", $uploadId);
150
  }
151
  } else {
152
+ $updraftplus->log("$whoweare chunked upload: retrieved previously obtained multipart ID: $uploadId");
153
  }
154
 
155
  $successes = 0;
156
  $etags = array();
157
  for ($i = 1 ; $i <= $chunks; $i++) {
158
  # Shorted to upd here to avoid hitting the 45-character limit
159
+ $etag = $updraftplus->jobdata_get("ud_${whoweare_keys}_${hash}_e$i");
160
  if (strlen($etag) > 0) {
161
+ $updraftplus->log("$whoweare chunk $i: was already completed (etag: $etag)");
162
  $successes++;
163
  array_push($etags, $etag);
164
  } else {
165
  // Sanity check: we've seen a case where an overlap was truncating the file from underneath us
166
  if (filesize($fullpath) < $orig_file_size) {
167
+ $updraftplus->log("$whoweare error: $key: chunk $i: file was truncated underneath us (orig_size=$orig_file_size, now_size=".filesize($fullpath).")");
168
+ $updraftplus->error(sprintf(__('%s error: file %s was shortened unexpectedly', 'updraftplus'), $whoweare, $fullpath));
169
  }
170
  $etag = $s3->uploadPart($bucket_name, $filepath, $uploadId, $fullpath, $i);
171
  if ($etag !== false && is_string($etag)) {
172
  $updraftplus->record_uploaded_chunk(round(100*$i/$chunks,1), "$i, $etag", $fullpath);
173
  array_push($etags, $etag);
174
+ $updraftplus->jobdata_set("ud_${whoweare_keys}_${hash}_e$i", $etag);
175
  $successes++;
176
  } else {
177
+ $updraftplus->log("$whoweare chunk $i: upload failed");
178
+ $updraftplus->error(sprintf(__("%s chunk %s: upload failed",'updraftplus'),$whoweare, $i));
179
  }
180
  }
181
  }
182
  if ($successes >= $chunks) {
183
+ $updraftplus->log("$whoweare upload: all chunks uploaded; will now instruct $whoweare to re-assemble");
184
 
185
  $s3->setExceptions(true);
186
  try {
187
+ if ($s3->completeMultipartUpload($bucket_name, $filepath, $uploadId, $etags)) {
188
+ $updraftplus->log("$whoweare upload ($key): re-assembly succeeded");
189
  $updraftplus->uploaded_file($file);
190
  } else {
191
+ $updraftplus->log("$whoweare upload ($key): re-assembly failed ($file)");
192
+ $updraftplus->error(sprintf(__('%s upload (%s): re-assembly failed (see log for more details)','updraftplus'),$whoweare, $key));
193
  }
194
  } catch (Exception $e) {
195
+ $updraftplus->log("$whoweare re-assembly error ($key): ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')');
196
+ $updraftplus->error($e->getMessage().": ".sprint(__('%s re-assembly error (%s): (see log file for more)','updraftplus'),$whoweare, $e->getMessage()));
197
  }
198
  // Remember to unset, as the deletion code later reuses the object
199
  $s3->setExceptions(false);
200
  } else {
201
+ $updraftplus->log("$whoweare upload: upload was not completely successful on this run");
202
  }
203
  }
204
  }
205
+ $updraftplus->prune_retained_backups($config['key'], $this, array('s3_object' => $s3, 's3_orig_bucket_name' => $orig_bucket_name));
206
  } else {
207
+ $updraftplus->log("$whoweare Error: Failed to create bucket $bucket_name.");
208
+ $updraftplus->error(sprintf(__('%s Error: Failed to create bucket %s. Check your permissions and credentials.','updraftplus'),$whoweare, $bucket_name));
209
  }
210
  }
211
 
213
 
214
  global $updraftplus;
215
 
216
+ $config = $this->get_config();
217
+ $whoweare = $config['whoweare'];
218
+
219
  $s3 = $s3arr['s3_object'];
220
  $orig_bucket_name = $s3arr['s3_orig_bucket_name'];
221
 
226
  $s3_bucket = $orig_bucket_name;
227
  $s3_uri = $file;
228
  }
229
+ $updraftplus->log("$whoweare: Delete remote: bucket=$s3_bucket, URI=$s3_uri");
230
 
231
  $s3->setExceptions(true);
232
  try {
233
  if (!$s3->deleteObject($s3_bucket, $s3_uri)) {
234
+ $updraftplus->log("$whoweare: Delete failed");
235
  }
236
  } catch (Exception $e) {
237
+ $updraftplus->log("$whoweare delete failed: ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')');
238
  }
239
  $s3->setExceptions(false);
240
 
244
 
245
  global $updraftplus;
246
 
247
+ $config = $this->get_config();
248
+ $whoweare = $config['whoweare'];
249
+
250
  $s3 = $this->getS3(
251
+ $config['login'],
252
+ $config['pass'],
253
+ UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts'), UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify'),
254
  UpdraftPlus_Options::get_updraft_option('updraft_ssl_nossl')
255
  );
256
 
257
+ $bucket_name = untrailingslashit($config['remote_path']);
258
  $bucket_path = "";
259
 
260
  if (preg_match("#^([^/]+)/(.*)$#", $bucket_name, $bmatches)) {
262
  $bucket_path = $bmatches[2]."/";
263
  }
264
 
265
+ $region = ($config['key'] == 'dreamobjects') ? $config['whoweare'] : @$s3->getBucketLocation($bucket_name);
266
  if (!empty($region)) {
267
  $this->set_endpoint($s3, $region);
268
  $fullpath = $updraftplus->backups_dir_location().'/'.$file;
269
  if (!$s3->getObject($bucket_name, $bucket_path.$file, $fullpath, true)) {
270
+ $updraftplus->log("$whoweare Error: Failed to download $file. Check your permissions and credentials.");
271
+ $updraftplus->error(sprintf(__('%s Error: Failed to download %s. Check your permissions and credentials.','updraftplus'),$whoweare, $file));
272
  }
273
  } else {
274
+ $updraftplus->log("$whoweare Error: Failed to access bucket $bucket_name. Check your permissions and credentials.");
275
+ $updraftplus->error(sprintf(__('%s Error: Failed to access bucket %s. Check your permissions and credentials.','updraftplus'),$whoweare, $bucket_name));
276
  }
277
 
278
  }
279
 
280
  public static function config_print_javascript_onready() {
281
+ self::config_print_javascript_onready_engine('s3', 'S3');
282
+ }
283
+
284
+ public static function config_print_javascript_onready_engine($key, $whoweare) {
285
  ?>
286
+ jQuery('#updraft-<?php echo $key; ?>-test').click(function(){
287
+ jQuery('#updraft-<?php echo $key; ?>-test').html('<?php echo sprintf(__('Testing %s Settings...', 'updraftplus'),$whoweare); ?>');
288
  var data = {
289
  action: 'updraft_ajax',
290
  subaction: 'credentials_test',
291
+ method: '<?php echo $key; ?>',
292
  nonce: '<?php echo wp_create_nonce('updraftplus-credentialtest-nonce'); ?>',
293
+ apikey: jQuery('#updraft_<?php echo $key; ?>_apikey').val(),
294
+ apisecret: jQuery('#updraft_<?php echo $key; ?>_apisecret').val(),
295
+ path: jQuery('#updraft_<?php echo $key; ?>_path').val(),
296
  disableverify: (jQuery('#updraft_ssl_disableverify').is(':checked')) ? 1 : 0,
297
  useservercerts: (jQuery('#updraft_ssl_useservercerts').is(':checked')) ? 1 : 0,
298
  nossl: (jQuery('#updraft_ssl_nossl').is(':checked')) ? 1 : 0,
299
  };
300
  jQuery.post(ajaxurl, data, function(response) {
301
+ jQuery('#updraft-<?php echo $key; ?>-test').html('<?php echo sprintf(__('Test %s Settings', 'updraftplus'),$whoweare); ?>');
302
  alert('Settings test result: ' + response);
303
  });
304
  });
306
  }
307
 
308
  public static function config_print() {
309
+
310
+ self::config_print_engine('s3', 'S3', 'Amazon S3', 'AWS', 'http://aws.amazon.com/console/', '<img src="https://d36cz9buwru1tt.cloudfront.net/Powered-by-Amazon-Web-Services.jpg" alt="Amazon Web Services">');
311
+
312
+ }
313
+
314
+ public static function config_print_engine($key, $whoweare_short, $whoweare_long, $console_descrip, $console_url, $img_html = '') {
315
 
316
  ?>
317
+ <tr class="updraftplusmethod <?php echo $key; ?>">
318
  <td></td>
319
+ <td><?php echo $img_html ?><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'),$whoweare_long);?></em></p></td>
320
  </tr>
321
+ <tr class="updraftplusmethod <?php echo $key; ?>">
322
  <th></th>
323
  <td>
324
+ <?php
325
+ global $updraftplus_admin;
326
+ if (!class_exists('SimpleXMLElement')) {
327
+ $updraftplus_admin->show_double_warning('<strong>'.__('Warning','updraftplus').':</strong> '.sprintf(__('Your web server\'s PHP installation does not included a required module (%s). Please contact your web hosting provider\'s support.', 'updraftplus'), 'SimpleXMLElement').' '.sprintf(__("UpdraftPlus's %s module <strong>requires</strong> %s. Please do not file any support requests; there is no alternative.",'updraftplus'),$whoweare_long, 'SimpleXMLElement'), $key);
328
+ }
329
+ $updraftplus_admin->curl_check($whoweare_long, true, $key);
330
+ ?>
331
+
332
+ </td>
333
+ </tr>
334
+ <tr class="updraftplusmethod <?php echo $key; ?>">
335
+ <th></th>
336
+ <td>
337
+ <p><?php echo sprintf(__('Get your access key and secret key <a href="%s">from your %s console</a>, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist.','updraftplus'), $console_url, $console_descrip, $whoweare_long);?> <a href="http://updraftplus.com/faqs/i-get-ssl-certificate-errors-when-backing-up-andor-restoring/"><?php _e('If you see errors about SSL certificates, then please go here for help.','updraftplus');?></a></p>
338
  </td></tr>
339
+ <tr class="updraftplusmethod <?php echo $key; ?>">
340
+ <th><?php echo sprintf(__('%s access key','updraftplus'), $whoweare_short);?>:</th>
341
+ <td><input type="text" autocomplete="off" style="width: 292px" id="updraft_<?php echo $key; ?>_apikey" name="updraft_<?php echo $key; ?>_login" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_'.$key.'_login')) ?>" /></td>
342
  </tr>
343
+ <tr class="updraftplusmethod <?php echo $key; ?>">
344
+ <th><?php echo sprintf(__('%s secret key','updraftplus'), $whoweare_short);?>:</th>
345
+ <td><input type="text" autocomplete="off" style="width: 292px" id="updraft_<?php echo $key; ?>_apisecret" name="updraft_<?php echo $key; ?>_pass" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_'.$key.'_pass')); ?>" /></td>
346
  </tr>
347
+ <tr class="updraftplusmethod <?php echo $key; ?>">
348
+ <th><?php echo sprintf(__('%s location','updraftplus'), $whoweare_short);?>:</th>
349
+ <td><?php echo $key; ?>://<input title="<?php echo htmlspecialchars(__('Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath', 'updraftplus')); ?>" type="text" style="width: 292px" name="updraft_<?php echo $key; ?>_remote_path" id="updraft_<?php echo $key; ?>_path" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_'.$key.'_remote_path')); ?>" /></td>
350
  </tr>
351
+ <tr class="updraftplusmethod <?php echo $key; ?>">
352
  <th></th>
353
+ <td><p><button id="updraft-<?php echo $key; ?>-test" type="button" class="button-primary" style="font-size:18px !important"><?php echo sprintf(__('Test %s Settings','updraftplus'),$whoweare_short);?></button></p></td>
354
  </tr>
355
 
 
 
 
 
 
 
356
  <?php
357
  }
358
 
359
  public static function credentials_test() {
360
+ self::credentials_test_engine(self::get_config());
361
+ }
362
+
363
+ public static function credentials_test_engine($config) {
364
 
365
  if (empty($_POST['apikey'])) {
366
  printf(__("Failure: No %s was given.",'updraftplus'),__('API key','updraftplus'));
372
  }
373
 
374
  $key = $_POST['apikey'];
375
+ $secret = stripslashes($_POST['apisecret']);
376
  $path = $_POST['path'];
377
  $useservercerts = (isset($_POST['useservercerts'])) ? absint($_POST['useservercerts']) : 0;
378
  $disableverify = (isset($_POST['disableverify'])) ? absint($_POST['disableverify']) : 0;
391
  return;
392
  }
393
 
394
+ $whoweare = $config['whoweare'];
395
+
396
  $s3 = self::getS3($key, $secret, $useservercerts, $disableverify, $nossl);
397
 
398
+ $location = ($config['key'] == 'dreamobjects') ? $config['whoweare'] : @$s3->getBucketLocation($bucket);
399
  if ($location) {
400
  $bucket_exists = true;
401
+ $bucket_verb = ($config['key'] == 'dreamobjects') ? '' : __('Region','updraftplus').": $location: ";
402
  // $bucket_verb = "accessed (".__('Amazon region','updraftplus').": $location)";
403
  $bucket_region = $location;
404
  } else {
405
+ $s3->setExceptions(true);
406
+ try {
407
+ $try_to_create_bucket = @$s3->putBucket($bucket, S3::ACL_PRIVATE);
408
+ } catch (S3Exception $e) {
409
+ $try_to_create_bucket = false;
410
+ $s3_error = $e->getMessage();
411
+ }
412
+ $s3->setExceptions(false);
413
  if ($try_to_create_bucket) {
414
  // $bucket_verb = 'created';
415
  $bucket_verb = '';
416
  $bucket_exists = true;
417
  } else {
418
+ echo sprintf(__("Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another %s user may already have taken your name).",'updraftplus'),$whoweare);
419
+ if (isset($s3_error)) echo "\n\n".sprintf(__('The error reported by %s was:','updraftplus'), $config['key']).' '.$s3_error;
420
  }
421
  }
422
 
423
  if (isset($bucket_exists)) {
424
  $try_file = md5(rand());
425
+ call_user_func(array('UpdraftPlus_BackupModule_'.$config['key'], 'set_endpoint'), $s3, $location);
426
  $s3->setExceptions(true);
427
  try {
428
+
429
  if (!$s3->putObjectString($try_file, $bucket, $path.$try_file)) {
430
  echo __('Failure','updraftplus').": ${bucket_verb}".__('We successfully accessed the bucket, but the attempt to create a file in it failed.','updraftplus');
431
  } else {
432
  echo __('Success','updraftplus').": ${bucket_verb}".__('We accessed the bucket, and were able to create files within it.','updraftplus').' ';
433
  if ($s3->useSSL) {
434
+ echo sprintf(__('The communication with %s was encrypted.', 'updraftplus'), $config['whoweare_long']);
435
  } else {
436
+ echo sprintf(__('The communication with %s was not encrypted.', 'updraftplus'), $config['whoweare_long']);
437
  }
438
  @$s3->deleteObject($bucket, $path.$try_file);
439
  }
440
  } catch (Exception $e) {
441
+ echo __('Failure','updraftplus').": ${bucket_verb}".__('We successfully accessed the bucket, but the attempt to create a file in it failed.','updraftplus').' '.__('Please check your access credentials.','updraftplus').' ('.$e->getMessage().')';
442
  }
443
  }
444
 
options.php CHANGED
@@ -45,6 +45,10 @@ class UpdraftPlus_Options {
45
  register_setting('updraft-options-group', 'updraft_s3_pass' );
46
  register_setting('updraft-options-group', 'updraft_s3_remote_path' );
47
 
 
 
 
 
48
  register_setting('updraft-options-group', 'updraft_cloudfiles_authurl' );
49
  register_setting('updraft-options-group', 'updraft_cloudfiles_user' );
50
  register_setting('updraft-options-group', 'updraft_cloudfiles_apikey' );
45
  register_setting('updraft-options-group', 'updraft_s3_pass' );
46
  register_setting('updraft-options-group', 'updraft_s3_remote_path' );
47
 
48
+ register_setting('updraft-options-group', 'updraft_dreamobjects_login' );
49
+ register_setting('updraft-options-group', 'updraft_dreamobjects_pass' );
50
+ register_setting('updraft-options-group', 'updraft_dreamobjects_remote_path' );
51
+
52
  register_setting('updraft-options-group', 'updraft_cloudfiles_authurl' );
53
  register_setting('updraft-options-group', 'updraft_cloudfiles_user' );
54
  register_setting('updraft-options-group', 'updraft_cloudfiles_apikey' );
readme.txt CHANGED
@@ -1,9 +1,9 @@
1
  === UpdraftPlus Backup ===
2
  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.6.2
7
  Author URI: http://updraftplus.com
8
  Donate link: http://david.dw-perspective.org.uk/donate
9
  License: GPLv3 or later
@@ -12,13 +12,14 @@ Easy and complete backups and restoration. Manual or automated backups (Amazon S
12
 
13
  == Description ==
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
 
22
  * Files and databases can have separate schedules
23
  * Failed uploads are automatically resumed/retried
24
  * Select which files to backup (plugins, themes, content, other)
@@ -46,14 +47,16 @@ UpdraftPlus is written by professional WordPress developers. If your site needs
46
 
47
  = Are you multi-lingual? Can you translate? =
48
 
49
- Are you able to translate UpdraftPlus into another language? Are you ready to help speakers of your language? UpdraftPlus itself is ready and waiting - the only work needed is the translating. The translation process is easy - go here for instructions: <a href="http://updraftplus.com/translate/">http://updraftplus.com/translate/</a>. (Or if you're an expert WordPress translator already, then just pick out the .pot file from the wp-content/plugins/updraftplus/languages/ directory).
50
 
51
  Many thanks to the existing translators:
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
 
@@ -103,7 +106,7 @@ You can check the changelog for changes; but the original Updraft, before I fork
103
 
104
  = Any known bugs ? =
105
 
106
- Not a bug, but one issue to be aware of is that backups of very large sites (lots of uploaded media) are quite complex matters, given the limits of running inside WordPress on a huge variety of different web hosting setups. With large sites, you need to use Amazon S3, which UpdraftPlus supports (since 0.9.20), Google Drive (0.9.21), Dropbox (since 1.2.19), WebDAV (since 1.4.30), or FTP (since 1.5.9) because these support chunked, resumable uploads. Other backup methods have code (since 0.9.0) to retry failed uploads of an archive, but the upload cannot be chunked, so if an archive is enormous (i.e. cannot be completely uploaded in the time that PHP is allowed for running on your web host) it cannot work.
107
 
108
  = My site was hacked, and I have no backups! I thought UpdraftPlus was working! Can I kill you? =
109
 
@@ -119,6 +122,35 @@ Thanks for asking - yes, I have. Check out my profile page - http://profiles.wor
119
 
120
  == Changelog ==
121
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  = 1.6.2 - 05/11/2013 =
123
  * FIX: Prevent PHP fatal error on some database restores
124
 
@@ -127,7 +159,7 @@ Thanks for asking - yes, I have. Check out my profile page - http://profiles.wor
127
  * FEATURE: The "More files" add-on can now back up any files from anywhere on your filesystem (not just parts of WordPress)
128
  * FEATURE: The "More files" add-on can now exclude specified directories from the backup of WordPress core
129
  * FEATURE: Dropbox and Google Drive now check available quota before uploading
130
- * FEATURE: Nederlands / Dutch (nl_NL) translation: thanks to Hans van der Vlist - hansvandervlist@gmail.com
131
  * FEATURE: The SFTP/FTPS add-on now supports implicit encryption (so now both explicit + implicit are supported)
132
  * FIX: Google Drive now requires additional permissions to download your files - you will need to re-authenticate if you are downloading or restoring.
133
  * FIX: Fix serious corruption issue in larger Rackspace Cloud Files backups (fixed a bug in Rackspace's Cloud Files library)
@@ -148,9 +180,9 @@ Thanks for asking - yes, I have. Check out my profile page - http://profiles.wor
148
  * FEATURE: Built-in multi-uploader, allowing easier restoration of old backup sets
149
  * FEATURE: Allow instant downloading of the most recently modified log file
150
  * FEATURE: Built in drag-and-drop database decrypter for manual decryption
151
- * FEATURE: Deutsch / German translation: thanks to Marcel Herrguth - mherrguth@mrgeneration.de
152
  * FEATURE: Magyar / Hungarian translation: thanks to Szépe Viktor - http://www.szepe.net
153
- * FEATURE: Spanish / Español translation: thanks to Fernando Villasmil - villasmil.fernando@gmail.com
154
  * FEATURE: Added encryption (used by default) to Amazon S3 communications
155
  * FEATURE: New "more files" add-on, allowing backup of WordPress core and non-WordPress files
156
  * RELIABILITY: Various algorithm tweaks to help larger sites on lower resources. Largest site a known user has: 1.5Gb
@@ -458,4 +490,4 @@ We recognise and thank the following for code and/or libraries used and/or modif
458
  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.
459
 
460
  == Upgrade Notice ==
461
- 1.6.2: Prevent PHP fatal error on some database restores.
1
  === UpdraftPlus Backup ===
2
  Contributors: DavidAnderson
3
+ Tags: backup, backups, restore, database, rackspace, amazon, s3, amazon s3, dropbox, google drive, rackspace cloud files, rackspace, cloud files, dreamhost, dreamobjects, ftp, webdav, back up, multisite, restoration, sftp, ftps, migrate, duplicate, copy, updraft, schedule, database backup, db backup
4
  Requires at least: 3.1
5
+ Tested up to: 3.6
6
+ Stable tag: 1.6.17
7
  Author URI: http://updraftplus.com
8
  Donate link: http://david.dw-perspective.org.uk/donate
9
  License: GPLv3 or later
12
 
13
  == Description ==
14
 
15
+ <a href="http://updraftplus.com">UpdraftPlus</a> simplifies backups (and restoration). Backup into the cloud (Amazon S3, Dropbox, Google Drive, Rackspace Cloud, DreamObjects, 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 140,000 downloads). Ranks in the top 1% on rankwp.com (228 out of 25,000 plugins).
18
+ * Top-quality: ranks 45th out of 25,000 plugins for quality on rankwp.com (top 0.25% - last checked 23rd May 2013).
19
+ * Supports backups to Amazon S3, Dropbox, Rackspace Cloud Files, Google Drive, DreamHost DreamObjects, FTP and email. Also (via an add-on) FTP over SSL, SFTP and WebDAV. (Note: Microsoft forbid SkyDrive to be used by backup software).
20
  * Quick restore (both file and database backups)
21
  * Backup automatically on a repeating schedule
22
+ * Site duplicator/migrator: can copy sites, and (with add-on) move them to new locations
23
  * Files and databases can have separate schedules
24
  * Failed uploads are automatically resumed/retried
25
  * Select which files to backup (plugins, themes, content, other)
47
 
48
  = Are you multi-lingual? Can you translate? =
49
 
50
+ Are you able to translate UpdraftPlus into another language? Are you ready to help speakers of your language? UpdraftPlus itself is ready and waiting - the only work needed is the translating. The translation process is easy, and web-based - go here for instructions: <a href="http://updraftplus.com/translate/">http://updraftplus.com/translate/</a>. (Or if you're an expert WordPress translator already, then just pick out the .pot file from the wp-content/plugins/updraftplus/languages/ directory).
51
 
52
  Many thanks to the existing translators:
53
 
54
+ * Deutsch / German (de_DE): Marcel Herrguth - mherrguth at mrgeneration.de
55
+ * Español / Spanish (es_ES): Fernando Villasmil - villasmil.fernando at gmail.com
56
  * Magyar / Hungarian (hu_HU): Szépe Viktor - http://www.szepe.net
57
+ * Nederlands / Dutch (nl_NL): Hans van der Vlist - hansvandervlist at gmail.com
58
+ * Polski / Polish (pl_PL): Bartosz Kaczmarek - barth.kaczmarek at gmail.com
59
+ * Italiano / Italian (it_IT): Francesco Carpana - f.carpana at gmail.com
60
 
61
  = Other support =
62
 
106
 
107
  = Any known bugs ? =
108
 
109
+ Not a bug, but one issue to be aware of is that backups of very large sites (lots of uploaded media) are quite complex matters, given the limits of running inside WordPress on a huge variety of different web hosting setups. With large sites, you need to use Amazon S3, which UpdraftPlus supports Google Drive, Dropbox, WebDAV (since 1.4.30), Rackspace Cloud Files (since 1.5.21), DreamObjects (since 1.6.6) or FTP (since 1.5.9) because these support chunked, resumable uploads. Other backup methods have code (since 0.9.0) to retry failed uploads of an archive, but the upload cannot be chunked, so if an archive is enormous (i.e. cannot be completely uploaded in the time that PHP is allowed for running on your web host) it cannot work. (Though as far as we're aware, no other cloud backup plugins support chunking, so you're still no worse off than with the alternatives).
110
 
111
  = My site was hacked, and I have no backups! I thought UpdraftPlus was working! Can I kill you? =
112
 
122
 
123
  == Changelog ==
124
 
125
+ = 1.6.17 - 2013/06/06 =
126
+ * FEATURE: News blog - http://updraftplus.com/news/ - please subscribe if you want to stay up to date with news of new features, tips, and special offers. RSS link: http://feeds.feedburner.com/UpdraftPlus
127
+ * FEATURE: Restoration/migration now copes with a change of table prefix, and asks WordPress to recreate your .htaccess/web.config file
128
+ * FEATURE: Add support for DreamHost DreamObjects (http://dreamhost.com/cloud/dreamobjects/)
129
+ * FEATURE: Polski / Polish (pl_PL) translation: thanks to Bartosz Kaczmarek (barth.kaczmarek at gmail.com)
130
+ * FEATURE: Add expert options to count expected uncompressed backup size, show/delete active jobs, and PHP info
131
+ * FEATURE: Send backup reports to multiple addresses (comma-separate the addresses you wish to use)
132
+ * FIX: Inform users of Dropbox tokens which stop working
133
+ * FIX: Don't flag an error if mu-plugins are selected, but none are found and WordPress agrees that none exist
134
+ * COMPATIBILITY: WordPress multisite post-3.5 does not store blog uploads separately from main uploads directory
135
+ * COMPATIBILITY: Now marked as compatible with WordPress 3.6
136
+ * TWEAK: When errors occur, list them in the notification email and attach the log file
137
+ * TWEAK: Use only one transient per job, and clean it up upon completion
138
+ * TWEAK: Added a "Clone/Migrate" button to give a visual clue for people wanting to do this
139
+ * TWEAK: More verbose error reporting from PclZip
140
+ * TWEAK: After database restoration, permalinks are flushed (often helps regenerate .htaccess+web.config files)
141
+ * TWEAK: Database backups now put the options table first, to allow earlier changing of site URL upon migration
142
+ * TWEAK: Show PHP + web server versions in the debug information
143
+ * TWEAK: More sophisticated attempts to get a writable backup directory, and more helpful messages if we can't
144
+ * TWEAK: Some more logging, data-gathering and algorithm-tweaking to especially improve the chances for people with astonishingly slow web hosting, but also tweaks that improve efficiency everywhere, especially for larger backup sets.
145
+ * TWEAK: Migrator plugin now does search+replace after each table (instead of after them all)
146
+ * TWEAK: Clean up temporary files earlier where safe+possible (can lower disk space requirements)
147
+ * TWEAK: Re-scan of known sets now removes those known to be gone from the list
148
+ * TWEAK: Made a few things use AJAX instead of full page loads
149
+ * TWEAK: Replace Rackspace logo with current version
150
+ * TWEAK: Make missing PHP component warnings more prominent
151
+ * TWEAK: Warn users if they have W3 Total Cache's object cache (which has a bug that affects scheduled tasks) active.
152
+ * TWEAK: Add a notice for users who have turned on debugging (some forget to turn it off, then ask for support when they see lots of debugging notices)
153
+
154
  = 1.6.2 - 05/11/2013 =
155
  * FIX: Prevent PHP fatal error on some database restores
156
 
159
  * FEATURE: The "More files" add-on can now back up any files from anywhere on your filesystem (not just parts of WordPress)
160
  * FEATURE: The "More files" add-on can now exclude specified directories from the backup of WordPress core
161
  * FEATURE: Dropbox and Google Drive now check available quota before uploading
162
+ * FEATURE: Nederlands / Dutch (nl_NL) translation: thanks to Hans van der Vlist - hansvandervlist at gmail.com
163
  * FEATURE: The SFTP/FTPS add-on now supports implicit encryption (so now both explicit + implicit are supported)
164
  * FIX: Google Drive now requires additional permissions to download your files - you will need to re-authenticate if you are downloading or restoring.
165
  * FIX: Fix serious corruption issue in larger Rackspace Cloud Files backups (fixed a bug in Rackspace's Cloud Files library)
180
  * FEATURE: Built-in multi-uploader, allowing easier restoration of old backup sets
181
  * FEATURE: Allow instant downloading of the most recently modified log file
182
  * FEATURE: Built in drag-and-drop database decrypter for manual decryption
183
+ * FEATURE: Deutsch / German translation: thanks to Marcel Herrguth - mherrguth at mrgeneration.de
184
  * FEATURE: Magyar / Hungarian translation: thanks to Szépe Viktor - http://www.szepe.net
185
+ * FEATURE: Spanish / Español translation: thanks to Fernando Villasmil - villasmil.fernando at gmail.com
186
  * FEATURE: Added encryption (used by default) to Amazon S3 communications
187
  * FEATURE: New "more files" add-on, allowing backup of WordPress core and non-WordPress files
188
  * RELIABILITY: Various algorithm tweaks to help larger sites on lower resources. Largest site a known user has: 1.5Gb
490
  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.
491
 
492
  == Upgrade Notice ==
493
+ 1.6.17: WP 3.6 support. Dreamhost Dreamobjects support. Polish translation. More expert options. Restoration to sites with different table prefixes. Lots of usability + portability tweaks.
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.6.2
8
  Donate link: http://david.dw-perspective.org.uk/donate
9
  License: GPLv3 or later
10
  Text Domain: updraftplus
@@ -13,21 +13,35 @@ Author URI: http://updraftplus.com
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)
@@ -48,7 +62,7 @@ TODO - some of these are out of date/done, needs pruning
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)
@@ -96,9 +110,12 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
96
  define('UPDRAFTPLUS_DIR', dirname(__FILE__));
97
  define('UPDRAFTPLUS_URL', plugins_url('', __FILE__));
98
  define('UPDRAFT_DEFAULT_OTHERS_EXCLUDE','upgrade,cache,updraft,index.php,backup,backups');
 
 
 
99
  // This is used in various places, based on our assumption of the maximum time any job should take. May need lengthening in future if we get reports which show enormous sets hitting the limit.
100
- // Also one section requires at least 1% progress each run, so on a 5-minute schedule, that equals just under 9 hours - then an extra allowance takes it just over
101
- define('UPDRAFT_TRANSTIME', 3600*9+5);
102
 
103
  // Load add-ons
104
  if (is_file(UPDRAFTPLUS_DIR.'/premium.php')) require_once(UPDRAFTPLUS_DIR.'/premium.php');
@@ -117,7 +134,10 @@ if (!isset($updraftplus)) $updraftplus = new UpdraftPlus();
117
 
118
  if (!$updraftplus->memory_check(192)) {
119
  // Experience appears to show that the memory limit is only likely to be hit (unless it is very low) by single files that are larger than available memory (when compressed)
120
- @ini_set('memory_limit', WP_MAX_MEMORY_LIMIT); //up the memory limit to the maximum WordPress is allowing for large backup files
 
 
 
121
  }
122
 
123
  if (!class_exists('UpdraftPlus_Options')) require_once(UPDRAFTPLUS_DIR.'/options.php');
@@ -139,6 +159,7 @@ class UpdraftPlus {
139
  "ftp" => "FTP",
140
  'sftp' => 'SFTP',
141
  'webdav' => 'WebDAV',
 
142
  "email" => "Email"
143
  );
144
 
@@ -154,6 +175,7 @@ class UpdraftPlus {
154
  var $backup_dir;
155
 
156
  var $jobdata;
 
157
 
158
  // Used to schedule resumption attempts beyond the tenth, if needed
159
  var $current_resumption;
@@ -179,12 +201,12 @@ class UpdraftPlus {
179
  add_action('admin_menu', array($this,'admin_init'), 9);
180
  add_action('updraft_backup', array($this,'backup_files'));
181
  add_action('updraft_backup_database', array($this,'backup_database'));
182
- # backup_all is used by the manual "Backup Now" button
183
  add_action('updraft_backup_all', array($this,'backup_all'));
184
  # this is our runs-after-backup event, whose purpose is to see if it succeeded or failed, and resume/mom-up etc.
185
  add_action('updraft_backup_resume', array($this,'backup_resume'), 10, 3);
186
  # http://codex.wordpress.org/Plugin_API/Filter_Reference/cron_schedules
187
- add_filter('cron_schedules', array($this,'modify_cron_schedules'));
188
  add_action('plugins_loaded', array($this, 'load_translations'));
189
 
190
  register_deactivation_hook(__FILE__, array($this, 'deactivation'));
@@ -299,15 +321,20 @@ class UpdraftPlus {
299
  }
300
 
301
  // Cleans up temporary files found in the updraft directory
302
- function clean_temporary_files() {
 
 
303
  $updraft_dir = $this->backups_dir_location();
304
  if ($handle = opendir($updraft_dir)) {
305
  $now_time=time();
306
  while (false !== ($entry = readdir($handle))) {
307
  // The latter match is for files created internally by zipArchive::addFile
308
- if ((preg_match('/\.tmp(\.gz)?$/i', $entry) || preg_match('/\.zip\.tmp\.([A-Za-z0-9]){6}?$/i', $entry)) && is_file($updraft_dir.'/'.$entry) && $now_time-filemtime($updraft_dir.'/'.$entry)>86400) {
309
- $this->log("Deleting old temporary file: $entry");
310
- @unlink($updraft_dir.'/'.$entry);
 
 
 
311
  }
312
  }
313
  @closedir($handle);
@@ -330,8 +357,8 @@ class UpdraftPlus {
330
  $this->logfile_handle = fopen($this->logfile_name, 'a');
331
  $this->opened_log_time = microtime(true);
332
  $this->log('Opened log file at time: '.date('r'));
333
- @include(ABSPATH.'wp-includes/version.php');
334
  global $wp_version;
 
335
  $logline = "UpdraftPlus: ".$this->version." WP: ".$wp_version." PHP: ".phpversion()." (".php_uname().") Server: ".$_SERVER["SERVER_SOFTWARE"]." max_execution_time: ".@ini_get("max_execution_time")." memory_limit: ".ini_get('memory_limit')." ZipArchive::addFile : ";
336
 
337
  // method_exists causes some faulty PHP installations to segfault, leading to support requests
@@ -346,14 +373,14 @@ class UpdraftPlus {
346
  }
347
 
348
  # Logs the given line, adding (relative) time stamp and newline
349
- function log($line) {
350
  if ($this->logfile_handle) fwrite($this->logfile_handle, sprintf("%08.03f", round(microtime(true)-$this->opened_log_time, 3))." (".$this->current_resumption.") $line\n");
351
  if ('download' == $this->jobdata_get('job_type')) {
352
  // Download messages are keyed on the job (since they could be running several), and transient
353
  // The values of the POST array were checked before
354
  set_transient('ud_dlmess_'.$_POST['timestamp'].'_'.$_POST['type'], $line." (".date('M d H:i:s').")", 3600);
355
  } else {
356
- UpdraftPlus_Options::update_updraft_option('updraft_lastmessage', $line." (".date('M d H:i:s').")");
357
  }
358
  if (defined('UPDRAFTPLUS_CONSOLELOG')) print $line."\n";
359
  }
@@ -369,21 +396,93 @@ class UpdraftPlus {
369
  $log = ucfirst($service)." chunked upload: $percent % uploaded";
370
  if ($extra) $log .= " ($extra)";
371
  $this->log($log);
372
- // If we are on an 'overtime' resumption run, and we are still meainingfully uploading, then schedule a new resumption
373
- // Our definition of meaningful is that we must maintain an overall average of at least 1% per run, after allowing 9 runs for everything else to get going
374
- // i.e. Max 109 runs = 545 minutes = 9 hrs 05
375
- // If they get 2 minutes on each run, and the file is 1Gb, then that equals 10.2Mb/120s = minimum 87Kb/s upload speed required
376
 
377
- if ($percent > ( $this->current_resumption - 9)) {
 
378
  $this->something_useful_happened();
379
  }
380
  }
381
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
382
  function something_useful_happened() {
383
 
 
 
384
  // First, update the record of maximum detected runtime on each run
385
  $time_passed = $this->jobdata_get('run_times');
386
  if (!is_array($time_passed)) $time_passed = array();
 
387
  $time_passed[$this->current_resumption] = microtime(true)-$this->opened_log_time;
388
  $this->jobdata_set('run_times', $time_passed);
389
 
@@ -488,23 +587,12 @@ class UpdraftPlus {
488
 
489
  // We just do this once, as we don't want to be in permanent conflict with the overlap detector
490
  if ($resumption_no == 8) {
491
- $max_time = 0;
492
  // $time_passed is set earlier
493
- $timings_string = "";
494
- $run_times_known=0;
495
- for ($i=0; $i<=7; $i++) {
496
- $timings_string .= "$i:";
497
- if (isset($time_passed[$i])) {
498
- $timings_string .= round($time_passed[$i], 1).' ';
499
- $run_times_known++;
500
- if ($time_passed[$i] > $max_time) $max_time = round($time_passed[$i]);
501
- } else {
502
- $timings_string .= '? ';
503
- }
504
- }
505
  $this->log("Time passed on previous resumptions: $timings_string (known: $run_times_known, max: $max_time)");
506
- if ($run_times_known >= 6 && ($max_time + 35 < $resume_interval)) {
507
- $resume_interval = round($max_time + 35);
 
508
  $this->log("Based on the available data, we are bringing the resumption interval down to: $resume_interval seconds");
509
  $this->jobdata_set('resume_interval', $resume_interval);
510
  }
@@ -601,27 +689,45 @@ class UpdraftPlus {
601
  $this->log("$file: $key: This file has not yet been successfully uploaded: will queue");
602
  $undone_files[$key] = $file;
603
  } else {
604
- $this->log("$file: Note: This file was not marked as successfully uploaded, but does not exist on the local filesystem");
605
  $this->uploaded_file($file);
606
  }
607
  }
608
 
609
  if (count($undone_files) == 0) {
 
610
  $this->log("There were no more files that needed uploading; backup job is complete");
611
  // No email, as the user probably already got one if something else completed the run
612
  $this->backup_finish($next_resumption, true, false, $resumption_no);
613
  return;
 
 
 
614
  }
615
 
616
- $this->log("Requesting backup of the files that were not successfully uploaded");
617
- $this->cloud_backup($undone_files);
618
-
619
  $this->log("Resume backup ($bnonce, $resumption_no): finish run");
620
  if (is_array($our_files)) $this->save_last_backup($our_files);
621
  $this->backup_finish($next_resumption, true, true, $resumption_no);
622
 
623
  }
624
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
625
  function backup_all() {
626
  $this->boot_backup(true,true);
627
  }
@@ -656,15 +762,24 @@ class UpdraftPlus {
656
  if (!is_array($this->jobdata)) $this->jobdata = array();
657
  }
658
  $this->jobdata[$key] = $value;
659
- set_transient("updraft_jobdata_".$this->nonce, $this->jobdata, 14400);
660
  }
661
 
662
- function jobdata_get($key) {
663
  if (!is_array($this->jobdata)) {
664
  $this->jobdata = get_transient("updraft_jobdata_".$this->nonce);
665
- if (!is_array($this->jobdata)) return false;
666
  }
667
- return (isset($this->jobdata[$key])) ? $this->jobdata[$key] : false;
 
 
 
 
 
 
 
 
 
668
  }
669
 
670
  // This uses a transient; its only purpose is to indicate *total* completion; there is no actual danger, just wasted time, in resuming when it was not needed. So the transient just helps save resources.
@@ -737,7 +852,8 @@ class UpdraftPlus {
737
  'resume_interval', $resume_interval,
738
  'job_type', 'backup',
739
  'backup_time', $this->backup_time,
740
- 'service', UpdraftPlus_Options::get_updraft_option('updraft_service')
 
741
  );
742
 
743
  // Save what *should* be done, to make it resumable from this point on
@@ -781,14 +897,16 @@ class UpdraftPlus {
781
  }
782
  }
783
 
784
- function backup_finish($cancel_event, $clear_nonce_transient, $allow_email, $resumption_no) {
 
 
785
 
786
  // In fact, leaving the hook to run (if debug is set) is harmless, as the resume job should only do tasks that were left unfinished, which at this stage is none.
787
  if (empty($this->errors)) {
788
- if ($clear_nonce_transient) {
789
  $this->log("There were no errors in the uploads, so the 'resume' event is being unscheduled");
790
  wp_clear_scheduled_hook('updraft_backup_resume', array($cancel_event, $this->nonce));
791
- // TODO: Delete the job transient (is presently useful for debugging, and only lasts 4 hours)
792
  }
793
  } else {
794
  $this->log("There were errors in the uploads, so the 'resume' event is remaining scheduled");
@@ -862,12 +980,38 @@ class UpdraftPlus {
862
 
863
  $this->log("Sending email ('$backup_contains') report to: ".substr($sendmail_to, 0, 5)."...");
864
 
865
- $append_log = ($debug_mode && $this->logfile_name != "") ? "\r\nLog contents:\r\n".file_get_contents($this->logfile_name) : "" ;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
866
 
867
- wp_mail($sendmail_to,__('Backed up', 'updraftplus').': '.get_bloginfo('name').' (UpdraftPlus '.$this->version.') '.date('Y-m-d H:i',time()),'Site: '.site_url()."\r\nUpdraftPlus: ".__('WordPress backup is complete','updraftplus').".\r\n".__('Backup contains','updraftplus').': '.$backup_contains."\r\n".__('Latest status', 'updraftplus').": $final_message\r\n\r\n".$this->wordshell_random_advert(0)."\r\n".$append_log);
 
 
 
 
 
 
 
868
 
869
  }
870
 
 
 
 
 
871
  function save_last_backup($backup_array) {
872
  $success = (empty($this->errors)) ? 1 : 0;
873
 
@@ -904,20 +1048,24 @@ class UpdraftPlus {
904
  if (file_exists($method_include)) require_once($method_include);
905
  remove_action('http_api_curl', array($this, 'add_curl_capath'));
906
 
907
- if ($service == "none") {
908
  $this->log("No remote despatch: user chose no remote backup service");
909
  } else {
910
  $this->log("Beginning dispatch of backup to remote");
911
  }
912
 
913
  $objname = "UpdraftPlus_BackupModule_${service}";
914
- if (method_exists($objname, "backup")) {
915
  // New style - external, allowing more plugability
916
  $remote_obj = new $objname;
917
  $remote_obj->backup($backup_array);
918
- } elseif ($service == "none") {
919
  $this->prune_retained_backups("none", null, null);
 
 
 
920
  }
 
921
  }
922
 
923
  function prune_file($service, $dofile, $method_object = null, $object_passback = null ) {
@@ -1052,13 +1200,13 @@ class UpdraftPlus {
1052
  if (empty($this->newresumption_scheduled)) return;
1053
  $time_now = time();
1054
  $time_away = $this->newresumption_scheduled - $time_now;
1055
- // 30 is chosen because it is also used to detect recent activity on files (file mod times)
1056
- if ($time_away >1 && $time_away <= 30) {
1057
- $this->log('The scheduled resumption is within 30 seconds - will reschedule');
1058
  // Push 30 seconds into the future
1059
  // $this->reschedule(60);
1060
- // Increase interval generally by 30 seconds, on the assumption that our prior estimates were innaccurate (i.e. not just 30 seconds *this* time)
1061
- $this->increase_resume_and_reschedule(30);
1062
  }
1063
  }
1064
 
@@ -1127,6 +1275,22 @@ class UpdraftPlus {
1127
 
1128
  $possible_backups = $this->get_backupable_file_entities(false);
1129
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1130
  # Plugins, themes, uploads
1131
  foreach ($possible_backups as $youwhat => $whichdir) {
1132
 
@@ -1178,14 +1342,7 @@ class UpdraftPlus {
1178
  A string containing a list of filename or dirname separated by a comma.
1179
  */
1180
 
1181
- # Create an array of directories to be skipped
1182
- $others_skip = preg_split("/,/",UpdraftPlus_Options::get_updraft_option('updraft_include_others_exclude', UPDRAFT_DEFAULT_OTHERS_EXCLUDE));
1183
- # Make the values into the keys
1184
- $others_skip = array_flip($others_skip);
1185
-
1186
- $possible_backups_dirs = array_flip($possible_backups);
1187
-
1188
- $other_dirlist = $this->compile_folder_list_for_backup(WP_CONTENT_DIR, $possible_backups_dirs, $others_skip);
1189
 
1190
  if (count($other_dirlist)>0) {
1191
  $created = $updraftplus_backup->create_zip($other_dirlist, 'others', $updraft_dir, $backup_file_basename);
@@ -1205,6 +1362,20 @@ class UpdraftPlus {
1205
  return $backup_array;
1206
  }
1207
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1208
  // avoid_these_dirs and skip_these_dirs ultimately do the same thing; but avoid_these_dirs takes full paths whereas skip_these_dirs takes basenames; and they are logged differently (avoid is potentially dangerous; skip is just a preference). They are allowed to overlap.
1209
  function compile_folder_list_for_backup($backup_from_inside_dir, $avoid_these_dirs, $skip_these_dirs) {
1210
 
@@ -1286,12 +1457,15 @@ class UpdraftPlus {
1286
  function backup_db_header() {
1287
 
1288
  @include(ABSPATH.'wp-includes/version.php');
1289
- global $wp_version;
1290
 
1291
  $this->stow("# WordPress MySQL database backup\n");
1292
  $this->stow("# Created by UpdraftPlus version ".$this->version." (http://updraftplus.com)\n");
1293
  $this->stow("# WordPress Version: $wp_version, running on PHP ".phpversion()." (".$_SERVER["SERVER_SOFTWARE"].")\n");
1294
  $this->stow("# Backup of: ".site_url()."\n");
 
 
 
1295
 
1296
  $this->stow("#\n");
1297
  $this->stow("# " . sprintf(__('Generated: %s','wp-db-backup'),date("l j. F Y H:i T")) . "\n");
@@ -1308,7 +1482,7 @@ class UpdraftPlus {
1308
  $this->stow("/*!40101 SET foreign_key_checks = 0 */;\n");
1309
  }
1310
 
1311
- // The purpose of this function is to make sure that the options table is put in the database first, then the usermeta table
1312
  function backup_db_sorttables($a, $b) {
1313
  global $table_prefix;
1314
  if ($a == $b) return 0;
@@ -1351,6 +1525,9 @@ class UpdraftPlus {
1351
  $all_tables = $wpdb->get_results("SHOW TABLES", ARRAY_N);
1352
  $all_tables = array_map(create_function('$a', 'return $a[0];'), $all_tables);
1353
 
 
 
 
1354
  if (!is_writable($updraft_dir)) {
1355
  $this->log("The backup directory ($updraft_dir) is not writable.");
1356
  $this->error("$updraft_dir: ".__('The backup directory is not writable.','updraftplus'));
@@ -1359,9 +1536,6 @@ class UpdraftPlus {
1359
 
1360
  $stitch_files = array();
1361
 
1362
- // Put the options table first
1363
- usort($all_tables, array($this, 'backup_db_sorttables'));
1364
-
1365
  foreach ($all_tables as $table) {
1366
  $total_tables++;
1367
  // Increase script execution time-limit to 15 min for every table.
@@ -1397,10 +1571,10 @@ class UpdraftPlus {
1397
  $backup_final_file_name = $backup_file_base.'-db.gz';
1398
  $time_now = time();
1399
  $time_mod = (int)@filemtime($backup_final_file_name);
1400
- if (file_exists($backup_final_file_name) && $time_mod>100 && ($time_now-$time_mod)<20) {
1401
  $this->terminate_due_to_activity($backup_final_file_name, $time_now, $time_mod);
1402
  } elseif (file_exists($backup_final_file_name)) {
1403
- $this->log("The final database file ($backup_final_file_name) exists, but was apparently not modified within the last 20 seconds (time_mod=$time_mod, time_now=$time_now, diff=".($time_now-$time_mod)."). Thus we assume that another UpdraftPlus terminated; thus we will continue.");
1404
  }
1405
 
1406
  // Finally, stitch the files together
@@ -1414,7 +1588,7 @@ class UpdraftPlus {
1414
  $this->log("{$table_file}.gz: adding to final database dump");
1415
  if (!$handle = gzopen($updraft_dir.'/'.$table_file.'.gz', "r")) {
1416
  $this->log("Error: Failed to open database file for reading: ${table_file}.gz");
1417
- $this->error(" Failed to open database file for reading: ${table_file}.gz");
1418
  } else {
1419
  while ($line = gzgets($handle, 2048)) { $this->stow($line); }
1420
  gzclose($handle);
@@ -1445,7 +1619,7 @@ class UpdraftPlus {
1445
 
1446
  function terminate_due_to_activity($file, $time_now, $time_mod) {
1447
  $file_size = filesize($file);
1448
- $this->log("Terminate: the final database file ($file) exists, and was modified within the last 20 seconds (time_mod=$time_mod, time_now=$time_now, diff=".($time_now-$time_mod).", size=$file_size). This likely means that another UpdraftPlus run is at work; so we will exit.");
1449
  $this->increase_resume_and_reschedule(120, true);
1450
  die;
1451
  }
@@ -1535,10 +1709,10 @@ class UpdraftPlus {
1535
 
1536
  if($segment == 'none') {
1537
  $row_start = 0;
1538
- $row_inc = 100;
1539
  } else {
1540
- $row_start = $segment * 100;
1541
- $row_inc = 100;
1542
  }
1543
 
1544
  do {
@@ -1707,6 +1881,7 @@ class UpdraftPlus {
1707
  return $schedules;
1708
  }
1709
 
 
1710
  function backups_dir_location() {
1711
 
1712
  if (!empty($this->backup_dir)) return $this->backup_dir;
@@ -1792,14 +1967,14 @@ class UpdraftPlus {
1792
  return ($input > 0 && $input < 3650) ? $input : 1;
1793
  }
1794
 
1795
- function memory_check_current() {
1796
  # Returns in megabytes
1797
- $memory_limit = ini_get('memory_limit');
1798
  $memory_unit = $memory_limit[strlen($memory_limit)-1];
1799
  $memory_limit = substr($memory_limit,0,strlen($memory_limit)-1);
1800
  switch($memory_unit) {
1801
  case 'K':
1802
- $memory_limit = $memory_limit/1024;
1803
  break;
1804
  case 'G':
1805
  $memory_limit = $memory_limit*1024;
@@ -1811,8 +1986,8 @@ class UpdraftPlus {
1811
  return $memory_limit;
1812
  }
1813
 
1814
- function memory_check($memory) {
1815
- $memory_limit = $this->memory_check_current();
1816
  return ($memory_limit >= $memory)?true:false;
1817
  }
1818
 
@@ -1835,7 +2010,8 @@ class UpdraftPlus {
1835
  if (defined('WPLANG') && strlen(WPLANG)>0 && !is_file(UPDRAFTPLUS_DIR.'/languages/updraftplus-'.WPLANG.
1836
  '.mo')) return __('Can you translate? Want to improve UpdraftPlus for speakers of your language?','updraftplus').$this->url_start($urls,'updraftplus.com/translate/')."Please go here for instructions - it is easy.".$this->url_end($urls,'updraftplus.com/translate/');
1837
 
1838
- return __('Find UpdraftPlus useful?','updraftplus').' '.$this->url_start($urls,'david.dw-perspective.org.uk/donate').__("Please make a donation", 'updraftplus').$this->url_end($urls,'david.dw-perspective.org.uk/donate');
 
1839
  case 2:
1840
  return $this->url_start($urls,'wordshell.net')."Check out WordShell".$this->url_end($urls,'www.wordshell.net')." - manage WordPress from the command line - huge time-saver";
1841
  break;
@@ -1853,7 +2029,8 @@ class UpdraftPlus {
1853
  }
1854
  break;
1855
  case 6:
1856
- return "Need custom WordPress services from experts (including bespoke development)?".$this->url_start($urls,'www.simbahosting.co.uk/s3/products-and-services/wordpress-experts/')." Get them from the creators of UpdraftPlus.".$this->url_end($urls,'www.simbahosting.co.uk/s3/products-and-services/wordpress-experts/');
 
1857
  break;
1858
  case 7:
1859
  return $this->url_start($urls,'updraftplus.com').__("Check out UpdraftPlus.Com for help, add-ons and support",'updraftplus').$this->url_end($urls,'updraftplus.com');
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.17
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
+ // Option to delete backup sets manually
17
+ // Check with P3 (Plugin Performance Profiler)
18
+ // Implement error levels - need to have a 'warning' level which is not treated as an error, but is passed more visibly to the user (e.g. ginormous database tables)
19
+ // Testing framework - automated testing of all file upload / download / deletion methods
20
+ // Ginormous tables - need to make sure we "touch" the being-written-out-file (and double-check that we check for that) every 15 seconds - https://friendpaste.com/697eKEcWib01o6zT1foFIn
21
+ // S3-compatible storage providers: http://www.dragondisk.com/s3-storage-providers.html
22
+ // Import single site into a multisite: http://codex.wordpress.org/Migrating_Multiple_Blogs_into_WordPress_3.0_Multisite, http://wordpress.org/support/topic/single-sites-to-multisite?replies=5, http://wpmu.org/import-export-wordpress-sites-multisite/
23
+ // Add note in FAQs about 'maintenance mode' plugins
24
  // When you migrate/restore, if there is a .htaccess, warn/give option about it.
25
  // Add an appeal for translators to email me.
26
+ // Wipe settings appears to not wipe S3 settings
27
+ // Log if non-omnipresent entities (e.g. blogs.dir, mu-plugins) are not present and we were asked to back them up
28
+ // In 'overtime', schedule the resumptions in groups of 2 or 3, not just 1
29
+ // 'Show log' should be done in a nice pop-out, with a button to download the raw
30
+ // delete_old_dirs() needs to use WP_Filesystem in a more user-friendly way when errors occur
31
+ // Bulk download of entire set at once (not have to click 7 times).
32
+ // Restoration should also clear all common cache locations (or just not back them up)
33
+ // Deal with gigantic database tables - e.g. those over a million rows on cheap hosting.
34
  // Some code assumes that the updraft_dir is inside WP_CONTENT_DIR. We should be using WP_Filesystem::find_folder to remove this assumption
35
  // When restoring core, need an option to retain database settings / exclude wp-config.php
36
  // Produce a command-line version of the restorer (so that people with shell access are immune from server-enforced timeouts)
37
+ // Restorations should be logged also
38
  // More sophisticated pruning options - e.g. "but only keep 1 backup every <x> <days> after <y> <weeks>"
39
+ // Migrator - list+download from remote, kick-off backup remotely
40
  // 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)
41
  // Fix-time add-on should also fix the day/date, when relevant
42
  // Search for other TODO-s in the code
43
+ // More databases
44
  // Stand-alone installer - take a look at this: http://wordpress.org/extend/plugins/duplicator/screenshots/
 
45
  // More DB add-on (other non-WP tables; even other databases)
46
  // Unlimited customers should be auto-emailed each time they add a site (security)
47
  // Update all-features page at updraftplus.com (not updated after 1.5.5)
62
  //Do an automated test periodically for the success of loop-back connections
63
  //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.
64
  //Change DB encryption to not require whole gzip in memory (twice)
65
+ //Add Box.Net, SugarSync, Me.Ga support??
66
  //Make it easier to find add-ons
67
  //The restorer has a hard-coded wp-content - fix
68
  //?? 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)
110
  define('UPDRAFTPLUS_DIR', dirname(__FILE__));
111
  define('UPDRAFTPLUS_URL', plugins_url('', __FILE__));
112
  define('UPDRAFT_DEFAULT_OTHERS_EXCLUDE','upgrade,cache,updraft,index.php,backup,backups');
113
+
114
+ if (!defined('UPDRAFTPLUS_ZIP_EXECUTABLE')) define('UPDRAFTPLUS_ZIP_EXECUTABLE', "/usr/bin/zip,/bin/zip,/usr/local/bin/zip,/usr/sfw/bin/zip,/usr/xdg4/bin/zip,/opt/bin/zip");
115
+
116
  // This is used in various places, based on our assumption of the maximum time any job should take. May need lengthening in future if we get reports which show enormous sets hitting the limit.
117
+ // Also one section requires at least 1% progress each run, so on a 5-minute schedule, that equals just under 9 hours - then an extra allowance takes it just over. (However these days, we reduce the scheduling time if possible, so we get more attempts).
118
+ define('UPDRAFT_TRANSTIME', 3600*12);
119
 
120
  // Load add-ons
121
  if (is_file(UPDRAFTPLUS_DIR.'/premium.php')) require_once(UPDRAFTPLUS_DIR.'/premium.php');
134
 
135
  if (!$updraftplus->memory_check(192)) {
136
  // Experience appears to show that the memory limit is only likely to be hit (unless it is very low) by single files that are larger than available memory (when compressed)
137
+ # Add sanity check - found someone who'd set WP_MAX_MEMORY_LIMIT to 256K !
138
+ if (!$updraftplus->memory_check($updraftplus->memory_check_current(WP_MAX_MEMORY_LIMIT))) {
139
+ @ini_set('memory_limit', WP_MAX_MEMORY_LIMIT); //up the memory limit to the maximum WordPress is allowing for large backup files
140
+ }
141
  }
142
 
143
  if (!class_exists('UpdraftPlus_Options')) require_once(UPDRAFTPLUS_DIR.'/options.php');
159
  "ftp" => "FTP",
160
  'sftp' => 'SFTP',
161
  'webdav' => 'WebDAV',
162
+ 'dreamobjects' => 'DreamObjects',
163
  "email" => "Email"
164
  );
165
 
175
  var $backup_dir;
176
 
177
  var $jobdata;
178
+ var $something_useful_happened = false;
179
 
180
  // Used to schedule resumption attempts beyond the tenth, if needed
181
  var $current_resumption;
201
  add_action('admin_menu', array($this,'admin_init'), 9);
202
  add_action('updraft_backup', array($this,'backup_files'));
203
  add_action('updraft_backup_database', array($this,'backup_database'));
204
+ # backup_all is used by the manual "Backup Now" button
205
  add_action('updraft_backup_all', array($this,'backup_all'));
206
  # this is our runs-after-backup event, whose purpose is to see if it succeeded or failed, and resume/mom-up etc.
207
  add_action('updraft_backup_resume', array($this,'backup_resume'), 10, 3);
208
  # http://codex.wordpress.org/Plugin_API/Filter_Reference/cron_schedules
209
+ add_filter('cron_schedules', array($this,'modify_cron_schedules'), 30);
210
  add_action('plugins_loaded', array($this, 'load_translations'));
211
 
212
  register_deactivation_hook(__FILE__, array($this, 'deactivation'));
321
  }
322
 
323
  // Cleans up temporary files found in the updraft directory
324
+ // If no parameters are specified, then cleans up temporary files over 12 hours old.
325
+ // With parameters, cleans up just those.
326
+ function clean_temporary_files($match = '') {
327
  $updraft_dir = $this->backups_dir_location();
328
  if ($handle = opendir($updraft_dir)) {
329
  $now_time=time();
330
  while (false !== ($entry = readdir($handle))) {
331
  // The latter match is for files created internally by zipArchive::addFile
332
+ if ((preg_match("/$match\.tmp(\.gz)?$/i", $entry) || preg_match("/$match\.zip\.tmp\.([A-Za-z0-9]){6}?$/i", $entry)) && is_file($updraft_dir.'/'.$entry)) {
333
+ // We delete if a parameter was specified, or if over 12 hours old
334
+ if ($match || $now_time-filemtime($updraft_dir.'/'.$entry)>43200) {
335
+ $this->log("Deleting old temporary file: $entry");
336
+ @unlink($updraft_dir.'/'.$entry);
337
+ }
338
  }
339
  }
340
  @closedir($handle);
357
  $this->logfile_handle = fopen($this->logfile_name, 'a');
358
  $this->opened_log_time = microtime(true);
359
  $this->log('Opened log file at time: '.date('r'));
 
360
  global $wp_version;
361
+ @include(ABSPATH.'wp-includes/version.php');
362
  $logline = "UpdraftPlus: ".$this->version." WP: ".$wp_version." PHP: ".phpversion()." (".php_uname().") Server: ".$_SERVER["SERVER_SOFTWARE"]." max_execution_time: ".@ini_get("max_execution_time")." memory_limit: ".ini_get('memory_limit')." ZipArchive::addFile : ";
363
 
364
  // method_exists causes some faulty PHP installations to segfault, leading to support requests
373
  }
374
 
375
  # Logs the given line, adding (relative) time stamp and newline
376
+ function log($line, $save_transient = true) {
377
  if ($this->logfile_handle) fwrite($this->logfile_handle, sprintf("%08.03f", round(microtime(true)-$this->opened_log_time, 3))." (".$this->current_resumption.") $line\n");
378
  if ('download' == $this->jobdata_get('job_type')) {
379
  // Download messages are keyed on the job (since they could be running several), and transient
380
  // The values of the POST array were checked before
381
  set_transient('ud_dlmess_'.$_POST['timestamp'].'_'.$_POST['type'], $line." (".date('M d H:i:s').")", 3600);
382
  } else {
383
+ if ($save_transient) UpdraftPlus_Options::update_updraft_option('updraft_lastmessage', $line." (".date('M d H:i:s').")");
384
  }
385
  if (defined('UPDRAFTPLUS_CONSOLELOG')) print $line."\n";
386
  }
396
  $log = ucfirst($service)." chunked upload: $percent % uploaded";
397
  if ($extra) $log .= " ($extra)";
398
  $this->log($log);
399
+ // If we are on an 'overtime' resumption run, and we are still meaningfully uploading, then schedule a new resumption
400
+ // Our definition of meaningful is that we must maintain an overall average of at least 0.7% per run, after allowing 9 runs for everything else to get going
401
+ // i.e. Max 100/.7 + 9 = 150 runs = 760 minutes = 12 hrs 40, if spaced at 5 minute intervals. However, our algorithm now decreases the intervals if it can, so this should not really come into play
402
+ // If they get 2 minutes on each run, and the file is 1Gb, then that equals 10.2Mb/120s = minimum 59Kb/s upload speed required
403
 
404
+ // What this means in effect is that at least one of the files touched during the run must reach this percentage (so lapping round from 100 is OK)
405
+ if ($percent > 0.7 * ( $this->current_resumption - 9)) {
406
  $this->something_useful_happened();
407
  }
408
  }
409
 
410
+ function find_working_bin_zip($logit = true) {
411
+ if ( @ini_get('safe_mode') && strtolower(@ini_get('safe_mode')) != "off") return false;
412
+ // The hosting provider may have explicitly disabled the popen function
413
+ if (!function_exists('popen')) return false;
414
+ $updraft_dir = $this->backups_dir_location();
415
+ foreach (explode(',', UPDRAFTPLUS_ZIP_EXECUTABLE) as $potzip) {
416
+ if ($logit) $this->log("Testing: $potzip");
417
+ if (@is_executable($potzip)) {
418
+ # Test it, see if it is compatible with Info-ZIP
419
+ # If you have another kind of zip, then feel free to tell me about it
420
+ @mkdir($updraft_dir.'/binziptest/subdir1/subdir2', 0777, true);
421
+ file_put_contents($updraft_dir.'/binziptest/subdir1/subdir2/test.html', '<html></body><a href="http://updraftplus.com">UpdraftPlus is a great backup and restoration plugin for WordPress.</body></html>');
422
+ @unlink($updraft_dir.'/binziptest/test.zip');
423
+ if (is_file($updraft_dir.'/binziptest/subdir1/subdir2/test.html')) {
424
+
425
+ $exec = "cd ".escapeshellarg($updraft_dir)."; $potzip -v -u -r binziptest/test.zip binziptest/subdir1";
426
+
427
+ $all_ok=true;
428
+ $handle = popen($exec, "r");
429
+ if ($handle) {
430
+ while (!feof($handle)) {
431
+ $w = fgets($handle);
432
+ if ($w && $logit) $this->log("Output: ".trim($w));
433
+ }
434
+ $ret = pclose($handle);
435
+ if ($ret !=0) {
436
+ if ($logit) $this->log("Binary zip: error (code: $ret)");
437
+ $all_ok = false;
438
+ }
439
+ } else {
440
+ if ($logit) $this->log("Error: popen failed");
441
+ $all_ok = false;
442
+ }
443
+
444
+ // Do we now actually have a working zip? Need to test the created object using PclZip
445
+ // If it passes, then remove dirs and then return $potzip;
446
+
447
+ if ($all_ok && file_exists($updraft_dir.'/binziptest/test.zip')) {
448
+ if(!class_exists('PclZip')) require_once(ABSPATH.'/wp-admin/includes/class-pclzip.php');
449
+ $zip = new PclZip($updraft_dir.'/binziptest/test.zip');
450
+ $foundit = 0;
451
+ if (($list = $zip->listContent()) != 0) {
452
+ foreach ($list as $obj) {
453
+ if ($list['filename'] && $list['stored_filename'] && $list['size']==127) $all_ok=-1;
454
+ }
455
+ }
456
+ }
457
+ $this->remove_binzip_test_files($updraft_dir);
458
+ if ($all_ok == -1 ) {
459
+ if ($logit) $this->log("Working binary zip found: $potzip");
460
+ return $potzip;
461
+ }
462
+
463
+ }
464
+ $this->remove_binzip_test_files($updraft_dir);
465
+ }
466
+ }
467
+ return false;
468
+ }
469
+
470
+ function remove_binzip_test_files($updraft_dir) {
471
+ @unlink($updraft_dir.'/binziptest/subdir1/subdir2/test.html');
472
+ @rmdir($updraft_dir.'/binziptest/subdir1/subdir2');
473
+ @rmdir($updraft_dir.'/binziptest/subdir1');
474
+ @unlink($updraft_dir.'/binziptest/test.zip');
475
+ @rmdir($updraft_dir.'/binziptest');
476
+ }
477
+
478
  function something_useful_happened() {
479
 
480
+ $this->something_useful_happened = true;
481
+
482
  // First, update the record of maximum detected runtime on each run
483
  $time_passed = $this->jobdata_get('run_times');
484
  if (!is_array($time_passed)) $time_passed = array();
485
+
486
  $time_passed[$this->current_resumption] = microtime(true)-$this->opened_log_time;
487
  $this->jobdata_set('run_times', $time_passed);
488
 
587
 
588
  // We just do this once, as we don't want to be in permanent conflict with the overlap detector
589
  if ($resumption_no == 8) {
 
590
  // $time_passed is set earlier
591
+ list($max_time, $timings_string, $run_times_known) = $this->max_time_passed($time_passed, 7);
 
 
 
 
 
 
 
 
 
 
 
592
  $this->log("Time passed on previous resumptions: $timings_string (known: $run_times_known, max: $max_time)");
593
+ // Remember that 30 seconds is used as the 'perhaps something is still running' detection threshold
594
+ if ($run_times_known >= 6 && ($max_time + 38 < $resume_interval)) {
595
+ $resume_interval = round($max_time + 38);
596
  $this->log("Based on the available data, we are bringing the resumption interval down to: $resume_interval seconds");
597
  $this->jobdata_set('resume_interval', $resume_interval);
598
  }
689
  $this->log("$file: $key: This file has not yet been successfully uploaded: will queue");
690
  $undone_files[$key] = $file;
691
  } else {
692
+ $this->log("$file: Note: This file was not marked as successfully uploaded, but does not exist on the local filesystem $fullpath");
693
  $this->uploaded_file($file);
694
  }
695
  }
696
 
697
  if (count($undone_files) == 0) {
698
+ $this->log("Resume backup ($bnonce, $resumption_no): finish run");
699
  $this->log("There were no more files that needed uploading; backup job is complete");
700
  // No email, as the user probably already got one if something else completed the run
701
  $this->backup_finish($next_resumption, true, false, $resumption_no);
702
  return;
703
+ } else {
704
+ $this->log("Requesting backup of the files that were not successfully uploaded (".count($undone_files).")");
705
+ $this->cloud_backup($undone_files);
706
  }
707
 
 
 
 
708
  $this->log("Resume backup ($bnonce, $resumption_no): finish run");
709
  if (is_array($our_files)) $this->save_last_backup($our_files);
710
  $this->backup_finish($next_resumption, true, true, $resumption_no);
711
 
712
  }
713
 
714
+ function max_time_passed($time_passed, $upto) {
715
+ $max_time = 0;
716
+ $timings_string = "";
717
+ $run_times_known=0;
718
+ for ($i=0; $i<=$upto; $i++) {
719
+ $timings_string .= "$i:";
720
+ if (isset($time_passed[$i])) {
721
+ $timings_string .= round($time_passed[$i], 1).' ';
722
+ $run_times_known++;
723
+ if ($time_passed[$i] > $max_time) $max_time = round($time_passed[$i]);
724
+ } else {
725
+ $timings_string .= '? ';
726
+ }
727
+ }
728
+ return array($max_time, $timings_string, $run_times_known);
729
+ }
730
+
731
  function backup_all() {
732
  $this->boot_backup(true,true);
733
  }
762
  if (!is_array($this->jobdata)) $this->jobdata = array();
763
  }
764
  $this->jobdata[$key] = $value;
765
+ set_transient("updraft_jobdata_".$this->nonce, $this->jobdata, UPDRAFT_TRANSTIME);
766
  }
767
 
768
+ function jobdata_delete($key) {
769
  if (!is_array($this->jobdata)) {
770
  $this->jobdata = get_transient("updraft_jobdata_".$this->nonce);
771
+ if (!is_array($this->jobdata)) $this->jobdata = array();
772
  }
773
+ unset($this->jobdata[$key]);
774
+ set_transient("updraft_jobdata_".$this->nonce, $this->jobdata, UPDRAFT_TRANSTIME);
775
+ }
776
+
777
+ function jobdata_get($key, $default = null) {
778
+ if (!is_array($this->jobdata)) {
779
+ $this->jobdata = get_transient("updraft_jobdata_".$this->nonce);
780
+ if (!is_array($this->jobdata)) return $default;
781
+ }
782
+ return (isset($this->jobdata[$key])) ? $this->jobdata[$key] : $default;
783
  }
784
 
785
  // This uses a transient; its only purpose is to indicate *total* completion; there is no actual danger, just wasted time, in resuming when it was not needed. So the transient just helps save resources.
852
  'resume_interval', $resume_interval,
853
  'job_type', 'backup',
854
  'backup_time', $this->backup_time,
855
+ 'service', UpdraftPlus_Options::get_updraft_option('updraft_service'),
856
+ 'maxzipbatch', 26214400, #25Mb
857
  );
858
 
859
  // Save what *should* be done, to make it resumable from this point on
897
  }
898
  }
899
 
900
+ function backup_finish($cancel_event, $do_cleanup, $allow_email, $resumption_no) {
901
+
902
+ // The valid use of $do_cleanup is to indicate if in fact anything exists to clean up (if no job really started, then there may be nothing)
903
 
904
  // In fact, leaving the hook to run (if debug is set) is harmless, as the resume job should only do tasks that were left unfinished, which at this stage is none.
905
  if (empty($this->errors)) {
906
+ if ($do_cleanup) {
907
  $this->log("There were no errors in the uploads, so the 'resume' event is being unscheduled");
908
  wp_clear_scheduled_hook('updraft_backup_resume', array($cancel_event, $this->nonce));
909
+ delete_transient("updraft_jobdata_".$this->nonce);
910
  }
911
  } else {
912
  $this->log("There were errors in the uploads, so the 'resume' event is remaining scheduled");
980
 
981
  $this->log("Sending email ('$backup_contains') report to: ".substr($sendmail_to, 0, 5)."...");
982
 
983
+ $append_log = '';
984
+ $attachments = array();
985
+ if (count($this->errors)>0) {
986
+ $append_log .= __('Errors encountered:', 'updraftplus')."\r\n";
987
+ if (!empty($this->logfile_name)) $attachments[] = $this->logfile_name;
988
+ foreach ($this->errors as $err) {
989
+ if (is_wp_error($err)) {
990
+ foreach ($err->get_error_messages() as $msg) {
991
+ $append_log .= "* ".rtrim($msg)."\r\n";
992
+ }
993
+ } else {
994
+ $append_log .= "* ".rtrim($err)."\r\n";
995
+ }
996
+ }
997
+ $append_log.="\n";
998
+ }
999
 
1000
+ $append_log .= ($debug_mode && $this->logfile_name != "") ? "\r\nLog contents:\r\n".file_get_contents($this->logfile_name) : "" ;
1001
+
1002
+ // We have to use the action in order to set the MIME type on the attachment - by default, WordPress just puts application/octet-stream
1003
+ if (count($attachments)>0) add_action('phpmailer_init', array($this, 'phpmailer_init'));
1004
+ foreach (explode(',', $sendmail_to) as $sendmail_addr) {
1005
+ wp_mail(trim($sendmail_addr), __('Backed up', 'updraftplus').': '.get_bloginfo('name').' (UpdraftPlus '.$this->version.') '.date('Y-m-d H:i',time()),'Site: '.site_url()."\r\nUpdraftPlus: ".__('WordPress backup is complete','updraftplus').".\r\n".__('Backup contains','updraftplus').': '.$backup_contains."\r\n".__('Latest status', 'updraftplus').": $final_message\r\n\r\n".$this->wordshell_random_advert(0)."\r\n".$append_log);
1006
+ if (count($attachments)>0) remove_action('phpmailer_init', array($this, 'phpmailer_init'));
1007
+ }
1008
 
1009
  }
1010
 
1011
+ function phpmailer_init($phpmailer) {
1012
+ $phpmailer->AddAttachment($this->logfile_name, '', 'base64', 'text/plain');
1013
+ }
1014
+
1015
  function save_last_backup($backup_array) {
1016
  $success = (empty($this->errors)) ? 1 : 0;
1017
 
1048
  if (file_exists($method_include)) require_once($method_include);
1049
  remove_action('http_api_curl', array($this, 'add_curl_capath'));
1050
 
1051
+ if ('' == $service || $service == "none") {
1052
  $this->log("No remote despatch: user chose no remote backup service");
1053
  } else {
1054
  $this->log("Beginning dispatch of backup to remote");
1055
  }
1056
 
1057
  $objname = "UpdraftPlus_BackupModule_${service}";
1058
+ if (class_exists($objname)) {
1059
  // New style - external, allowing more plugability
1060
  $remote_obj = new $objname;
1061
  $remote_obj->backup($backup_array);
1062
+ } elseif ('' == $service || $service == "none") {
1063
  $this->prune_retained_backups("none", null, null);
1064
+ } elseif ('' != $service) {
1065
+ $this->log("Unexpected error: no method '$service' was found ($method_include)");
1066
+ $this->error(__("Unexpected error: no method '$service' was found (your UpdraftPlus installation seems broken - try re-installing)",'updraftplus'));
1067
  }
1068
+
1069
  }
1070
 
1071
  function prune_file($service, $dofile, $method_object = null, $object_passback = null ) {
1200
  if (empty($this->newresumption_scheduled)) return;
1201
  $time_now = time();
1202
  $time_away = $this->newresumption_scheduled - $time_now;
1203
+ // 45 is chosen because it is slightly more than the 30 used to detect recent activity on files (file mod times)
1204
+ if ($time_away >1 && $time_away <= 45) {
1205
+ $this->log('The scheduled resumption is within 45 seconds - will reschedule');
1206
  // Push 30 seconds into the future
1207
  // $this->reschedule(60);
1208
+ // Increase interval generally by 45 seconds, on the assumption that our prior estimates were innaccurate (i.e. not just 45 seconds *this* time)
1209
+ $this->increase_resume_and_reschedule(45);
1210
  }
1211
  }
1212
 
1275
 
1276
  $possible_backups = $this->get_backupable_file_entities(false);
1277
 
1278
+ // Was there a check-in last time? If not, then reduce the amount of data attempted
1279
+ if ($this->current_resumption >= 2 && $this->current_resumption<=10) {
1280
+ $maxzipbatch = $this->jobdata_get('maxzipbatch', 26214400);
1281
+ if ((int)$maxzipbatch < 1) $maxzipbatch = 26214400;
1282
+ $time_passed = $this->jobdata_get('run_times');
1283
+ if (!is_array($time_passed)) $time_passed = array();
1284
+ $last_resumption = $this->current_resumption-1;
1285
+ if (!isset($time_passed[$last_resumption])) {
1286
+ $new_maxzipbatch = max(floor($maxzipbatch * 0.8), 20971520);
1287
+ if ($new_maxzipbatch < $maxzipbatch) {
1288
+ $this->log("No check-in was detected on the previous run - as a result, we are reducing the batch amount (old=$maxzipbatch, new=$new_maxzipbatch)");
1289
+ $this->jobdata_set('maxzipbatch', $new_maxzipbatch);
1290
+ }
1291
+ }
1292
+ }
1293
+
1294
  # Plugins, themes, uploads
1295
  foreach ($possible_backups as $youwhat => $whichdir) {
1296
 
1342
  A string containing a list of filename or dirname separated by a comma.
1343
  */
1344
 
1345
+ $other_dirlist = $this->backup_others_dirlist();
 
 
 
 
 
 
 
1346
 
1347
  if (count($other_dirlist)>0) {
1348
  $created = $updraftplus_backup->create_zip($other_dirlist, 'others', $updraft_dir, $backup_file_basename);
1362
  return $backup_array;
1363
  }
1364
 
1365
+ function backup_others_dirlist() {
1366
+ # Create an array of directories to be skipped
1367
+ $others_skip = preg_split("/,/",UpdraftPlus_Options::get_updraft_option('updraft_include_others_exclude', UPDRAFT_DEFAULT_OTHERS_EXCLUDE));
1368
+ # Make the values into the keys
1369
+ $others_skip = array_flip($others_skip);
1370
+
1371
+ $possible_backups_dirs = array_flip($this->get_backupable_file_entities(false));
1372
+
1373
+ $other_dirlist = $this->compile_folder_list_for_backup(WP_CONTENT_DIR, $possible_backups_dirs, $others_skip);
1374
+
1375
+ return $other_dirlist;
1376
+
1377
+ }
1378
+
1379
  // avoid_these_dirs and skip_these_dirs ultimately do the same thing; but avoid_these_dirs takes full paths whereas skip_these_dirs takes basenames; and they are logged differently (avoid is potentially dangerous; skip is just a preference). They are allowed to overlap.
1380
  function compile_folder_list_for_backup($backup_from_inside_dir, $avoid_these_dirs, $skip_these_dirs) {
1381
 
1457
  function backup_db_header() {
1458
 
1459
  @include(ABSPATH.'wp-includes/version.php');
1460
+ global $wp_version, $table_prefix;
1461
 
1462
  $this->stow("# WordPress MySQL database backup\n");
1463
  $this->stow("# Created by UpdraftPlus version ".$this->version." (http://updraftplus.com)\n");
1464
  $this->stow("# WordPress Version: $wp_version, running on PHP ".phpversion()." (".$_SERVER["SERVER_SOFTWARE"].")\n");
1465
  $this->stow("# Backup of: ".site_url()."\n");
1466
+ $this->stow("# Table prefix: ".$table_prefix."\n");
1467
+ $this->stow("# Site info: multisite=".(is_multisite() ? '1' : '0')."\n");
1468
+ $this->stow("# Site info: end\n");
1469
 
1470
  $this->stow("#\n");
1471
  $this->stow("# " . sprintf(__('Generated: %s','wp-db-backup'),date("l j. F Y H:i T")) . "\n");
1482
  $this->stow("/*!40101 SET foreign_key_checks = 0 */;\n");
1483
  }
1484
 
1485
+ // The purpose of this function is to make sure that the options table is put in the database first, then the users table, then the usermeta table
1486
  function backup_db_sorttables($a, $b) {
1487
  global $table_prefix;
1488
  if ($a == $b) return 0;
1525
  $all_tables = $wpdb->get_results("SHOW TABLES", ARRAY_N);
1526
  $all_tables = array_map(create_function('$a', 'return $a[0];'), $all_tables);
1527
 
1528
+ // Put the options table first
1529
+ usort($all_tables, array($this, 'backup_db_sorttables'));
1530
+
1531
  if (!is_writable($updraft_dir)) {
1532
  $this->log("The backup directory ($updraft_dir) is not writable.");
1533
  $this->error("$updraft_dir: ".__('The backup directory is not writable.','updraftplus'));
1536
 
1537
  $stitch_files = array();
1538
 
 
 
 
1539
  foreach ($all_tables as $table) {
1540
  $total_tables++;
1541
  // Increase script execution time-limit to 15 min for every table.
1571
  $backup_final_file_name = $backup_file_base.'-db.gz';
1572
  $time_now = time();
1573
  $time_mod = (int)@filemtime($backup_final_file_name);
1574
+ if (file_exists($backup_final_file_name) && $time_mod>100 && ($time_now-$time_mod)<30) {
1575
  $this->terminate_due_to_activity($backup_final_file_name, $time_now, $time_mod);
1576
  } elseif (file_exists($backup_final_file_name)) {
1577
+ $this->log("The final database file ($backup_final_file_name) exists, but was apparently not modified within the last 30 seconds (time_mod=$time_mod, time_now=$time_now, diff=".($time_now-$time_mod)."). Thus we assume that another UpdraftPlus terminated; thus we will continue.");
1578
  }
1579
 
1580
  // Finally, stitch the files together
1588
  $this->log("{$table_file}.gz: adding to final database dump");
1589
  if (!$handle = gzopen($updraft_dir.'/'.$table_file.'.gz', "r")) {
1590
  $this->log("Error: Failed to open database file for reading: ${table_file}.gz");
1591
+ $this->error("Failed to open database file for reading: ${table_file}.gz");
1592
  } else {
1593
  while ($line = gzgets($handle, 2048)) { $this->stow($line); }
1594
  gzclose($handle);
1619
 
1620
  function terminate_due_to_activity($file, $time_now, $time_mod) {
1621
  $file_size = filesize($file);
1622
+ $this->log("Terminate: the final database file ($file) exists, and was modified within the last 30 seconds (time_mod=$time_mod, time_now=$time_now, diff=".($time_now-$time_mod).", size=$file_size). This likely means that another UpdraftPlus run is at work; so we will exit.");
1623
  $this->increase_resume_and_reschedule(120, true);
1624
  die;
1625
  }
1709
 
1710
  if($segment == 'none') {
1711
  $row_start = 0;
1712
+ $row_inc = 1000;
1713
  } else {
1714
+ $row_start = $segment * 1000;
1715
+ $row_inc = 1000;
1716
  }
1717
 
1718
  do {
1881
  return $schedules;
1882
  }
1883
 
1884
+ // Returns without any trailing slash
1885
  function backups_dir_location() {
1886
 
1887
  if (!empty($this->backup_dir)) return $this->backup_dir;
1967
  return ($input > 0 && $input < 3650) ? $input : 1;
1968
  }
1969
 
1970
+ function memory_check_current($memory_limit = false) {
1971
  # Returns in megabytes
1972
+ if ($memory_limit == false) $memory_limit = ini_get('memory_limit');
1973
  $memory_unit = $memory_limit[strlen($memory_limit)-1];
1974
  $memory_limit = substr($memory_limit,0,strlen($memory_limit)-1);
1975
  switch($memory_unit) {
1976
  case 'K':
1977
+ $memory_limit = floor($memory_limit/1024);
1978
  break;
1979
  case 'G':
1980
  $memory_limit = $memory_limit*1024;
1986
  return $memory_limit;
1987
  }
1988
 
1989
+ function memory_check($memory, $check_using = false) {
1990
+ $memory_limit = $this->memory_check_current($check_using);
1991
  return ($memory_limit >= $memory)?true:false;
1992
  }
1993
 
2010
  if (defined('WPLANG') && strlen(WPLANG)>0 && !is_file(UPDRAFTPLUS_DIR.'/languages/updraftplus-'.WPLANG.
2011
  '.mo')) return __('Can you translate? Want to improve UpdraftPlus for speakers of your language?','updraftplus').$this->url_start($urls,'updraftplus.com/translate/')."Please go here for instructions - it is easy.".$this->url_end($urls,'updraftplus.com/translate/');
2012
 
2013
+ return __('Like UpdraftPlus and can spare one minute?','updraftplus').$this->url_start($urls,'wordpress.org/support/view/plugin-reviews/updraftplus#postform').' '.__('Please help UpdraftPlus by giving a positive review at wordpress.org','updraftplus').$this->url_end($urls,'wordpress.org/support/view/plugin-reviews/updraftplus#postform');
2014
+ break;
2015
  case 2:
2016
  return $this->url_start($urls,'wordshell.net')."Check out WordShell".$this->url_end($urls,'www.wordshell.net')." - manage WordPress from the command line - huge time-saver";
2017
  break;
2029
  }
2030
  break;
2031
  case 6:
2032
+ // return "Need custom WordPress services from experts (including bespoke development)?".$this->url_start($urls,'www.simbahosting.co.uk/s3/products-and-services/wordpress-experts/')." Get them from the creators of UpdraftPlus.".$this->url_end($urls,'www.simbahosting.co.uk/s3/products-and-services/wordpress-experts/');
2033
+ return __("Subscribe to the UpdraftPlus blog to get up-to-date news and offers",'updraftplus')." - ".$this->url_start($urls,'updraftplus.com/news/').__("Blog link",'updraftplus').$this->url_end($urls,'updraftplus.com/news/').' - '.$this->url_start($urls,'feeds.feedburner.com/UpdraftPlus').__("RSS link",'updraftplus').$this->url_end($urls,'feeds.feedburner.com/UpdraftPlus');
2034
  break;
2035
  case 7:
2036
  return $this->url_start($urls,'updraftplus.com').__("Check out UpdraftPlus.Com for help, add-ons and support",'updraftplus').$this->url_end($urls,'updraftplus.com');