UpdraftPlus WordPress Backup Plugin - Version 1.5.6

Version Description

New features: selective restoration, importing remote backups; plus many tweaks, optimisations + small bug-fixes: recommended upgrade for all

Download this release

Release Info

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

Code changes from version 1.4.48 to 1.5.6

includes/Dropbox/OAuth/Consumer/Curl.php CHANGED
@@ -101,7 +101,7 @@ class Dropbox_Curl extends Dropbox_ConsumerAbstract
101
  $message = $response['body']->error . ' (Status Code: ' . $response['code'] . ')';
102
  throw new Dropbox_Exception($message);
103
  }
104
-
105
  return $response;
106
  }
107
 
@@ -120,14 +120,14 @@ class Dropbox_Curl extends Dropbox_ConsumerAbstract
120
 
121
  // If the status code is 100, the API server must send a final response
122
  // We need to explode the response again to get the actual response
123
- if (preg_match('#^HTTP/1.1 100#', $lines[0])) {
124
  list($headers, $response) = explode("\r\n\r\n", $response, 2);
125
  $lines = explode("\r\n", $headers);
126
  }
127
 
128
  // Get the HTTP response code from the first line
129
  $first = array_shift($lines);
130
- $pattern = '#^HTTP/1.1 ([0-9]{3})#';
131
  preg_match($pattern, $first, $matches);
132
  $code = $matches[1];
133
 
@@ -143,6 +143,13 @@ class Dropbox_Curl extends Dropbox_ConsumerAbstract
143
  if (!$body = json_decode($response)) {
144
  $body = $response;
145
  }
 
 
 
 
 
 
 
146
 
147
  return array('code' => $code, 'body' => $body, 'headers' => $headers);
148
  }
101
  $message = $response['body']->error . ' (Status Code: ' . $response['code'] . ')';
102
  throw new Dropbox_Exception($message);
103
  }
104
+
105
  return $response;
106
  }
107
 
120
 
121
  // If the status code is 100, the API server must send a final response
122
  // We need to explode the response again to get the actual response
123
+ if (preg_match('#^HTTP/1.1 100#i', $lines[0])) {
124
  list($headers, $response) = explode("\r\n\r\n", $response, 2);
125
  $lines = explode("\r\n", $headers);
126
  }
127
 
128
  // Get the HTTP response code from the first line
129
  $first = array_shift($lines);
130
+ $pattern = '#^HTTP/1.1 ([0-9]{3})#i';
131
  preg_match($pattern, $first, $matches);
132
  $code = $matches[1];
133
 
143
  if (!$body = json_decode($response)) {
144
  $body = $response;
145
  }
146
+
147
+ if (is_string($body)) {
148
+ $body_lines = explode("\r\n", $body);
149
+ if (preg_match('#^HTTP/1.1 100#i', $body_lines[0]) && preg_match('#^HTTP/1.#i', $body_lines[2])) {
150
+ return $this->parse($body);
151
+ }
152
+ }
153
 
154
  return array('code' => $code, 'body' => $body, 'headers' => $headers);
155
  }
includes/Dropbox/OAuth/Consumer/WordPress.php CHANGED
@@ -52,7 +52,7 @@ class Dropbox_ConsumerWordPress extends Dropbox_ConsumerAbstract
52
  $args = array( 'body' => $request['postfields'] );
53
  $response = wp_remote_post($request['url'], $args );
54
  } elseif ($method == 'PUT' && $this->inFile) {
55
- return new WP_Error('unsupported', __("WordPress does not have a native HTTP PUT function"));
56
  }
57
 
58
  // If the response body is not a JSON encoded string
52
  $args = array( 'body' => $request['postfields'] );
53
  $response = wp_remote_post($request['url'], $args );
54
  } elseif ($method == 'PUT' && $this->inFile) {
55
+ return new WP_Error('unsupported', "WordPress does not have a native HTTP PUT function");
56
  }
57
 
58
  // If the response body is not a JSON encoded string
includes/jquery-ui-1.8.22.custom.css ADDED
@@ -0,0 +1,563 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * jQuery UI CSS Framework 1.8.22
3
+ *
4
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT or GPL Version 2 licenses.
6
+ * http://jquery.org/license
7
+ *
8
+ * http://docs.jquery.com/UI/Theming/API
9
+ */
10
+
11
+ /* Layout helpers
12
+ ----------------------------------*/
13
+ .ui-helper-hidden { display: none; }
14
+ .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
15
+ .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
16
+ .ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
17
+ .ui-helper-clearfix:after { clear: both; }
18
+ .ui-helper-clearfix { zoom: 1; }
19
+ .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
20
+
21
+
22
+ /* Interaction Cues
23
+ ----------------------------------*/
24
+ .ui-state-disabled { cursor: default !important; }
25
+
26
+
27
+ /* Icons
28
+ ----------------------------------*/
29
+
30
+ /* states and images */
31
+ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
32
+
33
+
34
+ /* Misc visuals
35
+ ----------------------------------*/
36
+
37
+ /* Overlays */
38
+ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
39
+
40
+
41
+ /*!
42
+ * jQuery UI CSS Framework 1.8.22
43
+ *
44
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
45
+ * Dual licensed under the MIT or GPL Version 2 licenses.
46
+ * http://jquery.org/license
47
+ *
48
+ * http://docs.jquery.com/UI/Theming/API
49
+ *
50
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
51
+ */
52
+
53
+
54
+ /* Component containers
55
+ ----------------------------------*/
56
+ .ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
57
+ .ui-widget .ui-widget { font-size: 1em; }
58
+ .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
59
+ .ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }
60
+ .ui-widget-content a { color: #333333; }
61
+ .ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
62
+ .ui-widget-header a { color: #ffffff; }
63
+
64
+ /* Interaction states
65
+ ----------------------------------*/
66
+ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; }
67
+ .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }
68
+ .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; }
69
+ .ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; }
70
+ .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; }
71
+ .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }
72
+ .ui-widget :active { outline: none; }
73
+
74
+ /* Interaction Cues
75
+ ----------------------------------*/
76
+ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }
77
+ .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
78
+ .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
79
+ .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }
80
+ .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }
81
+ .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
82
+ .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
83
+ .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
84
+
85
+ /* Icons
86
+ ----------------------------------*/
87
+
88
+ /* states and images */
89
+ .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
90
+ .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
91
+ .ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
92
+ .ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
93
+ .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
94
+ .ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
95
+ .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
96
+ .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
97
+
98
+ /* positioning */
99
+ .ui-icon-carat-1-n { background-position: 0 0; }
100
+ .ui-icon-carat-1-ne { background-position: -16px 0; }
101
+ .ui-icon-carat-1-e { background-position: -32px 0; }
102
+ .ui-icon-carat-1-se { background-position: -48px 0; }
103
+ .ui-icon-carat-1-s { background-position: -64px 0; }
104
+ .ui-icon-carat-1-sw { background-position: -80px 0; }
105
+ .ui-icon-carat-1-w { background-position: -96px 0; }
106
+ .ui-icon-carat-1-nw { background-position: -112px 0; }
107
+ .ui-icon-carat-2-n-s { background-position: -128px 0; }
108
+ .ui-icon-carat-2-e-w { background-position: -144px 0; }
109
+ .ui-icon-triangle-1-n { background-position: 0 -16px; }
110
+ .ui-icon-triangle-1-ne { background-position: -16px -16px; }
111
+ .ui-icon-triangle-1-e { background-position: -32px -16px; }
112
+ .ui-icon-triangle-1-se { background-position: -48px -16px; }
113
+ .ui-icon-triangle-1-s { background-position: -64px -16px; }
114
+ .ui-icon-triangle-1-sw { background-position: -80px -16px; }
115
+ .ui-icon-triangle-1-w { background-position: -96px -16px; }
116
+ .ui-icon-triangle-1-nw { background-position: -112px -16px; }
117
+ .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
118
+ .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
119
+ .ui-icon-arrow-1-n { background-position: 0 -32px; }
120
+ .ui-icon-arrow-1-ne { background-position: -16px -32px; }
121
+ .ui-icon-arrow-1-e { background-position: -32px -32px; }
122
+ .ui-icon-arrow-1-se { background-position: -48px -32px; }
123
+ .ui-icon-arrow-1-s { background-position: -64px -32px; }
124
+ .ui-icon-arrow-1-sw { background-position: -80px -32px; }
125
+ .ui-icon-arrow-1-w { background-position: -96px -32px; }
126
+ .ui-icon-arrow-1-nw { background-position: -112px -32px; }
127
+ .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
128
+ .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
129
+ .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
130
+ .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
131
+ .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
132
+ .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
133
+ .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
134
+ .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
135
+ .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
136
+ .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
137
+ .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
138
+ .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
139
+ .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
140
+ .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
141
+ .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
142
+ .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
143
+ .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
144
+ .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
145
+ .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
146
+ .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
147
+ .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
148
+ .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
149
+ .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
150
+ .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
151
+ .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
152
+ .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
153
+ .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
154
+ .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
155
+ .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
156
+ .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
157
+ .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
158
+ .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
159
+ .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
160
+ .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
161
+ .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
162
+ .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
163
+ .ui-icon-arrow-4 { background-position: 0 -80px; }
164
+ .ui-icon-arrow-4-diag { background-position: -16px -80px; }
165
+ .ui-icon-extlink { background-position: -32px -80px; }
166
+ .ui-icon-newwin { background-position: -48px -80px; }
167
+ .ui-icon-refresh { background-position: -64px -80px; }
168
+ .ui-icon-shuffle { background-position: -80px -80px; }
169
+ .ui-icon-transfer-e-w { background-position: -96px -80px; }
170
+ .ui-icon-transferthick-e-w { background-position: -112px -80px; }
171
+ .ui-icon-folder-collapsed { background-position: 0 -96px; }
172
+ .ui-icon-folder-open { background-position: -16px -96px; }
173
+ .ui-icon-document { background-position: -32px -96px; }
174
+ .ui-icon-document-b { background-position: -48px -96px; }
175
+ .ui-icon-note { background-position: -64px -96px; }
176
+ .ui-icon-mail-closed { background-position: -80px -96px; }
177
+ .ui-icon-mail-open { background-position: -96px -96px; }
178
+ .ui-icon-suitcase { background-position: -112px -96px; }
179
+ .ui-icon-comment { background-position: -128px -96px; }
180
+ .ui-icon-person { background-position: -144px -96px; }
181
+ .ui-icon-print { background-position: -160px -96px; }
182
+ .ui-icon-trash { background-position: -176px -96px; }
183
+ .ui-icon-locked { background-position: -192px -96px; }
184
+ .ui-icon-unlocked { background-position: -208px -96px; }
185
+ .ui-icon-bookmark { background-position: -224px -96px; }
186
+ .ui-icon-tag { background-position: -240px -96px; }
187
+ .ui-icon-home { background-position: 0 -112px; }
188
+ .ui-icon-flag { background-position: -16px -112px; }
189
+ .ui-icon-calendar { background-position: -32px -112px; }
190
+ .ui-icon-cart { background-position: -48px -112px; }
191
+ .ui-icon-pencil { background-position: -64px -112px; }
192
+ .ui-icon-clock { background-position: -80px -112px; }
193
+ .ui-icon-disk { background-position: -96px -112px; }
194
+ .ui-icon-calculator { background-position: -112px -112px; }
195
+ .ui-icon-zoomin { background-position: -128px -112px; }
196
+ .ui-icon-zoomout { background-position: -144px -112px; }
197
+ .ui-icon-search { background-position: -160px -112px; }
198
+ .ui-icon-wrench { background-position: -176px -112px; }
199
+ .ui-icon-gear { background-position: -192px -112px; }
200
+ .ui-icon-heart { background-position: -208px -112px; }
201
+ .ui-icon-star { background-position: -224px -112px; }
202
+ .ui-icon-link { background-position: -240px -112px; }
203
+ .ui-icon-cancel { background-position: 0 -128px; }
204
+ .ui-icon-plus { background-position: -16px -128px; }
205
+ .ui-icon-plusthick { background-position: -32px -128px; }
206
+ .ui-icon-minus { background-position: -48px -128px; }
207
+ .ui-icon-minusthick { background-position: -64px -128px; }
208
+ .ui-icon-close { background-position: -80px -128px; }
209
+ .ui-icon-closethick { background-position: -96px -128px; }
210
+ .ui-icon-key { background-position: -112px -128px; }
211
+ .ui-icon-lightbulb { background-position: -128px -128px; }
212
+ .ui-icon-scissors { background-position: -144px -128px; }
213
+ .ui-icon-clipboard { background-position: -160px -128px; }
214
+ .ui-icon-copy { background-position: -176px -128px; }
215
+ .ui-icon-contact { background-position: -192px -128px; }
216
+ .ui-icon-image { background-position: -208px -128px; }
217
+ .ui-icon-video { background-position: -224px -128px; }
218
+ .ui-icon-script { background-position: -240px -128px; }
219
+ .ui-icon-alert { background-position: 0 -144px; }
220
+ .ui-icon-info { background-position: -16px -144px; }
221
+ .ui-icon-notice { background-position: -32px -144px; }
222
+ .ui-icon-help { background-position: -48px -144px; }
223
+ .ui-icon-check { background-position: -64px -144px; }
224
+ .ui-icon-bullet { background-position: -80px -144px; }
225
+ .ui-icon-radio-off { background-position: -96px -144px; }
226
+ .ui-icon-radio-on { background-position: -112px -144px; }
227
+ .ui-icon-pin-w { background-position: -128px -144px; }
228
+ .ui-icon-pin-s { background-position: -144px -144px; }
229
+ .ui-icon-play { background-position: 0 -160px; }
230
+ .ui-icon-pause { background-position: -16px -160px; }
231
+ .ui-icon-seek-next { background-position: -32px -160px; }
232
+ .ui-icon-seek-prev { background-position: -48px -160px; }
233
+ .ui-icon-seek-end { background-position: -64px -160px; }
234
+ .ui-icon-seek-start { background-position: -80px -160px; }
235
+ /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
236
+ .ui-icon-seek-first { background-position: -80px -160px; }
237
+ .ui-icon-stop { background-position: -96px -160px; }
238
+ .ui-icon-eject { background-position: -112px -160px; }
239
+ .ui-icon-volume-off { background-position: -128px -160px; }
240
+ .ui-icon-volume-on { background-position: -144px -160px; }
241
+ .ui-icon-power { background-position: 0 -176px; }
242
+ .ui-icon-signal-diag { background-position: -16px -176px; }
243
+ .ui-icon-signal { background-position: -32px -176px; }
244
+ .ui-icon-battery-0 { background-position: -48px -176px; }
245
+ .ui-icon-battery-1 { background-position: -64px -176px; }
246
+ .ui-icon-battery-2 { background-position: -80px -176px; }
247
+ .ui-icon-battery-3 { background-position: -96px -176px; }
248
+ .ui-icon-circle-plus { background-position: 0 -192px; }
249
+ .ui-icon-circle-minus { background-position: -16px -192px; }
250
+ .ui-icon-circle-close { background-position: -32px -192px; }
251
+ .ui-icon-circle-triangle-e { background-position: -48px -192px; }
252
+ .ui-icon-circle-triangle-s { background-position: -64px -192px; }
253
+ .ui-icon-circle-triangle-w { background-position: -80px -192px; }
254
+ .ui-icon-circle-triangle-n { background-position: -96px -192px; }
255
+ .ui-icon-circle-arrow-e { background-position: -112px -192px; }
256
+ .ui-icon-circle-arrow-s { background-position: -128px -192px; }
257
+ .ui-icon-circle-arrow-w { background-position: -144px -192px; }
258
+ .ui-icon-circle-arrow-n { background-position: -160px -192px; }
259
+ .ui-icon-circle-zoomin { background-position: -176px -192px; }
260
+ .ui-icon-circle-zoomout { background-position: -192px -192px; }
261
+ .ui-icon-circle-check { background-position: -208px -192px; }
262
+ .ui-icon-circlesmall-plus { background-position: 0 -208px; }
263
+ .ui-icon-circlesmall-minus { background-position: -16px -208px; }
264
+ .ui-icon-circlesmall-close { background-position: -32px -208px; }
265
+ .ui-icon-squaresmall-plus { background-position: -48px -208px; }
266
+ .ui-icon-squaresmall-minus { background-position: -64px -208px; }
267
+ .ui-icon-squaresmall-close { background-position: -80px -208px; }
268
+ .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
269
+ .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
270
+ .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
271
+ .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
272
+ .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
273
+ .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
274
+
275
+
276
+ /* Misc visuals
277
+ ----------------------------------*/
278
+
279
+ /* Corner radius */
280
+ .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
281
+ .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
282
+ .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
283
+ .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
284
+
285
+ /* Overlays */
286
+ .ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
287
+ .ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*!
288
+ * jQuery UI Resizable 1.8.22
289
+ *
290
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
291
+ * Dual licensed under the MIT or GPL Version 2 licenses.
292
+ * http://jquery.org/license
293
+ *
294
+ * http://docs.jquery.com/UI/Resizable#theming
295
+ */
296
+ .ui-resizable { position: relative;}
297
+ .ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }
298
+ .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
299
+ .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
300
+ .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
301
+ .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
302
+ .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
303
+ .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
304
+ .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
305
+ .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
306
+ .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*!
307
+ * jQuery UI Selectable 1.8.22
308
+ *
309
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
310
+ * Dual licensed under the MIT or GPL Version 2 licenses.
311
+ * http://jquery.org/license
312
+ *
313
+ * http://docs.jquery.com/UI/Selectable#theming
314
+ */
315
+ .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
316
+ /*!
317
+ * jQuery UI Accordion 1.8.22
318
+ *
319
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
320
+ * Dual licensed under the MIT or GPL Version 2 licenses.
321
+ * http://jquery.org/license
322
+ *
323
+ * http://docs.jquery.com/UI/Accordion#theming
324
+ */
325
+ /* IE/Win - Fix animation bug - #4615 */
326
+ .ui-accordion { width: 100%; }
327
+ .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
328
+ .ui-accordion .ui-accordion-li-fix { display: inline; }
329
+ .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
330
+ .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
331
+ .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
332
+ .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
333
+ .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
334
+ .ui-accordion .ui-accordion-content-active { display: block; }
335
+ /*!
336
+ * jQuery UI Autocomplete 1.8.22
337
+ *
338
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
339
+ * Dual licensed under the MIT or GPL Version 2 licenses.
340
+ * http://jquery.org/license
341
+ *
342
+ * http://docs.jquery.com/UI/Autocomplete#theming
343
+ */
344
+ .ui-autocomplete { position: absolute; cursor: default; }
345
+
346
+ /* workarounds */
347
+ * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
348
+
349
+ /*
350
+ * jQuery UI Menu 1.8.22
351
+ *
352
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
353
+ * Dual licensed under the MIT or GPL Version 2 licenses.
354
+ * http://jquery.org/license
355
+ *
356
+ * http://docs.jquery.com/UI/Menu#theming
357
+ */
358
+ .ui-menu {
359
+ list-style:none;
360
+ padding: 2px;
361
+ margin: 0;
362
+ display:block;
363
+ float: left;
364
+ }
365
+ .ui-menu .ui-menu {
366
+ margin-top: -3px;
367
+ }
368
+ .ui-menu .ui-menu-item {
369
+ margin:0;
370
+ padding: 0;
371
+ zoom: 1;
372
+ float: left;
373
+ clear: left;
374
+ width: 100%;
375
+ }
376
+ .ui-menu .ui-menu-item a {
377
+ text-decoration:none;
378
+ display:block;
379
+ padding:.2em .4em;
380
+ line-height:1.5;
381
+ zoom:1;
382
+ }
383
+ .ui-menu .ui-menu-item a.ui-state-hover,
384
+ .ui-menu .ui-menu-item a.ui-state-active {
385
+ font-weight: normal;
386
+ margin: -1px;
387
+ }
388
+ /*!
389
+ * jQuery UI Button 1.8.22
390
+ *
391
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
392
+ * Dual licensed under the MIT or GPL Version 2 licenses.
393
+ * http://jquery.org/license
394
+ *
395
+ * http://docs.jquery.com/UI/Button#theming
396
+ */
397
+ .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
398
+ .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
399
+ button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
400
+ .ui-button-icons-only { width: 3.4em; }
401
+ button.ui-button-icons-only { width: 3.7em; }
402
+
403
+ /*button text element */
404
+ .ui-button .ui-button-text { display: block; line-height: 1.4; }
405
+ .ui-button-text-only .ui-button-text { padding: .4em 1em; }
406
+ .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
407
+ .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
408
+ .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
409
+ .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
410
+ /* no icon support for input elements, provide padding by default */
411
+ input.ui-button { padding: .4em 1em; }
412
+
413
+ /*button icon element(s) */
414
+ .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
415
+ .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
416
+ .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
417
+ .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
418
+ .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
419
+
420
+ /*button sets*/
421
+ .ui-buttonset { margin-right: 7px; }
422
+ .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
423
+
424
+ /* workarounds */
425
+ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
426
+ /*!
427
+ * jQuery UI Dialog 1.8.22
428
+ *
429
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
430
+ * Dual licensed under the MIT or GPL Version 2 licenses.
431
+ * http://jquery.org/license
432
+ *
433
+ * http://docs.jquery.com/UI/Dialog#theming
434
+ */
435
+ .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
436
+ .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
437
+ .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
438
+ .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
439
+ .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
440
+ .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
441
+ .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
442
+ .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
443
+ .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
444
+ .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
445
+ .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
446
+ .ui-draggable .ui-dialog-titlebar { cursor: move; }
447
+ /*!
448
+ * jQuery UI Slider 1.8.22
449
+ *
450
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
451
+ * Dual licensed under the MIT or GPL Version 2 licenses.
452
+ * http://jquery.org/license
453
+ *
454
+ * http://docs.jquery.com/UI/Slider#theming
455
+ */
456
+ .ui-slider { position: relative; text-align: left; }
457
+ .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
458
+ .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
459
+
460
+ .ui-slider-horizontal { height: .8em; }
461
+ .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
462
+ .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
463
+ .ui-slider-horizontal .ui-slider-range-min { left: 0; }
464
+ .ui-slider-horizontal .ui-slider-range-max { right: 0; }
465
+
466
+ .ui-slider-vertical { width: .8em; height: 100px; }
467
+ .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
468
+ .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
469
+ .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
470
+ .ui-slider-vertical .ui-slider-range-max { top: 0; }/*!
471
+ * jQuery UI Tabs 1.8.22
472
+ *
473
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
474
+ * Dual licensed under the MIT or GPL Version 2 licenses.
475
+ * http://jquery.org/license
476
+ *
477
+ * http://docs.jquery.com/UI/Tabs#theming
478
+ */
479
+ .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
480
+ .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
481
+ .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
482
+ .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
483
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
484
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
485
+ .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
486
+ .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
487
+ .ui-tabs .ui-tabs-hide { display: none !important; }
488
+ /*!
489
+ * jQuery UI Datepicker 1.8.22
490
+ *
491
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
492
+ * Dual licensed under the MIT or GPL Version 2 licenses.
493
+ * http://jquery.org/license
494
+ *
495
+ * http://docs.jquery.com/UI/Datepicker#theming
496
+ */
497
+ .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
498
+ .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
499
+ .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
500
+ .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
501
+ .ui-datepicker .ui-datepicker-prev { left:2px; }
502
+ .ui-datepicker .ui-datepicker-next { right:2px; }
503
+ .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
504
+ .ui-datepicker .ui-datepicker-next-hover { right:1px; }
505
+ .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
506
+ .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
507
+ .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
508
+ .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
509
+ .ui-datepicker select.ui-datepicker-month,
510
+ .ui-datepicker select.ui-datepicker-year { width: 49%;}
511
+ .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
512
+ .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
513
+ .ui-datepicker td { border: 0; padding: 1px; }
514
+ .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
515
+ .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
516
+ .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
517
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
518
+
519
+ /* with multiple calendars */
520
+ .ui-datepicker.ui-datepicker-multi { width:auto; }
521
+ .ui-datepicker-multi .ui-datepicker-group { float:left; }
522
+ .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
523
+ .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
524
+ .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
525
+ .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
526
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
527
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
528
+ .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
529
+ .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
530
+
531
+ /* RTL support */
532
+ .ui-datepicker-rtl { direction: rtl; }
533
+ .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
534
+ .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
535
+ .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
536
+ .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
537
+ .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
538
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
539
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
540
+ .ui-datepicker-rtl .ui-datepicker-group { float:right; }
541
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
542
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
543
+
544
+ /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
545
+ .ui-datepicker-cover {
546
+ position: absolute; /*must have*/
547
+ z-index: -1; /*must have*/
548
+ filter: mask(); /*must have*/
549
+ top: -4px; /*must have*/
550
+ left: -4px; /*must have*/
551
+ width: 200px; /*must have*/
552
+ height: 200px; /*must have*/
553
+ }/*!
554
+ * jQuery UI Progressbar 1.8.22
555
+ *
556
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
557
+ * Dual licensed under the MIT or GPL Version 2 licenses.
558
+ * http://jquery.org/license
559
+ *
560
+ * http://docs.jquery.com/UI/Progressbar#theming
561
+ */
562
+ .ui-progressbar { height:2em; text-align: left; overflow: hidden; }
563
+ .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
includes/updraft-restorer.php CHANGED
@@ -2,25 +2,24 @@
2
  class Updraft_Restorer extends WP_Upgrader {
3
 
4
  function backup_strings() {
5
- $this->strings['no_package'] = __('Backup file not available.');
6
- $this->strings['unpack_package'] = __('Unpacking backup...');
7
- $this->strings['moving_old'] = __('Moving old directory out of the way...');
8
- $this->strings['moving_backup'] = __('Moving unpackaged backup in place...');
9
- $this->strings['cleaning_up'] = __('Cleaning up detritus...');
10
- $this->strings['old_move_failed'] = __('Could not move old dir out of the way.');
11
- $this->strings['new_move_failed'] = __('Could not move new dir into place. Check your wp-content/upgrade folder.');
12
- $this->strings['delete_failed'] = __('Failed to delete working directory after restoring.');
13
  }
14
 
15
- function restore_backup($backup_file, $type) {
16
-
17
- // Various keys can get stored in the data - but only some represent actual data entities
18
- if ($type != 'plugins' && $type != 'themes' && $type != 'others' && $type != 'uploads') continue;
19
 
20
  global $wp_filesystem;
21
  $this->init();
22
  $this->backup_strings();
23
 
 
 
24
  $res = $this->fs_connect(array(ABSPATH, WP_CONTENT_DIR) );
25
  if(!$res) exit;
26
 
@@ -31,8 +30,12 @@ class Updraft_Restorer extends WP_Upgrader {
31
  return $download;
32
 
33
  $delete = (UpdraftPlus_Options::get_updraft_option('updraft_delete_local')) ? true : false;
 
 
 
 
34
 
35
- $working_dir = $this->unpack_package($download , $delete);
36
  if (is_wp_error($working_dir)) return $working_dir;
37
 
38
  if ($type == 'others' ) {
@@ -54,13 +57,12 @@ class Updraft_Restorer extends WP_Upgrader {
54
  $wp_filesystem->move($working_dir . "/$tmp_file/$file", $working_dir ."/".$file, true);
55
  $wp_filesystem->rmdir($working_dir . "/$tmp_file", false);
56
  }
57
-
58
  # Sanity check (should not be possible as these were excluded at backup time)
59
  if ($file != "plugins" && $file != "themes" && $file != "uploads" && $file != "upgrade") {
60
  # First, move the existing one, if necessary (may not be present)
61
  if ($wp_filesystem->exists($wp_dir . "wp-content/$file")) {
62
  if ( !$wp_filesystem->move($wp_dir . "wp-content/$file", $wp_dir . "wp-content/$file-old", true) ) {
63
- return new WP_Error('old_move_failed', $this->strings['old_move_failed']);
64
  }
65
  }
66
  # Now, move in the new one
@@ -74,12 +76,12 @@ class Updraft_Restorer extends WP_Upgrader {
74
  } else {
75
 
76
  show_message($this->strings['moving_old']);
77
- if ( !$wp_filesystem->move($wp_dir . "wp-content/$type", $wp_dir . "wp-content/$type-old", true) ) {
78
  return new WP_Error('old_move_failed', $this->strings['old_move_failed']);
79
  }
80
 
81
  show_message($this->strings['moving_backup']);
82
- if ( !$wp_filesystem->move($working_dir . "/$type", $wp_dir . "wp-content/$type", true) ) {
83
  return new WP_Error('new_move_failed', $this->strings['new_move_failed']);
84
  }
85
 
@@ -90,13 +92,12 @@ class Updraft_Restorer extends WP_Upgrader {
90
  return new WP_Error('delete_failed', $this->strings['delete_failed']);
91
  }
92
 
93
-
94
  switch($type) {
95
  case 'uploads':
96
- @$wp_filesystem->chmod($wp_dir . "wp-content/$type", 0777, true);
97
  break;
98
  default:
99
- @$wp_filesystem->chmod($wp_dir . "wp-content/$type", FS_CHMOD_DIR);
100
  }
101
  }
102
 
2
  class Updraft_Restorer extends WP_Upgrader {
3
 
4
  function backup_strings() {
5
+ $this->strings['no_package'] = __('Backup file not available.','updraftplus');
6
+ $this->strings['unpack_package'] = __('Unpacking backup...','updraftplus');
7
+ $this->strings['moving_old'] = __('Moving old directory out of the way...','updraftplus');
8
+ $this->strings['moving_backup'] = __('Moving unpacked backup in place...','updraftplus');
9
+ $this->strings['cleaning_up'] = __('Cleaning up rubbish...','updraftplus');
10
+ $this->strings['old_move_failed'] = __('Could not move old directory out of the way. Perhaps you already have -old directories that need deleting first?','updraftplus');
11
+ $this->strings['new_move_failed'] = __('Could not move new directory into place. Check your wp-content/upgrade folder.','updraftplus');
12
+ $this->strings['delete_failed'] = __('Failed to delete working directory after restoring.','updraftplus');
13
  }
14
 
15
+ function restore_backup($backup_file, $type, $service, $info) {
 
 
 
16
 
17
  global $wp_filesystem;
18
  $this->init();
19
  $this->backup_strings();
20
 
21
+ $dirname = basename($info['path']);
22
+
23
  $res = $this->fs_connect(array(ABSPATH, WP_CONTENT_DIR) );
24
  if(!$res) exit;
25
 
30
  return $download;
31
 
32
  $delete = (UpdraftPlus_Options::get_updraft_option('updraft_delete_local')) ? true : false;
33
+ if ('none' == $service) {
34
+ if ($delete) _e('Will not delete the archive after unpacking it, because there was no cloud storage for this backup','updraftplus').'<br>';
35
+ $delete = false;
36
+ }
37
 
38
+ $working_dir = $this->unpack_package($download, $delete);
39
  if (is_wp_error($working_dir)) return $working_dir;
40
 
41
  if ($type == 'others' ) {
57
  $wp_filesystem->move($working_dir . "/$tmp_file/$file", $working_dir ."/".$file, true);
58
  $wp_filesystem->rmdir($working_dir . "/$tmp_file", false);
59
  }
 
60
  # Sanity check (should not be possible as these were excluded at backup time)
61
  if ($file != "plugins" && $file != "themes" && $file != "uploads" && $file != "upgrade") {
62
  # First, move the existing one, if necessary (may not be present)
63
  if ($wp_filesystem->exists($wp_dir . "wp-content/$file")) {
64
  if ( !$wp_filesystem->move($wp_dir . "wp-content/$file", $wp_dir . "wp-content/$file-old", true) ) {
65
+ return new WP_Error('old_move_failed', $this->strings['old_move_failed']." (wp-content/$file)");
66
  }
67
  }
68
  # Now, move in the new one
76
  } else {
77
 
78
  show_message($this->strings['moving_old']);
79
+ if ( !$wp_filesystem->move($wp_dir . "wp-content/$dirname", $wp_dir . "wp-content/$dirname-old", true) ) {
80
  return new WP_Error('old_move_failed', $this->strings['old_move_failed']);
81
  }
82
 
83
  show_message($this->strings['moving_backup']);
84
+ if ( !$wp_filesystem->move($working_dir . "/$dirname", $wp_dir . "wp-content/$dirname", true) ) {
85
  return new WP_Error('new_move_failed', $this->strings['new_move_failed']);
86
  }
87
 
92
  return new WP_Error('delete_failed', $this->strings['delete_failed']);
93
  }
94
 
 
95
  switch($type) {
96
  case 'uploads':
97
+ @$wp_filesystem->chmod($wp_dir . "wp-content/$dirname", 0775, true);
98
  break;
99
  default:
100
+ @$wp_filesystem->chmod($wp_dir . "wp-content/$dirname", FS_CHMOD_DIR);
101
  }
102
  }
103
 
languages/updraftplus-de_DE.mo ADDED
Binary file
languages/updraftplus-de_DE.po ADDED
@@ -0,0 +1,1972 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2013 UpdraftPlus - Backup/Restore
2
+ # This file is distributed under the same license as the UpdraftPlus - Backup/Restore package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: UpdraftPlus - Backup/Restore 1.5.4\n"
6
+ "Report-Msgid-Bugs-To: \n"
7
+ "POT-Creation-Date: 2013-03-30 17:26+0100\n"
8
+ "PO-Revision-Date: 2013-04-02 07:26+0100\n"
9
+ "Last-Translator: Marcel Herrguth <mherrguth@mrgeneration.de>\n"
10
+ "Language-Team: THA-Translation <translation@thehomeofanime.de>\n"
11
+ "Language: de-DE\n"
12
+ "MIME-Version: 1.0\n"
13
+ "Content-Type: text/plain; charset=UTF-8\n"
14
+ "Content-Transfer-Encoding: 8bit\n"
15
+ "X-Generator: Poedit 1.5.5\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+
18
+ #: options.php:26
19
+ msgid "UpdraftPlus Backups"
20
+ msgstr "UpdraftPlus Sicherungen"
21
+
22
+ #: updraftplus.php:261
23
+ msgid ""
24
+ "Bad filename format - this does not look like a file created by UpdraftPlus"
25
+ msgstr ""
26
+ "Falsches Dateinamen-Format - diese Datei sieht nicht so aus, als würde so "
27
+ "von UpdraftPlus erstellt worden sein"
28
+
29
+ #: updraftplus.php:295
30
+ msgid "Allowed Files"
31
+ msgstr "Erlaubte Dateien"
32
+
33
+ #: updraftplus.php:372
34
+ msgid "Settings"
35
+ msgstr "Einstellungen"
36
+
37
+ #: updraftplus.php:376
38
+ msgid "Add-Ons / Pro Support"
39
+ msgstr "Erweiterungen / Pro Support"
40
+
41
+ #: updraftplus.php:462
42
+ msgid "Plugins"
43
+ msgstr "Plugins"
44
+
45
+ #: updraftplus.php:463
46
+ msgid "Themes"
47
+ msgstr "Designs"
48
+
49
+ #: updraftplus.php:464
50
+ msgid "Uploads"
51
+ msgstr "Uploads"
52
+
53
+ #: updraftplus.php:478
54
+ msgid "Others"
55
+ msgstr "Andere"
56
+
57
+ #: updraftplus.php:710
58
+ msgid ""
59
+ "Could not create files in the backup directory. Backup aborted - check your "
60
+ "UpdraftPlus settings."
61
+ msgstr ""
62
+ "Konnte keine Dateien im Sicherungsverzeichnis anlegen. Sicherung abgebrochen "
63
+ "- überprüfe deine UpdraftPlus-Einstellungen."
64
+
65
+ #: updraftplus.php:778
66
+ msgid "Encryption error occurred when encrypting database. Encryption aborted."
67
+ msgstr ""
68
+ "Verschlüsselungsfehler beim verschlüsseln der Datenbank aufgetreten. "
69
+ "Verschlüsselung abgebrochen."
70
+
71
+ #: updraftplus.php:812
72
+ msgid "The backup apparently succeeded and is now complete"
73
+ msgstr "Die Sicherung war anscheinend erfolgreich und ist nun vollständig"
74
+
75
+ #: updraftplus.php:815
76
+ msgid "The backup attempt has finished, apparently unsuccessfully"
77
+ msgstr "Der Sicherungsversuch ist beendet, anscheinend nicht erfolgreich"
78
+
79
+ #: updraftplus.php:818
80
+ msgid "The backup has not finished; a resumption is scheduled within 5 minutes"
81
+ msgstr ""
82
+ "Die Sicherung wurde nicht fertiggestellt, eine Wiederaufnahme ist innerhalb "
83
+ "der nächsten 5 Minuten geplant"
84
+
85
+ #: updraftplus.php:869
86
+ msgid "Backed up"
87
+ msgstr "gesichert"
88
+
89
+ #: updraftplus.php:869
90
+ msgid "WordPress backup is complete"
91
+ msgstr "WordPress Sicherung vollständig"
92
+
93
+ #: updraftplus.php:869
94
+ msgid "Backup contains"
95
+ msgstr "Sicherung enthält"
96
+
97
+ #: updraftplus.php:869
98
+ msgid "Latest status"
99
+ msgstr "Letzter Status"
100
+
101
+ #: updraftplus.php:1124
102
+ #, php-format
103
+ msgid "Could not create %s zip. Consult the log file for more information."
104
+ msgstr ""
105
+ "Konnte das ZIP %s nicht erstellen. Sieh in der Logdatei für weitere "
106
+ "Informationen nach."
107
+
108
+ #: updraftplus.php:1158
109
+ #, php-format
110
+ msgid "Backup directory (%s) is not writable, or does not exist."
111
+ msgstr "Sicherungsverzeichnis (%s) ist nicht schreibbar oder existiert nicht."
112
+
113
+ #: updraftplus.php:1248
114
+ msgid "Could not read the content directory"
115
+ msgstr "Konnte das Content-Verzeichnis nicht lesen"
116
+
117
+ #: updraftplus.php:1278
118
+ msgid ""
119
+ "Could not save backup history because we have no backup array. Backup "
120
+ "probably failed."
121
+ msgstr ""
122
+ "Konnte Sicherungs-Historie nicht speichern, da es kein Sicherungs-Array "
123
+ "gibt. Das Backup ist wahrscheinlich fehlgeschlagen."
124
+
125
+ #: updraftplus.php:1307
126
+ msgid "Could not open the backup file for writing"
127
+ msgstr "Konnte die Sicherungsdatei nicht zum schreiben öffnen."
128
+
129
+ #: updraftplus.php:1316
130
+ #, php-format
131
+ msgid "Generated: %s"
132
+ msgstr "Erzeugt: %s"
133
+
134
+ #: updraftplus.php:1317
135
+ #, php-format
136
+ msgid "Hostname: %s"
137
+ msgstr "Hostname: %s"
138
+
139
+ #: updraftplus.php:1318
140
+ #, php-format
141
+ msgid "Database: %s"
142
+ msgstr "Datenbank: %s"
143
+
144
+ #: updraftplus.php:1362
145
+ msgid "The backup directory is not writable."
146
+ msgstr "Das Sicherungsverzeichnis ist nicht beschreibbar."
147
+
148
+ #: updraftplus.php:1383
149
+ #, php-format
150
+ msgid "Table: %s"
151
+ msgstr "Tabelle: %s"
152
+
153
+ #: updraftplus.php:1388
154
+ #, php-format
155
+ msgid "Skipping non-WP table: %s"
156
+ msgstr "Überspringe nicht-WP-Tabelle: %s"
157
+
158
+ #: updraftplus.php:1479
159
+ #, php-format
160
+ msgid "Delete any existing table %s"
161
+ msgstr "Lösche alle vorhandenen Tabellen %s"
162
+
163
+ #: updraftplus.php:1488
164
+ #, php-format
165
+ msgid "Table structure of table %s"
166
+ msgstr "Tabellenstruktur von Tabelle %s"
167
+
168
+ #: updraftplus.php:1494
169
+ #, php-format
170
+ msgid "Error with SHOW CREATE TABLE for %s."
171
+ msgstr "Fehler mit SHOW CREATE TABLE für %s"
172
+
173
+ #: updraftplus.php:1501
174
+ #, php-format
175
+ msgid "Error getting table structure of %s"
176
+ msgstr "Fehler beim Lesen der Tabellenstruktur von %s"
177
+
178
+ #: updraftplus.php:1507
179
+ #, php-format
180
+ msgid "Data contents of table %s"
181
+ msgstr "Daten-Inhalt von Tabelle %s"
182
+
183
+ #: updraftplus.php:1563
184
+ #, php-format
185
+ msgid "End of data contents of table %s"
186
+ msgstr "Dateninhalt Ende von Tabelle %s"
187
+
188
+ #: updraftplus.php:1815
189
+ msgid "Nothing yet logged"
190
+ msgstr "Noch nichts aufgezeichnet"
191
+
192
+ #: updraftplus.php:1836
193
+ msgid "File downloading"
194
+ msgstr "Datei wird heruntergeladen"
195
+
196
+ #: updraftplus.php:1838
197
+ msgid "No local copy present."
198
+ msgstr "Keine lokale Sicherung vorhanden."
199
+
200
+ #: updraftplus.php:2014
201
+ msgid "File not found"
202
+ msgstr "Datei nicht gefunden"
203
+
204
+ #: updraftplus.php:2033
205
+ #, php-format
206
+ msgid ""
207
+ "The backup archive for restoring this file could not be found. The remote "
208
+ "storage method in use (%s) does not allow us to retrieve files. To proceed "
209
+ "with this restoration, you need to obtain a copy of this file and place it "
210
+ "inside UpdraftPlus's working folder"
211
+ msgstr ""
212
+ "Das Sicherungsarchiv zum Wiederherstellen der Datei konnte nicht gefunden "
213
+ "werden. Die benutzte Fernspeicher-Methode (%s) erlaubt es uns nicht, Dateien "
214
+ "zu laden. Um mit der Wiederherstellung fortzufahren, musst du eine Kopie der "
215
+ "Datei in das UpdraftPlus Arbeitsverzeichnis kopieren."
216
+
217
+ #: updraftplus.php:2043
218
+ msgid ""
219
+ "This backup does not exist in the backup history - restoration aborted. "
220
+ "Timestamp:"
221
+ msgstr ""
222
+ "Diese Sicherung existiert in der Sicherungshistorie nicht - "
223
+ "Wiederherstellung abgebrochen. Zeitstempel:"
224
+
225
+ #: updraftplus.php:2056
226
+ msgid "UpdraftPlus Restoration: Progress"
227
+ msgstr "UpdraftPlus Wiederherstellung: Fortschritt"
228
+
229
+ #: updraftplus.php:2063
230
+ msgid "ABORT: Could not find the information on which entities to restore."
231
+ msgstr ""
232
+ "ABBRUCH: Konnte die Informationen, welche Einheiten wiederherzustellen sind, "
233
+ "nicht finden."
234
+
235
+ #: updraftplus.php:2077 updraftplus.php:2820 updraftplus.php:3072
236
+ msgid "Database"
237
+ msgstr "Datenbank"
238
+
239
+ #: updraftplus.php:2083
240
+ msgid "This component was not selected for restoration - skipping."
241
+ msgstr ""
242
+ "Diese Komponente wurde nicht für die Wiederherstellung ausgewählt - "
243
+ "überspringe."
244
+
245
+ #: updraftplus.php:2091
246
+ msgid ""
247
+ "File is not locally present - needs retrieving from remote storage (for "
248
+ "large files, it is better to do this in advance from the download console)"
249
+ msgstr ""
250
+ "Datei ist lokal nicht verfügbar - erfordert herunterladen von Fernspeicher "
251
+ "(bei großen Dateien ist es besser, diese vorher via Download-Konsole "
252
+ "herunterzuladen)"
253
+
254
+ #: updraftplus.php:2097
255
+ msgid "Archive is expected to be size:"
256
+ msgstr "Die zu erwartene Archivgröße:"
257
+
258
+ #: updraftplus.php:2102
259
+ msgid "ERROR"
260
+ msgstr "FEHLER"
261
+
262
+ #: updraftplus.php:2105
263
+ msgid ""
264
+ "The backup records do not contain information about the proper size of this "
265
+ "file."
266
+ msgstr ""
267
+ "Die Sicherungsaufzeichnungen enthalten keine korrekte Größe dieser Datei."
268
+
269
+ #: updraftplus.php:2117
270
+ msgid "Error message"
271
+ msgstr "Fehlermeldung"
272
+
273
+ #: updraftplus.php:2123 updraftplus.php:2124
274
+ msgid "Could not find one of the files for restoration"
275
+ msgstr "Konnte eine Datei für die Wiederherstellung nicht finden."
276
+
277
+ #: updraftplus.php:2126
278
+ msgid ""
279
+ "Databases are not yet restored through this mechanism - use your web host's "
280
+ "control panel, phpMyAdmin or a similar tool"
281
+ msgstr ""
282
+ "Datenbanken werden zur Zeit nicht durch diesen Mechanismus wiederhergestellt "
283
+ "- benutze das Control-Panel deines Hosters, phpMyAdmin oder ein ähnliches "
284
+ "Hilfsmittel."
285
+
286
+ #: updraftplus.php:2132
287
+ msgid ""
288
+ "Database could not be restored because PHP safe_mode is active on your "
289
+ "server. You will need to manually restore the file via phpMyAdmin or "
290
+ "another method."
291
+ msgstr ""
292
+ "Datenbank konnte nicht wiederhergestellt werden, da PHP safe_mode auf diesem "
293
+ "Server aktiviert ist. Du musst die Datei via phpMyAdmin oder mit einem "
294
+ "anderen Hilfsmittel manuell wiederherstellen."
295
+
296
+ #: updraftplus.php:2156
297
+ msgid "Delete"
298
+ msgstr "Löschen"
299
+
300
+ #: updraftplus.php:2290
301
+ msgid "Find UpdraftPlus useful?"
302
+ msgstr "Findest du UpdraftPlus nützlich?"
303
+
304
+ #: updraftplus.php:2290
305
+ msgid "Please make a donation"
306
+ msgstr "Bitte spende"
307
+
308
+ #: updraftplus.php:2295
309
+ msgid "Like UpdraftPlus and can spare one minute?"
310
+ msgstr "Magst du UpdraftPlus und kannst eine Minute entbehren?"
311
+
312
+ #: updraftplus.php:2295
313
+ msgid "Please help UpdraftPlus by giving a positive review at wordpress.org"
314
+ msgstr "Bitte hilf UpdraftPlus by giving a positive Review at wordpress.org"
315
+
316
+ #: updraftplus.php:2302
317
+ msgid "Need even more features and support? Check out UpdraftPlus Premium"
318
+ msgstr ""
319
+ "Du brauchst mehr Funktionen und Unterstützung? Schau dir UpdraftPlus Premium "
320
+ "an"
321
+
322
+ #: updraftplus.php:2311
323
+ msgid "Check out UpdraftPlus.Com for help, add-ons and support"
324
+ msgstr ""
325
+ "Schau dir UpdraftPlus.Com für Hilfe, Erweiterungen und Unterstützugn an."
326
+
327
+ #: updraftplus.php:2314
328
+ msgid "Want to say thank-you for UpdraftPlus?"
329
+ msgstr "Möchtest du dich für UpdraftPlus bedanken?"
330
+
331
+ #: updraftplus.php:2314
332
+ msgid "Please buy our very cheap 'no adverts' add-on."
333
+ msgstr "Bitte kaufe unsere günstige 'Keine Werbung'-Erweiterung."
334
+
335
+ #: updraftplus.php:2325
336
+ msgid "File backup intervals"
337
+ msgstr "Datei-Sicherungs Intervalle"
338
+
339
+ #: updraftplus.php:2328
340
+ msgid "Manual"
341
+ msgstr "Dokumentation"
342
+
343
+ #: updraftplus.php:2328
344
+ msgid "Every 4 hours"
345
+ msgstr "Alle 4 Stunden"
346
+
347
+ #: updraftplus.php:2328
348
+ msgid "Every 8 hours"
349
+ msgstr "Alle 8 Stunden"
350
+
351
+ #: updraftplus.php:2328
352
+ msgid "Every 12 hours"
353
+ msgstr "Alle 12 Stunden"
354
+
355
+ #: updraftplus.php:2328
356
+ msgid "Daily"
357
+ msgstr "Täglich"
358
+
359
+ #: updraftplus.php:2328
360
+ msgid "Weekly"
361
+ msgstr "Wöchentlich"
362
+
363
+ #: updraftplus.php:2328
364
+ msgid "Fortnightly"
365
+ msgstr "Vierzehntägig"
366
+
367
+ #: updraftplus.php:2328
368
+ msgid "Monthly"
369
+ msgstr "Monatlich"
370
+
371
+ #: updraftplus.php:2337 updraftplus.php:2355
372
+ msgid "and retain this many backups"
373
+ msgstr "und behalte so viele Backups"
374
+
375
+ #: updraftplus.php:2344
376
+ msgid "Database backup intervals"
377
+ msgstr "Datenbank-Sicherungs-Intervalle"
378
+
379
+ #: updraftplus.php:2362
380
+ msgid ""
381
+ "If you would like to automatically schedule backups, choose schedules from "
382
+ "the dropdowns above. Backups will occur at the intervals specified. If the "
383
+ "two schedules are the same, then the two backups will take place together. "
384
+ "If you choose \"manual\" then you must click the \"Backup Now\" button "
385
+ "whenever you wish a backup to occur."
386
+ msgstr ""
387
+ "Wenn du automatische Sicherungen planen willst, wähle Sicherungspläne aus "
388
+ "den Auswahllisten oben aus. Sicherungen werden zu den definierten "
389
+ "Intervallen durchgeführt. Wenn die zwei Sicherungspläne übereinstimmen, "
390
+ "werden beide Sicherungen den selben Platz einnehmen. Wenn du \"Manuell\" "
391
+ "auswählst, musst du \"Jetzt sichern\" drücken, wann immer du eine Sicherung "
392
+ "wünschst."
393
+
394
+ #: updraftplus.php:2363
395
+ msgid "To fix the time at which a backup should take place,"
396
+ msgstr "Um die Zeit zu korrigieren, zu der eine Sicherung stattfinden sollte,"
397
+
398
+ #: updraftplus.php:2363
399
+ msgid "e.g. if your server is busy at day and you want to run overnight"
400
+ msgstr ""
401
+ "z.B. wenn dein Server tagsüber sehr beschäftigt ist und du bei Nacht "
402
+ "durchführen möchtest"
403
+
404
+ #: updraftplus.php:2363
405
+ msgid "use the \"Fix Time\" add-on"
406
+ msgstr "benutze die \"Fix Time\" Erweiterung"
407
+
408
+ #: updraftplus.php:2377
409
+ msgid ""
410
+ "Any other directories found inside wp-content but exclude these directories:"
411
+ msgstr ""
412
+ "Alle anderen Verzeichnisse in wp-content, aber ignoriere diese Verzeichnisse:"
413
+
414
+ #: updraftplus.php:2383
415
+ msgid ""
416
+ "Include all of these, unless you are backing them up outside of UpdraftPlus. "
417
+ "The above directories are usually everything (except for WordPress core "
418
+ "itself which you can download afresh from WordPress.org). But if you have "
419
+ "made customised modifications outside of these directories, you need to back "
420
+ "them up another way."
421
+ msgstr ""
422
+ "Füge alle diese hinzu, es seidenn du sicherst zu außerhalb von UpdraftPlus. "
423
+ "Die oberen Verzeichnisse sind normaler Weise alles (außer der WordPress-"
424
+ "Core, den du frisch von WordPress.org herunterladen). Wenn du manuelle "
425
+ "Veränderungen außerhalb dieser Verzeichnisse getätigt hast, musst du diese "
426
+ "anders sichern."
427
+
428
+ #: updraftplus.php:2383
429
+ msgid "Use WordShell for automatic backup, version control and patching"
430
+ msgstr ""
431
+ "Benutze WordShell für automatische Sicherungen, Versionierung und ausbessern."
432
+
433
+ #: updraftplus.php:2387
434
+ msgid "Email"
435
+ msgstr "E-Mail"
436
+
437
+ #: updraftplus.php:2388
438
+ msgid ""
439
+ "Enter an address here to have a report sent (and the whole backup, if you "
440
+ "choose) to it."
441
+ msgstr ""
442
+ "Gib hier eine Adresse ein, um Berichte zugesandt (und wenn ausgewählt die "
443
+ "Sicherungen) zu bekommen."
444
+
445
+ #: updraftplus.php:2392
446
+ msgid "Database encryption phrase"
447
+ msgstr "Datenbank-Verschlüsselungs-Phrase"
448
+
449
+ #: updraftplus.php:2399
450
+ msgid ""
451
+ "If you enter text here, it is used to encrypt backups (Rijndael). <strong>Do "
452
+ "make a separate record of it and do not lose it, or all your backups "
453
+ "<em>will</em> be useless.</strong> Presently, only the database file is "
454
+ "encrypted. This is also the key used to decrypt backups from this admin "
455
+ "interface (so if you change it, then automatic decryption will not work "
456
+ "until you change it back). You can also use the file example-decrypt.php "
457
+ "from inside the UpdraftPlus plugin directory to decrypt manually."
458
+ msgstr ""
459
+ "Wenn du einen Text hier eingibst, wird dieser benutzt um die Sicherungen zu "
460
+ "verschlüsseln (Rijndael). <strong>Sichere diesen Text an einer sicheren "
461
+ "stelle um ihn nicht zu verlieren/vergessen - die Sicherungen sind "
462
+ "<em>nutzlos</em> wenn du den Text vergisst.</strong> Aktuell wird nur die "
463
+ "Datenbank-Datei verschlüsselt. Der Text dient außerdem zur Entschlüsselung "
464
+ "der Sicherungen aus dieser Oberfläche (daher funktioniert Entschlüsselung "
465
+ "älterer Sicherungen nicht, wenn du diesen änderst). Außerdem kannst du das "
466
+ "Beispiel example-decrypt.php aus dem UpdraftPlus Plugin-Verzeichnis "
467
+ "verwenden, um manuell zu entschlüsseln."
468
+
469
+ #: updraftplus.php:2403
470
+ msgid "Copying Your Backup To Remote Storage"
471
+ msgstr "Kopiere deine Sicherung zum Fernspeicher"
472
+
473
+ #: updraftplus.php:2407
474
+ msgid "Choose your remote storage"
475
+ msgstr "Wähle deinen Fern-Speicher"
476
+
477
+ #: updraftplus.php:2419
478
+ msgid "None"
479
+ msgstr "keine"
480
+
481
+ #: updraftplus.php:2500 updraftplus.php:2838 updraftplus.php:3109
482
+ msgid "Restore"
483
+ msgstr "Wiederherstellen"
484
+
485
+ #: updraftplus.php:2514 updraftplus.php:2524
486
+ msgid "Cancel"
487
+ msgstr "Abbrechen"
488
+
489
+ #: updraftplus.php:2521 updraftplus.php:2830
490
+ msgid "Backup Now"
491
+ msgstr "Jetzt sichern"
492
+
493
+ #: updraftplus.php:2548
494
+ msgid "Advanced / Debugging Settings"
495
+ msgstr "Erweitert / Debugging-Einstellungen"
496
+
497
+ #: updraftplus.php:2551
498
+ msgid "Debug mode"
499
+ msgstr "Debug-Modus"
500
+
501
+ #: updraftplus.php:2552
502
+ msgid ""
503
+ "Check this to receive more information and emails on the backup process - "
504
+ "useful if something is going wrong. You <strong>must</strong> send us this "
505
+ "log if you are filing a bug report."
506
+ msgstr ""
507
+ "Wähle das aus, um mehr Informationen und E-Mails zum Backup-Prozess zu "
508
+ "erhalten - hilfreich wenn etwas schiefläuft. Du <stong>musst</strong> uns "
509
+ "dieses Log übersenden, wenn du einen Fehlerbericht erstellst."
510
+
511
+ #: updraftplus.php:2555
512
+ msgid "Expert settings"
513
+ msgstr "Experten-Einstellungen"
514
+
515
+ #: updraftplus.php:2556
516
+ msgid "Show expert settings"
517
+ msgstr "Zeige Experten-Einstellungen"
518
+
519
+ #: updraftplus.php:2556
520
+ msgid ""
521
+ "click this to show some further options; don't bother with this unless you "
522
+ "have a problem or are curious."
523
+ msgstr ""
524
+ "Klicke hier, um weitere Optionen anzuzeigen; schau nach, wenn du Probleme "
525
+ "hast oder neugierig bist."
526
+
527
+ #: updraftplus.php:2563
528
+ msgid "Delete local backup"
529
+ msgstr "Lösche lokale Sicherung"
530
+
531
+ #: updraftplus.php:2564
532
+ msgid ""
533
+ "Uncheck this to prevent deletion of any superfluous backup files from your "
534
+ "server after the backup run finishes (i.e. any files despatched remotely "
535
+ "will also remain locally, and any files being kept locally will not be "
536
+ "subject to the retention limits)."
537
+ msgstr ""
538
+ "Wähle das ab, um die Löschung überflüssiger Sicherungsdateien zu verhinden, "
539
+ "nachdem die Sicherung fertiggestellt wird. (Dateien können somit auch aus "
540
+ "dem Cloud-Speicher verschwinden und Dateilimits werden ignoriert)"
541
+
542
+ #: updraftplus.php:2568
543
+ msgid "Backup directory"
544
+ msgstr "Sicherungs-Verzeichnis"
545
+
546
+ #: updraftplus.php:2576
547
+ msgid "Backup directory specified is writable, which is good."
548
+ msgstr "Das definierte Sicherungsverzeichnis ist beschreibbar, das ist gut."
549
+
550
+ #: updraftplus.php:2578
551
+ msgid "Backup directory specified is <b>not</b> writable, or does not exist."
552
+ msgstr ""
553
+ "Das Sicherungsverzeichnis ist <b>nicht</b> beschreibbar oder existiert nicht."
554
+
555
+ #: updraftplus.php:2578
556
+ msgid "Click here to attempt to create the directory and set the permissions"
557
+ msgstr ""
558
+ "Klicke hier, um zu versuchen das Verzeichnis zu erstellen und die Rechte zu "
559
+ "setzen."
560
+
561
+ # may be wrong context
562
+ #: updraftplus.php:2578
563
+ msgid "or, to reset this option"
564
+ msgstr "oder, um diese Option zurückzusetzen"
565
+
566
+ #: updraftplus.php:2578
567
+ msgid "click here"
568
+ msgstr "Klicke hier"
569
+
570
+ #: updraftplus.php:2578
571
+ msgid ""
572
+ "If that is unsuccessful check the permissions on your server or change it to "
573
+ "another directory that is writable by your web server process."
574
+ msgstr ""
575
+ "Wenn dies fehlschlägt, prüfe die Berechtigungen auf deinem Server oder "
576
+ "ändere das Verzeichnis in eines, dass vom Webserver-Prozess beschrieben "
577
+ "werden darf."
578
+
579
+ #: updraftplus.php:2581
580
+ msgid ""
581
+ "This is where UpdraftPlus will write the zip files it creates initially. "
582
+ "This directory must be writable by your web server. Typically you'll want to "
583
+ "have it inside your wp-content folder (this is the default). <b>Do not</b> "
584
+ "place it inside your uploads dir, as that will cause recursion issues "
585
+ "(backups of backups of backups of...)."
586
+ msgstr ""
587
+ "Das ist der Ort an dem UpdraftPlus die ZIP-Dateien schreibt. Dieses "
588
+ "Verzeichnis muss von deinem Webserver beschreibbar sein. Typischer Weise "
589
+ "wirst du es im wp-content-Ordner haben wollen (Standard). Platziere es "
590
+ "<b>nicht</b> in das uploads-Verzeichnis, da es sonst zu Schleifenproblemen "
591
+ "kommt (Sicherung von der Sicherung (...))."
592
+
593
+ #: updraftplus.php:2602
594
+ msgid "Save Changes"
595
+ msgstr "Änderungen speichern"
596
+
597
+ #: updraftplus.php:2626
598
+ msgid "Download log file"
599
+ msgstr "Lade Logdatei herunter"
600
+
601
+ #: updraftplus.php:2632
602
+ msgid "No backup has been completed."
603
+ msgstr "Keine Sicherung wurde vervollständigt."
604
+
605
+ #: updraftplus.php:2652
606
+ msgid "Restore successful!"
607
+ msgstr "Wiederherstellung erfolgreich!"
608
+
609
+ #: updraftplus.php:2653 updraftplus.php:2688 updraftplus.php:2704
610
+ msgid "Actions"
611
+ msgstr "Aktionen"
612
+
613
+ #: updraftplus.php:2653 updraftplus.php:2668 updraftplus.php:2688
614
+ #: updraftplus.php:2704
615
+ msgid "Return to UpdraftPlus Configuration"
616
+ msgstr "Kehre zur UpdraftPlus Konfiguration zurück"
617
+
618
+ #: updraftplus.php:2677
619
+ msgid "Remove old directories"
620
+ msgstr "Entferne alte Verzeichnisse"
621
+
622
+ #: updraftplus.php:2683
623
+ msgid "Old directories successfully removed."
624
+ msgstr "Alte Verzeichnisse erfolgreich entfernt."
625
+
626
+ #: updraftplus.php:2686
627
+ msgid ""
628
+ "Old directory removal failed for some reason. You may want to do this "
629
+ "manually."
630
+ msgstr ""
631
+ "Entfernen alter Verzeichnisse aus irgendeinem Grund fehlgeschlagen. "
632
+ "Vielleicht möchtest du es manuell probieren."
633
+
634
+ #: updraftplus.php:2701
635
+ msgid "Backup directory could not be created"
636
+ msgstr "Sicherungsverzeichnis konnte nicht erstellt werden."
637
+
638
+ #: updraftplus.php:2703
639
+ msgid "Backup directory successfully created."
640
+ msgstr "Sicherungsverzeichnis erfolgreich erstellt."
641
+
642
+ #: updraftplus.php:2710
643
+ msgid "Schedule backup"
644
+ msgstr "Plane Sicherung"
645
+
646
+ #: updraftplus.php:2713
647
+ msgid "Failed."
648
+ msgstr "Fehlgeschlagen."
649
+
650
+ #: updraftplus.php:2715
651
+ msgid ""
652
+ "OK. Now load any page from your site to make sure the schedule can trigger. "
653
+ "You should then see activity in the \"Last log message\" field below."
654
+ msgstr ""
655
+ "Okay. Nun lade irgendeine Seite deiner Webseite damit der Plan auslösen "
656
+ "kann. Du solltest im \"Letzte Lognachricht\" Feld unterhalb Aktivitäten "
657
+ "sehen."
658
+
659
+ #: updraftplus.php:2715
660
+ msgid "Nothing happening? Follow this link for help."
661
+ msgstr "Nichts passiert? Folge diesem Link für Hilfe."
662
+
663
+ #: updraftplus.php:2728
664
+ msgid "Your settings have been wiped."
665
+ msgstr "Deine Einstellungen wurden zurückgesetzt."
666
+
667
+ #: updraftplus.php:2735
668
+ msgid "By UpdraftPlus.Com"
669
+ msgstr "Von UpdraftPlus.cCom"
670
+
671
+ #: updraftplus.php:2735
672
+ msgid "Lead developer's homepage"
673
+ msgstr "Website des leitenden Entwicklers"
674
+
675
+ #: updraftplus.php:2735
676
+ msgid "Donate"
677
+ msgstr "Spende"
678
+
679
+ #: updraftplus.php:2735
680
+ msgid "Other WordPress plugins"
681
+ msgstr "Andere WordPress Plugins"
682
+
683
+ #: updraftplus.php:2735
684
+ msgid "Version"
685
+ msgstr "Version"
686
+
687
+ #: updraftplus.php:2739
688
+ msgid "Your backup has been restored."
689
+ msgstr "Deine Sicherung wurde wiederhergestellt."
690
+
691
+ #: updraftplus.php:2739
692
+ msgid ""
693
+ "Your old (themes, uploads, plugins, whatever) directories have been retained "
694
+ "with \"-old\" appended to their name. Remove them when you are satisfied "
695
+ "that the backup worked properly."
696
+ msgstr ""
697
+ "Deine alten Verzeichnisse (themes,uploads,plugins,was-auch-immer) wurden mit "
698
+ "dem Anhang \"-old\" umbenannt. Entferne diese, wenn du mit der "
699
+ "Wiederherstellung zufrieden bist und alles funktioniert."
700
+
701
+ #: updraftplus.php:2739
702
+ msgid ""
703
+ "At this time UpdraftPlus does not automatically restore your database. You "
704
+ "will need to use an external tool like phpMyAdmin to perform that task."
705
+ msgstr ""
706
+ "Zur Zeit stellt UpdraftPlus deine Datenbank nicht automatisch wieder her. Du "
707
+ "benötigst ein externes Programm wie z.B. phpMyAdmin um dies zu tun."
708
+
709
+ #: updraftplus.php:2745
710
+ msgid "Old directories successfully deleted."
711
+ msgstr "Alte Verzeichnisse erfolgreich entfernt."
712
+
713
+ #: updraftplus.php:2748
714
+ msgid ""
715
+ "Your PHP memory limit is quite low. UpdraftPlus attempted to raise it but "
716
+ "was unsuccessful. This plugin may not work properly with a memory limit of "
717
+ "less than 96 Mb (though on the other hand, it has been used successfully "
718
+ "with a 32Mb limit - your mileage may vary, but don't blame us!)."
719
+ msgstr ""
720
+ "Dein PHP Speicherlimit ist ziemlich niedrig. UpdraftPlus hat versucht es zu "
721
+ "erhöhen, jedoch ohne Erfolg. Dieses Plugin arbeitet ggf. nicht ordentlich "
722
+ "mit weniger als 96MB Speicherlimit. (Es funktionierte auch schon mit 32MB, "
723
+ "allerdings ist das Glückssache)"
724
+
725
+ #: updraftplus.php:2748
726
+ msgid "Current limit is:"
727
+ msgstr "Aktuelles Limit ist:"
728
+
729
+ #: updraftplus.php:2752
730
+ msgid ""
731
+ "Your PHP max_execution_time is less than 60 seconds. This possibly means "
732
+ "you're running in safe_mode. Either disable safe_mode or modify your php.ini "
733
+ "to set max_execution_time to a higher number. If you do not, then longer "
734
+ "will be needed to complete a backup (but that is all). Present limit is:"
735
+ msgstr ""
736
+ "PHP max_execution_time ist aus niedriger als 60 Sekunden eingestellt. Das "
737
+ "kann bedeuten, dass PHP im safe_mode läuft. Deaktiviere safe_mode oder "
738
+ "bearbeite deine php.ini und setze max_execution_time auf einen höheren Wert. "
739
+ "Wenn du dies nicht tust, wird die Sicherung lediglich mehr Zeit in Anspruch "
740
+ "nehmen (das ist alles). Aktuelles Limit ist:"
741
+
742
+ #: updraftplus.php:2752
743
+ msgid "seconds"
744
+ msgstr "Sekunden"
745
+
746
+ #: updraftplus.php:2757
747
+ msgid ""
748
+ "You have old directories from a previous backup (technical information: "
749
+ "these are found in wp-content, and suffixed with -old). Use this button to "
750
+ "delete them (if you have verified that the restoration worked)."
751
+ msgstr ""
752
+ "Es existieren noch alte Verzeichnisse von vorherigen Sicherungen (technische "
753
+ "Information: befinden sich in wp-content mit dem Suffix -old). Benutze "
754
+ "diesen Button, um sie zu löschen (wenn du geprüft hast, das die "
755
+ "Wiederherstellung erfolgreich war)."
756
+
757
+ #: updraftplus.php:2761
758
+ msgid "Delete Old Directories"
759
+ msgstr "Lösche alte Verzeichnisse"
760
+
761
+ #: updraftplus.php:2761
762
+ msgid ""
763
+ "Are you sure you want to delete the old directories? This cannot be undone."
764
+ msgstr ""
765
+ "Bist du dir sicher, dass du die alten Verzeichnisse löschen möchtest? Das "
766
+ "kann nicht rückgängig gemacht werden."
767
+
768
+ #: updraftplus.php:2774
769
+ msgid "Existing Schedule And Backups"
770
+ msgstr "Vorhandene Plannungen und Sicherungen"
771
+
772
+ #: updraftplus.php:2778
773
+ msgid "JavaScript warning"
774
+ msgstr "JavaScript-Warnung"
775
+
776
+ #: updraftplus.php:2779
777
+ msgid ""
778
+ "This admin interface uses JavaScript heavily. You either need to activate it "
779
+ "within your browser, or to use a JavaScript-capable browser."
780
+ msgstr ""
781
+ "Diese Administrationsoberfläche nutzt sehr viel JavaScript. Du musst dieses "
782
+ "entweder in deinem Browser aktivieren oder einen JavaScript-fähigen Browser "
783
+ "verwenden."
784
+
785
+ #: updraftplus.php:2792 updraftplus.php:2805
786
+ msgid "Nothing currently scheduled"
787
+ msgstr "Zur Zeit nichts geplant"
788
+
789
+ # Not sure about content, tried to look it up and hope I got it right
790
+ #: updraftplus.php:2797
791
+ msgid "At the same time as the files backup"
792
+ msgstr "Zur selben Zeit, wie die Dateien gesichert werden."
793
+
794
+ #: updraftplus.php:2817
795
+ msgid "Next scheduled backups"
796
+ msgstr "Nächste geplante Sicherungen"
797
+
798
+ #: updraftplus.php:2819
799
+ msgid "Files"
800
+ msgstr "Dateien"
801
+
802
+ #: updraftplus.php:2821
803
+ msgid "Time now"
804
+ msgstr "Aktuelle Zeit"
805
+
806
+ #: updraftplus.php:2825
807
+ msgid "Last finished backup run"
808
+ msgstr "Letzte beendete Sicherung lief"
809
+
810
+ #: updraftplus.php:2845
811
+ msgid "Last log message"
812
+ msgstr "Letzte Log-Nachricht"
813
+
814
+ #: updraftplus.php:2846
815
+ msgid "(Nothing yet logged)"
816
+ msgstr "(Noch nichts aufgezeichnet)"
817
+
818
+ #: updraftplus.php:2849
819
+ msgid "Backups, logs & restoring"
820
+ msgstr "Sicherungen, Logs & Wiederherstellung"
821
+
822
+ #: updraftplus.php:2850
823
+ msgid "Press to see available backups"
824
+ msgstr "Drücken um verfügbare Sicherungen zu sehen"
825
+
826
+ #: updraftplus.php:2850
827
+ #, php-format
828
+ msgid "%d set(s) available"
829
+ msgstr "%d Sammlung(en) verfügbar"
830
+
831
+ #: updraftplus.php:2855
832
+ msgid "Downloading"
833
+ msgstr "Lade herunter"
834
+
835
+ #: updraftplus.php:2855
836
+ msgid ""
837
+ "Pressing a button for Database/Plugins/Themes/Uploads/Others will make "
838
+ "UpdraftPlus try to bring the backup file back from the remote storage (if "
839
+ "any - e.g. Amazon S3, Dropbox, Google Drive, FTP) to your webserver. Then "
840
+ "you will be allowed to download it to your computer. If the fetch from the "
841
+ "remote storage stops progressing (wait 30 seconds to make sure), then press "
842
+ "again to resume. Remember that you can also visit the cloud storage vendor's "
843
+ "website directly."
844
+ msgstr ""
845
+ "Das Drücken eines Buttons für Datenbank/Plugins/Designs/Uploads/Andere lässt "
846
+ "UpdraftPlus versuchen die Sicherungsdateien vom Fernspeicher (wenn genutzt) "
847
+ "auf den Webspace zu laden. Danach kannst du dieses herunterladen. Wenn das "
848
+ "Herunterladen einfriert (warte 30 Sekunden um sicher zu gehen), drücke den "
849
+ "Button erneut zum Wiederaufnehmen. Natürlich kannst du die Dateien auch "
850
+ "jederzeit von der Seite deines Cloud-Anbieters laden."
851
+
852
+ #: updraftplus.php:2856
853
+ msgid "Restoring"
854
+ msgstr "Wiederherstellen"
855
+
856
+ #: updraftplus.php:2856
857
+ msgid ""
858
+ "Press the button for the backup you wish to restore. If your site is large "
859
+ "and you are using remote storage, then you should first click on each entity "
860
+ "in order to retrieve it back to the webserver. This will prevent time-outs "
861
+ "from occuring during the restore process itself."
862
+ msgstr ""
863
+ "Klicke auf den Button für die Sicherung, die du wiederherstellen willst. "
864
+ "Wenn deine Seite sehr groß ist und du Fernspeicher benutzt, solltest du "
865
+ "vorher jeden Eintrag vorher auswählen, um die Sicherung auf den lokalen "
866
+ "Server zu laden. Das verhindert Timeouts bei dem Wiederherstellungsprozess."
867
+
868
+ #: updraftplus.php:2856
869
+ msgid "More tasks:"
870
+ msgstr "Weitere Aufgaben:"
871
+
872
+ #: updraftplus.php:2856
873
+ msgid "upload backup files"
874
+ msgstr "Sicherungsdateien hochladen"
875
+
876
+ #: updraftplus.php:2856
877
+ msgid ""
878
+ "Press here to look inside your UpdraftPlus directory (in your web hosting "
879
+ "space) for any new backup sets that you have uploaded. The location of this "
880
+ "directory is set in the expert settings, below."
881
+ msgstr ""
882
+ "Klicke hier um in dein UpdraftPlus Verzeichnis zu schauen (auf deinem "
883
+ "Webhosting-Space) und alle neuen Sicherungen, die du hochgeladen hast, zu "
884
+ "sehen. Der Ort dieses Verzeichnisses kann unten in den Experteneinstellungen "
885
+ "definiert werden."
886
+
887
+ #: updraftplus.php:2856
888
+ msgid "rescan folder for new backup sets"
889
+ msgstr "Durchsuche Verzeichnis nach neuen Sicherungen"
890
+
891
+ #: updraftplus.php:2857
892
+ msgid "Opera web browser"
893
+ msgstr "Opera Web Browser"
894
+
895
+ #: updraftplus.php:2857
896
+ msgid "If you are using this, then turn Turbo/Road mode off."
897
+ msgstr "Wenn du das benutzt, deaktiviere den Tubro-Modus."
898
+
899
+ #: updraftplus.php:2858
900
+ msgid "This is a count of the contents of your Updraft directory"
901
+ msgstr "Das ist eine Zählung von Inhalten in deinem Updraft-Verzeichnis."
902
+
903
+ # I have no idea how to translate that one better
904
+ #: updraftplus.php:2858
905
+ msgid "Web-server disk space in use by UpdraftPlus"
906
+ msgstr "Web-Server Festplatte in Benutzung von UpdraftPlus"
907
+
908
+ #: updraftplus.php:2858
909
+ msgid "refresh"
910
+ msgstr "aktualisieren"
911
+
912
+ #: updraftplus.php:2860
913
+ msgid "UpdraftPlus - Upload backup files"
914
+ msgstr "UpdraftPlus hochgeladene Sicherungen"
915
+
916
+ #: updraftplus.php:2861
917
+ msgid ""
918
+ "Upload files into UpdraftPlus. Use this to import backups made on a "
919
+ "different WordPress installation."
920
+ msgstr ""
921
+ "Lade Dateien nach UpdraftPlus hoch. Nutze diese Funktion um Sicherungen von "
922
+ "anderen WordPress-Installationen zu importieren."
923
+
924
+ #: updraftplus.php:2865
925
+ msgid "Drop backup zips here"
926
+ msgstr "Ziehe Sicherungsarchive hierher"
927
+
928
+ #: updraftplus.php:2879
929
+ msgid "calculating..."
930
+ msgstr "Berechne...."
931
+
932
+ #: updraftplus.php:2948
933
+ msgid "Restore backup"
934
+ msgstr "Sicherung wiederherstellen"
935
+
936
+ #: updraftplus.php:2949
937
+ msgid "Restore backup from"
938
+ msgstr "Stelle Sicherung wieder her von"
939
+
940
+ # Again, missing )
941
+ #: updraftplus.php:2950
942
+ msgid ""
943
+ "Restoring will replace this site's themes, plugins, uploads and/or other "
944
+ "content directories (according to what is contained in the backup set, and "
945
+ "your selection"
946
+ msgstr ""
947
+ "Die Wiederherstellung wird die Designs,Plugins,Uploads und/oder andere "
948
+ "Inhalt-Verzeichnisse (basierend auf deiner Auswahl) ersetzen."
949
+
950
+ #: updraftplus.php:2950
951
+ msgid "Choose the components to restore"
952
+ msgstr "Wähle die Komponenten zum Wiederherstellen aus"
953
+
954
+ #: updraftplus.php:2961
955
+ msgid ""
956
+ "Databases cannot yet be restored from here - you must download the database "
957
+ "file and take it to your web hosting company's control panel."
958
+ msgstr ""
959
+ "Datenbanken können hier mit noch nicht wiederhergestellt werden - du musst "
960
+ "die Datenbankdatei herunterladen und in der Administrationsoberfläche deines "
961
+ "Hosters einlesen."
962
+
963
+ #: updraftplus.php:2966
964
+ msgid "Perform a backup now"
965
+ msgstr "Jetzt sichern"
966
+
967
+ #: updraftplus.php:2968
968
+ msgid ""
969
+ "This will schedule a one-time backup. To proceed, press 'Backup Now', then "
970
+ "wait 10 seconds, then visit any page on your site. WordPress should then "
971
+ "start the backup running in the background."
972
+ msgstr ""
973
+ "Das wird eine einmalige Sicherung auslösen. Um fortzufahren, drücke 'Jetzt "
974
+ "sichern' und warte 10 Sekunden, dann besuche irgendeine Seite deines Blogs. "
975
+ "WordPress sollte dann die Sicherung im Hintergrund starten."
976
+
977
+ #: updraftplus.php:2974
978
+ msgid "Does nothing happen when you schedule backups?"
979
+ msgstr "Passiert nichts, wenn du Sicherungen planst?"
980
+
981
+ #: updraftplus.php:2974
982
+ msgid "Go here for help."
983
+ msgstr "Klicke hier für Hilfe"
984
+
985
+ #: updraftplus.php:2981
986
+ msgid "Multisite"
987
+ msgstr "Multiseiten"
988
+
989
+ #: updraftplus.php:2985
990
+ msgid "Do you need WordPress Multisite support?"
991
+ msgstr "Brauchst du WordPress Multiseiten Unterstützung?"
992
+
993
+ #: updraftplus.php:2985
994
+ msgid ""
995
+ "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on."
996
+ msgstr "Bitte schau dir UpdraftPlus Premium oder das Multiseiten Add-On an."
997
+
998
+ #: updraftplus.php:2990
999
+ msgid "Configure Backup Contents And Schedule"
1000
+ msgstr "Konfiguriere Sicherungsinhalte und Sicherungszeiten"
1001
+
1002
+ #: updraftplus.php:2996
1003
+ msgid "Debug Information And Expert Options"
1004
+ msgstr "Debug Informationen und Experteneinstellungen"
1005
+
1006
+ #: updraftplus.php:3001
1007
+ msgid "Peak memory usage"
1008
+ msgstr "Spitzenwert d. Speichernutzung"
1009
+
1010
+ #: updraftplus.php:3002
1011
+ msgid "Current memory usage"
1012
+ msgstr "Aktuelle Speichernutzung"
1013
+
1014
+ #: updraftplus.php:3003
1015
+ msgid "PHP memory limit"
1016
+ msgstr "PHP-Speicher-Limit"
1017
+
1018
+ #: updraftplus.php:3006
1019
+ msgid ""
1020
+ "The buttons below will immediately execute a backup run, independently of "
1021
+ "WordPress's scheduler. If these work whilst your scheduled backups and the "
1022
+ "\"Backup Now\" button do absolutely nothing (i.e. not even produce a log "
1023
+ "file), then it means that your scheduler is broken. You should then disable "
1024
+ "all your other plugins, and try the \"Backup Now\" button. If that fails, "
1025
+ "then contact your web hosting company and ask them if they have disabled wp-"
1026
+ "cron. If it succeeds, then re-activate your other plugins one-by-one, and "
1027
+ "find the one that is the problem and report a bug to them."
1028
+ msgstr ""
1029
+ "Der Button unterhalb wird, abhängig vom WordPress Planner, sofort eine "
1030
+ "Sicherung anlegen. Sollten die SIcherungen nur durch den Cronjob und nicht "
1031
+ "den \"Jetzt sichern\" Button funktionieren (und keine Logdatei angelegt "
1032
+ "wird), ist dein Planner defekt. Deaktiviere alle anderen Plugins und "
1033
+ "versuche es erneut mit dem \"Jetzt sichern\" Button. Wenn auch das "
1034
+ "fehlschlägt, kontaktiere deinen Webhoster und frage, ob dieser wp-cron "
1035
+ "deaktiviert hat. Wenn alles glatt läuft, aktiviere deine Plugins einzeln um "
1036
+ "das Problem-Plugin zu finden und dem Ersteller einen fehlerbericht zu senden."
1037
+
1038
+ #: updraftplus.php:3010
1039
+ msgid "Debug Full Backup"
1040
+ msgstr "Debug komplette Sicherung"
1041
+
1042
+ #: updraftplus.php:3010
1043
+ msgid ""
1044
+ "This will cause an immediate backup. The page will stall loading until it "
1045
+ "finishes (ie, unscheduled)."
1046
+ msgstr ""
1047
+ "Das führt zu einer sofortigen Sicherung. Die Seite wird das vollständige "
1048
+ "Laden herauszögern (wenn ungeplant)."
1049
+
1050
+ #: updraftplus.php:3014
1051
+ msgid "Debug Database Backup"
1052
+ msgstr "Debug Datenbank-Sicherung"
1053
+
1054
+ #: updraftplus.php:3014
1055
+ msgid ""
1056
+ "This will cause an immediate DB backup. The page will stall loading until it "
1057
+ "finishes (ie, unscheduled). The backup may well run out of time; really this "
1058
+ "button is only helpful for checking that the backup is able to get through "
1059
+ "the initial stages, or for small WordPress sites.."
1060
+ msgstr ""
1061
+ "Das wird eine sofortige Datenbanksicherung auslösen. Die Seite wird nicht "
1062
+ "vollständig laden, bis dieses abgeschlossen ist (wenn ungeplant). Die "
1063
+ "Sicherung kann in einen Timeout laufen; diese Funktion ist eher für kleine "
1064
+ "WordPress-Installationen oder zum Test, ob die Sicherung durch die "
1065
+ "Anfangsschritte kommt, geeignet."
1066
+
1067
+ #: updraftplus.php:3016
1068
+ msgid "Wipe Settings"
1069
+ msgstr "Lösche Einstellungen"
1070
+
1071
+ #: updraftplus.php:3017
1072
+ msgid ""
1073
+ "This button will delete all UpdraftPlus settings (but not any of your "
1074
+ "existing backups from your cloud storage). You will then need to enter all "
1075
+ "your settings again. You can also do this before deactivating/deinstalling "
1076
+ "UpdraftPlus if you wish."
1077
+ msgstr ""
1078
+ "Dieser Button löscht alle UpdraftPlus Einstellungen (allerdings keine "
1079
+ "Sicherungen vom Cloud-Speicher). Du musst danach alle deine Einstellungen "
1080
+ "erneut eingeben. Du kannst das auch tun, bevor du UpdraftPlus deaktivierst/"
1081
+ "deinstalliert, wenn du möchtest."
1082
+
1083
+ #: updraftplus.php:3020
1084
+ msgid "Wipe All Settings"
1085
+ msgstr "Lösche alle Einstellungen"
1086
+
1087
+ #: updraftplus.php:3020
1088
+ msgid ""
1089
+ "This will delete all your UpdraftPlus settings - are you sure you want to do "
1090
+ "this?"
1091
+ msgstr ""
1092
+ "Alle deine UpdraftPlus-Einstellungen werden gelöscht - bist du dir sicher?"
1093
+
1094
+ #: updraftplus.php:3089
1095
+ msgid "Press here to download"
1096
+ msgstr "Hier drücken zum Herunterladen"
1097
+
1098
+ #: updraftplus.php:3091
1099
+ #, php-format
1100
+ msgid "(No %s)"
1101
+ msgstr "(Kein %s)"
1102
+
1103
+ #: updraftplus.php:3101
1104
+ msgid "Backup Log"
1105
+ msgstr "Sicherungs-Log"
1106
+
1107
+ #: updraftplus.php:3109
1108
+ msgid ""
1109
+ "After pressing this button, you will be given the option to choose which "
1110
+ "components you wish to restore"
1111
+ msgstr ""
1112
+ "Nach dem drücken dieses Buttons, hast du die Möglichkeiten die "
1113
+ "wiederherzustellenden Komponenten auszuwählen."
1114
+
1115
+ #: updraftplus.php:3134 updraftplus.php:3138
1116
+ msgid "Warning"
1117
+ msgstr "Warnung"
1118
+
1119
+ #: updraftplus.php:3134
1120
+ #, php-format
1121
+ msgid ""
1122
+ "You have less than %s of free disk space on the disk which UpdraftPlus is "
1123
+ "configured to use to create backups. UpdraftPlus could well run out of "
1124
+ "space. Contact your the operator of your server (e.g. your web hosting "
1125
+ "company) to resolve this issue."
1126
+ msgstr ""
1127
+ "Du hast weniger als %s freien Speicherplatz auf dem Laufwerk, dass "
1128
+ "UpdraftPlus für Sicherungen verwenden soll. UpdraftPlus könnte nicht genug "
1129
+ "Speicherplatz haben. Kontaktiere deinen Webhoster, um das Problem zu lösen."
1130
+
1131
+ #: updraftplus.php:3138
1132
+ #, php-format
1133
+ msgid ""
1134
+ "UpdraftPlus does not officially support versions of WordPress before %s. It "
1135
+ "may work for you, but if it does not, then please be aware that no support "
1136
+ "is available until you upgrade WordPress."
1137
+ msgstr ""
1138
+ "UpdraftPlus unterstützt offiziel keine WordPress-Versionen vor %s. Es kann "
1139
+ "funktionieren, wenn jedoch nicht, können wir dir keine Hilfestellung geben."
1140
+
1141
+ #: updraftplus.php:3142 updraftplus.php:3146 updraftplus.php:3150
1142
+ msgid "UpdraftPlus notice:"
1143
+ msgstr "UpdraftPlus Hinweis:"
1144
+
1145
+ #: updraftplus.php:3142
1146
+ msgid "The log file could not be read."
1147
+ msgstr "Die Logdatei konnte nicht gelesen werden."
1148
+
1149
+ #: updraftplus.php:3146 updraftplus.php:3150
1150
+ #, php-format
1151
+ msgid ""
1152
+ "Click here to authenticate your %s account (you will not be able to back up "
1153
+ "to %s without it)."
1154
+ msgstr ""
1155
+ "Klicke hier um deinen %s Account zu authentifizieren (Du wirst nicht in der "
1156
+ "Lage sein nach %s zu sichern, wenn du es nicht tust)."
1157
+
1158
+ #: updraftplus.php:3323
1159
+ msgid "Infinite recursion: consult your log for more information"
1160
+ msgstr ""
1161
+ "Unendliche Rekursion: Schau in der Logdatei für weitere Informationen nach"
1162
+
1163
+ #: includes/updraft-restorer.php:5
1164
+ msgid "Backup file not available."
1165
+ msgstr "Sicherungsdatei nicht verfügbar."
1166
+
1167
+ #: includes/updraft-restorer.php:6
1168
+ msgid "Unpacking backup..."
1169
+ msgstr "Entpacke Sicherung..."
1170
+
1171
+ #: includes/updraft-restorer.php:7
1172
+ msgid "Moving old directory out of the way..."
1173
+ msgstr "Entferne altes Verzeichnis...."
1174
+
1175
+ #: includes/updraft-restorer.php:8
1176
+ msgid "Moving unpacked backup in place..."
1177
+ msgstr "Verschiebe entpackte Sicherung..."
1178
+
1179
+ #: includes/updraft-restorer.php:9
1180
+ msgid "Cleaning up rubbish..."
1181
+ msgstr "Räume auf ..."
1182
+
1183
+ #: includes/updraft-restorer.php:10
1184
+ msgid ""
1185
+ "Could not move old directory out of the way. Perhaps you already have -old "
1186
+ "directories that need deleting first?"
1187
+ msgstr ""
1188
+ "Konnte altes Verzeichnis nicht entfernen. Vielleicht existieren noch alte "
1189
+ "Verzeichnisse die zuerst gelöscht werden müssen?"
1190
+
1191
+ #: includes/updraft-restorer.php:11
1192
+ msgid ""
1193
+ "Could not move new directory into place. Check your wp-content/upgrade "
1194
+ "folder."
1195
+ msgstr ""
1196
+ "Konnte neues Verzeichnis nicht verschieben. Überprüfe deinen wp-content/"
1197
+ "upgrade-Order."
1198
+
1199
+ #: includes/updraft-restorer.php:12
1200
+ msgid "Failed to delete working directory after restoring."
1201
+ msgstr ""
1202
+ "Löschen des Arbeitsverzeichnissen nach Wiederherstellung fehlgeschlagen."
1203
+
1204
+ #: includes/updraft-restorer.php:34
1205
+ msgid ""
1206
+ "Will not delete the archive after unpacking it, because there was no cloud "
1207
+ "storage for this backup"
1208
+ msgstr ""
1209
+ "Werde das Archiv nach dem Entpacken nicht löschen, weil es keinen Cloud-"
1210
+ "Speicher für dieses Backup gibt."
1211
+
1212
+ #: methods/webdav.php:13 methods/webdav.php:34 methods/webdav.php:50
1213
+ #: methods/sftp.php:13 methods/sftp.php:34 methods/sftp.php:50
1214
+ #, php-format
1215
+ msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s"
1216
+ msgstr ""
1217
+ "Du hast nicht die UpdraftPlus %s Erweiterung installiert - bekomme sie von %s"
1218
+
1219
+ #: methods/webdav.php:63 methods/sftp.php:63
1220
+ #, php-format
1221
+ msgid "%s support is available as an add-on"
1222
+ msgstr "%s Unterstützung ist als Erweiterung verfügbar"
1223
+
1224
+ #: methods/webdav.php:63 methods/sftp.php:63
1225
+ msgid "follow this link to get it"
1226
+ msgstr "folge diesem Link um es zu bekommen"
1227
+
1228
+ #: methods/googledrive.php:94 methods/s3.php:326 methods/dropbox.php:293
1229
+ #: addons/webdav.php:292
1230
+ msgid "Success"
1231
+ msgstr "Erfolg"
1232
+
1233
+ #: methods/googledrive.php:94 methods/dropbox.php:293
1234
+ #, php-format
1235
+ msgid "you have authenticated your %s account"
1236
+ msgstr "du hast deinen %s Account authentifiziert"
1237
+
1238
+ #: methods/googledrive.php:94 methods/googledrive.php:325
1239
+ #: methods/googledrive.php:327 methods/googledrive.php:345
1240
+ #: methods/googledrive.php:349 methods/googledrive.php:353
1241
+ msgid "Google Drive"
1242
+ msgstr "Google Drive"
1243
+
1244
+ # Sentence makes less sence with last part, ignoring it thus
1245
+ #: methods/googledrive.php:98
1246
+ msgid ""
1247
+ "No refresh token was received from Google. This often means that you entered "
1248
+ "your client secret wrongly, or that you have not yet re-authenticated "
1249
+ "(below) since correcting it. Re-check it, then follow the link to "
1250
+ "authenticate again. Finally, if that does not work, then use expert mode to "
1251
+ "wipe all your settings, create a new Google client ID/secret, and start "
1252
+ "again."
1253
+ msgstr ""
1254
+ "Es wurde kein Aktualisierungs-Token von Google empfangen. Das liegt meistens "
1255
+ "an einem falsch eingegebenen Client-Secret oder, dass du dich noch nicht neu "
1256
+ "authentifiziert (unten) hast. Überprüfe dein Secret und folge dem Link zur "
1257
+ "erneuten Authentifizierung. Sollte es weiterhin Probleme geben, setze deine "
1258
+ "Einstellungen unter Experten-Einstellungen zurück und erstelle eine neue "
1259
+ "Google Client-ID/-Secret und probiere es erneut."
1260
+
1261
+ #: methods/googledrive.php:103
1262
+ msgid "Authorization failed"
1263
+ msgstr "Authentifizierung fehlgeschlagen"
1264
+
1265
+ #: methods/googledrive.php:117
1266
+ msgid ""
1267
+ "Have not yet obtained an access token from Google - you need to authorise or "
1268
+ "re-authorise your connection to Google Drive."
1269
+ msgstr ""
1270
+ "Noch keinen Zugangs-Token von Google erhalten - du musst die Verbindung zu "
1271
+ "Google Drive authorisieren bzw erneut authorisieren."
1272
+
1273
+ #: methods/googledrive.php:118 methods/googledrive.php:254
1274
+ msgid ""
1275
+ "Have not yet obtained an access token from Google (has the user authorised?)"
1276
+ msgstr ""
1277
+ "Kein Zugangs-Token von Google erhalten (hat der User sich authentifiziert?)"
1278
+
1279
+ #: methods/googledrive.php:135 addons/webdav.php:57
1280
+ #, php-format
1281
+ msgid "Failed to upload to %s"
1282
+ msgstr "Hochladen zu %s fehlgeschlagen."
1283
+
1284
+ #: methods/googledrive.php:189 addons/webdav.php:57
1285
+ msgid "Error"
1286
+ msgstr "Fehler"
1287
+
1288
+ #: methods/googledrive.php:225
1289
+ msgid "An error occurred during GoogleDrive upload (see log for more details)"
1290
+ msgstr ""
1291
+ "Während des Hochladens zu Google Drive ist ein Fehler aufgetreten (siehe "
1292
+ "Logdatei für Details)"
1293
+
1294
+ #: methods/googledrive.php:266
1295
+ #, php-format
1296
+ msgid ""
1297
+ "Google Drive error: %d: could not download: could not find a record of the "
1298
+ "Google Drive file ID for this file"
1299
+ msgstr ""
1300
+ "Google Drive Fehler: %d: Konnte nicht herunterladen: Konnte keinen Eintrag "
1301
+ "der Google Drive Datei-ID für diese Datei finden."
1302
+
1303
+ #: methods/googledrive.php:271
1304
+ #, php-format
1305
+ msgid "Could not find %s in order to download it"
1306
+ msgstr "Konnte %s zum Herunterladen nicht finden."
1307
+
1308
+ #: methods/googledrive.php:283
1309
+ msgid "Google Drive "
1310
+ msgstr "Google Drive"
1311
+
1312
+ #: methods/googledrive.php:283
1313
+ msgid "error: zero-size file was downloaded"
1314
+ msgstr "Fehler: Datei mit Null-Größe wurde heruntergeladen."
1315
+
1316
+ #: methods/googledrive.php:301
1317
+ msgid "Account is not authorized."
1318
+ msgstr "Account ist nicht autorisiert."
1319
+
1320
+ #: methods/googledrive.php:328 methods/s3.php:246 methods/dropbox.php:217
1321
+ #: methods/ftp.php:109 addons/webdav.php:231
1322
+ #, php-format
1323
+ msgid ""
1324
+ "%s is a great choice, because UpdraftPlus supports chunked uploads - no "
1325
+ "matter how big your blog is, UpdraftPlus can upload it a little at a time, "
1326
+ "and not get thwarted by timeouts."
1327
+ msgstr ""
1328
+ "%s ist eine gute Wahl, weil UpdraftPlus aufgesplittete Uploads unterstützt - "
1329
+ "egal wie groß dein Blog ist, UpdraftPlus kann ein wenig hochladen wird wird "
1330
+ "nicht durch Timeouts gestört."
1331
+
1332
+ #: methods/googledrive.php:334
1333
+ msgid ""
1334
+ "For longer help, including screenshots, follow this link. The description "
1335
+ "below is sufficient for more expert users."
1336
+ msgstr ""
1337
+ "Für detailiertere Hilfe mit Bildern, folge diesem Link. Die Beschreibung "
1338
+ "unterhalb ist für erfahrende Benutzer besser geeignet."
1339
+
1340
+ #: methods/googledrive.php:335
1341
+ msgid ""
1342
+ "Follow this link to your Google API Console, and there create a Client ID in "
1343
+ "the API Access section."
1344
+ msgstr ""
1345
+ "Folge dem Link zu deiner Google API Konsole und erstelle dort eine Client ID "
1346
+ "in der API Zugangs-Sektion."
1347
+
1348
+ #: methods/googledrive.php:335
1349
+ msgid "Select 'Web Application' as the application type."
1350
+ msgstr "Wähle 'Web Applikation' als Applikationstyp."
1351
+
1352
+ #: methods/googledrive.php:335
1353
+ msgid ""
1354
+ "You must add the following as the authorised redirect URI (under \"More "
1355
+ "Options\") when asked"
1356
+ msgstr ""
1357
+ "Du musst folgendes als authorisierten Umleitungslink (unter \"Mehr Optionen"
1358
+ "\") angeben, wenn gefragt"
1359
+
1360
+ #: methods/googledrive.php:335
1361
+ msgid ""
1362
+ "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot "
1363
+ "re-use your client ID; you must create a new one from your Google API "
1364
+ "console for each blog."
1365
+ msgstr ""
1366
+ "Wenn du UpdraftPlus auf mehreren WordPress-Seiten installierst, kannst du "
1367
+ "deine Client-ID nicht mehrfach nutzen und musst für jeden Blog eine neue in "
1368
+ "der Google API Konsole erzeugen."
1369
+
1370
+ #: methods/googledrive.php:338
1371
+ msgid ""
1372
+ "You do not have the SimpleXMLElement installed. Google Drive backups will "
1373
+ "<b>not</b> work until you do."
1374
+ msgstr ""
1375
+ "Du hast nicht SimpleXMLElement installiert. Google Drive funktioniert "
1376
+ "<b>nicht</b> solange es nicht dies nicht installiert wird."
1377
+
1378
+ #: methods/googledrive.php:345
1379
+ msgid "Client ID"
1380
+ msgstr "Client ID"
1381
+
1382
+ #: methods/googledrive.php:346
1383
+ msgid ""
1384
+ "If Google later shows you the message \"invalid_client\", then you did not "
1385
+ "enter a valid client ID here."
1386
+ msgstr ""
1387
+ "Wenn Google dir später \"invalid_client\" anzeigt, hast du eine ungültige "
1388
+ "Client-ID angegeben."
1389
+
1390
+ #: methods/googledrive.php:349
1391
+ msgid "Client Secret"
1392
+ msgstr "Client Secret"
1393
+
1394
+ #: methods/googledrive.php:353
1395
+ msgid "Folder ID"
1396
+ msgstr "Ordner-ID"
1397
+
1398
+ # Missing "(", thought it should be the last sentence only, needs to be corrected if I was wrong.
1399
+ #: methods/googledrive.php:354
1400
+ msgid ""
1401
+ "<strong>This is NOT a folder name</strong>. To get a folder's ID navigate to "
1402
+ "that folder in Google Drive in your web browser and copy the ID from your "
1403
+ "browser's address bar. It is the part that comes after <kbd>#folders/.</kbd> "
1404
+ "Leave empty to use your root folder)"
1405
+ msgstr ""
1406
+ "<strong>Das ist KEIN Ordnername</strong>. Um die Ordner-ID zu bekommen, "
1407
+ "navigiere zu diesem Ordner in Google Drive und kopiere die ID aus der "
1408
+ "Adressleiste deines Browsers. Es ist der Teil der nach <kbd>#folders/.</kbd> "
1409
+ "kommt. (Lasse dies leer, um das Wurzelverzeichnis zu nutzen.)"
1410
+
1411
+ #: methods/googledrive.php:357
1412
+ msgid "Authenticate with Google"
1413
+ msgstr "Mit Google authentifizieren"
1414
+
1415
+ #: methods/googledrive.php:358
1416
+ msgid ""
1417
+ "<strong>After</strong> you have saved your settings (by clicking 'Save "
1418
+ "Changes' below), then come back here once and click this link to complete "
1419
+ "authentication with Google."
1420
+ msgstr ""
1421
+ "<strong>Nach dem</strong du deine Einstellungen gespeichert hast, komm zu "
1422
+ "dieser Seite zurück, um dich mit Google zu authentifizieren."
1423
+
1424
+ #: methods/email.php:15
1425
+ msgid "WordPress Backup"
1426
+ msgstr "WordPress Sicherung"
1427
+
1428
+ #: methods/email.php:15
1429
+ msgid "Backup is of:"
1430
+ msgstr "Backup beinhaltet:"
1431
+
1432
+ #: methods/email.php:15
1433
+ msgid ""
1434
+ "Be wary; email backups may fail because of file size limitations on mail "
1435
+ "servers."
1436
+ msgstr ""
1437
+ "Kann unterschiedlich ausfallen, E-Mail-Sicherungen können wegen "
1438
+ "Dateigrößenbeschränkungen auf Mail-Servern fehlschlagen."
1439
+
1440
+ #: methods/email.php:24
1441
+ msgid "Note:"
1442
+ msgstr "Beachte:"
1443
+
1444
+ # Long evil sentences - splittet sentence two into two, because in german it would be more difficult to understand it
1445
+ #: methods/email.php:25
1446
+ msgid ""
1447
+ "The email address entered above will be used. If choosing \"E-Mail\", then "
1448
+ "<strong>be aware</strong> that mail servers tend to have size limits; "
1449
+ "typically around 10-20Mb; backups larger than any limits will not arrive. If "
1450
+ "you really need a large backup via email, then you could fund a new feature "
1451
+ "(to break the backup set into configurable-size pieces) - but the demand has "
1452
+ "not yet existed for such a feature."
1453
+ msgstr ""
1454
+ "Die E-Mail-Adresse von oben wird benutzt. <strong>Sei dir bewusst</strong>, "
1455
+ "dass mit dem Auswählen von \"E-Mail\" Größenlimits von typischer Weise "
1456
+ "10-20MB beachtet werden müssen. Sicherungen, die diese Größe überschreiten "
1457
+ "werden fehlschlagen. Wenn du wirklich große Sicherungen per E-Mail "
1458
+ "durchführen möchtest, könntest du eine neue Funktion finanzieren (um die "
1459
+ "Sicherung in eine konfigurierbare Größe aufzuspliten) - allerdings "
1460
+ "existierte bisher kein Interesse an dieser Funktion."
1461
+
1462
+ #: methods/s3.php:77
1463
+ #, php-format
1464
+ msgid "%s Error: Failed to upload"
1465
+ msgstr "%s Fehler: Hochladen fehlgeschlagen"
1466
+
1467
+ #: methods/s3.php:98
1468
+ msgid ""
1469
+ "S3 upload: getting uploadID for multipart upload failed - see log file for "
1470
+ "more details"
1471
+ msgstr ""
1472
+ "S3 Hochladen: Bekommen der Hochlade-ID für mehrteiliges hochladen "
1473
+ "fehlgeschlagen - siehe Logdatei für mehr Details"
1474
+
1475
+ #: methods/s3.php:130
1476
+ #, php-format
1477
+ msgid "S3 chunk %s: upload failed"
1478
+ msgstr "S3 Teil %s: Hochladen fehlgeschlagen"
1479
+
1480
+ #: methods/s3.php:144
1481
+ #, php-format
1482
+ msgid "S3 upload (%s): re-assembly failed (see log for more details)"
1483
+ msgstr ""
1484
+ "S3 Hochladen (%s): Zusammensetzen fehlgeschlagen (siehe Logdatei für weitere "
1485
+ "Informationen)"
1486
+
1487
+ #: methods/s3.php:148
1488
+ #, php-format
1489
+ msgid "S3 re-assembly error (%s): (see log file for more)"
1490
+ msgstr "S3 Zusammensetzfehler (%s): (siehe Logdatei für mehr Informationen)"
1491
+
1492
+ #: methods/s3.php:160
1493
+ #, php-format
1494
+ msgid ""
1495
+ "S3 Error: Failed to create bucket %s. Check your permissions and credentials."
1496
+ msgstr ""
1497
+ "S3 Fehler: Konnte Bucket %s nicht erstellen. Überprüfe deine Rechte und "
1498
+ "Logininformationen."
1499
+
1500
+ #: methods/s3.php:213
1501
+ #, php-format
1502
+ msgid ""
1503
+ "S3 Error: Failed to download %s. Check your permissions and credentials."
1504
+ msgstr ""
1505
+ "S3 Fehler: Konnte %s nicht herunterladen. Überprüfe deine Rechte und "
1506
+ "Logininformationen."
1507
+
1508
+ #: methods/s3.php:217
1509
+ #, php-format
1510
+ msgid ""
1511
+ "S3 Error: Failed to access bucket %s. Check your permissions and credentials."
1512
+ msgstr ""
1513
+ "S3 Fehler: Konnte Bucket %s nicht benutzen. Überprüfe deine Rechte und "
1514
+ "Logininformationen."
1515
+
1516
+ #: methods/s3.php:251
1517
+ msgid ""
1518
+ "Get your access key and secret key <a href=\"http://aws.amazon.com/console/"
1519
+ "\">from your AWS console</a>, then pick a (globally unique - all Amazon S3 "
1520
+ "users) bucket name (letters and numbers) (and optionally a path) to use for "
1521
+ "storage. This bucket will be created for you if it does not already exist."
1522
+ msgstr ""
1523
+ "Bekomme deinen Zugangs- und Secretkey <a href=\"http://aws.amazaon.com/"
1524
+ "console/\">von deiner AWS-Konsole</a>, dann wähle einen (global "
1525
+ "einzigartigen) Bucket-Namen (Buchstaben und Zahlen, optional eine "
1526
+ "Pfadangabe), um den Speicher zu benutzen. Das Bucket wird für dich erstellt, "
1527
+ "sofern es nicht existiert."
1528
+
1529
+ #: methods/s3.php:254
1530
+ msgid "S3 access key"
1531
+ msgstr "S3 Zugangsschlüssel"
1532
+
1533
+ #: methods/s3.php:258
1534
+ msgid "S3 secret key"
1535
+ msgstr "S3 Secret Schlüssel"
1536
+
1537
+ #: methods/s3.php:262
1538
+ msgid "S3 location"
1539
+ msgstr "S3 Ort"
1540
+
1541
+ #: methods/s3.php:267 methods/ftp.php:135 addons/webdav.php:244
1542
+ #, php-format
1543
+ msgid "Test %s Settings"
1544
+ msgstr "Teste %s Einstellungen"
1545
+
1546
+ #: methods/s3.php:275 methods/s3.php:279 methods/ftp.php:152
1547
+ #: methods/ftp.php:156 addons/webdav.php:272
1548
+ #, php-format
1549
+ msgid "Failure: No %s was given."
1550
+ msgstr "Fehler: Kein %s war gegeben"
1551
+
1552
+ #: methods/s3.php:275
1553
+ msgid "API key"
1554
+ msgstr "API Schlüssel"
1555
+
1556
+ #: methods/s3.php:279
1557
+ msgid "API secret"
1558
+ msgstr "API Secret"
1559
+
1560
+ #: methods/s3.php:296
1561
+ msgid "Failure: No bucket details were given."
1562
+ msgstr "Fehler: Keine Bucket-Details waren gegeben."
1563
+
1564
+ #: methods/s3.php:306
1565
+ msgid "Amazon region"
1566
+ msgstr "Amazaon Region"
1567
+
1568
+ #: methods/s3.php:316
1569
+ msgid ""
1570
+ "Failure: We could not successfully access or create such a bucket. Please "
1571
+ "check your access credentials, and if those are correct then try another "
1572
+ "bucket name (as another S3 user may already have taken your name)."
1573
+ msgstr ""
1574
+ "Fehler: Konnte einen solchen Bucket nicht erfolgreich erstellen oder nutzen. "
1575
+ "Bitte überprüfe deine Zugangsdaten und probiere einen anderen Bucket-amen "
1576
+ "(da ein anderer S3-Nutzer deinen Namen ggf. schon benutzt)."
1577
+
1578
+ #: methods/s3.php:324
1579
+ msgid "Failure"
1580
+ msgstr "Fehler"
1581
+
1582
+ #: methods/s3.php:324
1583
+ msgid ""
1584
+ "We successfully accessed the bucket, but the attempt to create a file in it "
1585
+ "failed."
1586
+ msgstr ""
1587
+ "Wir konnten den Bucket erfolgreich nutzen, aber der Versuch eine Datei in "
1588
+ "ihm zu erstellen schlug fehl."
1589
+
1590
+ #: methods/s3.php:326
1591
+ msgid "We accessed the bucket, and were able to create files within it."
1592
+ msgstr ""
1593
+ "Wir konnten den Bucket erfolgreich nutzen und sind in der Lage Dateien in "
1594
+ "ihm zu erstellen."
1595
+
1596
+ #: methods/dropbox.php:35 methods/dropbox.php:167
1597
+ msgid "You do not appear to be authenticated with Dropbox"
1598
+ msgstr "Du scheinst bei Dropbox nicht authentifiziert zu sein"
1599
+
1600
+ #: methods/dropbox.php:46
1601
+ #, php-format
1602
+ msgid "error: %s (see log file for more)"
1603
+ msgstr "Fehler: %s (siehe Logdatei für weitere Informationen)"
1604
+
1605
+ #: methods/dropbox.php:98 methods/dropbox.php:103
1606
+ #, php-format
1607
+ msgid "error: failed to upload file to %s (see log file for more)"
1608
+ msgstr ""
1609
+ "Fehler: Hochladen der Datei nach %s fehlgeschlagen (siehe Logdatei für "
1610
+ "weitere Informationen)"
1611
+
1612
+ #: methods/dropbox.php:223
1613
+ msgid "Need to use sub-folders?"
1614
+ msgstr "Sollen Unterordner benutzt werden?"
1615
+
1616
+ #: methods/dropbox.php:223
1617
+ msgid "Backups are saved in"
1618
+ msgstr "Sicherungen sind gespeichert unter"
1619
+
1620
+ #: methods/dropbox.php:223
1621
+ msgid ""
1622
+ "If you back up several sites into the same Dropbox and want to organise with "
1623
+ "sub-folders, then "
1624
+ msgstr ""
1625
+ "Wenn du mehrere Seiten auf die selbe Dropbox sichern und diese mit "
1626
+ "Unterordnern organisieren möchtest, dann"
1627
+
1628
+ #: methods/dropbox.php:223
1629
+ msgid "there's an add-on for that."
1630
+ msgstr "es gibt eine Erweiterung dafür."
1631
+
1632
+ #: methods/dropbox.php:228
1633
+ msgid "Authenticate with Dropbox"
1634
+ msgstr "Mit Dropbox authentifizieren"
1635
+
1636
+ #: methods/dropbox.php:229
1637
+ msgid ""
1638
+ "<strong>After</strong> you have saved your settings (by clicking 'Save "
1639
+ "Changes' below), then come back here once and click this link to complete "
1640
+ "authentication with Dropbox."
1641
+ msgstr ""
1642
+ "<strong>Nachdem</strong> du die Einstellungen gespeichert hast (mit Drücken "
1643
+ "von 'Änderungen speichern'), komm hierher zurück und benutze den Link um die "
1644
+ "Authentifizierung mit Dropbox abzuschließen."
1645
+
1646
+ #: methods/dropbox.php:240
1647
+ msgid ""
1648
+ "Your web server's PHP installation does not included a required module "
1649
+ "(MCrypt). Please contact your web hosting provider's support. UpdraftPlus's "
1650
+ "Dropbox module <strong>requires</strong> MCrypt. Please do not file any "
1651
+ "support requests; there is no alternative."
1652
+ msgstr ""
1653
+ "Die PHP-Installation deines Webservers enthält das benötigte Modul (MCrypt) "
1654
+ "nicht. Bitte kontaktiere den Support deines Hosting Providers. UpdraftPlus's "
1655
+ "Dropbox-Modul <strong>benötigt</strong> MCrypt. Bitte erstelle keine "
1656
+ "Supportanfragen diesbezüglich, es gibt keine Alternative."
1657
+
1658
+ #: methods/dropbox.php:243
1659
+ msgid ""
1660
+ "Your web server's PHP installation does not included a required module "
1661
+ "(Curl). Please contact your web hosting provider's support. UpdraftPlus's "
1662
+ "Dropbox module <strong>requires</strong> Curl. Your only options to get this "
1663
+ "working are 1) Install/enable curl or 2) Hire us or someone else to code "
1664
+ "additional support options into UpdraftPlus. 3) Wait, possibly forever, for "
1665
+ "someone else to do this."
1666
+ msgstr ""
1667
+ "Die PHP-Installation deines Webservers enthält das benötigte Modul (Curl) "
1668
+ "nicht. Bitte kontaktiere den Support deines Hosting Providers. UpdraftPlus's "
1669
+ "Dropbox-Modul <strong>benötigt</strong> Curl. Deine einzigen Möglichkeiten "
1670
+ "dies zum Laufen zu bringen sind 1) Einschalten/Installieren von curl, 2) Uns "
1671
+ "oder jemanden anders beauftragen zusätzliche Support-Optionen in UpdraftPlus "
1672
+ "zu integrieren oder 3) Womöglich für immer darauf warten, dass es ein "
1673
+ "anderer tut."
1674
+
1675
+ #: methods/dropbox.php:296
1676
+ msgid ""
1677
+ "though part of the returned information was not as expected - your mileage "
1678
+ "may vary"
1679
+ msgstr ""
1680
+ "schwieriger Anteil an zurückgegebenen Informationen nicht erwartet - das "
1681
+ "Ergebnis könnte anders sein"
1682
+
1683
+ #: methods/dropbox.php:299
1684
+ #, php-format
1685
+ msgid "Your %s account name"
1686
+ msgstr "Dein %s Account-Name"
1687
+
1688
+ #: methods/ftp.php:19 methods/ftp.php:66
1689
+ msgid "FTP login failure"
1690
+ msgstr "FTP-Login fehlgeschlagen"
1691
+
1692
+ #: methods/ftp.php:38
1693
+ msgid "FTP upload failed"
1694
+ msgstr "FTP-Upload fehlgeschlagen"
1695
+
1696
+ #: methods/ftp.php:98
1697
+ msgid "Settings test result"
1698
+ msgstr "Einstellungen Testergebnis"
1699
+
1700
+ #: methods/ftp.php:114
1701
+ msgid "Only non-encrypted FTP is supported by regular UpdraftPlus."
1702
+ msgstr "Die normale UpdraftPlus-Version unterstützt nur unverschlüsseltes FTP."
1703
+
1704
+ #: methods/ftp.php:114
1705
+ msgid ""
1706
+ "If you want encryption (e.g. you are storing sensitive business data), then "
1707
+ "an add-on is available."
1708
+ msgstr ""
1709
+ "Wenn du Verschlüsselung (z.B. wegen sensibler Geschäftsdaten) möchtest, "
1710
+ "kannst du dir eine verfügbare Erweiterung holen."
1711
+
1712
+ #: methods/ftp.php:118
1713
+ msgid "FTP Server"
1714
+ msgstr "FTP-Server"
1715
+
1716
+ #: methods/ftp.php:122
1717
+ msgid "FTP Login"
1718
+ msgstr "FTP-Login"
1719
+
1720
+ #: methods/ftp.php:126
1721
+ msgid "FTP Password"
1722
+ msgstr "FTP-Passwort"
1723
+
1724
+ #: methods/ftp.php:130
1725
+ msgid "Remote Path"
1726
+ msgstr "Ferner Pfad"
1727
+
1728
+ #: methods/ftp.php:131
1729
+ msgid "Needs to already exist"
1730
+ msgstr "Muss bereits existieren"
1731
+
1732
+ #: methods/ftp.php:148
1733
+ msgid "Failure: No server details were given."
1734
+ msgstr "Fehler: Keine Serverdetails wurden angegeben."
1735
+
1736
+ #: methods/ftp.php:167
1737
+ msgid "Failure: we did not successfully log in with those credentials."
1738
+ msgstr "Fehler: Konnte nicht erfolgreich mit angegebenen Logindaten einloggen."
1739
+
1740
+ #: methods/ftp.php:175
1741
+ msgid ""
1742
+ "Failure: an unexpected internal UpdraftPlus error occurred when testing the "
1743
+ "credentials - please contact the developer"
1744
+ msgstr ""
1745
+ "Fehler: Ein unerwarteter interner UpdraftPlus-Fehler ist beim Testen der "
1746
+ "Logindaten aufgetreten - Bitte kontaktiere den Entwickler."
1747
+
1748
+ #: methods/ftp.php:179
1749
+ msgid ""
1750
+ "Success: we successfully logged in, and confirmed our ability to create a "
1751
+ "file in the given directory (login type:"
1752
+ msgstr ""
1753
+ "Erfolg: Wir haben uns erfolgreich eingeloggt und haben die Möglichkeit "
1754
+ "Dateien im angegebenen Verzeichnis zu erstellen (Logintyp:"
1755
+
1756
+ #: methods/ftp.php:182
1757
+ msgid ""
1758
+ "Failure: we successfully logged in, but were not able to create a file in "
1759
+ "the given directory."
1760
+ msgstr ""
1761
+ "Fehler: Wir konnten uns erfolgreich einloggen, konnten jedoch im angegebenen "
1762
+ "Verzeichnis keine Datei erstellen."
1763
+
1764
+ #: addons/webdav.php:40 addons/webdav.php:170
1765
+ #, php-format
1766
+ msgid "No %s settings were found"
1767
+ msgstr "Keine %s -Einstellungen gefunden"
1768
+
1769
+ #: addons/webdav.php:116 addons/webdav.php:120
1770
+ #, php-format
1771
+ msgid "Chunk %s: A %s error occurred"
1772
+ msgstr "Chunk %s: Ein %s Fehler ist aufgetreten"
1773
+
1774
+ #: addons/webdav.php:182 addons/webdav.php:188 addons/webdav.php:200
1775
+ msgid "WebDAV Error"
1776
+ msgstr "WebDAV Fehler"
1777
+
1778
+ #: addons/webdav.php:182
1779
+ msgid "Error opening local file: Failed to download"
1780
+ msgstr "Fehler beim Öffnen lokaler Datei: Herunterladen fehlgeschlagen"
1781
+
1782
+ #: addons/webdav.php:188
1783
+ msgid "Error opening remote file: Failed to download"
1784
+ msgstr "Fehler beim Öffnen von Remote-Datei: Herunterladen fehlgeschlagen"
1785
+
1786
+ #: addons/webdav.php:200
1787
+ msgid "Local write failed: Failed to download"
1788
+ msgstr "Lokales Schreiben fehlgeschlagen: Herunterladen fehlgeschlagen"
1789
+
1790
+ #: addons/webdav.php:234
1791
+ msgid "WebDAV URL"
1792
+ msgstr "WebDAV URL"
1793
+
1794
+ #: addons/webdav.php:238
1795
+ #, php-format
1796
+ msgid ""
1797
+ "Enter a complete URL, beginning with webdav:// or webdavs:// and including "
1798
+ "path, username, password and port as required - e.g.%s"
1799
+ msgstr ""
1800
+ "Gib einen kompletten URL, beginnend mit webdav:// oder webdavs:// und "
1801
+ "enthaltenem Pfaf, sowie Benutzernamen, Passwort und Port an - z.B. %s"
1802
+
1803
+ #: addons/webdav.php:281
1804
+ msgid "Failed"
1805
+ msgstr "Fehlgeschlagen."
1806
+
1807
+ #: addons/webdav.php:295
1808
+ msgid ""
1809
+ "Failed: We were not able to place a file in that directory - please check "
1810
+ "your credentials."
1811
+ msgstr ""
1812
+ "Fehlgeschlagen: Wir konnten, in das gewünschte Verzeichnis, keine Datei "
1813
+ "schreiben - Bitte überprüfe deine Zugangsdaten"
1814
+
1815
+ #: addons/sftp.php:23
1816
+ msgid ""
1817
+ "Encrypted FTP is available, and will be automatically tried first (before "
1818
+ "falling back to non-encrypted if it is not successful). The 'Test FTP Login' "
1819
+ "button will tell you what type of connection is in use."
1820
+ msgstr ""
1821
+ "Verschlüsseltes FTP ist verfügbar und wird automatisch zuerst probiert (wenn "
1822
+ "nicht erfolgreich, wird auf eine nicht-verschlüsselte Verbindung "
1823
+ "zurückgegriffen). Der 'Teste FTP-Login'-Button wird dir verraten, welcher "
1824
+ "Verbindungstyp in Nutzung ist."
1825
+
1826
+ #: addons/sftp.php:30 addons/sftp.php:31 addons/sftp.php:32
1827
+ #, php-format
1828
+ msgid "No %s found"
1829
+ msgstr "Kein %s gefunden"
1830
+
1831
+ #: addons/sftp.php:30
1832
+ msgid "SFTP host setting"
1833
+ msgstr "SFTP-Host Einstellungen"
1834
+
1835
+ #: addons/sftp.php:31
1836
+ msgid "SFTP user setting"
1837
+ msgstr "SFTP-Benutzereinstellungen"
1838
+
1839
+ #: addons/sftp.php:32
1840
+ msgid "SFTP passwrd"
1841
+ msgstr "SFTP-Passwort"
1842
+
1843
+ #: addons/sftp.php:50 addons/sftp.php:293
1844
+ msgid "Check your file permissions: Could not successfully create and enter:"
1845
+ msgstr ""
1846
+ "Überprüfe deine Dateiberechtigungen: Konnte nicht erfolgreich erstellen und "
1847
+ "betreten:"
1848
+
1849
+ #: addons/sftp.php:128
1850
+ #, php-format
1851
+ msgid "%s Error: Failed to download"
1852
+ msgstr "%s Fehler: Herunterladen fehlgeschlagen"
1853
+
1854
+ #: addons/sftp.php:172
1855
+ msgid ""
1856
+ "Resuming partial uploads is not supported, so you will need to ensure that "
1857
+ "your webserver allows PHP processes to run long enough to upload your "
1858
+ "largest backup file."
1859
+ msgstr ""
1860
+ "Wiederaufnehmen von Uploads ist nicht unterstützt, du musst daher "
1861
+ "sicherstellen, dass dein Webserver PHP erlaubt, so lang zu laufen, bis deine "
1862
+ "größte Sicherungsdatei hochgeladen wurde."
1863
+
1864
+ #: addons/sftp.php:177
1865
+ msgid "Host"
1866
+ msgstr "Host"
1867
+
1868
+ #: addons/sftp.php:184
1869
+ msgid "Port"
1870
+ msgstr "Port"
1871
+
1872
+ #: addons/sftp.php:191
1873
+ msgid "Username"
1874
+ msgstr "Benutzername"
1875
+
1876
+ #: addons/sftp.php:198
1877
+ msgid "Password"
1878
+ msgstr "Passwort"
1879
+
1880
+ #: addons/sftp.php:214
1881
+ msgid "Directory path"
1882
+ msgstr "Verzeichnispfad"
1883
+
1884
+ #: addons/sftp.php:216
1885
+ msgid ""
1886
+ "Where to change directory to after logging in - often this is relative to "
1887
+ "your home directory."
1888
+ msgstr ""
1889
+ "In welches Verzeichnis soll nach dem Login gewechselt werden - meistens ist "
1890
+ "dieser Pfad relativ zu deinem Home-Verzeichnis"
1891
+
1892
+ #: addons/sftp.php:254
1893
+ msgid "host name"
1894
+ msgstr "Hostname"
1895
+
1896
+ #: addons/sftp.php:258
1897
+ msgid "username"
1898
+ msgstr "Benutzername"
1899
+
1900
+ #: addons/sftp.php:262
1901
+ msgid "password"
1902
+ msgstr "Passwort"
1903
+
1904
+ #: addons/sftp.php:267
1905
+ msgid "Failure: Port must be an integer."
1906
+ msgstr "Fehler: Port muss eine Nummer sein."
1907
+
1908
+ #: addons/sftp.php:307
1909
+ msgid ""
1910
+ "Failed: We were able to log in and move to the indicated directory, but "
1911
+ "failed to successfully created a file in that location."
1912
+ msgstr ""
1913
+ "Fehlgeschlagen: Wir waren in der Lage uns einzuloggen und das gewünschte "
1914
+ "Verzeichnis zu betreten, konnten dort jedoch keine Datei anlegen."
1915
+
1916
+ #: addons/fixtime.php:77 addons/fixtime.php:87
1917
+ msgid "starting from next time it is"
1918
+ msgstr "Nächste Durchlaufszeit ist"
1919
+
1920
+ #: addons/fixtime.php:77 addons/fixtime.php:87
1921
+ msgid "Enter in format HH:MM (e.g. 14:22)"
1922
+ msgstr "Gib es im Format HH:MM (z.B. 14:22) an"
1923
+
1924
+ #: addons/multisite.php:103
1925
+ msgid "Multisite Install"
1926
+ msgstr "Multiseiten-Installation"
1927
+
1928
+ #: addons/multisite.php:109
1929
+ msgid "You do not have sufficient permissions to access this page."
1930
+ msgstr ""
1931
+ "Du besitzt nicht die notwendigen Berechtigungen, um diese Seite aufzurufen."
1932
+
1933
+ #: addons/multisite.php:128
1934
+ msgid "You do not have permission to access this page."
1935
+ msgstr ""
1936
+ "Du besitzt nicht die nötigen Berechtigungen, um diese Seite aufzurufen."
1937
+
1938
+ #: addons/multisite.php:180
1939
+ msgid "Must-use plugins"
1940
+ msgstr "Meist-benutzte Plugins"
1941
+
1942
+ #: addons/multisite.php:181
1943
+ msgid "Blog uploads"
1944
+ msgstr "Blog Uploads"
1945
+
1946
+ #: addons/dropbox-folders.php:21
1947
+ msgid "Store at"
1948
+ msgstr "Speichere in"
1949
+
1950
+ #~ msgctxt "Uploader: Drop zip files here - or - Select Files"
1951
+ #~ msgid "or"
1952
+ #~ msgstr "oder"
1953
+
1954
+ #~ msgid "Select Files"
1955
+ #~ msgstr "Dateien auswählen"
1956
+
1957
+ #~ msgid "UpdraftPlus - Backup/Restore"
1958
+ #~ msgstr "UpdraftPlus - Sicherung/Wiederherstellung"
1959
+
1960
+ #~ msgid "http://updraftplus.com"
1961
+ #~ msgstr "http://updraftplus.com"
1962
+
1963
+ #~ msgid ""
1964
+ #~ "Backup and restore: your site can be backed up locally or to Amazon S3, "
1965
+ #~ "Dropbox, Google Drive, (S)FTP, WebDAV & email, on automatic schedules."
1966
+ #~ msgstr ""
1967
+ #~ "Sicherung und Wiederherstellung: Deine Seite kann lokal oder bei Amazaon "
1968
+ #~ "S3, Dropbox, Google Drive, (S)FTP, WebDAV oder E-Mail automatisch "
1969
+ #~ "gesichert werden."
1970
+
1971
+ #~ msgid "UpdraftPlus.Com, DavidAnderson"
1972
+ #~ msgstr "UpdraftPlus.Com, DavidAnderson"
languages/updraftplus-hu_HU.mo ADDED
Binary file
languages/updraftplus-hu_HU.po ADDED
@@ -0,0 +1,1939 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: UpdraftPlus\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2013-03-30 17:26+0100\n"
6
+ "PO-Revision-Date: 2013-04-01 18:11+0100\n"
7
+ "Last-Translator: Szépe Viktor <viktor@szepe.net>\n"
8
+ "Language-Team: Szépe Viktor <viktor@online1.hu>\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_x;_e\n"
13
+ "X-Poedit-Basepath: /home/david/MissionaryHosting/UpdraftPlus/svn/trunk\n"
14
+ "X-Generator: Poedit 1.5.5\n"
15
+ "Language: Hungarian\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-SearchPath-0: .\n"
18
+
19
+ #: options.php:26
20
+ msgid "UpdraftPlus Backups"
21
+ msgstr "UpdraftPlus Backups"
22
+
23
+ #: updraftplus.php:261
24
+ msgid ""
25
+ "Bad filename format - this does not look like a file created by UpdraftPlus"
26
+ msgstr "Helytelen fájlnév - ez a fájl nem UpdraftPlus fájlnak néz ki"
27
+
28
+ #: updraftplus.php:295
29
+ msgid "Allowed Files"
30
+ msgstr "Engedélyezett fájlok"
31
+
32
+ #: updraftplus.php:372
33
+ msgid "Settings"
34
+ msgstr "Beállítások"
35
+
36
+ #: updraftplus.php:376
37
+ msgid "Add-Ons / Pro Support"
38
+ msgstr "Kiterjesztések / Pro támogatás"
39
+
40
+ #: updraftplus.php:462
41
+ msgid "Plugins"
42
+ msgstr "Bővítmények"
43
+
44
+ #: updraftplus.php:463
45
+ msgid "Themes"
46
+ msgstr "Témák"
47
+
48
+ #: updraftplus.php:464
49
+ msgid "Uploads"
50
+ msgstr "Feltöltések"
51
+
52
+ #: updraftplus.php:478
53
+ msgid "Others"
54
+ msgstr "Egyéb"
55
+
56
+ #: updraftplus.php:710
57
+ msgid ""
58
+ "Could not create files in the backup directory. Backup aborted - check your "
59
+ "UpdraftPlus settings."
60
+ msgstr ""
61
+ "Nem sikerült fájl létrehozni a backup könyvtárban. A mentés félbe szakadt - "
62
+ "ellenőrizze az UpdraftPlus beállításokat."
63
+
64
+ #: updraftplus.php:778
65
+ msgid "Encryption error occurred when encrypting database. Encryption aborted."
66
+ msgstr ""
67
+ "Titkosítási hiba történt az adatbázis titkosítása közben. A titkosítás félbe "
68
+ "szakadt."
69
+
70
+ #: updraftplus.php:812
71
+ msgid "The backup apparently succeeded and is now complete"
72
+ msgstr "Úgy látszik, a mentés teljesen sikerült."
73
+
74
+ #: updraftplus.php:815
75
+ msgid "The backup attempt has finished, apparently unsuccessfully"
76
+ msgstr "A mentési kísérlet befejeződött, látszólag sikertelenül."
77
+
78
+ #: updraftplus.php:818
79
+ msgid "The backup has not finished; a resumption is scheduled within 5 minutes"
80
+ msgstr ""
81
+ "A mentés még nem fejeződött be - az újrakezdés beütemezésre került, 5 perc "
82
+ "múlva indul."
83
+
84
+ #: updraftplus.php:869
85
+ msgid "Backed up"
86
+ msgstr "Mentésre került"
87
+
88
+ #: updraftplus.php:869
89
+ msgid "WordPress backup is complete"
90
+ msgstr "A WordPress mentés teljesen elkészült"
91
+
92
+ #: updraftplus.php:869
93
+ msgid "Backup contains"
94
+ msgstr "A mentés tartalmaz"
95
+
96
+ #: updraftplus.php:869
97
+ msgid "Latest status"
98
+ msgstr "Utolsó állapot"
99
+
100
+ #: updraftplus.php:1124
101
+ #, php-format
102
+ msgid "Could not create %s zip. Consult the log file for more information."
103
+ msgstr ""
104
+ "Nem sikerült létrehozni a %s zip-et. Tekintse meg a log fájlt további "
105
+ "információkért."
106
+
107
+ #: updraftplus.php:1158
108
+ #, php-format
109
+ msgid "Backup directory (%s) is not writable, or does not exist."
110
+ msgstr "A backup könyvtár (%s) nem írható vagy nem létezik."
111
+
112
+ #: updraftplus.php:1248
113
+ msgid "Could not read the content directory"
114
+ msgstr "Nem sikerült olvasni a wp-content könyvtárat"
115
+
116
+ #: updraftplus.php:1278
117
+ msgid ""
118
+ "Could not save backup history because we have no backup array. Backup "
119
+ "probably failed."
120
+ msgstr ""
121
+ "Nem sikerült menteni a mentés előzményeket mert nincs mentés tömb. A mentés "
122
+ "minden bizonnyal nem sikerült."
123
+
124
+ #: updraftplus.php:1307
125
+ msgid "Could not open the backup file for writing"
126
+ msgstr "Nem sikerült írásra megnyitni a mentés fájlt"
127
+
128
+ #: updraftplus.php:1316
129
+ #, php-format
130
+ msgid "Generated: %s"
131
+ msgstr "Készült: %s"
132
+
133
+ #: updraftplus.php:1317
134
+ #, php-format
135
+ msgid "Hostname: %s"
136
+ msgstr "Gépnév: %s"
137
+
138
+ #: updraftplus.php:1318
139
+ #, php-format
140
+ msgid "Database: %s"
141
+ msgstr "Adatbázis: %s"
142
+
143
+ #: updraftplus.php:1362
144
+ msgid "The backup directory is not writable."
145
+ msgstr "A mentés könyvtár nem írható."
146
+
147
+ #: updraftplus.php:1383
148
+ #, php-format
149
+ msgid "Table: %s"
150
+ msgstr "Tábla: %s"
151
+
152
+ #: updraftplus.php:1388
153
+ #, php-format
154
+ msgid "Skipping non-WP table: %s"
155
+ msgstr "Kihagyásra kerültek a nem-WP táblák: %s"
156
+
157
+ #: updraftplus.php:1479
158
+ #, php-format
159
+ msgid "Delete any existing table %s"
160
+ msgstr "A létező táblák törlése %s"
161
+
162
+ #: updraftplus.php:1488
163
+ #, php-format
164
+ msgid "Table structure of table %s"
165
+ msgstr "Tábla struktúra - tábla neve: %s"
166
+
167
+ #: updraftplus.php:1494
168
+ #, php-format
169
+ msgid "Error with SHOW CREATE TABLE for %s."
170
+ msgstr "Hiba SHOW CREATE TABLE közben ennél: %s."
171
+
172
+ #: updraftplus.php:1501
173
+ #, php-format
174
+ msgid "Error getting table structure of %s"
175
+ msgstr "Hiba történt tábla struktúra kiolvasása közben - tábla neve: %s"
176
+
177
+ #: updraftplus.php:1507
178
+ #, php-format
179
+ msgid "Data contents of table %s"
180
+ msgstr "A tábla adattartalma - tábal neve: %s"
181
+
182
+ #: updraftplus.php:1563
183
+ #, php-format
184
+ msgid "End of data contents of table %s"
185
+ msgstr "Vége a tábla adattartalmának - tábla neve: %s"
186
+
187
+ #: updraftplus.php:1815
188
+ msgid "Nothing yet logged"
189
+ msgstr "Még semmit sem került naplózásra"
190
+
191
+ #: updraftplus.php:1836
192
+ msgid "File downloading"
193
+ msgstr "Fájl letöltése"
194
+
195
+ #: updraftplus.php:1838
196
+ msgid "No local copy present."
197
+ msgstr "Nem létezik helyi másolat."
198
+
199
+ #: updraftplus.php:2014
200
+ msgid "File not found"
201
+ msgstr "Nincs meg a fájl"
202
+
203
+ #: updraftplus.php:2033
204
+ #, php-format
205
+ msgid ""
206
+ "The backup archive for restoring this file could not be found. The remote "
207
+ "storage method in use (%s) does not allow us to retrieve files. To proceed "
208
+ "with this restoration, you need to obtain a copy of this file and place it "
209
+ "inside UpdraftPlus's working folder"
210
+ msgstr ""
211
+ "Az ehhez a fájlhoz tartozó mentés nem található. A használatban lévő távoli "
212
+ "tárhely módszer (%s) nem engedi meg, hogy egy-egy fájlt kérjünk le. Ahhoz, "
213
+ "hogy folytatható legyen a visszaállítás, szerezzen be egy másolatot erről a "
214
+ "fájlról, és helyezze az UpdraftPlus munkakönyvtárába."
215
+
216
+ #: updraftplus.php:2043
217
+ msgid ""
218
+ "This backup does not exist in the backup history - restoration aborted. "
219
+ "Timestamp:"
220
+ msgstr ""
221
+ "Ez a mentés nincs a mentési előzményekben - a visszaállítás félbe szakadt. "
222
+ "Időbélyeg:"
223
+
224
+ #: updraftplus.php:2056
225
+ msgid "UpdraftPlus Restoration: Progress"
226
+ msgstr "UpdraftPlus visszaállítás: Folyamatban"
227
+
228
+ #: updraftplus.php:2063
229
+ msgid "ABORT: Could not find the information on which entities to restore."
230
+ msgstr ""
231
+ "FÉLBE SZAKADT: Nem található információ, melyik elemet állítsuk vissza."
232
+
233
+ #: updraftplus.php:2077 updraftplus.php:2820 updraftplus.php:3072
234
+ msgid "Database"
235
+ msgstr "Adatbázis"
236
+
237
+ #: updraftplus.php:2083
238
+ msgid "This component was not selected for restoration - skipping."
239
+ msgstr "Ez az összetevő nem lett kiválasztva visszaállításra - átugorjuk."
240
+
241
+ #: updraftplus.php:2091
242
+ msgid ""
243
+ "File is not locally present - needs retrieving from remote storage (for "
244
+ "large files, it is better to do this in advance from the download console)"
245
+ msgstr ""
246
+ "A fájl nem létezik helyben - szükséges a távoli tárhelyről beszerezni (óriás "
247
+ "fájloknál jobb ezt előre megtenni a letöltési konzolon)"
248
+
249
+ #: updraftplus.php:2097
250
+ msgid "Archive is expected to be size:"
251
+ msgstr "Az archívum várható mérete:"
252
+
253
+ #: updraftplus.php:2102
254
+ msgid "ERROR"
255
+ msgstr "HIBA"
256
+
257
+ #: updraftplus.php:2105
258
+ msgid ""
259
+ "The backup records do not contain information about the proper size of this "
260
+ "file."
261
+ msgstr ""
262
+ "A mentési bejegyzés nem tartalmaz információt ennek a fájlnak az eredeti "
263
+ "méretéről."
264
+
265
+ #: updraftplus.php:2117
266
+ msgid "Error message"
267
+ msgstr "Hiba üzenet"
268
+
269
+ #: updraftplus.php:2123 updraftplus.php:2124
270
+ msgid "Could not find one of the files for restoration"
271
+ msgstr "A visszaállításhoz szükséges egyik fájl nem található"
272
+
273
+ #: updraftplus.php:2126
274
+ msgid ""
275
+ "Databases are not yet restored through this mechanism - use your web host's "
276
+ "control panel, phpMyAdmin or a similar tool"
277
+ msgstr ""
278
+ "Az adatbázisok még nincsenek visszaállítva ezzel a módszerrel - használja a "
279
+ "tárhely szolgáltatójának a vezérlőpultját, phpMyAdmin-t vagy valamely "
280
+ "hasonló eszközt"
281
+
282
+ #: updraftplus.php:2132
283
+ msgid ""
284
+ "Database could not be restored because PHP safe_mode is active on your "
285
+ "server. You will need to manually restore the file via phpMyAdmin or "
286
+ "another method."
287
+ msgstr ""
288
+ "A webszerveren a PHP safe_mode bekapcsolt volta miatt nem állítható vissza "
289
+ "az adatbázis. Kézzel szükséges visszaállítani a fájlt phpMyAdmin vagy más "
290
+ "eszköz segítségével."
291
+
292
+ #: updraftplus.php:2156
293
+ msgid "Delete"
294
+ msgstr "Törlés"
295
+
296
+ #: updraftplus.php:2290
297
+ msgid "Find UpdraftPlus useful?"
298
+ msgstr "Hasznosnak találta az UpdraftPlus-t?"
299
+
300
+ #: updraftplus.php:2290
301
+ msgid "Please make a donation"
302
+ msgstr "Kérem adományozzon"
303
+
304
+ #: updraftplus.php:2295
305
+ msgid "Like UpdraftPlus and can spare one minute?"
306
+ msgstr "Kedveli az UpdraftPlus-t és van egy perce?"
307
+
308
+ #: updraftplus.php:2295
309
+ msgid "Please help UpdraftPlus by giving a positive review at wordpress.org"
310
+ msgstr ""
311
+ "Kérem segítsen az UpdraftPlus-nak egy pozitív hangú ismertető írásával a "
312
+ "wordpress.org-on"
313
+
314
+ #: updraftplus.php:2302
315
+ msgid "Need even more features and support? Check out UpdraftPlus Premium"
316
+ msgstr ""
317
+ "Még több funkcióra van szüksége és támogatásra? Nézze meg az UpdraftPlus "
318
+ "Premium-ot"
319
+
320
+ #: updraftplus.php:2311
321
+ msgid "Check out UpdraftPlus.Com for help, add-ons and support"
322
+ msgstr ""
323
+ "Nézze meg az UpdraftPlus.Com webhelyet segítségért, kiterjesztésekért és "
324
+ "támogatásért"
325
+
326
+ #: updraftplus.php:2314
327
+ msgid "Want to say thank-you for UpdraftPlus?"
328
+ msgstr "Megköszönné az UpdraftPlus-t?"
329
+
330
+ #: updraftplus.php:2314
331
+ msgid "Please buy our very cheap 'no adverts' add-on."
332
+ msgstr ""
333
+ "Kérem vásárolja meg az olcsó 'no adverts' (reklámok kikapcsolása) "
334
+ "kiterjesztésünket."
335
+
336
+ #: updraftplus.php:2325
337
+ msgid "File backup intervals"
338
+ msgstr "Fájl mentési időköz"
339
+
340
+ #: updraftplus.php:2328
341
+ msgid "Manual"
342
+ msgstr "Kézi"
343
+
344
+ #: updraftplus.php:2328
345
+ msgid "Every 4 hours"
346
+ msgstr "4 óránként"
347
+
348
+ #: updraftplus.php:2328
349
+ msgid "Every 8 hours"
350
+ msgstr "8 óránként"
351
+
352
+ #: updraftplus.php:2328
353
+ msgid "Every 12 hours"
354
+ msgstr "12 óránként"
355
+
356
+ #: updraftplus.php:2328
357
+ msgid "Daily"
358
+ msgstr "Naponta"
359
+
360
+ #: updraftplus.php:2328
361
+ msgid "Weekly"
362
+ msgstr "Hetente"
363
+
364
+ #: updraftplus.php:2328
365
+ msgid "Fortnightly"
366
+ msgstr "Kéthetente"
367
+
368
+ #: updraftplus.php:2328
369
+ msgid "Monthly"
370
+ msgstr "Havonta"
371
+
372
+ #: updraftplus.php:2337 updraftplus.php:2355
373
+ msgid "and retain this many backups"
374
+ msgstr "és ennyi mentés maradjon meg"
375
+
376
+ #: updraftplus.php:2344
377
+ msgid "Database backup intervals"
378
+ msgstr "Adatbázis mentési időköz"
379
+
380
+ # magázó hangnem
381
+ #: updraftplus.php:2362
382
+ msgid ""
383
+ "If you would like to automatically schedule backups, choose schedules from "
384
+ "the dropdowns above. Backups will occur at the intervals specified. If the "
385
+ "two schedules are the same, then the two backups will take place together. "
386
+ "If you choose \"manual\" then you must click the \"Backup Now\" button "
387
+ "whenever you wish a backup to occur."
388
+ msgstr ""
389
+ "Ha autmatikusan kívánja ütemezni a mentéseket, válassza ki az ütemezést a "
390
+ "fenti legördülő listákból. A mentések a megadott időközökben történnek. Ha a "
391
+ "két ütemezés azonos, akkor egyszerre lesznek a mentések. Ha \"Kézi\"-t "
392
+ "választ, akkor rá kell kattintania a \"Mentés most\" gombra, amikor indítani "
393
+ "kívánja a mentéseket."
394
+
395
+ #: updraftplus.php:2363
396
+ msgid "To fix the time at which a backup should take place,"
397
+ msgstr "Hogy beállítsa, milyen időpontban kerül sor a mentésre,"
398
+
399
+ #: updraftplus.php:2363
400
+ msgid "e.g. if your server is busy at day and you want to run overnight"
401
+ msgstr "pl. ha a webszervere nappal terhelt és éjjel kívája a mentést futtatni"
402
+
403
+ #: updraftplus.php:2363
404
+ msgid "use the \"Fix Time\" add-on"
405
+ msgstr "használja a \"Fix Time\" (idő beállítása) kiterjesztést"
406
+
407
+ #: updraftplus.php:2377
408
+ msgid ""
409
+ "Any other directories found inside wp-content but exclude these directories:"
410
+ msgstr "Minden más könyvtár a wp-content -en belül, de ezek a könyvtárak nem:"
411
+
412
+ #: updraftplus.php:2383
413
+ msgid ""
414
+ "Include all of these, unless you are backing them up outside of UpdraftPlus. "
415
+ "The above directories are usually everything (except for WordPress core "
416
+ "itself which you can download afresh from WordPress.org). But if you have "
417
+ "made customised modifications outside of these directories, you need to back "
418
+ "them up another way."
419
+ msgstr ""
420
+ "Ezeket a könyvtárakat is vegye bele a mentésbe, hacsak nem az UpdraftPlus-on "
421
+ "kívül másként kerülnek mentésre. A fenti könyvtárakban minden benne van "
422
+ "(kivéve a WordPress motor, amit frissen letölthet a wordpress.org-ről). Ha "
423
+ "módosításokat hajtott végre ezeken a könyvtárakon kívül, akkor más módon "
424
+ "kell mentenie azokat."
425
+
426
+ #: updraftplus.php:2383
427
+ msgid "Use WordShell for automatic backup, version control and patching"
428
+ msgstr ""
429
+ "Használja a WordShell-t automatikus mentésekhez, verzió követéshez és patch-"
430
+ "eléshez"
431
+
432
+ #: updraftplus.php:2387
433
+ msgid "Email"
434
+ msgstr "E-mail"
435
+
436
+ #: updraftplus.php:2388
437
+ msgid ""
438
+ "Enter an address here to have a report sent (and the whole backup, if you "
439
+ "choose) to it."
440
+ msgstr ""
441
+ "Ide írjon be a címet, ahol a jelentéseket kívánja megkapni (és a teljes "
442
+ "mentést is, ha olyan módszert választott)."
443
+
444
+ #: updraftplus.php:2392
445
+ msgid "Database encryption phrase"
446
+ msgstr "Adatbázis titkosítási kulcs"
447
+
448
+ #: updraftplus.php:2399
449
+ msgid ""
450
+ "If you enter text here, it is used to encrypt backups (Rijndael). <strong>Do "
451
+ "make a separate record of it and do not lose it, or all your backups "
452
+ "<em>will</em> be useless.</strong> Presently, only the database file is "
453
+ "encrypted. This is also the key used to decrypt backups from this admin "
454
+ "interface (so if you change it, then automatic decryption will not work "
455
+ "until you change it back). You can also use the file example-decrypt.php "
456
+ "from inside the UpdraftPlus plugin directory to decrypt manually."
457
+ msgstr ""
458
+ "Ha ide beír karaktereket, titkosítva lesz a mentés (Rijndael). <strong>Kérem "
459
+ "külön jegyezze fel ezt, különben az <em>összes</em> mentése hasztalan lesz.</"
460
+ "strong> Jelenleg csak az adatbázis mentések kerülnek titkosításra. Ezzel a "
461
+ "kulccsal kerül kinyitásra minden mentés erről a felületről (szóval, ha "
462
+ "módosítja, akkor a titkosítás automatikus kinyitása nem fog működni, amíg "
463
+ "vissza nem változtatja). Kézi kinyitáshoz használhatja az example-decrypt."
464
+ "php program fájlt az UpdraftPlus bővítmény könyvtárban."
465
+
466
+ #: updraftplus.php:2403
467
+ msgid "Copying Your Backup To Remote Storage"
468
+ msgstr "Mentések másolása a távoli tárhelyre"
469
+
470
+ #: updraftplus.php:2407
471
+ msgid "Choose your remote storage"
472
+ msgstr "Válasszon távoli tárhelyet"
473
+
474
+ #: updraftplus.php:2419
475
+ msgid "None"
476
+ msgstr "Egyik sem"
477
+
478
+ #: updraftplus.php:2500 updraftplus.php:2838 updraftplus.php:3109
479
+ msgid "Restore"
480
+ msgstr "Visszaállítás"
481
+
482
+ #: updraftplus.php:2514 updraftplus.php:2524
483
+ msgid "Cancel"
484
+ msgstr "Mégsem"
485
+
486
+ #: updraftplus.php:2521 updraftplus.php:2830
487
+ msgid "Backup Now"
488
+ msgstr "Mentés most"
489
+
490
+ #: updraftplus.php:2548
491
+ msgid "Advanced / Debugging Settings"
492
+ msgstr "Haladó / Hibakereső beállítások"
493
+
494
+ #: updraftplus.php:2551
495
+ msgid "Debug mode"
496
+ msgstr "Hibakereső mód"
497
+
498
+ #: updraftplus.php:2552
499
+ msgid ""
500
+ "Check this to receive more information and emails on the backup process - "
501
+ "useful if something is going wrong. You <strong>must</strong> send us this "
502
+ "log if you are filing a bug report."
503
+ msgstr ""
504
+ "Jelölje be ezt, hogy több információt és e-mailt kapjon a mentési "
505
+ "folyamatról - hasznos ha valami nem sikerül. Hibajegy bemyújtásához "
506
+ "csatolnia <strong>kell</strong> az itt kapott log-ot."
507
+
508
+ #: updraftplus.php:2555
509
+ msgid "Expert settings"
510
+ msgstr "Haladó beállítások"
511
+
512
+ #: updraftplus.php:2556
513
+ msgid "Show expert settings"
514
+ msgstr "Mutassa a haladó beállításokat"
515
+
516
+ #: updraftplus.php:2556
517
+ msgid ""
518
+ "click this to show some further options; don't bother with this unless you "
519
+ "have a problem or are curious."
520
+ msgstr ""
521
+ "ha ide kattint, további beállításokat jeleníthet meg; ne bajlódjon ezzel, "
522
+ "hacsak nincs valami probléma, vagy kiváncsi."
523
+
524
+ #: updraftplus.php:2563
525
+ msgid "Delete local backup"
526
+ msgstr "Törölje a helyi mentéseket"
527
+
528
+ #: updraftplus.php:2564
529
+ msgid ""
530
+ "Uncheck this to prevent deletion of any superfluous backup files from your "
531
+ "server after the backup run finishes (i.e. any files despatched remotely "
532
+ "will also remain locally, and any files being kept locally will not be "
533
+ "subject to the retention limits)."
534
+ msgstr ""
535
+ "Vegye ki a jelölést, hogy megakadályozza a felesleges mentések törlését a "
536
+ "webszerverről, miután elkészülnek a mentések (azaz minden távolra átmásolt "
537
+ "fájl megmarad helyben is, és egyik fájl sem kerül törlésre a megtartási "
538
+ "korlátozás miatt)."
539
+
540
+ #: updraftplus.php:2568
541
+ msgid "Backup directory"
542
+ msgstr "Mentési könyvtár"
543
+
544
+ #: updraftplus.php:2576
545
+ msgid "Backup directory specified is writable, which is good."
546
+ msgstr "A megadott mentési könyvtár írható, ami helyes."
547
+
548
+ #: updraftplus.php:2578
549
+ msgid "Backup directory specified is <b>not</b> writable, or does not exist."
550
+ msgstr ""
551
+ "A megadott mentési könyvtár <strong>nem</strong> írható, vagy nem létezik."
552
+
553
+ #: updraftplus.php:2578
554
+ msgid "Click here to attempt to create the directory and set the permissions"
555
+ msgstr ""
556
+ "Kattintson ide, hogy megkíséreljük a könyvtár létrehozását és a hozzáférési "
557
+ "jogok beállítását"
558
+
559
+ #: updraftplus.php:2578
560
+ msgid "or, to reset this option"
561
+ msgstr "vagy ezt a beállítást alaphelyzetbe állítsuk"
562
+
563
+ #: updraftplus.php:2578
564
+ msgid "click here"
565
+ msgstr "kattintson ide"
566
+
567
+ #: updraftplus.php:2578
568
+ msgid ""
569
+ "If that is unsuccessful check the permissions on your server or change it to "
570
+ "another directory that is writable by your web server process."
571
+ msgstr ""
572
+ "Ha ez sikertelen, ellenőrizze a webszerveren a hozzáférési jogokat, vagy "
573
+ "adjon meg másik könyvtárat, ami írható a webkiszolgáló folyamat által."
574
+
575
+ #: updraftplus.php:2581
576
+ msgid ""
577
+ "This is where UpdraftPlus will write the zip files it creates initially. "
578
+ "This directory must be writable by your web server. Typically you'll want to "
579
+ "have it inside your wp-content folder (this is the default). <b>Do not</b> "
580
+ "place it inside your uploads dir, as that will cause recursion issues "
581
+ "(backups of backups of backups of...)."
582
+ msgstr ""
583
+ "Ide írja az UpdraftPlus a zip fájlokat, amelyeket kezdetben készít. Ennek a "
584
+ "könyvtárnak írhatónak kell lennie. Jellemzően a wp-content könyvtáron belül "
585
+ "kívánja ezt a könyvtárat elhelyezni (ez az alapértelmezés). <strong>Ne</"
586
+ "strong> tegye az upload könyvtáron belül, mert rekurziót fog okozni (a "
587
+ "mentés mentésének a mentése stb.)."
588
+
589
+ #: updraftplus.php:2602
590
+ msgid "Save Changes"
591
+ msgstr "Változások mentése"
592
+
593
+ #: updraftplus.php:2626
594
+ msgid "Download log file"
595
+ msgstr "Napló fájl letöltése"
596
+
597
+ #: updraftplus.php:2632
598
+ msgid "No backup has been completed."
599
+ msgstr "Még egy mentés sem készült el."
600
+
601
+ #: updraftplus.php:2652
602
+ msgid "Restore successful!"
603
+ msgstr "A visszaállítás sikerült!"
604
+
605
+ #: updraftplus.php:2653 updraftplus.php:2688 updraftplus.php:2704
606
+ msgid "Actions"
607
+ msgstr "Akciók"
608
+
609
+ #: updraftplus.php:2653 updraftplus.php:2668 updraftplus.php:2688
610
+ #: updraftplus.php:2704
611
+ msgid "Return to UpdraftPlus Configuration"
612
+ msgstr "Vissza az UpdraftPlus beállításához"
613
+
614
+ #: updraftplus.php:2677
615
+ msgid "Remove old directories"
616
+ msgstr "Régi könyvtárak eltávolítása"
617
+
618
+ #: updraftplus.php:2683
619
+ msgid "Old directories successfully removed."
620
+ msgstr "A régi könyvtárakat sikerült eltávolítani."
621
+
622
+ #: updraftplus.php:2686
623
+ msgid ""
624
+ "Old directory removal failed for some reason. You may want to do this "
625
+ "manually."
626
+ msgstr ""
627
+ "A régi könyvtárak eltávolítása valamilyen ok miatt nem sikerült. Kézzel "
628
+ "eltávolíthatja."
629
+
630
+ #: updraftplus.php:2701
631
+ msgid "Backup directory could not be created"
632
+ msgstr "A Backup könyvtárat nem sikerült létrehozni"
633
+
634
+ #: updraftplus.php:2703
635
+ msgid "Backup directory successfully created."
636
+ msgstr "A Backup könyvtárat sikerült létrehozni."
637
+
638
+ #: updraftplus.php:2710
639
+ msgid "Schedule backup"
640
+ msgstr "Mentés ütemezése"
641
+
642
+ #: updraftplus.php:2713
643
+ msgid "Failed."
644
+ msgstr "Nem sikerült."
645
+
646
+ #: updraftplus.php:2715
647
+ msgid ""
648
+ "OK. Now load any page from your site to make sure the schedule can trigger. "
649
+ "You should then see activity in the \"Last log message\" field below."
650
+ msgstr ""
651
+ "Rendben. Most nézze meg a honlapja bármely oldalát, hogy biztosan elinduljon "
652
+ "az ütemezett mentés. Azután az \"Utolsó log sor\" mezőben láthatja az "
653
+ "aktivitást."
654
+
655
+ #: updraftplus.php:2715
656
+ msgid "Nothing happening? Follow this link for help."
657
+ msgstr "Semmi sem történik? Segítségért kattinson erre a hivatozásra."
658
+
659
+ #: updraftplus.php:2728
660
+ msgid "Your settings have been wiped."
661
+ msgstr "A beállításai kitörlésre kerültek."
662
+
663
+ #: updraftplus.php:2735
664
+ msgid "By UpdraftPlus.Com"
665
+ msgstr "készítette: UpdraftPlus.Com"
666
+
667
+ #: updraftplus.php:2735
668
+ msgid "Lead developer's homepage"
669
+ msgstr "A vezető fejlesztő honlapja"
670
+
671
+ #: updraftplus.php:2735
672
+ msgid "Donate"
673
+ msgstr "Adományozás"
674
+
675
+ #: updraftplus.php:2735
676
+ msgid "Other WordPress plugins"
677
+ msgstr "Más WordPress bővítmények"
678
+
679
+ #: updraftplus.php:2735
680
+ msgid "Version"
681
+ msgstr "Verzió"
682
+
683
+ #: updraftplus.php:2739
684
+ msgid "Your backup has been restored."
685
+ msgstr "A mentése visszaállításre került."
686
+
687
+ #: updraftplus.php:2739
688
+ msgid ""
689
+ "Your old (themes, uploads, plugins, whatever) directories have been retained "
690
+ "with \"-old\" appended to their name. Remove them when you are satisfied "
691
+ "that the backup worked properly."
692
+ msgstr ""
693
+ "A régi könyvtárai (téma, feltöltések, bővítmények, bármi más) megmaradtak \"-"
694
+ "old\" utótaggal a nevükben. Távolítsa el azokat, ha a visszaállított mentés "
695
+ "megfelelően működik."
696
+
697
+ #: updraftplus.php:2739
698
+ msgid ""
699
+ "At this time UpdraftPlus does not automatically restore your database. You "
700
+ "will need to use an external tool like phpMyAdmin to perform that task."
701
+ msgstr ""
702
+ "Jelenleg az UpdraftPlus nem állítja vissza az adatbázisát. Más eszközt kell "
703
+ "használjon ehhez a feladathoz, mint például a phpMyAdmin."
704
+
705
+ #: updraftplus.php:2745
706
+ msgid "Old directories successfully deleted."
707
+ msgstr "A régi könyvtárak sikeresen törlésre kerültek."
708
+
709
+ #: updraftplus.php:2748
710
+ msgid ""
711
+ "Your PHP memory limit is quite low. UpdraftPlus attempted to raise it but "
712
+ "was unsuccessful. This plugin may not work properly with a memory limit of "
713
+ "less than 96 Mb (though on the other hand, it has been used successfully "
714
+ "with a 32Mb limit - your mileage may vary, but don't blame us!)."
715
+ msgstr ""
716
+ "A PHP memória limitje igen alacsony. UpdraftPlus megpróbálta megemelni, de "
717
+ "nem sikerült. Ez a bővítmény lehet, hogy nem fog működni 96 MB-nál "
718
+ "alacsonyabb memória limittel (bár másfelől sikerült használni 32 MB-os "
719
+ "limittel - különböző helyzetek vannak - nem minket okoljon!)."
720
+
721
+ #: updraftplus.php:2748
722
+ msgid "Current limit is:"
723
+ msgstr "Az aktuális limit:"
724
+
725
+ #: updraftplus.php:2752
726
+ msgid ""
727
+ "Your PHP max_execution_time is less than 60 seconds. This possibly means "
728
+ "you're running in safe_mode. Either disable safe_mode or modify your php.ini "
729
+ "to set max_execution_time to a higher number. If you do not, then longer "
730
+ "will be needed to complete a backup (but that is all). Present limit is:"
731
+ msgstr ""
732
+ "A PHP max_execution_time beállítás kisebb, mint 60 másodperc. Ez jelentheti "
733
+ "azt, hogy safe_mode-ban fut a WordPress. Vagy kapcsolja ki a safe_mode-ot, "
734
+ "vagy módosítsa a php.ini fájlban a max_execution_time-ot egy magasabb "
735
+ "értékre. Ha nem teszi, később lesz kész a mentés (de ez minden). A mostani "
736
+ "maximális futási idő:"
737
+
738
+ #: updraftplus.php:2752
739
+ msgid "seconds"
740
+ msgstr "másodperc"
741
+
742
+ #: updraftplus.php:2757
743
+ msgid ""
744
+ "You have old directories from a previous backup (technical information: "
745
+ "these are found in wp-content, and suffixed with -old). Use this button to "
746
+ "delete them (if you have verified that the restoration worked)."
747
+ msgstr ""
748
+ "Régi könyvtárai vannak egy előző visszaállítás előttről (technikai "
749
+ "információ: ezek a wp-content könyvtárban vannak -old végződéssel). "
750
+ "Kattintson erre a gombra a kitörlésükhöz (miután leellenőrizte, hogy a "
751
+ "visszaállított állapot működőképes)."
752
+
753
+ #: updraftplus.php:2761
754
+ msgid "Delete Old Directories"
755
+ msgstr "Régi könyvtárak törlése"
756
+
757
+ #: updraftplus.php:2761
758
+ msgid ""
759
+ "Are you sure you want to delete the old directories? This cannot be undone."
760
+ msgstr ""
761
+ "Biztosan ki akarja törölni a régi könyvtárakat? Ezt nem lehet visszavonni."
762
+
763
+ #: updraftplus.php:2774
764
+ msgid "Existing Schedule And Backups"
765
+ msgstr "Létező ütemezések és mentések"
766
+
767
+ #: updraftplus.php:2778
768
+ msgid "JavaScript warning"
769
+ msgstr "Javascript figyelmeztetés"
770
+
771
+ #: updraftplus.php:2779
772
+ msgid ""
773
+ "This admin interface uses JavaScript heavily. You either need to activate it "
774
+ "within your browser, or to use a JavaScript-capable browser."
775
+ msgstr ""
776
+ "Ez a felület Javascript-et használ. Vagy kapcsolja be a böngészőjében a "
777
+ "Javascript futtatását, vagy használjon Javascript-et futtatni képes "
778
+ "böngészőt."
779
+
780
+ #: updraftplus.php:2792 updraftplus.php:2805
781
+ msgid "Nothing currently scheduled"
782
+ msgstr "Nincs semmi ütemezve"
783
+
784
+ #: updraftplus.php:2797
785
+ msgid "At the same time as the files backup"
786
+ msgstr "A fájl mentésekkel egyidőben"
787
+
788
+ #: updraftplus.php:2817
789
+ msgid "Next scheduled backups"
790
+ msgstr "Következő ütemezett mentések"
791
+
792
+ #: updraftplus.php:2819
793
+ msgid "Files"
794
+ msgstr "Fájlok"
795
+
796
+ #: updraftplus.php:2821
797
+ msgid "Time now"
798
+ msgstr "A pontos idő"
799
+
800
+ #: updraftplus.php:2825
801
+ msgid "Last finished backup run"
802
+ msgstr "Utolsó befejezett mentés"
803
+
804
+ #: updraftplus.php:2845
805
+ msgid "Last log message"
806
+ msgstr "Utolsó log sor"
807
+
808
+ #: updraftplus.php:2846
809
+ msgid "(Nothing yet logged)"
810
+ msgstr "(Még semmit sem került naplózásra)"
811
+
812
+ #: updraftplus.php:2849
813
+ msgid "Backups, logs & restoring"
814
+ msgstr "Mentések, naplók & visszaállítás"
815
+
816
+ #: updraftplus.php:2850
817
+ msgid "Press to see available backups"
818
+ msgstr "Kattintson ide az elérhető mentésekhez"
819
+
820
+ #: updraftplus.php:2850
821
+ #, php-format
822
+ msgid "%d set(s) available"
823
+ msgstr "%d szett elérhető"
824
+
825
+ #: updraftplus.php:2855
826
+ msgid "Downloading"
827
+ msgstr "Letöltés"
828
+
829
+ #: updraftplus.php:2855
830
+ msgid ""
831
+ "Pressing a button for Database/Plugins/Themes/Uploads/Others will make "
832
+ "UpdraftPlus try to bring the backup file back from the remote storage (if "
833
+ "any - e.g. Amazon S3, Dropbox, Google Drive, FTP) to your webserver. Then "
834
+ "you will be allowed to download it to your computer. If the fetch from the "
835
+ "remote storage stops progressing (wait 30 seconds to make sure), then press "
836
+ "again to resume. Remember that you can also visit the cloud storage vendor's "
837
+ "website directly."
838
+ msgstr ""
839
+ "A gomb megnyomásával az UpdraftPlus megpróbálja letölteni a mentést a távoli "
840
+ "tárhelyről (ha van - pl. Amazon S3, Dropbox, Google Drive, FTP) a "
841
+ "webszerverre, helybe. Aztán letöltheti a számítógépére. Ha a távoli "
842
+ "tárhelyről való letöltés megszakad (várjon 30 masodpercet, hogy "
843
+ "megbizonyosodjon), nyomja meg a gombot még egyszer a folytatáshoz. Vegye "
844
+ "figyelembe, hogy a távoli tárhelyről közvetlenül is letöltheti annak "
845
+ "honlapján keresztül."
846
+
847
+ #: updraftplus.php:2856
848
+ msgid "Restoring"
849
+ msgstr "Visszaállítás"
850
+
851
+ #: updraftplus.php:2856
852
+ msgid ""
853
+ "Press the button for the backup you wish to restore. If your site is large "
854
+ "and you are using remote storage, then you should first click on each entity "
855
+ "in order to retrieve it back to the webserver. This will prevent time-outs "
856
+ "from occuring during the restore process itself."
857
+ msgstr ""
858
+ "Nyomja meg a kívánt mentéshez tartozó gombot a visszaállításhoz. Ha óriási a "
859
+ "honlapja, és távoli tárhelyet használ, akkor először kattintson minden egyes "
860
+ "elemre, hogy visszatöltse a webszerverre. Ez megakadályozza az "
861
+ "időtúllépéseket a visszaállítási folyamat közben."
862
+
863
+ #: updraftplus.php:2856
864
+ msgid "More tasks:"
865
+ msgstr "Több feladat:"
866
+
867
+ #: updraftplus.php:2856
868
+ msgid "upload backup files"
869
+ msgstr "mentések feltöltése"
870
+
871
+ #: updraftplus.php:2856
872
+ msgid ""
873
+ "Press here to look inside your UpdraftPlus directory (in your web hosting "
874
+ "space) for any new backup sets that you have uploaded. The location of this "
875
+ "directory is set in the expert settings, below."
876
+ msgstr ""
877
+ "Kattintson ide az UpdraftPlus könyvtárban lévő mentési szettek "
878
+ "megtekintéséhez, amit kézzel tölött fel. Ez a könyvtár alább Haladó "
879
+ "beállításokban állíható be."
880
+
881
+ #: updraftplus.php:2856
882
+ msgid "rescan folder for new backup sets"
883
+ msgstr "a könyvtár átnézése új mentési szettekért"
884
+
885
+ #: updraftplus.php:2857
886
+ msgid "Opera web browser"
887
+ msgstr "Opera böngésző"
888
+
889
+ #: updraftplus.php:2857
890
+ msgid "If you are using this, then turn Turbo/Road mode off."
891
+ msgstr "Ha ezt használja, kapcsolja ki a Turbo/Road módot."
892
+
893
+ #: updraftplus.php:2858
894
+ msgid "This is a count of the contents of your Updraft directory"
895
+ msgstr "Ez az Updraft könyvtár tartalmának mérete."
896
+
897
+ #: updraftplus.php:2858
898
+ msgid "Web-server disk space in use by UpdraftPlus"
899
+ msgstr "Az UpdraftPlus által használt webszerver lemezterület."
900
+
901
+ #: updraftplus.php:2858
902
+ msgid "refresh"
903
+ msgstr "frissítés"
904
+
905
+ #: updraftplus.php:2860
906
+ msgid "UpdraftPlus - Upload backup files"
907
+ msgstr "UpdraftPlus - Mentések feltöltése"
908
+
909
+ #: updraftplus.php:2861
910
+ msgid ""
911
+ "Upload files into UpdraftPlus. Use this to import backups made on a "
912
+ "different WordPress installation."
913
+ msgstr ""
914
+ "Töltse fel a fájlokat at UpdraftPlus-ba. Ezt más WordPress installációkon "
915
+ "készült mentések importálásához használja."
916
+
917
+ #: updraftplus.php:2865
918
+ msgid "Drop backup zips here"
919
+ msgstr "Húzza ide a mentések zip fájljait"
920
+
921
+ #: updraftplus.php:2879
922
+ msgid "calculating..."
923
+ msgstr "számítás..."
924
+
925
+ #: updraftplus.php:2948
926
+ msgid "Restore backup"
927
+ msgstr "Mentés visszaállítása"
928
+
929
+ #: updraftplus.php:2949
930
+ msgid "Restore backup from"
931
+ msgstr "Mentés visszaállítása innen:"
932
+
933
+ #: updraftplus.php:2950
934
+ msgid ""
935
+ "Restoring will replace this site's themes, plugins, uploads and/or other "
936
+ "content directories (according to what is contained in the backup set, and "
937
+ "your selection"
938
+ msgstr ""
939
+ "A visszaállítás felülírja a honlap témáját, bővítményeit, feltöltéseit és/"
940
+ "vagy más tartalmi könyvtárakat (a mentési szettben lévő tartalmak és a "
941
+ "választása szerint)"
942
+
943
+ #: updraftplus.php:2950
944
+ msgid "Choose the components to restore"
945
+ msgstr "Válassza ki a visszaálítandó összetevőket"
946
+
947
+ #: updraftplus.php:2961
948
+ msgid ""
949
+ "Databases cannot yet be restored from here - you must download the database "
950
+ "file and take it to your web hosting company's control panel."
951
+ msgstr ""
952
+ "Adatbázisok még nem állíthatóak vissza innen - le kell töltse az adatbázis "
953
+ "fájlt, és a tárhely szolgáltatójának vezérlőpultján kereszül állíthatja "
954
+ "vissza."
955
+
956
+ #: updraftplus.php:2966
957
+ msgid "Perform a backup now"
958
+ msgstr "Mentés készítése most"
959
+
960
+ #: updraftplus.php:2968
961
+ msgid ""
962
+ "This will schedule a one-time backup. To proceed, press 'Backup Now', then "
963
+ "wait 10 seconds, then visit any page on your site. WordPress should then "
964
+ "start the backup running in the background."
965
+ msgstr ""
966
+ "Ez egy egyszeri mentést fog beütemezni. A folytatáshoz kattintson a 'Mentés "
967
+ "most' gombra, majd várjon 10 másodpercet, aztán nézze meg a honlapjának "
968
+ "egyik oldalát. Akkor a WordPress elkezdi a mentést a háttérben."
969
+
970
+ #: updraftplus.php:2974
971
+ msgid "Does nothing happen when you schedule backups?"
972
+ msgstr "Semmi sem történt, a mentések beütemezése után?"
973
+
974
+ #: updraftplus.php:2974
975
+ msgid "Go here for help."
976
+ msgstr "Jöjjön ide segítségért."
977
+
978
+ #: updraftplus.php:2981
979
+ msgid "Multisite"
980
+ msgstr "Multisite"
981
+
982
+ #: updraftplus.php:2985
983
+ msgid "Do you need WordPress Multisite support?"
984
+ msgstr "Szüksége van WordPress Multisite támogatásra?"
985
+
986
+ #: updraftplus.php:2985
987
+ msgid ""
988
+ "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on."
989
+ msgstr ""
990
+ "Kérem nézze meg az UpdraftPlus Premium-ot, vagy a Multisite kiterjesztést."
991
+
992
+ #: updraftplus.php:2990
993
+ msgid "Configure Backup Contents And Schedule"
994
+ msgstr "Mentendő tartalmak és ütemezések beállítása"
995
+
996
+ #: updraftplus.php:2996
997
+ msgid "Debug Information And Expert Options"
998
+ msgstr "Hibakeresési információk és Haladó beállítások"
999
+
1000
+ #: updraftplus.php:3001
1001
+ msgid "Peak memory usage"
1002
+ msgstr "Memória használati csúcsérték"
1003
+
1004
+ #: updraftplus.php:3002
1005
+ msgid "Current memory usage"
1006
+ msgstr "Pillanatnyi memória használat"
1007
+
1008
+ #: updraftplus.php:3003
1009
+ msgid "PHP memory limit"
1010
+ msgstr "PHP memória limit"
1011
+
1012
+ #: updraftplus.php:3006
1013
+ msgid ""
1014
+ "The buttons below will immediately execute a backup run, independently of "
1015
+ "WordPress's scheduler. If these work whilst your scheduled backups and the "
1016
+ "\"Backup Now\" button do absolutely nothing (i.e. not even produce a log "
1017
+ "file), then it means that your scheduler is broken. You should then disable "
1018
+ "all your other plugins, and try the \"Backup Now\" button. If that fails, "
1019
+ "then contact your web hosting company and ask them if they have disabled wp-"
1020
+ "cron. If it succeeds, then re-activate your other plugins one-by-one, and "
1021
+ "find the one that is the problem and report a bug to them."
1022
+ msgstr ""
1023
+ "Az alábbi gombok azonnal elindítanak egy mentést a WordPress ütemezésétől "
1024
+ "függetlenül. Ha ezek működnek, míg az ütemezett mentések és a \"Mentés most"
1025
+ "\" gomb semmit sem csinálnak (azaz még a log fájlt sem hozzák létre) az azt "
1026
+ "jelenti, hogy a WordPress ütemező sérült. Ilyenkor ki kell kapcsoljon minden "
1027
+ "más bővítményt, és megpróbálkozni a \"Mentés most\" gomb megnyomásával. Ha "
1028
+ "az nem indítja el a mentést, akkor a tárhely szolgáltatójától kérdezze meg, "
1029
+ "hogy kikapcsolták-e a wp-cron -t."
1030
+
1031
+ #: updraftplus.php:3010
1032
+ msgid "Debug Full Backup"
1033
+ msgstr "Hibakeresés a teljes mentésben"
1034
+
1035
+ #: updraftplus.php:3010
1036
+ msgid ""
1037
+ "This will cause an immediate backup. The page will stall loading until it "
1038
+ "finishes (ie, unscheduled)."
1039
+ msgstr ""
1040
+ "Ez azonnal elindít egy mentést. Az oldal betöltés fenn fog akadni (azaz ez "
1041
+ "nem ütemezett mentés)."
1042
+
1043
+ #: updraftplus.php:3014
1044
+ msgid "Debug Database Backup"
1045
+ msgstr "Hibakeresés az adatbázis mentésben"
1046
+
1047
+ #: updraftplus.php:3014
1048
+ msgid ""
1049
+ "This will cause an immediate DB backup. The page will stall loading until it "
1050
+ "finishes (ie, unscheduled). The backup may well run out of time; really this "
1051
+ "button is only helpful for checking that the backup is able to get through "
1052
+ "the initial stages, or for small WordPress sites.."
1053
+ msgstr ""
1054
+ "Ez azonnal elindít egy adatbázis mentést. Az oldal betöltés fenn fog akadni "
1055
+ "(azaz ez nem ütemezett mentés). A mentés nagyon kifuthat az időből, amilyen "
1056
+ "hosszan egy oldal betöltés engedélyezve van. Valóban ez a gomb csak abban "
1057
+ "segít, hogy a mentés túljut-e a kezdezi fázisokon, vagy kis WordPress "
1058
+ "honlapoknál."
1059
+
1060
+ #: updraftplus.php:3016
1061
+ msgid "Wipe Settings"
1062
+ msgstr "Beállítások kitörlése"
1063
+
1064
+ #: updraftplus.php:3017
1065
+ msgid ""
1066
+ "This button will delete all UpdraftPlus settings (but not any of your "
1067
+ "existing backups from your cloud storage). You will then need to enter all "
1068
+ "your settings again. You can also do this before deactivating/deinstalling "
1069
+ "UpdraftPlus if you wish."
1070
+ msgstr ""
1071
+ "Ez a gomb minden UpdraftPlus beállítást kitöröl (de egyet sem a távoli "
1072
+ "tárhelyeken lévő mentések közül). Ezután minden beállítást újra meg kell "
1073
+ "adjon. Ezt a UpdraftPlus bővítmény kikapcsolása/törlése előtt megteheti, ha "
1074
+ "kívánja."
1075
+
1076
+ #: updraftplus.php:3020
1077
+ msgid "Wipe All Settings"
1078
+ msgstr "Minden beállítás kitörlése"
1079
+
1080
+ #: updraftplus.php:3020
1081
+ msgid ""
1082
+ "This will delete all your UpdraftPlus settings - are you sure you want to do "
1083
+ "this?"
1084
+ msgstr "Ez minden UpdraftPlus beállítást kitöröl - biztos benne?"
1085
+
1086
+ #: updraftplus.php:3089
1087
+ msgid "Press here to download"
1088
+ msgstr "Kattintson ide letöltéshez"
1089
+
1090
+ #: updraftplus.php:3091
1091
+ #, php-format
1092
+ msgid "(No %s)"
1093
+ msgstr "(Nincs %s)"
1094
+
1095
+ #: updraftplus.php:3101
1096
+ msgid "Backup Log"
1097
+ msgstr "Mentési napló"
1098
+
1099
+ #: updraftplus.php:3109
1100
+ msgid ""
1101
+ "After pressing this button, you will be given the option to choose which "
1102
+ "components you wish to restore"
1103
+ msgstr ""
1104
+ "Miután rákattintott erre a gombra, választhat, hogy melyik összetevőt "
1105
+ "állítja vissza"
1106
+
1107
+ #: updraftplus.php:3134 updraftplus.php:3138
1108
+ msgid "Warning"
1109
+ msgstr "Figyelmeztetés"
1110
+
1111
+ #: updraftplus.php:3134
1112
+ #, php-format
1113
+ msgid ""
1114
+ "You have less than %s of free disk space on the disk which UpdraftPlus is "
1115
+ "configured to use to create backups. UpdraftPlus could well run out of "
1116
+ "space. Contact your the operator of your server (e.g. your web hosting "
1117
+ "company) to resolve this issue."
1118
+ msgstr ""
1119
+ "Kevesebb, mint %s szabad terület áll rendelkezésre a lemezen, ahol az "
1120
+ "UpdraftPlus be van állítva, hogy mentéseket készítsen. UpdraftPlus kifuthat "
1121
+ "az üres területből. Lépjen kapcsolatba a webszerver rendszergazdájával (pl. "
1122
+ "a tárhely szolgáltatójával), hogy megoldják ezt a problémát."
1123
+
1124
+ #: updraftplus.php:3138
1125
+ #, php-format
1126
+ msgid ""
1127
+ "UpdraftPlus does not officially support versions of WordPress before %s. It "
1128
+ "may work for you, but if it does not, then please be aware that no support "
1129
+ "is available until you upgrade WordPress."
1130
+ msgstr ""
1131
+ "UpdraftPlus nem támogatja a %s előtti WordPress veriókat. Talán működni fog, "
1132
+ "de ha nem, akkor kérjük vegye figyelembe, hogy nem kaphat támogatást, amíg "
1133
+ "nem frissíti a WordPress-t."
1134
+
1135
+ #: updraftplus.php:3142 updraftplus.php:3146 updraftplus.php:3150
1136
+ msgid "UpdraftPlus notice:"
1137
+ msgstr "UpdraftPlus értesítés:"
1138
+
1139
+ #: updraftplus.php:3142
1140
+ msgid "The log file could not be read."
1141
+ msgstr "A log fájlt nem lehet olvasni."
1142
+
1143
+ #: updraftplus.php:3146 updraftplus.php:3150
1144
+ #, php-format
1145
+ msgid ""
1146
+ "Click here to authenticate your %s account (you will not be able to back up "
1147
+ "to %s without it)."
1148
+ msgstr ""
1149
+ "Kattinton ide, hogy hitelesítse a %s fiókját (nem fog tudni menteni a %s "
1150
+ "fiókjába enélkül)."
1151
+
1152
+ #: updraftplus.php:3323
1153
+ msgid "Infinite recursion: consult your log for more information"
1154
+ msgstr "Végtelen rekurzió: nézze meg a naplót további információért"
1155
+
1156
+ #: includes/updraft-restorer.php:5
1157
+ msgid "Backup file not available."
1158
+ msgstr "A mentési fájl nem elérhető"
1159
+
1160
+ #: includes/updraft-restorer.php:6
1161
+ msgid "Unpacking backup..."
1162
+ msgstr "Mentés kicsomagolása..."
1163
+
1164
+ #: includes/updraft-restorer.php:7
1165
+ msgid "Moving old directory out of the way..."
1166
+ msgstr "Régi könyvtárak félre rakása..."
1167
+
1168
+ #: includes/updraft-restorer.php:8
1169
+ msgid "Moving unpacked backup in place..."
1170
+ msgstr "Kicsomagolatlan mentés helyére mozgatása..."
1171
+
1172
+ #: includes/updraft-restorer.php:9
1173
+ msgid "Cleaning up rubbish..."
1174
+ msgstr "Szemét eltakarítása..."
1175
+
1176
+ #: includes/updraft-restorer.php:10
1177
+ msgid ""
1178
+ "Could not move old directory out of the way. Perhaps you already have -old "
1179
+ "directories that need deleting first?"
1180
+ msgstr ""
1181
+ "Nem sikerült a régi könyvtárakat félre rakni. Talán már létezik könyvtár -"
1182
+ "old utótaggal, ami először ki kéne törölni?"
1183
+
1184
+ #: includes/updraft-restorer.php:11
1185
+ msgid ""
1186
+ "Could not move new directory into place. Check your wp-content/upgrade "
1187
+ "folder."
1188
+ msgstr ""
1189
+ "Nem sikerült az új könyvtárat a helyére rakni. Ellenőrizze a wp-content/"
1190
+ "upgrade könyvtárat."
1191
+
1192
+ #: includes/updraft-restorer.php:12
1193
+ msgid "Failed to delete working directory after restoring."
1194
+ msgstr "Nem sikerült a munkakönyvtárat kitörölni visszaállítás után."
1195
+
1196
+ #: includes/updraft-restorer.php:34
1197
+ msgid ""
1198
+ "Will not delete the archive after unpacking it, because there was no cloud "
1199
+ "storage for this backup"
1200
+ msgstr ""
1201
+ "A zip fájl nem került törlésre kicsomagolás után, mert nincs távoli "
1202
+ "tárhelyen."
1203
+
1204
+ #: methods/webdav.php:13 methods/webdav.php:34 methods/webdav.php:50
1205
+ #: methods/sftp.php:13 methods/sftp.php:34 methods/sftp.php:50
1206
+ #, php-format
1207
+ msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s"
1208
+ msgstr ""
1209
+ "Nincs installálva az UpdraftPlus %s kiterjesztés - szerezze be innen: %s"
1210
+
1211
+ #: methods/webdav.php:63 methods/sftp.php:63
1212
+ #, php-format
1213
+ msgid "%s support is available as an add-on"
1214
+ msgstr "%s támogatás elérhető mint kiterjesztés"
1215
+
1216
+ #: methods/webdav.php:63 methods/sftp.php:63
1217
+ msgid "follow this link to get it"
1218
+ msgstr "kattintson erre a hivatkozásra a beszerzéshez"
1219
+
1220
+ #: methods/googledrive.php:94 methods/s3.php:326 methods/dropbox.php:293
1221
+ #: addons/webdav.php:292
1222
+ msgid "Success"
1223
+ msgstr "Siker"
1224
+
1225
+ #: methods/googledrive.php:94 methods/dropbox.php:293
1226
+ #, php-format
1227
+ msgid "you have authenticated your %s account"
1228
+ msgstr "sikeresen hitelesítette %s fiókját"
1229
+
1230
+ #: methods/googledrive.php:94 methods/googledrive.php:325
1231
+ #: methods/googledrive.php:327 methods/googledrive.php:345
1232
+ #: methods/googledrive.php:349 methods/googledrive.php:353
1233
+ msgid "Google Drive"
1234
+ msgstr "Google Drive"
1235
+
1236
+ #: methods/googledrive.php:98
1237
+ msgid ""
1238
+ "No refresh token was received from Google. This often means that you entered "
1239
+ "your client secret wrongly, or that you have not yet re-authenticated "
1240
+ "(below) since correcting it. Re-check it, then follow the link to "
1241
+ "authenticate again. Finally, if that does not work, then use expert mode to "
1242
+ "wipe all your settings, create a new Google client ID/secret, and start "
1243
+ "again."
1244
+ msgstr ""
1245
+ "Nem jött frissítő token (vezérjel) a Google-től. Ez gyakran azt jelenti, "
1246
+ "hogy kliens titkos kulcsot helytelenül írta be, vagy még nem hitelesítette "
1247
+ "újra (alul) mióta helyesbítette. Ellenőrizze újra, aztán kattintson a "
1248
+ "hivatkozásra az újra hitelesítéshez. Végül, ha az nem múködik, a Haladó mód "
1249
+ "bekapcsolása után kattintson a Minden beállítás kitörlése gombra, és kérjen "
1250
+ "egy úgy Google kliens ID-t, titkos kulcsot."
1251
+
1252
+ #: methods/googledrive.php:103
1253
+ msgid "Authorization failed"
1254
+ msgstr "Hitelesítési hiba"
1255
+
1256
+ #: methods/googledrive.php:117
1257
+ msgid ""
1258
+ "Have not yet obtained an access token from Google - you need to authorise or "
1259
+ "re-authorise your connection to Google Drive."
1260
+ msgstr ""
1261
+ "Még nem szerzett be hozzáférési token-t (vezérlőjelet) a Google-től - "
1262
+ "hitelesítenie vagy újra hitelesítenie kell a kapcsolatát a Google Drive-val."
1263
+
1264
+ #: methods/googledrive.php:118 methods/googledrive.php:254
1265
+ msgid ""
1266
+ "Have not yet obtained an access token from Google (has the user authorised?)"
1267
+ msgstr ""
1268
+ "Még nem szerzett be hozzáférési tokent-t (vezérlőjelet) a Google-től "
1269
+ "(hitelesített a felhasználó?)"
1270
+
1271
+ #: methods/googledrive.php:135 addons/webdav.php:57
1272
+ #, php-format
1273
+ msgid "Failed to upload to %s"
1274
+ msgstr "Nem sikerült a feltöltés ide: %s"
1275
+
1276
+ #: methods/googledrive.php:189 addons/webdav.php:57
1277
+ msgid "Error"
1278
+ msgstr "Hiba"
1279
+
1280
+ #: methods/googledrive.php:225
1281
+ msgid "An error occurred during GoogleDrive upload (see log for more details)"
1282
+ msgstr ""
1283
+ "Hiba törént a Google Drive-ra való feltöltés közben (nézze meg a naplót több "
1284
+ "részletért)"
1285
+
1286
+ #: methods/googledrive.php:266
1287
+ #, php-format
1288
+ msgid ""
1289
+ "Google Drive error: %d: could not download: could not find a record of the "
1290
+ "Google Drive file ID for this file"
1291
+ msgstr ""
1292
+ "Google Drive hiba: %d: nem sikerült a letöltés: nem található Google Drive "
1293
+ "fájl azonosító bejegyzés ehhez a fájlhoz"
1294
+
1295
+ #: methods/googledrive.php:271
1296
+ #, php-format
1297
+ msgid "Could not find %s in order to download it"
1298
+ msgstr "Nem található %s letöltés céljából"
1299
+
1300
+ #: methods/googledrive.php:283
1301
+ msgid "Google Drive "
1302
+ msgstr "Google Drive"
1303
+
1304
+ #: methods/googledrive.php:283
1305
+ msgid "error: zero-size file was downloaded"
1306
+ msgstr "hiba: nulla méretű fájl lett letöltve"
1307
+
1308
+ #: methods/googledrive.php:301
1309
+ msgid "Account is not authorized."
1310
+ msgstr "A fiók nincs hitelesítve."
1311
+
1312
+ #: methods/googledrive.php:328 methods/s3.php:246 methods/dropbox.php:217
1313
+ #: methods/ftp.php:109 addons/webdav.php:231
1314
+ #, php-format
1315
+ msgid ""
1316
+ "%s is a great choice, because UpdraftPlus supports chunked uploads - no "
1317
+ "matter how big your blog is, UpdraftPlus can upload it a little at a time, "
1318
+ "and not get thwarted by timeouts."
1319
+ msgstr ""
1320
+ "%s egy jó választás, mert az UpdraftPlus támogatja a darabolt feltöltést - "
1321
+ "nem baj milyen nagy a honlapja, az UpdraftPlus fel tudja tölteni kis "
1322
+ "darabokban, nem akadályozza meg az időtúllépés."
1323
+
1324
+ #: methods/googledrive.php:334
1325
+ msgid ""
1326
+ "For longer help, including screenshots, follow this link. The description "
1327
+ "below is sufficient for more expert users."
1328
+ msgstr ""
1329
+ "Bővebb segítségért képernyőképeket beleértve kattintson erre a hivatkozásra. "
1330
+ "Az alább található leírás elegendő a haladó felhasználóknak."
1331
+
1332
+ #: methods/googledrive.php:335
1333
+ msgid ""
1334
+ "Follow this link to your Google API Console, and there create a Client ID in "
1335
+ "the API Access section."
1336
+ msgstr ""
1337
+ "Kattintson erre a hivetkozásra a Google API Console-hoz, ott kérjen egy "
1338
+ "kliens ID-t az API Access részben."
1339
+
1340
+ #: methods/googledrive.php:335
1341
+ msgid "Select 'Web Application' as the application type."
1342
+ msgstr "Válassza azt, hogy 'Web Application' mint alkalmazás típus."
1343
+
1344
+ #: methods/googledrive.php:335
1345
+ msgid ""
1346
+ "You must add the following as the authorised redirect URI (under \"More "
1347
+ "Options\") when asked"
1348
+ msgstr ""
1349
+ "A következő webcímet adja meg mint hitelesített átirányítási URI-t, amikor "
1350
+ "(a \"More Options\" résznél) kérik."
1351
+
1352
+ #: methods/googledrive.php:335
1353
+ msgid ""
1354
+ "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot "
1355
+ "re-use your client ID; you must create a new one from your Google API "
1356
+ "console for each blog."
1357
+ msgstr ""
1358
+ "N.B. Ha több WordPress honlapra installálja az UpdraftPlus-t, akkor nem "
1359
+ "adhatja meg mindenhol ugyanazt a kliens ID-t; mindegyikhez újabbat kell "
1360
+ "kérjen a Google API Console-on."
1361
+
1362
+ #: methods/googledrive.php:338
1363
+ msgid ""
1364
+ "You do not have the SimpleXMLElement installed. Google Drive backups will "
1365
+ "<b>not</b> work until you do."
1366
+ msgstr ""
1367
+ "Nincs SimpleXMLElement PHP osztálya. A Google Drive mentés <strong>nem</"
1368
+ "strong> fog működni."
1369
+
1370
+ #: methods/googledrive.php:345
1371
+ msgid "Client ID"
1372
+ msgstr "kliens ID"
1373
+
1374
+ #: methods/googledrive.php:346
1375
+ msgid ""
1376
+ "If Google later shows you the message \"invalid_client\", then you did not "
1377
+ "enter a valid client ID here."
1378
+ msgstr ""
1379
+ "Ha a Google az üzeni, hogy \"invalid_client\", akkor helytelen kliens ID-t "
1380
+ "adott meg itt."
1381
+
1382
+ #: methods/googledrive.php:349
1383
+ msgid "Client Secret"
1384
+ msgstr "kliens titkos kulcs"
1385
+
1386
+ #: methods/googledrive.php:353
1387
+ msgid "Folder ID"
1388
+ msgstr "Mappa ID"
1389
+
1390
+ #: methods/googledrive.php:354
1391
+ msgid ""
1392
+ "<strong>This is NOT a folder name</strong>. To get a folder's ID navigate to "
1393
+ "that folder in Google Drive in your web browser and copy the ID from your "
1394
+ "browser's address bar. It is the part that comes after <kbd>#folders/.</kbd> "
1395
+ "Leave empty to use your root folder)"
1396
+ msgstr ""
1397
+ "<strong>Ez nem egy mapp név</strong>. A mappa ID beszerzéséhez menjen a "
1398
+ "böngészőjében abba a mappába a Google Drive-ban, és a böngésző címsorából "
1399
+ "másolja ki a mappa ID részt. A címben a <kbd>#folders/</kbd> rész után jön. "
1400
+ "Hagyja üresen, ha a gyökér könyvtárat kívánja használni."
1401
+
1402
+ #: methods/googledrive.php:357
1403
+ msgid "Authenticate with Google"
1404
+ msgstr "Hitelesítés a Google-lel"
1405
+
1406
+ #: methods/googledrive.php:358
1407
+ msgid ""
1408
+ "<strong>After</strong> you have saved your settings (by clicking 'Save "
1409
+ "Changes' below), then come back here once and click this link to complete "
1410
+ "authentication with Google."
1411
+ msgstr ""
1412
+ "<strong>Miután</strong> elmentette a beállításokat (a 'Változások mentése'-"
1413
+ "re való kattintással), jöjjön vissza ide, és kattintson a hivatkozásra a "
1414
+ "Google-lel való hitelesítéshez."
1415
+
1416
+ #: methods/email.php:15
1417
+ msgid "WordPress Backup"
1418
+ msgstr "WordPress mentés"
1419
+
1420
+ #: methods/email.php:15
1421
+ msgid "Backup is of:"
1422
+ msgstr "Mentés erről:"
1423
+
1424
+ #: methods/email.php:15
1425
+ msgid ""
1426
+ "Be wary; email backups may fail because of file size limitations on mail "
1427
+ "servers."
1428
+ msgstr ""
1429
+ "Legyen óvatos! Az e-mailes mentések sikertelenek lehetnek a levélfiók méret "
1430
+ "korlátozása miatt."
1431
+
1432
+ #: methods/email.php:24
1433
+ msgid "Note:"
1434
+ msgstr "Jegyzet:"
1435
+
1436
+ #: methods/email.php:25
1437
+ msgid ""
1438
+ "The email address entered above will be used. If choosing \"E-Mail\", then "
1439
+ "<strong>be aware</strong> that mail servers tend to have size limits; "
1440
+ "typically around 10-20Mb; backups larger than any limits will not arrive. If "
1441
+ "you really need a large backup via email, then you could fund a new feature "
1442
+ "(to break the backup set into configurable-size pieces) - but the demand has "
1443
+ "not yet existed for such a feature."
1444
+ msgstr ""
1445
+ "A fent megadott e-mail címet fogjuk használni. Ha az \"E-mail\"-t "
1446
+ "válaszotta, <strong>legyen tudatában annak</strong>, hogy levélszervereknek "
1447
+ "méret korlátozásai vannak, jellemzően 10-20MB, ez ennél a korlátnál nagyobb "
1448
+ "mentések nem fognak megérkezni. Ha tényleg szüksége van ilyen funkcióra, "
1449
+ "akkor pénzzel támogathatja ezt (a túl nagy e-mailek beállítható méretű "
1450
+ "darabokra tördelését) - de eddig még nem jelentkezett igény ilyenre."
1451
+
1452
+ #: methods/s3.php:77
1453
+ #, php-format
1454
+ msgid "%s Error: Failed to upload"
1455
+ msgstr "%s hiba: Nem sikerült feltölteni"
1456
+
1457
+ #: methods/s3.php:98
1458
+ msgid ""
1459
+ "S3 upload: getting uploadID for multipart upload failed - see log file for "
1460
+ "more details"
1461
+ msgstr ""
1462
+ "S3 feltöltéls: nem sikerült az uploadID beszerzése több darabos feltöltéshez "
1463
+ "- nézze meg a log fájlt további részletekért"
1464
+
1465
+ #: methods/s3.php:130
1466
+ #, php-format
1467
+ msgid "S3 chunk %s: upload failed"
1468
+ msgstr "S3 darab %s: nem sikerült a feltöltés"
1469
+
1470
+ #: methods/s3.php:144
1471
+ #, php-format
1472
+ msgid "S3 upload (%s): re-assembly failed (see log for more details)"
1473
+ msgstr ""
1474
+ "S3 feltöltés (%s): a darabok összeállítása nem sikerült (nézze meg a log "
1475
+ "fájlt további részletekért)"
1476
+
1477
+ #: methods/s3.php:148
1478
+ #, php-format
1479
+ msgid "S3 re-assembly error (%s): (see log file for more)"
1480
+ msgstr ""
1481
+ "S3 darabok összeállítása hiba (%s): (nézze meg a log fájlt további "
1482
+ "részletekért)"
1483
+
1484
+ #: methods/s3.php:160
1485
+ #, php-format
1486
+ msgid ""
1487
+ "S3 Error: Failed to create bucket %s. Check your permissions and credentials."
1488
+ msgstr ""
1489
+ "S3 hiba: Nem sikerült létrehozni a %s bucket-et (csoportot). Ellenőrizze a "
1490
+ "jogokat és a hitelesítési információkat."
1491
+
1492
+ #: methods/s3.php:213
1493
+ #, php-format
1494
+ msgid ""
1495
+ "S3 Error: Failed to download %s. Check your permissions and credentials."
1496
+ msgstr ""
1497
+ "S3 hiba: Nem sikerült letölteni ezt: %s. Ellenőrizze a jogokat és a "
1498
+ "hitelesítési információkat."
1499
+
1500
+ #: methods/s3.php:217
1501
+ #, php-format
1502
+ msgid ""
1503
+ "S3 Error: Failed to access bucket %s. Check your permissions and credentials."
1504
+ msgstr ""
1505
+ "S3 hiba: Nem sikerült hozzáférni a %s bucket-hez (csoporthoz). Ellenőrizze a "
1506
+ "jogokat és a hitelesítési információkat."
1507
+
1508
+ #: methods/s3.php:251
1509
+ msgid ""
1510
+ "Get your access key and secret key <a href=\"http://aws.amazon.com/console/"
1511
+ "\">from your AWS console</a>, then pick a (globally unique - all Amazon S3 "
1512
+ "users) bucket name (letters and numbers) (and optionally a path) to use for "
1513
+ "storage. This bucket will be created for you if it does not already exist."
1514
+ msgstr ""
1515
+ "Szerezze be a hozzáférési kulcsot és titkos kulcsot (access key and secret "
1516
+ "key) a <a href=\"http://aws.amazon.com/console/\">AWS konzolról</a>, azután "
1517
+ "válasszon egy (teljesen egyedi - minden Amazon S3 felhasználó tekintetében) "
1518
+ "bucket (csoport) nevet (betűk és számok) (és opcionálisan egy elérési út), "
1519
+ "amelyet a tárolásához használ. A bucket (csoport) létre fog jönni, ha még "
1520
+ "nem létezett."
1521
+
1522
+ #: methods/s3.php:254
1523
+ msgid "S3 access key"
1524
+ msgstr "S3 hozzáférési kulcs (access key)"
1525
+
1526
+ #: methods/s3.php:258
1527
+ msgid "S3 secret key"
1528
+ msgstr "S3 titkos kulcs (secret key)"
1529
+
1530
+ #: methods/s3.php:262
1531
+ msgid "S3 location"
1532
+ msgstr "S3 hely"
1533
+
1534
+ #: methods/s3.php:267 methods/ftp.php:135 addons/webdav.php:244
1535
+ #, php-format
1536
+ msgid "Test %s Settings"
1537
+ msgstr "Próba beállítás %s"
1538
+
1539
+ #: methods/s3.php:275 methods/s3.php:279 methods/ftp.php:152
1540
+ #: methods/ftp.php:156 addons/webdav.php:272
1541
+ #, php-format
1542
+ msgid "Failure: No %s was given."
1543
+ msgstr "Hiba: Nincs %s megadva"
1544
+
1545
+ #: methods/s3.php:275
1546
+ msgid "API key"
1547
+ msgstr "API kulcs"
1548
+
1549
+ #: methods/s3.php:279
1550
+ msgid "API secret"
1551
+ msgstr "API titkos kulcs (secret)"
1552
+
1553
+ #: methods/s3.php:296
1554
+ msgid "Failure: No bucket details were given."
1555
+ msgstr "Hiba: Nem adott meg bucket (csoport) részleteket"
1556
+
1557
+ #: methods/s3.php:306
1558
+ msgid "Amazon region"
1559
+ msgstr "Amazon régió"
1560
+
1561
+ #: methods/s3.php:316
1562
+ msgid ""
1563
+ "Failure: We could not successfully access or create such a bucket. Please "
1564
+ "check your access credentials, and if those are correct then try another "
1565
+ "bucket name (as another S3 user may already have taken your name)."
1566
+ msgstr ""
1567
+ "Hiba: Nem tudtunk hozzáférni vagy nem tudtuk létrehozni a bucket-et "
1568
+ "(csoportot). Kérem ellenőrizze a hitelesítési információkat, és ha az "
1569
+ "helyes, akkor prbálkozzon meg egy másik bucket (csoport) névvel (mivel "
1570
+ "lehetsége, hogy egy másik S3 felhasználónak már lefoglalta a nevét)."
1571
+
1572
+ #: methods/s3.php:324
1573
+ msgid "Failure"
1574
+ msgstr "Hiba"
1575
+
1576
+ #: methods/s3.php:324
1577
+ msgid ""
1578
+ "We successfully accessed the bucket, but the attempt to create a file in it "
1579
+ "failed."
1580
+ msgstr ""
1581
+ "Sikerült hozzáférni a bucket-hez (csoporthoz), de a fájl létrehozási "
1582
+ "kísérlet meghiúsult."
1583
+
1584
+ #: methods/s3.php:326
1585
+ msgid "We accessed the bucket, and were able to create files within it."
1586
+ msgstr ""
1587
+ "Sikerült hozzáférni a bucket-hez (csoporthoz), és létrehozni fájlokat benne."
1588
+
1589
+ #: methods/dropbox.php:35 methods/dropbox.php:167
1590
+ msgid "You do not appear to be authenticated with Dropbox"
1591
+ msgstr "Úgy tűnik, nem hitelesített a Dropbox-szal."
1592
+
1593
+ #: methods/dropbox.php:46
1594
+ #, php-format
1595
+ msgid "error: %s (see log file for more)"
1596
+ msgstr "hiba: %s (nézze meg a naplót a továbbiakért)"
1597
+
1598
+ #: methods/dropbox.php:98 methods/dropbox.php:103
1599
+ #, php-format
1600
+ msgid "error: failed to upload file to %s (see log file for more)"
1601
+ msgstr ""
1602
+ "hiba: nem sikerült feltölteni a fájlt ide: %s (nézze meg a naplót a "
1603
+ "továbbiakért)"
1604
+
1605
+ #: methods/dropbox.php:223
1606
+ msgid "Need to use sub-folders?"
1607
+ msgstr "Almappákat kíván használni?"
1608
+
1609
+ #: methods/dropbox.php:223
1610
+ msgid "Backups are saved in"
1611
+ msgstr "A mentések ide kerültek:"
1612
+
1613
+ #: methods/dropbox.php:223
1614
+ msgid ""
1615
+ "If you back up several sites into the same Dropbox and want to organise with "
1616
+ "sub-folders, then "
1617
+ msgstr ""
1618
+ "Ha több WordPress honlapot mentene ugyanabba a Dropbox-ba, és almappákba "
1619
+ "kívánja szervezni azokat,"
1620
+
1621
+ #: methods/dropbox.php:223
1622
+ msgid "there's an add-on for that."
1623
+ msgstr "van rá kiterjesztés."
1624
+
1625
+ #: methods/dropbox.php:228
1626
+ msgid "Authenticate with Dropbox"
1627
+ msgstr "Hitelesítés Dropbox-szal"
1628
+
1629
+ #: methods/dropbox.php:229
1630
+ msgid ""
1631
+ "<strong>After</strong> you have saved your settings (by clicking 'Save "
1632
+ "Changes' below), then come back here once and click this link to complete "
1633
+ "authentication with Dropbox."
1634
+ msgstr ""
1635
+ "<strong>Miután</strong> elmentette a beállításokat (a 'Változások mentése'-"
1636
+ "re kattintással), jöjjön vissza ide és kattintson erre a hivatkozásra a "
1637
+ "Dropbox-szal való hitelesítésért."
1638
+
1639
+ #: methods/dropbox.php:240
1640
+ msgid ""
1641
+ "Your web server's PHP installation does not included a required module "
1642
+ "(MCrypt). Please contact your web hosting provider's support. UpdraftPlus's "
1643
+ "Dropbox module <strong>requires</strong> MCrypt. Please do not file any "
1644
+ "support requests; there is no alternative."
1645
+ msgstr ""
1646
+ "A webszerver PHP isntallációja nem tartalmazza a szükséges modult (MCrypt). "
1647
+ "Kérem lépjen kacsolatba a tárhely szolgáltatójával. Az UpdraftPlus Dropbox "
1648
+ "moduljához <strong>szükséges</strong> az MCrypt. Kérem ne kérjen segítséget, "
1649
+ "nincs más alternatíva."
1650
+
1651
+ #: methods/dropbox.php:243
1652
+ msgid ""
1653
+ "Your web server's PHP installation does not included a required module "
1654
+ "(Curl). Please contact your web hosting provider's support. UpdraftPlus's "
1655
+ "Dropbox module <strong>requires</strong> Curl. Your only options to get this "
1656
+ "working are 1) Install/enable curl or 2) Hire us or someone else to code "
1657
+ "additional support options into UpdraftPlus. 3) Wait, possibly forever, for "
1658
+ "someone else to do this."
1659
+ msgstr ""
1660
+ "A webszerver PHP isntallációja nem tartalmazza a szükséges modult (Curl). "
1661
+ "Kérem lépjen kacsolatba a tárhely szolgáltatójával. Az UpdraftPlus Dropbox "
1662
+ "moduljához <strong>szükséges</strong> a Curl. A következő közül választhat: "
1663
+ "1) Installálja/engedélyezze a curl-t vagy 2) Bízzon meg valakit, hogy "
1664
+ "fejlesszen ki újabb lehetőséget az UpdraftPlus-ba. 3) Várjon, talán örökké, "
1665
+ "valaki másra, hogy ezt megtegye."
1666
+
1667
+ #: methods/dropbox.php:296
1668
+ msgid ""
1669
+ "though part of the returned information was not as expected - your mileage "
1670
+ "may vary"
1671
+ msgstr ""
1672
+ "bár a visszakapott információ egy része nem a vártnak megfelelő - "
1673
+ "sokmindentől függ"
1674
+
1675
+ #: methods/dropbox.php:299
1676
+ #, php-format
1677
+ msgid "Your %s account name"
1678
+ msgstr "A %s fiókjának a neve"
1679
+
1680
+ #: methods/ftp.php:19 methods/ftp.php:66
1681
+ msgid "FTP login failure"
1682
+ msgstr "Nem sikerült az FTP belépés"
1683
+
1684
+ #: methods/ftp.php:38
1685
+ msgid "FTP upload failed"
1686
+ msgstr "Nem sikerült az FTP fájl feltöltés"
1687
+
1688
+ #: methods/ftp.php:98
1689
+ msgid "Settings test result"
1690
+ msgstr "Beállítás teszt eredmény"
1691
+
1692
+ #: methods/ftp.php:114
1693
+ msgid "Only non-encrypted FTP is supported by regular UpdraftPlus."
1694
+ msgstr "Csak a nem titkosított FTP-t támogatja az UpdraftPlus."
1695
+
1696
+ #: methods/ftp.php:114
1697
+ msgid ""
1698
+ "If you want encryption (e.g. you are storing sensitive business data), then "
1699
+ "an add-on is available."
1700
+ msgstr ""
1701
+ "Ha titkosítást kíván alkalmazni (pl. érzékeny üzleti adatokat tárol), "
1702
+ "elérhető egy kiterjesztés."
1703
+
1704
+ #: methods/ftp.php:118
1705
+ msgid "FTP Server"
1706
+ msgstr "FTP szerver"
1707
+
1708
+ #: methods/ftp.php:122
1709
+ msgid "FTP Login"
1710
+ msgstr "FTP felhasználónév"
1711
+
1712
+ #: methods/ftp.php:126
1713
+ msgid "FTP Password"
1714
+ msgstr "FTP jelszó"
1715
+
1716
+ #: methods/ftp.php:130
1717
+ msgid "Remote Path"
1718
+ msgstr "távoli elérési út"
1719
+
1720
+ #: methods/ftp.php:131
1721
+ msgid "Needs to already exist"
1722
+ msgstr "Szükséges, hogy már létezzen"
1723
+
1724
+ #: methods/ftp.php:148
1725
+ msgid "Failure: No server details were given."
1726
+ msgstr "Hiba: Nem adta meg a szerver adatokat."
1727
+
1728
+ #: methods/ftp.php:167
1729
+ msgid "Failure: we did not successfully log in with those credentials."
1730
+ msgstr "Hiba: Nem sikerült belépni a megadott hitelesítési információkkal."
1731
+
1732
+ #: methods/ftp.php:175
1733
+ msgid ""
1734
+ "Failure: an unexpected internal UpdraftPlus error occurred when testing the "
1735
+ "credentials - please contact the developer"
1736
+ msgstr ""
1737
+ "Hiba: Váratlan belső hiba történt az UpdraftPlus-ban a hitelesítési "
1738
+ "információk kipróbálása közben - kérem lépjen kapcsolatba a fejlesztővel"
1739
+
1740
+ #: methods/ftp.php:179
1741
+ msgid ""
1742
+ "Success: we successfully logged in, and confirmed our ability to create a "
1743
+ "file in the given directory (login type:"
1744
+ msgstr ""
1745
+ "Siker: Sikerült belépni, és megerősítést nyert, hogy létre tudunk hozni "
1746
+ "fájlt a megadott könyvtárban (hozzáférés típusa:"
1747
+
1748
+ #: methods/ftp.php:182
1749
+ msgid ""
1750
+ "Failure: we successfully logged in, but were not able to create a file in "
1751
+ "the given directory."
1752
+ msgstr ""
1753
+ "Hiba: Bár sikerült belépni, de nem sikerült fájlt létrehozni a megadott "
1754
+ "könyvtárban."
1755
+
1756
+ #: addons/webdav.php:40 addons/webdav.php:170
1757
+ #, php-format
1758
+ msgid "No %s settings were found"
1759
+ msgstr "Nem található ilyen beállítás: %s"
1760
+
1761
+ #: addons/webdav.php:116 addons/webdav.php:120
1762
+ #, php-format
1763
+ msgid "Chunk %s: A %s error occurred"
1764
+ msgstr "Darab %s: %s hiba történt"
1765
+
1766
+ #: addons/webdav.php:182 addons/webdav.php:188 addons/webdav.php:200
1767
+ msgid "WebDAV Error"
1768
+ msgstr "WebDAV hiba"
1769
+
1770
+ #: addons/webdav.php:182
1771
+ msgid "Error opening local file: Failed to download"
1772
+ msgstr "Hiba a helyi fájl megnyitásánál: Nem sikerült a letöltés"
1773
+
1774
+ #: addons/webdav.php:188
1775
+ msgid "Error opening remote file: Failed to download"
1776
+ msgstr "Hiba a távoli fájl megnyitásánál: Nem sikerült a letöltés"
1777
+
1778
+ #: addons/webdav.php:200
1779
+ msgid "Local write failed: Failed to download"
1780
+ msgstr "Helyi fájl írási hiba: Nem sikerült a letöltés"
1781
+
1782
+ #: addons/webdav.php:234
1783
+ msgid "WebDAV URL"
1784
+ msgstr "WebDAV URL"
1785
+
1786
+ #: addons/webdav.php:238
1787
+ #, php-format
1788
+ msgid ""
1789
+ "Enter a complete URL, beginning with webdav:// or webdavs:// and including "
1790
+ "path, username, password and port as required - e.g.%s"
1791
+ msgstr ""
1792
+ "Kérem írjon be egy teljes URL-t, amely így kezdődik: webdav:// vagy "
1793
+ "webdavs:// és tartalmazza az elérési utat, a felhasználónevet, a jelszót és "
1794
+ "a port számot, ahogyan szükséges - pl. %s"
1795
+
1796
+ #: addons/webdav.php:281
1797
+ msgid "Failed"
1798
+ msgstr "Nem sikerült"
1799
+
1800
+ #: addons/webdav.php:295
1801
+ msgid ""
1802
+ "Failed: We were not able to place a file in that directory - please check "
1803
+ "your credentials."
1804
+ msgstr ""
1805
+ "Hiba: Nem sikerült fájl létrehozni abban a könyvtárban - kérem ellenőrizze a "
1806
+ "hitelesítési információit"
1807
+
1808
+ #: addons/sftp.php:23
1809
+ msgid ""
1810
+ "Encrypted FTP is available, and will be automatically tried first (before "
1811
+ "falling back to non-encrypted if it is not successful). The 'Test FTP Login' "
1812
+ "button will tell you what type of connection is in use."
1813
+ msgstr ""
1814
+ "A titkosított FTP elérhetp, és automatikusan azzal fogunk próbálkozni "
1815
+ "először (mielőtt tartalékként a nem titkosítottal próbálkoznánk, ha az nem "
1816
+ "működne). A 'Test FTP Login' gombra kattintás után megtudhatja milyen típusú "
1817
+ "a használt kapcsolat."
1818
+
1819
+ #: addons/sftp.php:30 addons/sftp.php:31 addons/sftp.php:32
1820
+ #, php-format
1821
+ msgid "No %s found"
1822
+ msgstr "%s nem található"
1823
+
1824
+ #: addons/sftp.php:30
1825
+ msgid "SFTP host setting"
1826
+ msgstr "SFTP kiszolgáló"
1827
+
1828
+ #: addons/sftp.php:31
1829
+ msgid "SFTP user setting"
1830
+ msgstr "SFTP felhasználó"
1831
+
1832
+ #: addons/sftp.php:32
1833
+ msgid "SFTP password"
1834
+ msgstr "SFTP jelszó"
1835
+
1836
+ #: addons/sftp.php:50 addons/sftp.php:293
1837
+ msgid "Check your file permissions: Could not successfully create and enter:"
1838
+ msgstr ""
1839
+ "Ellenőrizze hozzáférési jogait a fájlokhoz: Nem sikerült létrehozni és "
1840
+ "belépni:"
1841
+
1842
+ #: addons/sftp.php:128
1843
+ #, php-format
1844
+ msgid "%s Error: Failed to download"
1845
+ msgstr "%s hiba: Nem sikerült a letöltés"
1846
+
1847
+ #: addons/sftp.php:172
1848
+ msgid ""
1849
+ "Resuming partial uploads is not supported, so you will need to ensure that "
1850
+ "your webserver allows PHP processes to run long enough to upload your "
1851
+ "largest backup file."
1852
+ msgstr ""
1853
+ "Nem támogatott a a részleges feltöltések továbbindítása, kérem biztosítsa, "
1854
+ "hogy a webszerver engedélyezi a PHP folyamat futását elegendően hosszú ideig "
1855
+ "a mentés legnagyobb fájljához."
1856
+
1857
+ #: addons/sftp.php:177
1858
+ msgid "Host"
1859
+ msgstr "Szerver"
1860
+
1861
+ #: addons/sftp.php:184
1862
+ msgid "Port"
1863
+ msgstr "Port"
1864
+
1865
+ #: addons/sftp.php:191
1866
+ msgid "Username"
1867
+ msgstr "Felhasználónév"
1868
+
1869
+ #: addons/sftp.php:198
1870
+ msgid "Password"
1871
+ msgstr "Jelszó"
1872
+
1873
+ #: addons/sftp.php:214
1874
+ msgid "Directory path"
1875
+ msgstr "Könyvtár elérési út"
1876
+
1877
+ #: addons/sftp.php:216
1878
+ msgid ""
1879
+ "Where to change directory to after logging in - often this is relative to "
1880
+ "your home directory."
1881
+ msgstr ""
1882
+ "Melyik könyvtárba váltsunk belépés után - ez gyakran relatív a kezdő "
1883
+ "könyvtárjához"
1884
+
1885
+ #: addons/sftp.php:254
1886
+ msgid "host name"
1887
+ msgstr "szerver név"
1888
+
1889
+ #: addons/sftp.php:258
1890
+ msgid "username"
1891
+ msgstr "felhasználónév"
1892
+
1893
+ #: addons/sftp.php:262
1894
+ msgid "password"
1895
+ msgstr "jelszó"
1896
+
1897
+ #: addons/sftp.php:267
1898
+ msgid "Failure: Port must be an integer."
1899
+ msgstr "hiba: a port számnak egésznek kell legyen"
1900
+
1901
+ #: addons/sftp.php:307
1902
+ msgid ""
1903
+ "Failed: We were able to log in and move to the indicated directory, but "
1904
+ "failed to successfully created a file in that location."
1905
+ msgstr ""
1906
+ "Hiba: Bár sikerült belépni és átváltani a megadott könyvtárba, de nem "
1907
+ "sikerült fájlt létrehozni abban a könyvtárban."
1908
+
1909
+ #: addons/fixtime.php:77 addons/fixtime.php:87
1910
+ msgid "starting from next time it is"
1911
+ msgstr "a következő alkalomtól kezdve:"
1912
+
1913
+ #: addons/fixtime.php:77 addons/fixtime.php:87
1914
+ msgid "Enter in format HH:MM (e.g. 14:22)"
1915
+ msgstr "ÓÓ:PP formában adja meg (pl. 14:22)"
1916
+
1917
+ #: addons/multisite.php:103
1918
+ msgid "Multisite Install"
1919
+ msgstr "Multisite installáció"
1920
+
1921
+ #: addons/multisite.php:109
1922
+ msgid "You do not have sufficient permissions to access this page."
1923
+ msgstr "Nincs elegendő joga, hogy hozzáférjen ehhez az oldalhoz."
1924
+
1925
+ #: addons/multisite.php:128
1926
+ msgid "You do not have permission to access this page."
1927
+ msgstr "Nincs joga ehhez az oldalhoz való hozzáféréshez."
1928
+
1929
+ #: addons/multisite.php:180
1930
+ msgid "Must-use plugins"
1931
+ msgstr "Kötelező bővítmények"
1932
+
1933
+ #: addons/multisite.php:181
1934
+ msgid "Blog uploads"
1935
+ msgstr "Blog feltöltések"
1936
+
1937
+ #: addons/dropbox-folders.php:21
1938
+ msgid "Store at"
1939
+ msgstr "Tárolás itt:"
languages/updraftplus.pot ADDED
@@ -0,0 +1,1474 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: UpdraftPlus\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2013-03-30 17:26+0100\n"
6
+ "PO-Revision-Date: 2013-03-30 17:26+0100\n"
7
+ "Last-Translator: David Anderson <contact@updraftplus.com>\n"
8
+ "Language-Team: <contact@updraftplus.com>\n"
9
+ "Language: \n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_x;_e\n"
14
+ "X-Poedit-Basepath: /home/david/MissionaryHosting/UpdraftPlus/svn/trunk\n"
15
+ "X-Poedit-SearchPath-0: .\n"
16
+
17
+ #: options.php:26
18
+ msgid "UpdraftPlus Backups"
19
+ msgstr ""
20
+
21
+ #: updraftplus.php:261
22
+ msgid "Bad filename format - this does not look like a file created by UpdraftPlus"
23
+ msgstr ""
24
+
25
+ #: updraftplus.php:295
26
+ msgid "Allowed Files"
27
+ msgstr ""
28
+
29
+ #: updraftplus.php:372
30
+ msgid "Settings"
31
+ msgstr ""
32
+
33
+ #: updraftplus.php:376
34
+ msgid "Add-Ons / Pro Support"
35
+ msgstr ""
36
+
37
+ #: updraftplus.php:462
38
+ msgid "Plugins"
39
+ msgstr ""
40
+
41
+ #: updraftplus.php:463
42
+ msgid "Themes"
43
+ msgstr ""
44
+
45
+ #: updraftplus.php:464
46
+ msgid "Uploads"
47
+ msgstr ""
48
+
49
+ #: updraftplus.php:478
50
+ msgid "Others"
51
+ msgstr ""
52
+
53
+ #: updraftplus.php:710
54
+ msgid "Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings."
55
+ msgstr ""
56
+
57
+ #: updraftplus.php:778
58
+ msgid "Encryption error occurred when encrypting database. Encryption aborted."
59
+ msgstr ""
60
+
61
+ #: updraftplus.php:812
62
+ msgid "The backup apparently succeeded and is now complete"
63
+ msgstr ""
64
+
65
+ #: updraftplus.php:815
66
+ msgid "The backup attempt has finished, apparently unsuccessfully"
67
+ msgstr ""
68
+
69
+ #: updraftplus.php:818
70
+ msgid "The backup has not finished; a resumption is scheduled within 5 minutes"
71
+ msgstr ""
72
+
73
+ #: updraftplus.php:869
74
+ msgid "Backed up"
75
+ msgstr ""
76
+
77
+ #: updraftplus.php:869
78
+ msgid "WordPress backup is complete"
79
+ msgstr ""
80
+
81
+ #: updraftplus.php:869
82
+ msgid "Backup contains"
83
+ msgstr ""
84
+
85
+ #: updraftplus.php:869
86
+ msgid "Latest status"
87
+ msgstr ""
88
+
89
+ #: updraftplus.php:1124
90
+ #, php-format
91
+ msgid "Could not create %s zip. Consult the log file for more information."
92
+ msgstr ""
93
+
94
+ #: updraftplus.php:1158
95
+ #, php-format
96
+ msgid "Backup directory (%s) is not writable, or does not exist."
97
+ msgstr ""
98
+
99
+ #: updraftplus.php:1248
100
+ msgid "Could not read the content directory"
101
+ msgstr ""
102
+
103
+ #: updraftplus.php:1278
104
+ msgid "Could not save backup history because we have no backup array. Backup probably failed."
105
+ msgstr ""
106
+
107
+ #: updraftplus.php:1307
108
+ msgid "Could not open the backup file for writing"
109
+ msgstr ""
110
+
111
+ #: updraftplus.php:1316
112
+ #, php-format
113
+ msgid "Generated: %s"
114
+ msgstr ""
115
+
116
+ #: updraftplus.php:1317
117
+ #, php-format
118
+ msgid "Hostname: %s"
119
+ msgstr ""
120
+
121
+ #: updraftplus.php:1318
122
+ #, php-format
123
+ msgid "Database: %s"
124
+ msgstr ""
125
+
126
+ #: updraftplus.php:1362
127
+ msgid "The backup directory is not writable."
128
+ msgstr ""
129
+
130
+ #: updraftplus.php:1383
131
+ #, php-format
132
+ msgid "Table: %s"
133
+ msgstr ""
134
+
135
+ #: updraftplus.php:1388
136
+ #, php-format
137
+ msgid "Skipping non-WP table: %s"
138
+ msgstr ""
139
+
140
+ #: updraftplus.php:1479
141
+ #, php-format
142
+ msgid "Delete any existing table %s"
143
+ msgstr ""
144
+
145
+ #: updraftplus.php:1488
146
+ #, php-format
147
+ msgid "Table structure of table %s"
148
+ msgstr ""
149
+
150
+ #: updraftplus.php:1494
151
+ #, php-format
152
+ msgid "Error with SHOW CREATE TABLE for %s."
153
+ msgstr ""
154
+
155
+ #: updraftplus.php:1501
156
+ #, php-format
157
+ msgid "Error getting table structure of %s"
158
+ msgstr ""
159
+
160
+ #: updraftplus.php:1507
161
+ #, php-format
162
+ msgid "Data contents of table %s"
163
+ msgstr ""
164
+
165
+ #: updraftplus.php:1563
166
+ #, php-format
167
+ msgid "End of data contents of table %s"
168
+ msgstr ""
169
+
170
+ #: updraftplus.php:1815
171
+ msgid "Nothing yet logged"
172
+ msgstr ""
173
+
174
+ #: updraftplus.php:1836
175
+ msgid "File downloading"
176
+ msgstr ""
177
+
178
+ #: updraftplus.php:1838
179
+ msgid "No local copy present."
180
+ msgstr ""
181
+
182
+ #: updraftplus.php:2014
183
+ msgid "File not found"
184
+ msgstr ""
185
+
186
+ #: updraftplus.php:2033
187
+ #, php-format
188
+ 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"
189
+ msgstr ""
190
+
191
+ #: updraftplus.php:2043
192
+ msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:"
193
+ msgstr ""
194
+
195
+ #: updraftplus.php:2056
196
+ msgid "UpdraftPlus Restoration: Progress"
197
+ msgstr ""
198
+
199
+ #: updraftplus.php:2063
200
+ msgid "ABORT: Could not find the information on which entities to restore."
201
+ msgstr ""
202
+
203
+ #: updraftplus.php:2077
204
+ #: updraftplus.php:2820
205
+ #: updraftplus.php:3072
206
+ msgid "Database"
207
+ msgstr ""
208
+
209
+ #: updraftplus.php:2083
210
+ msgid "This component was not selected for restoration - skipping."
211
+ msgstr ""
212
+
213
+ #: updraftplus.php:2091
214
+ 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)"
215
+ msgstr ""
216
+
217
+ #: updraftplus.php:2097
218
+ msgid "Archive is expected to be size:"
219
+ msgstr ""
220
+
221
+ #: updraftplus.php:2102
222
+ msgid "ERROR"
223
+ msgstr ""
224
+
225
+ #: updraftplus.php:2105
226
+ msgid "The backup records do not contain information about the proper size of this file."
227
+ msgstr ""
228
+
229
+ #: updraftplus.php:2117
230
+ msgid "Error message"
231
+ msgstr ""
232
+
233
+ #: updraftplus.php:2123
234
+ #: updraftplus.php:2124
235
+ msgid "Could not find one of the files for restoration"
236
+ msgstr ""
237
+
238
+ #: updraftplus.php:2126
239
+ msgid "Databases are not yet restored through this mechanism - use your web host's control panel, phpMyAdmin or a similar tool"
240
+ msgstr ""
241
+
242
+ #: updraftplus.php:2132
243
+ msgid "Database could not be restored because PHP safe_mode is active on your server. You will need to manually restore the file via phpMyAdmin or another method."
244
+ msgstr ""
245
+
246
+ #: updraftplus.php:2156
247
+ msgid "Delete"
248
+ msgstr ""
249
+
250
+ #: updraftplus.php:2290
251
+ msgid "Find UpdraftPlus useful?"
252
+ msgstr ""
253
+
254
+ #: updraftplus.php:2290
255
+ msgid "Please make a donation"
256
+ msgstr ""
257
+
258
+ #: updraftplus.php:2295
259
+ msgid "Like UpdraftPlus and can spare one minute?"
260
+ msgstr ""
261
+
262
+ #: updraftplus.php:2295
263
+ msgid "Please help UpdraftPlus by giving a positive review at wordpress.org"
264
+ msgstr ""
265
+
266
+ #: updraftplus.php:2302
267
+ msgid "Need even more features and support? Check out UpdraftPlus Premium"
268
+ msgstr ""
269
+
270
+ #: updraftplus.php:2311
271
+ msgid "Check out UpdraftPlus.Com for help, add-ons and support"
272
+ msgstr ""
273
+
274
+ #: updraftplus.php:2314
275
+ msgid "Want to say thank-you for UpdraftPlus?"
276
+ msgstr ""
277
+
278
+ #: updraftplus.php:2314
279
+ msgid "Please buy our very cheap 'no adverts' add-on."
280
+ msgstr ""
281
+
282
+ #: updraftplus.php:2325
283
+ msgid "File backup intervals"
284
+ msgstr ""
285
+
286
+ #: updraftplus.php:2328
287
+ msgid "Manual"
288
+ msgstr ""
289
+
290
+ #: updraftplus.php:2328
291
+ msgid "Every 4 hours"
292
+ msgstr ""
293
+
294
+ #: updraftplus.php:2328
295
+ msgid "Every 8 hours"
296
+ msgstr ""
297
+
298
+ #: updraftplus.php:2328
299
+ msgid "Every 12 hours"
300
+ msgstr ""
301
+
302
+ #: updraftplus.php:2328
303
+ msgid "Daily"
304
+ msgstr ""
305
+
306
+ #: updraftplus.php:2328
307
+ msgid "Weekly"
308
+ msgstr ""
309
+
310
+ #: updraftplus.php:2328
311
+ msgid "Fortnightly"
312
+ msgstr ""
313
+
314
+ #: updraftplus.php:2328
315
+ msgid "Monthly"
316
+ msgstr ""
317
+
318
+ #: updraftplus.php:2337
319
+ #: updraftplus.php:2355
320
+ msgid "and retain this many backups"
321
+ msgstr ""
322
+
323
+ #: updraftplus.php:2344
324
+ msgid "Database backup intervals"
325
+ msgstr ""
326
+
327
+ #: updraftplus.php:2362
328
+ 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."
329
+ msgstr ""
330
+
331
+ #: updraftplus.php:2363
332
+ msgid "To fix the time at which a backup should take place,"
333
+ msgstr ""
334
+
335
+ #: updraftplus.php:2363
336
+ msgid "e.g. if your server is busy at day and you want to run overnight"
337
+ msgstr ""
338
+
339
+ #: updraftplus.php:2363
340
+ msgid "use the \"Fix Time\" add-on"
341
+ msgstr ""
342
+
343
+ #: updraftplus.php:2377
344
+ msgid "Any other directories found inside wp-content but exclude these directories:"
345
+ msgstr ""
346
+
347
+ #: updraftplus.php:2383
348
+ msgid "Include all of these, unless you are backing them up outside of UpdraftPlus. The above directories are usually everything (except for WordPress core itself which you can download afresh from WordPress.org). But if you have made customised modifications outside of these directories, you need to back them up another way."
349
+ msgstr ""
350
+
351
+ #: updraftplus.php:2383
352
+ msgid "Use WordShell for automatic backup, version control and patching"
353
+ msgstr ""
354
+
355
+ #: updraftplus.php:2387
356
+ msgid "Email"
357
+ msgstr ""
358
+
359
+ #: updraftplus.php:2388
360
+ msgid "Enter an address here to have a report sent (and the whole backup, if you choose) to it."
361
+ msgstr ""
362
+
363
+ #: updraftplus.php:2392
364
+ msgid "Database encryption phrase"
365
+ msgstr ""
366
+
367
+ #: updraftplus.php:2399
368
+ 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). You can also use the file example-decrypt.php from inside the UpdraftPlus plugin directory to decrypt manually."
369
+ msgstr ""
370
+
371
+ #: updraftplus.php:2403
372
+ msgid "Copying Your Backup To Remote Storage"
373
+ msgstr ""
374
+
375
+ #: updraftplus.php:2407
376
+ msgid "Choose your remote storage"
377
+ msgstr ""
378
+
379
+ #: updraftplus.php:2419
380
+ msgid "None"
381
+ msgstr ""
382
+
383
+ #: updraftplus.php:2500
384
+ #: updraftplus.php:2838
385
+ #: updraftplus.php:3109
386
+ msgid "Restore"
387
+ msgstr ""
388
+
389
+ #: updraftplus.php:2514
390
+ #: updraftplus.php:2524
391
+ msgid "Cancel"
392
+ msgstr ""
393
+
394
+ #: updraftplus.php:2521
395
+ #: updraftplus.php:2830
396
+ msgid "Backup Now"
397
+ msgstr ""
398
+
399
+ #: updraftplus.php:2548
400
+ msgid "Advanced / Debugging Settings"
401
+ msgstr ""
402
+
403
+ #: updraftplus.php:2551
404
+ msgid "Debug mode"
405
+ msgstr ""
406
+
407
+ #: updraftplus.php:2552
408
+ 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."
409
+ msgstr ""
410
+
411
+ #: updraftplus.php:2555
412
+ msgid "Expert settings"
413
+ msgstr ""
414
+
415
+ #: updraftplus.php:2556
416
+ msgid "Show expert settings"
417
+ msgstr ""
418
+
419
+ #: updraftplus.php:2556
420
+ msgid "click this to show some further options; don't bother with this unless you have a problem or are curious."
421
+ msgstr ""
422
+
423
+ #: updraftplus.php:2563
424
+ msgid "Delete local backup"
425
+ msgstr ""
426
+
427
+ #: updraftplus.php:2564
428
+ 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)."
429
+ msgstr ""
430
+
431
+ #: updraftplus.php:2568
432
+ msgid "Backup directory"
433
+ msgstr ""
434
+
435
+ #: updraftplus.php:2576
436
+ msgid "Backup directory specified is writable, which is good."
437
+ msgstr ""
438
+
439
+ #: updraftplus.php:2578
440
+ msgid "Backup directory specified is <b>not</b> writable, or does not exist."
441
+ msgstr ""
442
+
443
+ #: updraftplus.php:2578
444
+ msgid "Click here to attempt to create the directory and set the permissions"
445
+ msgstr ""
446
+
447
+ #: updraftplus.php:2578
448
+ msgid "or, to reset this option"
449
+ msgstr ""
450
+
451
+ #: updraftplus.php:2578
452
+ msgid "click here"
453
+ msgstr ""
454
+
455
+ #: updraftplus.php:2578
456
+ 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."
457
+ msgstr ""
458
+
459
+ #: updraftplus.php:2581
460
+ 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...)."
461
+ msgstr ""
462
+
463
+ #: updraftplus.php:2602
464
+ msgid "Save Changes"
465
+ msgstr ""
466
+
467
+ #: updraftplus.php:2626
468
+ msgid "Download log file"
469
+ msgstr ""
470
+
471
+ #: updraftplus.php:2632
472
+ msgid "No backup has been completed."
473
+ msgstr ""
474
+
475
+ #: updraftplus.php:2652
476
+ msgid "Restore successful!"
477
+ msgstr ""
478
+
479
+ #: updraftplus.php:2653
480
+ #: updraftplus.php:2688
481
+ #: updraftplus.php:2704
482
+ msgid "Actions"
483
+ msgstr ""
484
+
485
+ #: updraftplus.php:2653
486
+ #: updraftplus.php:2668
487
+ #: updraftplus.php:2688
488
+ #: updraftplus.php:2704
489
+ msgid "Return to UpdraftPlus Configuration"
490
+ msgstr ""
491
+
492
+ #: updraftplus.php:2677
493
+ msgid "Remove old directories"
494
+ msgstr ""
495
+
496
+ #: updraftplus.php:2683
497
+ msgid "Old directories successfully removed."
498
+ msgstr ""
499
+
500
+ #: updraftplus.php:2686
501
+ msgid "Old directory removal failed for some reason. You may want to do this manually."
502
+ msgstr ""
503
+
504
+ #: updraftplus.php:2701
505
+ msgid "Backup directory could not be created"
506
+ msgstr ""
507
+
508
+ #: updraftplus.php:2703
509
+ msgid "Backup directory successfully created."
510
+ msgstr ""
511
+
512
+ #: updraftplus.php:2710
513
+ msgid "Schedule backup"
514
+ msgstr ""
515
+
516
+ #: updraftplus.php:2713
517
+ msgid "Failed."
518
+ msgstr ""
519
+
520
+ #: updraftplus.php:2715
521
+ 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."
522
+ msgstr ""
523
+
524
+ #: updraftplus.php:2715
525
+ msgid "Nothing happening? Follow this link for help."
526
+ msgstr ""
527
+
528
+ #: updraftplus.php:2728
529
+ msgid "Your settings have been wiped."
530
+ msgstr ""
531
+
532
+ #: updraftplus.php:2735
533
+ msgid "By UpdraftPlus.Com"
534
+ msgstr ""
535
+
536
+ #: updraftplus.php:2735
537
+ msgid "Lead developer's homepage"
538
+ msgstr ""
539
+
540
+ #: updraftplus.php:2735
541
+ msgid "Donate"
542
+ msgstr ""
543
+
544
+ #: updraftplus.php:2735
545
+ msgid "Other WordPress plugins"
546
+ msgstr ""
547
+
548
+ #: updraftplus.php:2735
549
+ msgid "Version"
550
+ msgstr ""
551
+
552
+ #: updraftplus.php:2739
553
+ msgid "Your backup has been restored."
554
+ msgstr ""
555
+
556
+ #: updraftplus.php:2739
557
+ 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."
558
+ msgstr ""
559
+
560
+ #: updraftplus.php:2739
561
+ msgid "At this time UpdraftPlus does not automatically restore your database. You will need to use an external tool like phpMyAdmin to perform that task."
562
+ msgstr ""
563
+
564
+ #: updraftplus.php:2745
565
+ msgid "Old directories successfully deleted."
566
+ msgstr ""
567
+
568
+ #: updraftplus.php:2748
569
+ msgid "Your PHP memory limit is quite low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may not work properly with a memory limit of less than 96 Mb (though on the other hand, it has been used successfully with a 32Mb limit - your mileage may vary, but don't blame us!)."
570
+ msgstr ""
571
+
572
+ #: updraftplus.php:2748
573
+ msgid "Current limit is:"
574
+ msgstr ""
575
+
576
+ #: updraftplus.php:2752
577
+ 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:"
578
+ msgstr ""
579
+
580
+ #: updraftplus.php:2752
581
+ msgid "seconds"
582
+ msgstr ""
583
+
584
+ #: updraftplus.php:2757
585
+ 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)."
586
+ msgstr ""
587
+
588
+ #: updraftplus.php:2761
589
+ msgid "Delete Old Directories"
590
+ msgstr ""
591
+
592
+ #: updraftplus.php:2761
593
+ msgid "Are you sure you want to delete the old directories? This cannot be undone."
594
+ msgstr ""
595
+
596
+ #: updraftplus.php:2774
597
+ msgid "Existing Schedule And Backups"
598
+ msgstr ""
599
+
600
+ #: updraftplus.php:2778
601
+ msgid "JavaScript warning"
602
+ msgstr ""
603
+
604
+ #: updraftplus.php:2779
605
+ msgid "This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser."
606
+ msgstr ""
607
+
608
+ #: updraftplus.php:2792
609
+ #: updraftplus.php:2805
610
+ msgid "Nothing currently scheduled"
611
+ msgstr ""
612
+
613
+ #: updraftplus.php:2797
614
+ msgid "At the same time as the files backup"
615
+ msgstr ""
616
+
617
+ #: updraftplus.php:2817
618
+ msgid "Next scheduled backups"
619
+ msgstr ""
620
+
621
+ #: updraftplus.php:2819
622
+ msgid "Files"
623
+ msgstr ""
624
+
625
+ #: updraftplus.php:2821
626
+ msgid "Time now"
627
+ msgstr ""
628
+
629
+ #: updraftplus.php:2825
630
+ msgid "Last finished backup run"
631
+ msgstr ""
632
+
633
+ #: updraftplus.php:2845
634
+ msgid "Last log message"
635
+ msgstr ""
636
+
637
+ #: updraftplus.php:2846
638
+ msgid "(Nothing yet logged)"
639
+ msgstr ""
640
+
641
+ #: updraftplus.php:2849
642
+ msgid "Backups, logs & restoring"
643
+ msgstr ""
644
+
645
+ #: updraftplus.php:2850
646
+ msgid "Press to see available backups"
647
+ msgstr ""
648
+
649
+ #: updraftplus.php:2850
650
+ #, php-format
651
+ msgid "%d set(s) available"
652
+ msgstr ""
653
+
654
+ #: updraftplus.php:2855
655
+ msgid "Downloading"
656
+ msgstr ""
657
+
658
+ #: updraftplus.php:2855
659
+ 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."
660
+ msgstr ""
661
+
662
+ #: updraftplus.php:2856
663
+ msgid "Restoring"
664
+ msgstr ""
665
+
666
+ #: updraftplus.php:2856
667
+ 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."
668
+ msgstr ""
669
+
670
+ #: updraftplus.php:2856
671
+ msgid "More tasks:"
672
+ msgstr ""
673
+
674
+ #: updraftplus.php:2856
675
+ msgid "upload backup files"
676
+ msgstr ""
677
+
678
+ #: updraftplus.php:2856
679
+ 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."
680
+ msgstr ""
681
+
682
+ #: updraftplus.php:2856
683
+ msgid "rescan folder for new backup sets"
684
+ msgstr ""
685
+
686
+ #: updraftplus.php:2857
687
+ msgid "Opera web browser"
688
+ msgstr ""
689
+
690
+ #: updraftplus.php:2857
691
+ msgid "If you are using this, then turn Turbo/Road mode off."
692
+ msgstr ""
693
+
694
+ #: updraftplus.php:2858
695
+ msgid "This is a count of the contents of your Updraft directory"
696
+ msgstr ""
697
+
698
+ #: updraftplus.php:2858
699
+ msgid "Web-server disk space in use by UpdraftPlus"
700
+ msgstr ""
701
+
702
+ #: updraftplus.php:2858
703
+ msgid "refresh"
704
+ msgstr ""
705
+
706
+ #: updraftplus.php:2860
707
+ msgid "UpdraftPlus - Upload backup files"
708
+ msgstr ""
709
+
710
+ #: updraftplus.php:2861
711
+ msgid "Upload files into UpdraftPlus. Use this to import backups made on a different WordPress installation."
712
+ msgstr ""
713
+
714
+ #: updraftplus.php:2865
715
+ msgid "Drop backup zips here"
716
+ msgstr ""
717
+
718
+ #: updraftplus.php:2879
719
+ msgid "calculating..."
720
+ msgstr ""
721
+
722
+ #: updraftplus.php:2948
723
+ msgid "Restore backup"
724
+ msgstr ""
725
+
726
+ #: updraftplus.php:2949
727
+ msgid "Restore backup from"
728
+ msgstr ""
729
+
730
+ #: updraftplus.php:2950
731
+ msgid "Restoring will replace this site's themes, plugins, uploads and/or other content directories (according to what is contained in the backup set, and your selection"
732
+ msgstr ""
733
+
734
+ #: updraftplus.php:2950
735
+ msgid "Choose the components to restore"
736
+ msgstr ""
737
+
738
+ #: updraftplus.php:2961
739
+ msgid "Databases cannot yet be restored from here - you must download the database file and take it to your web hosting company's control panel."
740
+ msgstr ""
741
+
742
+ #: updraftplus.php:2966
743
+ msgid "Perform a backup now"
744
+ msgstr ""
745
+
746
+ #: updraftplus.php:2968
747
+ 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."
748
+ msgstr ""
749
+
750
+ #: updraftplus.php:2974
751
+ msgid "Does nothing happen when you schedule backups?"
752
+ msgstr ""
753
+
754
+ #: updraftplus.php:2974
755
+ msgid "Go here for help."
756
+ msgstr ""
757
+
758
+ #: updraftplus.php:2981
759
+ msgid "Multisite"
760
+ msgstr ""
761
+
762
+ #: updraftplus.php:2985
763
+ msgid "Do you need WordPress Multisite support?"
764
+ msgstr ""
765
+
766
+ #: updraftplus.php:2985
767
+ msgid "Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on."
768
+ msgstr ""
769
+
770
+ #: updraftplus.php:2990
771
+ msgid "Configure Backup Contents And Schedule"
772
+ msgstr ""
773
+
774
+ #: updraftplus.php:2996
775
+ msgid "Debug Information And Expert Options"
776
+ msgstr ""
777
+
778
+ #: updraftplus.php:3001
779
+ msgid "Peak memory usage"
780
+ msgstr ""
781
+
782
+ #: updraftplus.php:3002
783
+ msgid "Current memory usage"
784
+ msgstr ""
785
+
786
+ #: updraftplus.php:3003
787
+ msgid "PHP memory limit"
788
+ msgstr ""
789
+
790
+ #: updraftplus.php:3006
791
+ 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."
792
+ msgstr ""
793
+
794
+ #: updraftplus.php:3010
795
+ msgid "Debug Full Backup"
796
+ msgstr ""
797
+
798
+ #: updraftplus.php:3010
799
+ msgid "This will cause an immediate backup. The page will stall loading until it finishes (ie, unscheduled)."
800
+ msgstr ""
801
+
802
+ #: updraftplus.php:3014
803
+ msgid "Debug Database Backup"
804
+ msgstr ""
805
+
806
+ #: updraftplus.php:3014
807
+ 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.."
808
+ msgstr ""
809
+
810
+ #: updraftplus.php:3016
811
+ msgid "Wipe Settings"
812
+ msgstr ""
813
+
814
+ #: updraftplus.php:3017
815
+ 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."
816
+ msgstr ""
817
+
818
+ #: updraftplus.php:3020
819
+ msgid "Wipe All Settings"
820
+ msgstr ""
821
+
822
+ #: updraftplus.php:3020
823
+ msgid "This will delete all your UpdraftPlus settings - are you sure you want to do this?"
824
+ msgstr ""
825
+
826
+ #: updraftplus.php:3089
827
+ msgid "Press here to download"
828
+ msgstr ""
829
+
830
+ #: updraftplus.php:3091
831
+ #, php-format
832
+ msgid "(No %s)"
833
+ msgstr ""
834
+
835
+ #: updraftplus.php:3101
836
+ msgid "Backup Log"
837
+ msgstr ""
838
+
839
+ #: updraftplus.php:3109
840
+ msgid "After pressing this button, you will be given the option to choose which components you wish to restore"
841
+ msgstr ""
842
+
843
+ #: updraftplus.php:3134
844
+ #: updraftplus.php:3138
845
+ msgid "Warning"
846
+ msgstr ""
847
+
848
+ #: updraftplus.php:3134
849
+ #, php-format
850
+ 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."
851
+ msgstr ""
852
+
853
+ #: updraftplus.php:3138
854
+ #, php-format
855
+ 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."
856
+ msgstr ""
857
+
858
+ #: updraftplus.php:3142
859
+ #: updraftplus.php:3146
860
+ #: updraftplus.php:3150
861
+ msgid "UpdraftPlus notice:"
862
+ msgstr ""
863
+
864
+ #: updraftplus.php:3142
865
+ msgid "The log file could not be read."
866
+ msgstr ""
867
+
868
+ #: updraftplus.php:3146
869
+ #: updraftplus.php:3150
870
+ #, php-format
871
+ msgid "Click here to authenticate your %s account (you will not be able to back up to %s without it)."
872
+ msgstr ""
873
+
874
+ #: updraftplus.php:3323
875
+ msgid "Infinite recursion: consult your log for more information"
876
+ msgstr ""
877
+
878
+ #: includes/updraft-restorer.php:5
879
+ msgid "Backup file not available."
880
+ msgstr ""
881
+
882
+ #: includes/updraft-restorer.php:6
883
+ msgid "Unpacking backup..."
884
+ msgstr ""
885
+
886
+ #: includes/updraft-restorer.php:7
887
+ msgid "Moving old directory out of the way..."
888
+ msgstr ""
889
+
890
+ #: includes/updraft-restorer.php:8
891
+ msgid "Moving unpacked backup in place..."
892
+ msgstr ""
893
+
894
+ #: includes/updraft-restorer.php:9
895
+ msgid "Cleaning up rubbish..."
896
+ msgstr ""
897
+
898
+ #: includes/updraft-restorer.php:10
899
+ msgid "Could not move old directory out of the way. Perhaps you already have -old directories that need deleting first?"
900
+ msgstr ""
901
+
902
+ #: includes/updraft-restorer.php:11
903
+ msgid "Could not move new directory into place. Check your wp-content/upgrade folder."
904
+ msgstr ""
905
+
906
+ #: includes/updraft-restorer.php:12
907
+ msgid "Failed to delete working directory after restoring."
908
+ msgstr ""
909
+
910
+ #: includes/updraft-restorer.php:34
911
+ msgid "Will not delete the archive after unpacking it, because there was no cloud storage for this backup"
912
+ msgstr ""
913
+
914
+ #: methods/webdav.php:13
915
+ #: methods/webdav.php:34
916
+ #: methods/webdav.php:50
917
+ #: methods/sftp.php:13
918
+ #: methods/sftp.php:34
919
+ #: methods/sftp.php:50
920
+ #, php-format
921
+ msgid "You do not have the UpdraftPlus %s add-on installed - get it from %s"
922
+ msgstr ""
923
+
924
+ #: methods/webdav.php:63
925
+ #: methods/sftp.php:63
926
+ #, php-format
927
+ msgid "%s support is available as an add-on"
928
+ msgstr ""
929
+
930
+ #: methods/webdav.php:63
931
+ #: methods/sftp.php:63
932
+ msgid "follow this link to get it"
933
+ msgstr ""
934
+
935
+ #: methods/googledrive.php:94
936
+ #: methods/s3.php:326
937
+ #: methods/dropbox.php:293
938
+ #: addons/webdav.php:292
939
+ msgid "Success"
940
+ msgstr ""
941
+
942
+ #: methods/googledrive.php:94
943
+ #: methods/dropbox.php:293
944
+ #, php-format
945
+ msgid "you have authenticated your %s account"
946
+ msgstr ""
947
+
948
+ #: methods/googledrive.php:94
949
+ #: methods/googledrive.php:325
950
+ #: methods/googledrive.php:327
951
+ #: methods/googledrive.php:345
952
+ #: methods/googledrive.php:349
953
+ #: methods/googledrive.php:353
954
+ msgid "Google Drive"
955
+ msgstr ""
956
+
957
+ #: methods/googledrive.php:98
958
+ 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."
959
+ msgstr ""
960
+
961
+ #: methods/googledrive.php:103
962
+ msgid "Authorization failed"
963
+ msgstr ""
964
+
965
+ #: methods/googledrive.php:117
966
+ msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive."
967
+ msgstr ""
968
+
969
+ #: methods/googledrive.php:118
970
+ #: methods/googledrive.php:254
971
+ msgid "Have not yet obtained an access token from Google (has the user authorised?)"
972
+ msgstr ""
973
+
974
+ #: methods/googledrive.php:135
975
+ #: addons/webdav.php:57
976
+ #, php-format
977
+ msgid "Failed to upload to %s"
978
+ msgstr ""
979
+
980
+ #: methods/googledrive.php:189
981
+ #: addons/webdav.php:57
982
+ msgid "Error"
983
+ msgstr ""
984
+
985
+ #: methods/googledrive.php:225
986
+ msgid "An error occurred during GoogleDrive upload (see log for more details)"
987
+ msgstr ""
988
+
989
+ #: methods/googledrive.php:266
990
+ #, php-format
991
+ msgid "Google Drive error: %d: could not download: could not find a record of the Google Drive file ID for this file"
992
+ msgstr ""
993
+
994
+ #: methods/googledrive.php:271
995
+ #, php-format
996
+ msgid "Could not find %s in order to download it"
997
+ msgstr ""
998
+
999
+ #: methods/googledrive.php:283
1000
+ msgid "Google Drive "
1001
+ msgstr ""
1002
+
1003
+ #: methods/googledrive.php:283
1004
+ msgid "error: zero-size file was downloaded"
1005
+ msgstr ""
1006
+
1007
+ #: methods/googledrive.php:301
1008
+ msgid "Account is not authorized."
1009
+ msgstr ""
1010
+
1011
+ #: methods/googledrive.php:328
1012
+ #: methods/s3.php:246
1013
+ #: methods/dropbox.php:217
1014
+ #: methods/ftp.php:109
1015
+ #: addons/webdav.php:231
1016
+ #, php-format
1017
+ msgid "%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your blog is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts."
1018
+ msgstr ""
1019
+
1020
+ #: methods/googledrive.php:334
1021
+ msgid "For longer help, including screenshots, follow this link. The description below is sufficient for more expert users."
1022
+ msgstr ""
1023
+
1024
+ #: methods/googledrive.php:335
1025
+ msgid "Follow this link to your Google API Console, and there create a Client ID in the API Access section."
1026
+ msgstr ""
1027
+
1028
+ #: methods/googledrive.php:335
1029
+ msgid "Select 'Web Application' as the application type."
1030
+ msgstr ""
1031
+
1032
+ #: methods/googledrive.php:335
1033
+ msgid "You must add the following as the authorised redirect URI (under \"More Options\") when asked"
1034
+ msgstr ""
1035
+
1036
+ #: methods/googledrive.php:335
1037
+ 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 blog."
1038
+ msgstr ""
1039
+
1040
+ #: methods/googledrive.php:338
1041
+ msgid "You do not have the SimpleXMLElement installed. Google Drive backups will <b>not</b> work until you do."
1042
+ msgstr ""
1043
+
1044
+ #: methods/googledrive.php:345
1045
+ msgid "Client ID"
1046
+ msgstr ""
1047
+
1048
+ #: methods/googledrive.php:346
1049
+ msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here."
1050
+ msgstr ""
1051
+
1052
+ #: methods/googledrive.php:349
1053
+ msgid "Client Secret"
1054
+ msgstr ""
1055
+
1056
+ #: methods/googledrive.php:353
1057
+ msgid "Folder ID"
1058
+ msgstr ""
1059
+
1060
+ #: methods/googledrive.php:354
1061
+ 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)"
1062
+ msgstr ""
1063
+
1064
+ #: methods/googledrive.php:357
1065
+ msgid "Authenticate with Google"
1066
+ msgstr ""
1067
+
1068
+ #: methods/googledrive.php:358
1069
+ 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."
1070
+ msgstr ""
1071
+
1072
+ #: methods/email.php:15
1073
+ msgid "WordPress Backup"
1074
+ msgstr ""
1075
+
1076
+ #: methods/email.php:15
1077
+ msgid "Backup is of:"
1078
+ msgstr ""
1079
+
1080
+ #: methods/email.php:15
1081
+ msgid "Be wary; email backups may fail because of file size limitations on mail servers."
1082
+ msgstr ""
1083
+
1084
+ #: methods/email.php:24
1085
+ msgid "Note:"
1086
+ msgstr ""
1087
+
1088
+ #: methods/email.php:25
1089
+ 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."
1090
+ msgstr ""
1091
+
1092
+ #: methods/s3.php:77
1093
+ #, php-format
1094
+ msgid "%s Error: Failed to upload"
1095
+ msgstr ""
1096
+
1097
+ #: methods/s3.php:98
1098
+ msgid "S3 upload: getting uploadID for multipart upload failed - see log file for more details"
1099
+ msgstr ""
1100
+
1101
+ #: methods/s3.php:130
1102
+ #, php-format
1103
+ msgid "S3 chunk %s: upload failed"
1104
+ msgstr ""
1105
+
1106
+ #: methods/s3.php:144
1107
+ #, php-format
1108
+ msgid "S3 upload (%s): re-assembly failed (see log for more details)"
1109
+ msgstr ""
1110
+
1111
+ #: methods/s3.php:148
1112
+ #, php-format
1113
+ msgid "S3 re-assembly error (%s): (see log file for more)"
1114
+ msgstr ""
1115
+
1116
+ #: methods/s3.php:160
1117
+ #, php-format
1118
+ msgid "S3 Error: Failed to create bucket %s. Check your permissions and credentials."
1119
+ msgstr ""
1120
+
1121
+ #: methods/s3.php:213
1122
+ #, php-format
1123
+ msgid "S3 Error: Failed to download %s. Check your permissions and credentials."
1124
+ msgstr ""
1125
+
1126
+ #: methods/s3.php:217
1127
+ #, php-format
1128
+ msgid "S3 Error: Failed to access bucket %s. Check your permissions and credentials."
1129
+ msgstr ""
1130
+
1131
+ #: methods/s3.php:251
1132
+ 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."
1133
+ msgstr ""
1134
+
1135
+ #: methods/s3.php:254
1136
+ msgid "S3 access key"
1137
+ msgstr ""
1138
+
1139
+ #: methods/s3.php:258
1140
+ msgid "S3 secret key"
1141
+ msgstr ""
1142
+
1143
+ #: methods/s3.php:262
1144
+ msgid "S3 location"
1145
+ msgstr ""
1146
+
1147
+ #: methods/s3.php:267
1148
+ #: methods/ftp.php:135
1149
+ #: addons/webdav.php:244
1150
+ #, php-format
1151
+ msgid "Test %s Settings"
1152
+ msgstr ""
1153
+
1154
+ #: methods/s3.php:275
1155
+ #: methods/s3.php:279
1156
+ #: methods/ftp.php:152
1157
+ #: methods/ftp.php:156
1158
+ #: addons/webdav.php:272
1159
+ #, php-format
1160
+ msgid "Failure: No %s was given."
1161
+ msgstr ""
1162
+
1163
+ #: methods/s3.php:275
1164
+ msgid "API key"
1165
+ msgstr ""
1166
+
1167
+ #: methods/s3.php:279
1168
+ msgid "API secret"
1169
+ msgstr ""
1170
+
1171
+ #: methods/s3.php:296
1172
+ msgid "Failure: No bucket details were given."
1173
+ msgstr ""
1174
+
1175
+ #: methods/s3.php:306
1176
+ msgid "Amazon region"
1177
+ msgstr ""
1178
+
1179
+ #: methods/s3.php:316
1180
+ 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)."
1181
+ msgstr ""
1182
+
1183
+ #: methods/s3.php:324
1184
+ msgid "Failure"
1185
+ msgstr ""
1186
+
1187
+ #: methods/s3.php:324
1188
+ msgid "We successfully accessed the bucket, but the attempt to create a file in it failed."
1189
+ msgstr ""
1190
+
1191
+ #: methods/s3.php:326
1192
+ msgid "We accessed the bucket, and were able to create files within it."
1193
+ msgstr ""
1194
+
1195
+ #: methods/dropbox.php:35
1196
+ #: methods/dropbox.php:167
1197
+ msgid "You do not appear to be authenticated with Dropbox"
1198
+ msgstr ""
1199
+
1200
+ #: methods/dropbox.php:46
1201
+ #, php-format
1202
+ msgid "error: %s (see log file for more)"
1203
+ msgstr ""
1204
+
1205
+ #: methods/dropbox.php:98
1206
+ #: methods/dropbox.php:103
1207
+ #, php-format
1208
+ msgid "error: failed to upload file to %s (see log file for more)"
1209
+ msgstr ""
1210
+
1211
+ #: methods/dropbox.php:223
1212
+ msgid "Need to use sub-folders?"
1213
+ msgstr ""
1214
+
1215
+ #: methods/dropbox.php:223
1216
+ msgid "Backups are saved in"
1217
+ msgstr ""
1218
+
1219
+ #: methods/dropbox.php:223
1220
+ msgid "If you back up several sites into the same Dropbox and want to organise with sub-folders, then "
1221
+ msgstr ""
1222
+
1223
+ #: methods/dropbox.php:223
1224
+ msgid "there's an add-on for that."
1225
+ msgstr ""
1226
+
1227
+ #: methods/dropbox.php:228
1228
+ msgid "Authenticate with Dropbox"
1229
+ msgstr ""
1230
+
1231
+ #: methods/dropbox.php:229
1232
+ 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."
1233
+ msgstr ""
1234
+
1235
+ #: methods/dropbox.php:240
1236
+ msgid "Your web server's PHP installation does not included a required module (MCrypt). Please contact your web hosting provider's support. UpdraftPlus's Dropbox module <strong>requires</strong> MCrypt. Please do not file any support requests; there is no alternative."
1237
+ msgstr ""
1238
+
1239
+ #: methods/dropbox.php:243
1240
+ msgid "Your web server's PHP installation does not included a required module (Curl). Please contact your web hosting provider's support. UpdraftPlus's Dropbox 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."
1241
+ msgstr ""
1242
+
1243
+ #: methods/dropbox.php:296
1244
+ msgid "though part of the returned information was not as expected - your mileage may vary"
1245
+ msgstr ""
1246
+
1247
+ #: methods/dropbox.php:299
1248
+ #, php-format
1249
+ msgid "Your %s account name"
1250
+ msgstr ""
1251
+
1252
+ #: methods/ftp.php:19
1253
+ #: methods/ftp.php:66
1254
+ msgid "FTP login failure"
1255
+ msgstr ""
1256
+
1257
+ #: methods/ftp.php:38
1258
+ msgid "FTP upload failed"
1259
+ msgstr ""
1260
+
1261
+ #: methods/ftp.php:98
1262
+ msgid "Settings test result"
1263
+ msgstr ""
1264
+
1265
+ #: methods/ftp.php:114
1266
+ msgid "Only non-encrypted FTP is supported by regular UpdraftPlus."
1267
+ msgstr ""
1268
+
1269
+ #: methods/ftp.php:114
1270
+ msgid "If you want encryption (e.g. you are storing sensitive business data), then an add-on is available."
1271
+ msgstr ""
1272
+
1273
+ #: methods/ftp.php:118
1274
+ msgid "FTP Server"
1275
+ msgstr ""
1276
+
1277
+ #: methods/ftp.php:122
1278
+ msgid "FTP Login"
1279
+ msgstr ""
1280
+
1281
+ #: methods/ftp.php:126
1282
+ msgid "FTP Password"
1283
+ msgstr ""
1284
+
1285
+ #: methods/ftp.php:130
1286
+ msgid "Remote Path"
1287
+ msgstr ""
1288
+
1289
+ #: methods/ftp.php:131
1290
+ msgid "Needs to already exist"
1291
+ msgstr ""
1292
+
1293
+ #: methods/ftp.php:148
1294
+ msgid "Failure: No server details were given."
1295
+ msgstr ""
1296
+
1297
+ #: methods/ftp.php:167
1298
+ msgid "Failure: we did not successfully log in with those credentials."
1299
+ msgstr ""
1300
+
1301
+ #: methods/ftp.php:175
1302
+ msgid "Failure: an unexpected internal UpdraftPlus error occurred when testing the credentials - please contact the developer"
1303
+ msgstr ""
1304
+
1305
+ #: methods/ftp.php:179
1306
+ msgid "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:"
1307
+ msgstr ""
1308
+
1309
+ #: methods/ftp.php:182
1310
+ msgid "Failure: we successfully logged in, but were not able to create a file in the given directory."
1311
+ msgstr ""
1312
+
1313
+ #: addons/webdav.php:40
1314
+ #: addons/webdav.php:170
1315
+ #, php-format
1316
+ msgid "No %s settings were found"
1317
+ msgstr ""
1318
+
1319
+ #: addons/webdav.php:116
1320
+ #: addons/webdav.php:120
1321
+ #, php-format
1322
+ msgid "Chunk %s: A %s error occurred"
1323
+ msgstr ""
1324
+
1325
+ #: addons/webdav.php:182
1326
+ #: addons/webdav.php:188
1327
+ #: addons/webdav.php:200
1328
+ msgid "WebDAV Error"
1329
+ msgstr ""
1330
+
1331
+ #: addons/webdav.php:182
1332
+ msgid "Error opening local file: Failed to download"
1333
+ msgstr ""
1334
+
1335
+ #: addons/webdav.php:188
1336
+ msgid "Error opening remote file: Failed to download"
1337
+ msgstr ""
1338
+
1339
+ #: addons/webdav.php:200
1340
+ msgid "Local write failed: Failed to download"
1341
+ msgstr ""
1342
+
1343
+ #: addons/webdav.php:234
1344
+ msgid "WebDAV URL"
1345
+ msgstr ""
1346
+
1347
+ #: addons/webdav.php:238
1348
+ #, php-format
1349
+ msgid "Enter a complete URL, beginning with webdav:// or webdavs:// and including path, username, password and port as required - e.g.%s"
1350
+ msgstr ""
1351
+
1352
+ #: addons/webdav.php:281
1353
+ msgid "Failed"
1354
+ msgstr ""
1355
+
1356
+ #: addons/webdav.php:295
1357
+ msgid "Failed: We were not able to place a file in that directory - please check your credentials."
1358
+ msgstr ""
1359
+
1360
+ #: addons/sftp.php:23
1361
+ msgid "Encrypted FTP is available, and will be automatically tried first (before falling back to non-encrypted if it is not successful). The 'Test FTP Login' button will tell you what type of connection is in use."
1362
+ msgstr ""
1363
+
1364
+ #: addons/sftp.php:30
1365
+ #: addons/sftp.php:31
1366
+ #: addons/sftp.php:32
1367
+ #, php-format
1368
+ msgid "No %s found"
1369
+ msgstr ""
1370
+
1371
+ #: addons/sftp.php:30
1372
+ msgid "SFTP host setting"
1373
+ msgstr ""
1374
+
1375
+ #: addons/sftp.php:31
1376
+ msgid "SFTP user setting"
1377
+ msgstr ""
1378
+
1379
+ #: addons/sftp.php:32
1380
+ msgid "SFTP passwrd"
1381
+ msgstr ""
1382
+
1383
+ #: addons/sftp.php:50
1384
+ #: addons/sftp.php:293
1385
+ msgid "Check your file permissions: Could not successfully create and enter:"
1386
+ msgstr ""
1387
+
1388
+ #: addons/sftp.php:128
1389
+ #, php-format
1390
+ msgid "%s Error: Failed to download"
1391
+ msgstr ""
1392
+
1393
+ #: addons/sftp.php:172
1394
+ 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."
1395
+ msgstr ""
1396
+
1397
+ #: addons/sftp.php:177
1398
+ msgid "Host"
1399
+ msgstr ""
1400
+
1401
+ #: addons/sftp.php:184
1402
+ msgid "Port"
1403
+ msgstr ""
1404
+
1405
+ #: addons/sftp.php:191
1406
+ msgid "Username"
1407
+ msgstr ""
1408
+
1409
+ #: addons/sftp.php:198
1410
+ msgid "Password"
1411
+ msgstr ""
1412
+
1413
+ #: addons/sftp.php:214
1414
+ msgid "Directory path"
1415
+ msgstr ""
1416
+
1417
+ #: addons/sftp.php:216
1418
+ msgid "Where to change directory to after logging in - often this is relative to your home directory."
1419
+ msgstr ""
1420
+
1421
+ #: addons/sftp.php:254
1422
+ msgid "host name"
1423
+ msgstr ""
1424
+
1425
+ #: addons/sftp.php:258
1426
+ msgid "username"
1427
+ msgstr ""
1428
+
1429
+ #: addons/sftp.php:262
1430
+ msgid "password"
1431
+ msgstr ""
1432
+
1433
+ #: addons/sftp.php:267
1434
+ msgid "Failure: Port must be an integer."
1435
+ msgstr ""
1436
+
1437
+ #: addons/sftp.php:307
1438
+ msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully created a file in that location."
1439
+ msgstr ""
1440
+
1441
+ #: addons/fixtime.php:77
1442
+ #: addons/fixtime.php:87
1443
+ msgid "starting from next time it is"
1444
+ msgstr ""
1445
+
1446
+ #: addons/fixtime.php:77
1447
+ #: addons/fixtime.php:87
1448
+ msgid "Enter in format HH:MM (e.g. 14:22)"
1449
+ msgstr ""
1450
+
1451
+ #: addons/multisite.php:103
1452
+ msgid "Multisite Install"
1453
+ msgstr ""
1454
+
1455
+ #: addons/multisite.php:109
1456
+ msgid "You do not have sufficient permissions to access this page."
1457
+ msgstr ""
1458
+
1459
+ #: addons/multisite.php:128
1460
+ msgid "You do not have permission to access this page."
1461
+ msgstr ""
1462
+
1463
+ #: addons/multisite.php:180
1464
+ msgid "Must-use plugins"
1465
+ msgstr ""
1466
+
1467
+ #: addons/multisite.php:181
1468
+ msgid "Blog uploads"
1469
+ msgstr ""
1470
+
1471
+ #: addons/dropbox-folders.php:21
1472
+ msgid "Store at"
1473
+ msgstr ""
1474
+
methods/dropbox.php CHANGED
@@ -32,7 +32,7 @@ class UpdraftPlus_BackupModule_dropbox {
32
 
33
  if (UpdraftPlus_Options::get_updraft_option('updraft_dropboxtk_request_token', 'xyz') == 'xyz') {
34
  $updraftplus->log('You do not appear to be authenticated with Dropbox');
35
- $updraftplus->error('You do not appear to be authenticated with Dropbox');
36
  return false;
37
  }
38
 
@@ -43,7 +43,8 @@ class UpdraftPlus_BackupModule_dropbox {
43
  $dropbox->setChunkSize(524288); // 512Kb
44
  } catch (Exception $e) {
45
  $updraftplus->log('Dropbox error: '.$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')');
46
- $updraftplus->error('Dropbox error: '.$e->getMessage().' (see log file for more)');
 
47
  return false;
48
  }
49
 
@@ -93,12 +94,13 @@ class UpdraftPlus_BackupModule_dropbox {
93
  $dropbox->chunkedUpload($updraft_dir.'/'.$file, '', $ufile, true, $dropbox_wanted, $upload_id, array($ourself, 'chunked_callback'));
94
  } catch (Exception $e) {
95
  $updraftplus->log('Dropbox error: '.$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')');
96
- $updraftplus->error("Dropbox error: failed to upload file to $ufile (see full log for more)");
 
97
  $file_success = 0;
98
  }
99
  } else {
100
  $updraftplus->log('Dropbox error: '.$e->getMessage());
101
- $updraftplus->error("Dropbox error: failed to upload file to $ufile (see full log for more)");
102
  $file_success = 0;
103
  }
104
  }
@@ -162,7 +164,7 @@ class UpdraftPlus_BackupModule_dropbox {
162
  global $updraftplus;
163
 
164
  if (UpdraftPlus_Options::get_updraft_option('updraft_dropboxtk_request_token', 'xyz') == 'xyz') {
165
- $updraftplus->error('You do not appear to be authenticated with Dropbox');
166
  return false;
167
  }
168
 
@@ -212,15 +214,19 @@ class UpdraftPlus_BackupModule_dropbox {
212
  <td></td>
213
  <td>
214
  <img alt="Dropbox logo" src="<?php echo UPDRAFTPLUS_URL.'/images/dropbox-logo.png' ?>">
215
- <p><em>Dropbox is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your blog is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts.</em></p>
216
  </td>
217
  </tr>
218
 
219
- <?php echo apply_filters('updraftplus_dropbox_extra_config', '<tr class="updraftplusmethod dropbox"><td></td><td><strong>Need to use sub-folders?</strong> Backups are saved in apps/UpdraftPlus. If you back up several sites into the same Dropbox and want to organise with sub-folders, then <a href="http://updraftplus.com/shop/">there\'s an add-on for that.</a></td></tr>'); ?>
 
 
 
 
220
 
221
  <tr class="updraftplusmethod dropbox">
222
- <th>Authenticate with Dropbox:</th>
223
- <td><p><?php if (UpdraftPlus_Options::get_updraft_option('updraft_dropboxtk_request_token','xyz') != 'xyz') echo "<strong>(You appear to be already authenticated).</strong>"; ?> <a href="?page=updraftplus&action=updraftmethod-dropbox-auth&updraftplus_dropboxauth=doit"><strong>After</strong> you have saved your settings (by clicking &quot;Save Changes&quot; below), then come back here once and click this link to complete authentication with Dropbox.</a>
224
  </p>
225
  </td>
226
  </tr>
@@ -231,15 +237,15 @@ class UpdraftPlus_BackupModule_dropbox {
231
  <?php
232
  // Check requirements.
233
  if (!function_exists('mcrypt_encrypt')) {
234
- ?><p><strong>Warning:</strong> Your web server's PHP installation does not included a required module (MCrypt). Please contact your web hosting provider's support. UpdraftPlus's Dropbox module <strong>requires</strong> MCrypt. Please do not file any support requests; there is no alternative.</p><?php
235
  }
236
  if (!function_exists("curl_init")) {
237
- ?><p><strong>Warning:</strong> Your web server's PHP installation does not included a required module (Curl). Please contact your web hosting provider's support. UpdraftPlus's Dropbox 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.</p><?php
238
  } else {
239
  $curl_version = curl_version();
240
  $curl_ssl_supported= ($curl_version['features'] & CURL_VERSION_SSL);
241
  if (!$curl_ssl_supported) {
242
- ?><p><strong>Warning:</strong> Your web server's PHP/Curl installation does not support https access. We cannot access Dropbox without this support. Please contact your web hosting provider's support. UpdraftPlus's Dropbox module <strong>requires</strong> Curl+https. Your only options to get this working are 1) Install/enable curl with https or 2) Hire us or someone else to code additional support options into UpdraftPlus. 3) Wait, possibly forever, for someone else to do this.</p><?php
243
  }
244
  }
245
  ?>
@@ -284,13 +290,13 @@ class UpdraftPlus_BackupModule_dropbox {
284
  $dropbox = self::bootstrap();
285
  $accountInfo = $dropbox->accountInfo();
286
 
287
- $message = "<strong>Success</strong>: you have authenticated your Dropbox account";
288
 
289
  if ($accountInfo['code'] != "200") {
290
- $message .= " (though part of the returned information was not as expected - your mileage may vary)". $accountInfo['code'];
291
  } else {
292
  $body = $accountInfo['body'];
293
- $message .= ". Your Dropbox account name: ".htmlspecialchars($body->display_name);
294
  }
295
  $updraftplus->show_admin_warning($message);
296
 
32
 
33
  if (UpdraftPlus_Options::get_updraft_option('updraft_dropboxtk_request_token', 'xyz') == 'xyz') {
34
  $updraftplus->log('You do not appear to be authenticated with Dropbox');
35
+ $updraftplus->error(__('You do not appear to be authenticated with Dropbox','updraftplus'));
36
  return false;
37
  }
38
 
43
  $dropbox->setChunkSize(524288); // 512Kb
44
  } catch (Exception $e) {
45
  $updraftplus->log('Dropbox error: '.$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')');
46
+ $updraftplus->error('Dropbox ',sprintf(__('error: %s (see log file for more)','updraftplus'), $e->getMessage()));
47
+
48
  return false;
49
  }
50
 
94
  $dropbox->chunkedUpload($updraft_dir.'/'.$file, '', $ufile, true, $dropbox_wanted, $upload_id, array($ourself, 'chunked_callback'));
95
  } catch (Exception $e) {
96
  $updraftplus->log('Dropbox error: '.$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')');
97
+
98
+ $updraftplus->error('Dropbox ',sprintf(__('error: failed to upload file to %s (see log file for more)','updraftplus'), $ufile));
99
  $file_success = 0;
100
  }
101
  } else {
102
  $updraftplus->log('Dropbox error: '.$e->getMessage());
103
+ $updraftplus->error('Dropbox ',sprintf(__('error: failed to upload file to %s (see log file for more)','updraftplus'), $ufile));
104
  $file_success = 0;
105
  }
106
  }
164
  global $updraftplus;
165
 
166
  if (UpdraftPlus_Options::get_updraft_option('updraft_dropboxtk_request_token', 'xyz') == 'xyz') {
167
+ $updraftplus->error(__('You do not appear to be authenticated with Dropbox','updraftplus'));
168
  return false;
169
  }
170
 
214
  <td></td>
215
  <td>
216
  <img alt="Dropbox logo" src="<?php echo UPDRAFTPLUS_URL.'/images/dropbox-logo.png' ?>">
217
+ <p><em><?php printf(__('%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your blog is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts.','updraftplus'),'Dropbox');?></em></p>
218
  </td>
219
  </tr>
220
 
221
+ <?php
222
+
223
+ $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>';
224
+
225
+ echo apply_filters('updraftplus_dropbox_extra_config', $defmsg); ?>
226
 
227
  <tr class="updraftplusmethod dropbox">
228
+ <th><?php _e('Authenticate with Dropbox','updraftplus');?>:</th>
229
+ <td><p><?php if (UpdraftPlus_Options::get_updraft_option('updraft_dropboxtk_request_token','xyz') != 'xyz') echo "<strong>(You appear to be already authenticated).</strong>"; ?> <a href="?page=updraftplus&action=updraftmethod-dropbox-auth&updraftplus_dropboxauth=doit"><?php echo __('<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.','updraftplus');?></a>
230
  </p>
231
  </td>
232
  </tr>
237
  <?php
238
  // Check requirements.
239
  if (!function_exists('mcrypt_encrypt')) {
240
+ ?><p><strong><?php _e('Warning','updraftplus'); ?>:</strong> <?php _e("Your web server's PHP installation does not included a required module (MCrypt). Please contact your web hosting provider's support. UpdraftPlus's Dropbox module <strong>requires</strong> MCrypt. Please do not file any support requests; there is no alternative.",'updraftplus');?></p><?php
241
  }
242
  if (!function_exists("curl_init")) {
243
+ ?><p><strong><?php _e('Warning','updraftplus'); ?>:</strong> <?php _e("Your web server's PHP installation does not included a required module (Curl). Please contact your web hosting provider's support. UpdraftPlus's Dropbox 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');?></p><?php
244
  } else {
245
  $curl_version = curl_version();
246
  $curl_ssl_supported= ($curl_version['features'] & CURL_VERSION_SSL);
247
  if (!$curl_ssl_supported) {
248
+ ?><p><strong><?php _e('Warning','updraftplus'); ?>:</strong> <?php _e("Your web server's PHP/Curl installation does not support https access. We cannot access Dropbox without this support. Please contact your web hosting provider's support. UpdraftPlus's Dropbox module <strong>requires</strong> Curl+https. Your only options to get this working are 1) Install/enable curl with https 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');?></p><?php
249
  }
250
  }
251
  ?>
290
  $dropbox = self::bootstrap();
291
  $accountInfo = $dropbox->accountInfo();
292
 
293
+ $message = "<strong>".__('Success','updraftplus').'</strong>: '.sprintf(__('you have authenticated your %s account','updraftplus'),'Dropbox');
294
 
295
  if ($accountInfo['code'] != "200") {
296
+ $message .= " (".__('though part of the returned information was not as expected - your mileage may vary','updraftplus').")". $accountInfo['code'];
297
  } else {
298
  $body = $accountInfo['body'];
299
+ $message .= ". ".sprintf(__('Your %s account name','updraftplus'),'Dropbox').": ".htmlspecialchars($body->display_name);
300
  }
301
  $updraftplus->show_admin_warning($message);
302
 
methods/email.php CHANGED
@@ -12,7 +12,7 @@ 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 ".date('Y-m-d H:i',$updraftplus->backup_time), "Backup is of the $type. Be wary; email backups may fail because of file size limitations on mail servers.", null, array($fullpath));
16
  $updraftplus->uploaded_file($file);
17
  }
18
  $updraftplus->prune_retained_backups("email", null, null);
@@ -21,8 +21,8 @@ class UpdraftPlus_BackupModule_email {
21
  public static function config_print() {
22
  ?>
23
  <tr class="updraftplusmethod email">
24
- <th>Note:</th>
25
- <td>The email address entered above will be used. If choosing &quot;E-Mail&quot;, 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.</td>
26
  </tr>
27
  <?php
28
  }
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);
21
  public static function config_print() {
22
  ?>
23
  <tr class="updraftplusmethod email">
24
+ <th><?php _e('Note:','updraftplus');?></th>
25
+ <td><?php echo htmlspecialchars(__('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.','updraftplus'));?></td>
26
  </tr>
27
  <?php
28
  }
methods/ftp.php CHANGED
@@ -16,7 +16,7 @@ class UpdraftPlus_BackupModule_ftp {
16
 
17
  if (!$ftp->connect()) {
18
  $updraftplus->log("FTP Failure: we did not successfully log in with those credentials.");
19
- $updraftplus->error("FTP login failure");
20
  return false;
21
  }
22
 
@@ -35,7 +35,7 @@ class UpdraftPlus_BackupModule_ftp {
35
  $updraftplus->uploaded_file($file);
36
  } else {
37
  $updraftplus->log("ERROR: FTP upload failed" );
38
- $updraftplus->error("FTP upload failed" );
39
  }
40
  }
41
 
@@ -56,13 +56,15 @@ class UpdraftPlus_BackupModule_ftp {
56
  function download($file) {
57
  if( !class_exists('UpdraftPlus_ftp_wrapper')) require_once(UPDRAFTPLUS_DIR.'/includes/ftp.class.php');
58
 
 
 
59
  //handle errors at some point TODO
60
  $ftp = new UpdraftPlus_ftp_wrapper(UpdraftPlus_Options::get_updraft_option('updraft_server_address'),UpdraftPlus_Options::get_updraft_option('updraft_ftp_login'),UpdraftPlus_Options::get_updraft_option('updraft_ftp_pass'));
61
  $ftp->passive = true;
62
 
63
  if (!$ftp->connect()) {
64
  $updraftplus->log("FTP Failure: we did not successfully log in with those credentials.");
65
- $updraftplus->error("FTP login failure");
66
  return false;
67
  }
68
 
@@ -88,7 +90,7 @@ class UpdraftPlus_BackupModule_ftp {
88
  path: jQuery('#updraft_ftp_remote_path').val()
89
  };
90
  jQuery.post(ajaxurl, data, function(response) {
91
- alert('Settings test result: ' + response);
92
  });
93
  });
94
  <?php
@@ -99,28 +101,28 @@ class UpdraftPlus_BackupModule_ftp {
99
 
100
  <tr class="updraftplusmethod ftp">
101
  <th></th>
102
- <td><em><?php echo apply_filters('updraft_sftp_ftps_notice', '<strong>Only non-encrypted FTP is supported by regular UpdraftPlus.</strong> If you want encryption (e.g. you are storing sensitive business data), then <a href="http://updraftplus.com/shop/sftp/">an add-on is available.</a>'); ?></em></td>
103
  </tr>
104
 
105
  <tr class="updraftplusmethod ftp">
106
- <th>FTP Server:</th>
107
  <td><input type="text" size="40" id="updraft_server_address" name="updraft_server_address" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_server_address')); ?>" /></td>
108
  </tr>
109
  <tr class="updraftplusmethod ftp">
110
- <th>FTP Login:</th>
111
  <td><input type="text" size="40" id="updraft_ftp_login" name="updraft_ftp_login" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_ftp_login')) ?>" /></td>
112
  </tr>
113
  <tr class="updraftplusmethod ftp">
114
- <th>FTP Password:</th>
115
  <td><input type="text" size="40" id="updraft_ftp_pass" name="updraft_ftp_pass" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_ftp_pass')); ?>" /></td>
116
  </tr>
117
  <tr class="updraftplusmethod ftp">
118
- <th>Remote Path:</th>
119
- <td><input type="text" size="64" id="updraft_ftp_remote_path" name="updraft_ftp_remote_path" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_ftp_remote_path')); ?>" /> <em>Needs to already exist</em></td>
120
  </tr>
121
  <tr class="updraftplusmethod ftp">
122
  <th></th>
123
- <td><p><button id="updraft-ftp-test" type="button" class="button-primary" style="font-size:18px !important">Test FTP Login</button></p></td>
124
  </tr>
125
  <?php
126
  }
@@ -133,15 +135,15 @@ class UpdraftPlus_BackupModule_ftp {
133
  $path = $_POST['path'];
134
 
135
  if (empty($server)) {
136
- echo "Failure: No server details were given.";
137
  return;
138
  }
139
  if (empty($login)) {
140
- echo "Failure: No login was given.";
141
  return;
142
  }
143
  if (empty($pass)) {
144
- echo "Failure: No password was given.";
145
  return;
146
  }
147
 
@@ -152,7 +154,7 @@ class UpdraftPlus_BackupModule_ftp {
152
  $ftp->passive = true;
153
 
154
  if (!$ftp->connect()) {
155
- echo "Failure: we did not successfully log in with those credentials.";
156
  return;
157
  }
158
  //$ftp->make_dir(); we may need to recursively create dirs? TODO
@@ -160,18 +162,18 @@ class UpdraftPlus_BackupModule_ftp {
160
  $file = md5(rand(0,99999999)).'.tmp';
161
  $fullpath = trailingslashit($path).$file;
162
  if (!file_exists(ABSPATH.'wp-includes/version.php')) {
163
- echo "Failure: an unexpected internal UpdraftPlus error occurred when testing the credentials - please contact the developer";
164
  return;
165
  }
166
  if ($ftp->put(ABSPATH.'wp-includes/version.php', $fullpath, FTP_BINARY)) {
167
- echo "Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type: ".$ftp->login_type.')';
168
  @$ftp->delete($fullpath);
169
  } else {
170
- echo "Failure: we successfully logged in, but were not able to create a file in the given directory.";
171
  }
172
 
173
  }
174
 
175
  }
176
 
177
- ?>
16
 
17
  if (!$ftp->connect()) {
18
  $updraftplus->log("FTP Failure: we did not successfully log in with those credentials.");
19
+ $updraftplus->error(__("FTP login failure",'updraftplus'));
20
  return false;
21
  }
22
 
35
  $updraftplus->uploaded_file($file);
36
  } else {
37
  $updraftplus->log("ERROR: FTP upload failed" );
38
+ $updraftplus->error(__("FTP upload failed",'updraftplus'));
39
  }
40
  }
41
 
56
  function download($file) {
57
  if( !class_exists('UpdraftPlus_ftp_wrapper')) require_once(UPDRAFTPLUS_DIR.'/includes/ftp.class.php');
58
 
59
+ global $updraftplus;
60
+
61
  //handle errors at some point TODO
62
  $ftp = new UpdraftPlus_ftp_wrapper(UpdraftPlus_Options::get_updraft_option('updraft_server_address'),UpdraftPlus_Options::get_updraft_option('updraft_ftp_login'),UpdraftPlus_Options::get_updraft_option('updraft_ftp_pass'));
63
  $ftp->passive = true;
64
 
65
  if (!$ftp->connect()) {
66
  $updraftplus->log("FTP Failure: we did not successfully log in with those credentials.");
67
+ $updraftplus->error(__("FTP login failure",'updraftplus'));
68
  return false;
69
  }
70
 
90
  path: jQuery('#updraft_ftp_remote_path').val()
91
  };
92
  jQuery.post(ajaxurl, data, function(response) {
93
+ alert('<?php _e('Settings test result','updraftplus');?>: ' + response);
94
  });
95
  });
96
  <?php
101
 
102
  <tr class="updraftplusmethod ftp">
103
  <th></th>
104
+ <td><em><?php echo apply_filters('updraft_sftp_ftps_notice', '<strong>'.__('Only non-encrypted FTP is supported by regular UpdraftPlus.').'</strong> <a href="http://updraftplus.com/shop/sftp/">'.__('If you want encryption (e.g. you are storing sensitive business data), then an add-on is available.','updraftplus')).'</a>'; ?></em></td>
105
  </tr>
106
 
107
  <tr class="updraftplusmethod ftp">
108
+ <th><?php _e('FTP Server','updraftplus');?>:</th>
109
  <td><input type="text" size="40" id="updraft_server_address" name="updraft_server_address" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_server_address')); ?>" /></td>
110
  </tr>
111
  <tr class="updraftplusmethod ftp">
112
+ <th><?php _e('FTP Login','updraftplus');?>:</th>
113
  <td><input type="text" size="40" id="updraft_ftp_login" name="updraft_ftp_login" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_ftp_login')) ?>" /></td>
114
  </tr>
115
  <tr class="updraftplusmethod ftp">
116
+ <th><?php _e('FTP Password','updraftplus');?>:</th>
117
  <td><input type="text" size="40" id="updraft_ftp_pass" name="updraft_ftp_pass" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_ftp_pass')); ?>" /></td>
118
  </tr>
119
  <tr class="updraftplusmethod ftp">
120
+ <th><?php _e('Remote Path','updraftplus');?>:</th>
121
+ <td><input type="text" size="64" id="updraft_ftp_remote_path" name="updraft_ftp_remote_path" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_ftp_remote_path')); ?>" /> <em><?php _e('Needs to already exist','updraftplus');?></em></td>
122
  </tr>
123
  <tr class="updraftplusmethod ftp">
124
  <th></th>
125
+ <td><p><button id="updraft-ftp-test" type="button" class="button-primary" style="font-size:18px !important"><?php echo sprintf(__('Test %s Settings','updraftplus'),'FTP');?></button></p></td>
126
  </tr>
127
  <?php
128
  }
135
  $path = $_POST['path'];
136
 
137
  if (empty($server)) {
138
+ _e("Failure: No server details were given.",'updraftplus');
139
  return;
140
  }
141
  if (empty($login)) {
142
+ printf(__("Failure: No %s was given.",'updraftplus'),'login');
143
  return;
144
  }
145
  if (empty($pass)) {
146
+ printf(__("Failure: No %s was given.",'updraftplus'),'password');
147
  return;
148
  }
149
 
154
  $ftp->passive = true;
155
 
156
  if (!$ftp->connect()) {
157
+ _e("Failure: we did not successfully log in with those credentials.",'updraftplus');
158
  return;
159
  }
160
  //$ftp->make_dir(); we may need to recursively create dirs? TODO
162
  $file = md5(rand(0,99999999)).'.tmp';
163
  $fullpath = trailingslashit($path).$file;
164
  if (!file_exists(ABSPATH.'wp-includes/version.php')) {
165
+ _e("Failure: an unexpected internal UpdraftPlus error occurred when testing the credentials - please contact the developer");
166
  return;
167
  }
168
  if ($ftp->put(ABSPATH.'wp-includes/version.php', $fullpath, FTP_BINARY)) {
169
+ echo __("Success: we successfully logged in, and confirmed our ability to create a file in the given directory (login type:",'updraftplus')." ".$ftp->login_type.')';
170
  @$ftp->delete($fullpath);
171
  } else {
172
+ _e('Failure: we successfully logged in, but were not able to create a file in the given directory.');
173
  }
174
 
175
  }
176
 
177
  }
178
 
179
+ ?>
methods/googledrive.php CHANGED
@@ -91,7 +91,8 @@ class UpdraftPlus_BackupModule_googledrive {
91
  $json_values = json_decode( $result['body'], true );
92
  if ( isset( $json_values['refresh_token'] ) ) {
93
  UpdraftPlus_Options::update_updraft_option('updraft_googledrive_token', $json_values['refresh_token']); // Save token
94
- header('Location: '.admin_url('options-general.php?page=updraftplus&message=' . __( 'Google Drive authorisation was successful.', 'updraftplus' ) ) );
 
95
  }
96
  else {
97
  header('Location: '.admin_url('options-general.php?page=updraftplus&error=' . __( '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.', 'updraftplus' ) ) );
@@ -99,7 +100,7 @@ class UpdraftPlus_BackupModule_googledrive {
99
  }
100
  }
101
  else {
102
- header('Location: '.admin_url('options-general.php?page=updraftplus&error=' . __( 'Authorization failed!', 'updraftplus' ) ) );
103
  }
104
  }
105
 
@@ -113,8 +114,8 @@ class UpdraftPlus_BackupModule_googledrive {
113
  // Do we have an access token?
114
  if ( !$access_token = $this->access_token( UpdraftPlus_Options::get_updraft_option('updraft_googledrive_token'), UpdraftPlus_Options::get_updraft_option('updraft_googledrive_clientid'), UpdraftPlus_Options::get_updraft_option('updraft_googledrive_secret') )) {
115
  $updraftplus->log('ERROR: Have not yet obtained an access token from Google (has the user authorised?)');
116
- $updraftplus->error('Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive.');
117
- return new WP_Error( "no_access_token", "Have not yet obtained an access token from Google (has the user authorised?");
118
  }
119
 
120
  $this->gdocs_access_token = $access_token;
@@ -131,7 +132,7 @@ class UpdraftPlus_BackupModule_googledrive {
131
  $updraftplus->uploaded_file($file, $id);
132
  } else {
133
  $updraftplus->log("ERROR: $file_name: Failed to upload to Google Drive" );
134
- $updraftplus->error("$file_name: Failed to upload to Google Drive" );
135
  }
136
  }
137
  $updraftplus->prune_retained_backups("googledrive", $this, null);
@@ -185,7 +186,7 @@ class UpdraftPlus_BackupModule_googledrive {
185
  $updraftplus->log("GoogleDrive upload: an error occurred");
186
  foreach ($location->get_error_messages() as $msg) {
187
  $updraftplus->log("Error details: ".$msg);
188
- $updraftplus->error($msg);
189
  }
190
  return false;
191
  }
@@ -221,7 +222,7 @@ class UpdraftPlus_BackupModule_googledrive {
221
 
222
  if ( is_wp_error( $res ) || $res !== true) {
223
  $updraftplus->log( "An error occurred during GoogleDrive upload (2)" );
224
- $updraftplus->error( "An error occurred during GoogleDrive upload (see log for more details" );
225
  if (is_wp_error( $res )) {
226
  foreach ($res->get_error_messages() as $msg) $updraftplus->log($msg);
227
  }
@@ -250,7 +251,7 @@ class UpdraftPlus_BackupModule_googledrive {
250
 
251
  // Do we have an access token?
252
  if ( !$access_token = $this->access_token( UpdraftPlus_Options::get_updraft_option('updraft_googledrive_token'), UpdraftPlus_Options::get_updraft_option('updraft_googledrive_clientid'), UpdraftPlus_Options::get_updraft_option('updraft_googledrive_secret') )) {
253
- $updraftplus->error('Have not yet obtained an access token from Google (has the user authorised?)');
254
  return false;
255
  }
256
 
@@ -262,12 +263,12 @@ class UpdraftPlus_BackupModule_googledrive {
262
 
263
  $ids = UpdraftPlus_Options::get_updraft_option('updraft_file_ids', array());
264
  if (!isset($ids[$file])) {
265
- $updraftplus->error("Google Drive error: $file: could not download: could not find a record of the Google Drive file ID for this file");
266
  return;
267
  } else {
268
  $content_link = $gdocs_object->get_content_link( $ids[$file], $file );
269
  if (is_wp_error($content_link)) {
270
- $updraftplus->error("Could not find $file in order to download it (id: ".$ids[$file].")");
271
  foreach ($content_link->get_error_messages() as $msg) $updraftplus->error($msg);
272
  return false;
273
  }
@@ -279,7 +280,7 @@ class UpdraftPlus_BackupModule_googledrive {
279
  if (filesize($download_to) > 0) {
280
  return true;
281
  } else {
282
- $updraftplus->error("Google Drive error: zero-size file was downloaded");
283
  return false;
284
  }
285
 
@@ -297,7 +298,7 @@ class UpdraftPlus_BackupModule_googledrive {
297
  if ( ! $this->is_gdocs($this->gdocs) ) {
298
  if ( UpdraftPlus_Options::get_updraft_option('updraft_googledrive_token') == "" || UpdraftPlus_Options::get_updraft_option('updraft_googledrive_clientid') == "" || UpdraftPlus_Options::get_updraft_option('updraft_googledrive_secret') == "" ) {
299
  $updraftplus->log("GoogleDrive: this account is not authorised");
300
- return new WP_Error( "not_authorized", "Account is not authorized." );
301
  }
302
 
303
  if ( is_wp_error( $this->gdocs_access_token ) ) return $access_token;
@@ -321,40 +322,40 @@ class UpdraftPlus_BackupModule_googledrive {
321
  public static function config_print() {
322
  ?>
323
  <tr class="updraftplusmethod googledrive">
324
- <td>Google Drive:</td>
325
  <td>
326
- <img src="https://developers.google.com/drive/images/drive_logo.png" alt="Google Drive">
327
- <p><em>Google Drive is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your blog is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts.</em></p>
328
  </td>
329
  </tr>
330
  <tr class="updraftplusmethod googledrive">
331
  <th>Google Drive:</th>
332
  <td>
333
- <p><a href="http://updraftplus.com/support/configuring-google-drive-api-access-in-updraftplus/"><strong>For longer help, including screenshots, follow this link. The description below is sufficient for more expert users.</strong></a></p>
334
- <p><a href="https://code.google.com/apis/console/">Follow this link to your Google API Console</a>, and there create a Client ID in the API Access section. Select 'Web Application' as the application type.</p><p>You must add <kbd><?php echo admin_url('options-general.php?page=updraftplus&action=updraftmethod-googledrive-auth'); ?></kbd> as the authorised redirect URI (under &quot;More Options&quot;) when asked. 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 blog.
335
 
336
  <?php
337
- if (!class_exists('SimpleXMLElement')) { echo " <b>WARNING:</b> You do not have the SimpleXMLElement installed. Google Drive backups will <b>not</b> work until you do."; }
338
  ?>
339
  </p>
340
  </td>
341
  </tr>
342
 
343
  <tr class="updraftplusmethod googledrive">
344
- <th>Google Drive Client ID:</th>
345
- <td><input type="text" autocomplete="off" style="width:352px" name="updraft_googledrive_clientid" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_googledrive_clientid')) ?>" /><br><em>If Google later shows you the message &quot;invalid_client&quot;, then you did not enter a valid client ID here.</em></td>
346
  </tr>
347
  <tr class="updraftplusmethod googledrive">
348
- <th>Google Drive Client Secret:</th>
349
  <td><input type="text" style="width:352px" name="updraft_googledrive_secret" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_googledrive_secret')); ?>" /></td>
350
  </tr>
351
  <tr class="updraftplusmethod googledrive">
352
- <th>Google Drive Folder ID:</th>
353
- <td><input type="text" style="width:352px" name="updraft_googledrive_remotepath" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_googledrive_remotepath')); ?>" /> <em><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)</em></td>
354
  </tr>
355
  <tr class="updraftplusmethod googledrive">
356
- <th>Authenticate with Google:</th>
357
- <td><p><?php if (UpdraftPlus_Options::get_updraft_option('updraft_googledrive_token') != "") echo "<strong>(You appear to be already authenticated,</strong> though you can authenticate again to refresh your access if you've had a problem).</strong>"; ?> <a href="options-general.php?page=updraftplus&action=updraftmethod-googledrive-auth&updraftplus_googleauth=doit"><strong>After</strong> you have saved your settings (by clicking &quot;Save Changes&quot; below), then come back here once and click this link to complete authentication with Google.</a>
358
  </p>
359
  </td>
360
  </tr>
91
  $json_values = json_decode( $result['body'], true );
92
  if ( isset( $json_values['refresh_token'] ) ) {
93
  UpdraftPlus_Options::update_updraft_option('updraft_googledrive_token', $json_values['refresh_token']); // Save token
94
+ header('Location: '.admin_url('options-general.php?page=updraftplus&message='.__('Success','updraftplus').' '.sprintf(__('you have authenticated your %s account','updraftplus'),__('Google Drive','updraftplus'))));
95
+
96
  }
97
  else {
98
  header('Location: '.admin_url('options-general.php?page=updraftplus&error=' . __( '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.', 'updraftplus' ) ) );
100
  }
101
  }
102
  else {
103
+ header('Location: '.admin_url('options-general.php?page=updraftplus&error=' . __( 'Authorization failed', 'updraftplus' ) ) );
104
  }
105
  }
106
 
114
  // Do we have an access token?
115
  if ( !$access_token = $this->access_token( UpdraftPlus_Options::get_updraft_option('updraft_googledrive_token'), UpdraftPlus_Options::get_updraft_option('updraft_googledrive_clientid'), UpdraftPlus_Options::get_updraft_option('updraft_googledrive_secret') )) {
116
  $updraftplus->log('ERROR: Have not yet obtained an access token from Google (has the user authorised?)');
117
+ $updraftplus->error(__('Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Drive.','updraftplus'));
118
+ return new WP_Error( "no_access_token", __("Have not yet obtained an access token from Google (has the user authorised?)",'updraftplus'));
119
  }
120
 
121
  $this->gdocs_access_token = $access_token;
132
  $updraftplus->uploaded_file($file, $id);
133
  } else {
134
  $updraftplus->log("ERROR: $file_name: Failed to upload to Google Drive" );
135
+ $updraftplus->error("$file_name: ".sprintf(__('Failed to upload to %s','updraftplus'),'Google Drive'));
136
  }
137
  }
138
  $updraftplus->prune_retained_backups("googledrive", $this, null);
186
  $updraftplus->log("GoogleDrive upload: an error occurred");
187
  foreach ($location->get_error_messages() as $msg) {
188
  $updraftplus->log("Error details: ".$msg);
189
+ $updraftplus->error(__('Error','updraftplus').': '.$msg);
190
  }
191
  return false;
192
  }
222
 
223
  if ( is_wp_error( $res ) || $res !== true) {
224
  $updraftplus->log( "An error occurred during GoogleDrive upload (2)" );
225
+ $updraftplus->error(__("An error occurred during GoogleDrive upload (see log for more details)",'') );
226
  if (is_wp_error( $res )) {
227
  foreach ($res->get_error_messages() as $msg) $updraftplus->log($msg);
228
  }
251
 
252
  // Do we have an access token?
253
  if ( !$access_token = $this->access_token( UpdraftPlus_Options::get_updraft_option('updraft_googledrive_token'), UpdraftPlus_Options::get_updraft_option('updraft_googledrive_clientid'), UpdraftPlus_Options::get_updraft_option('updraft_googledrive_secret') )) {
254
+ $updraftplus->error(__('Have not yet obtained an access token from Google (has the user authorised?)', 'updraftplus'));
255
  return false;
256
  }
257
 
263
 
264
  $ids = UpdraftPlus_Options::get_updraft_option('updraft_file_ids', array());
265
  if (!isset($ids[$file])) {
266
+ $updraftplus->error(sprintf(__("Google Drive error: %d: could not download: could not find a record of the Google Drive file ID for this file",'updraftplus'),$file));
267
  return;
268
  } else {
269
  $content_link = $gdocs_object->get_content_link( $ids[$file], $file );
270
  if (is_wp_error($content_link)) {
271
+ $updraftplus->error(sprintf(__("Could not find %s in order to download it", 'updraftplus'),$file)." (id: ".$ids[$file].")");
272
  foreach ($content_link->get_error_messages() as $msg) $updraftplus->error($msg);
273
  return false;
274
  }
280
  if (filesize($download_to) > 0) {
281
  return true;
282
  } else {
283
+ $updraftplus->error(__("Google Drive ",'updraftplus').__('error: zero-size file was downloaded','updraftplus'));
284
  return false;
285
  }
286
 
298
  if ( ! $this->is_gdocs($this->gdocs) ) {
299
  if ( UpdraftPlus_Options::get_updraft_option('updraft_googledrive_token') == "" || UpdraftPlus_Options::get_updraft_option('updraft_googledrive_clientid') == "" || UpdraftPlus_Options::get_updraft_option('updraft_googledrive_secret') == "" ) {
300
  $updraftplus->log("GoogleDrive: this account is not authorised");
301
+ return new WP_Error( "not_authorized", __("Account is not authorized.",'updraftplus') );
302
  }
303
 
304
  if ( is_wp_error( $this->gdocs_access_token ) ) return $access_token;
322
  public static function config_print() {
323
  ?>
324
  <tr class="updraftplusmethod googledrive">
325
+ <td><?php _e('Google Drive','updraftplus');?>:</td>
326
  <td>
327
+ <img src="https://developers.google.com/drive/images/drive_logo.png" alt="<?php _e('Google Drive','updraftplus');?>">
328
+ <p><em><?php printf(__('%s is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your blog is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts.','updraftplus'),'Google Drive');?></em></p>
329
  </td>
330
  </tr>
331
  <tr class="updraftplusmethod googledrive">
332
  <th>Google Drive:</th>
333
  <td>
334
+ <p><a href="http://updraftplus.com/support/configuring-google-drive-api-access-in-updraftplus/"><strong><?php _e('For longer help, including screenshots, follow this link. The description below is sufficient for more expert users.','updraftplus');?></strong></a></p>
335
+ <p><a href="https://code.google.com/apis/console/"><?php _e('Follow this link to your Google API Console, and there create a Client ID in the API Access section.','updraftplus');?></a> <?php _e("Select 'Web Application' as the application type.",'updraftplus');?></p><p><?php echo htmlspecialchars(__('You must add the following as the authorised redirect URI (under "More Options") when asked','updraftplus'));?>: <kbd><?php echo admin_url('options-general.php?page=updraftplus&action=updraftmethod-googledrive-auth'); ?></kbd> <?php _e('N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your client ID; you must create a new one from your Google API console for each blog.','updraftplus');?>
336
 
337
  <?php
338
+ if (!class_exists('SimpleXMLElement')) { echo "<b>",__('Warning','updraftplus').':</b> '.__("You do not have the SimpleXMLElement installed. Google Drive backups will <b>not</b> work until you do.",'updraftplus'); }
339
  ?>
340
  </p>
341
  </td>
342
  </tr>
343
 
344
  <tr class="updraftplusmethod googledrive">
345
+ <th><?php echo __('Google Drive','updraftplus').' '.__('Client ID','updraftplus'); ?>:</th>
346
+ <td><input type="text" autocomplete="off" style="width:352px" name="updraft_googledrive_clientid" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_googledrive_clientid')) ?>" /><br><em><?php _e('If Google later shows you the message "invalid_client", then you did not enter a valid client ID here.','updraftplus');?></em></td>
347
  </tr>
348
  <tr class="updraftplusmethod googledrive">
349
+ <th><?php echo __('Google Drive','updraftplus').' '.__('Client Secret','updraftplus'); ?>:</th>
350
  <td><input type="text" style="width:352px" name="updraft_googledrive_secret" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_googledrive_secret')); ?>" /></td>
351
  </tr>
352
  <tr class="updraftplusmethod googledrive">
353
+ <th><?php echo __('Google Drive','updraftplus').' '.__('Folder ID','updraftplus'); ?>::</th>
354
+ <td><input type="text" style="width:352px" name="updraft_googledrive_remotepath" value="<?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_googledrive_remotepath')); ?>" /> <em><?php _e("<strong>This is NOT a folder name</strong>. To get a folder's ID navigate to that folder in Google Drive in your web browser and copy the ID from your browser's address bar. It is the part that comes after <kbd>#folders/.</kbd> Leave empty to use your root folder)",'updraftplus');?></em></td>
355
  </tr>
356
  <tr class="updraftplusmethod googledrive">
357
+ <th><?php _e('Authenticate with Google');?>:</th>
358
+ <td><p><?php if (UpdraftPlus_Options::get_updraft_option('updraft_googledrive_token') != "") echo "<strong>(You appear to be already authenticated,</strong> though you can authenticate again to refresh your access if you've had a problem).</strong>"; ?> <a href="options-general.php?page=updraftplus&action=updraftmethod-googledrive-auth&updraftplus_googleauth=doit"><?php print __('<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.','updraftplus');?></a>
359
  </p>
360
  </td>
361
  </tr>
methods/s3.php CHANGED
@@ -74,7 +74,7 @@ class UpdraftPlus_BackupModule_s3 {
74
  if ($chunks < 2) {
75
  if (!$s3->putObjectFile($fullpath, $bucket_name, $filepath)) {
76
  $updraftplus->log("S3 regular upload: failed ($fullpath)");
77
- $updraftplus->error("S3 Error: Failed to upload $file.");
78
  } else {
79
  $updraftplus->log("S3 regular upload: success");
80
  $updraftplus->uploaded_file($file);
@@ -95,7 +95,7 @@ class UpdraftPlus_BackupModule_s3 {
95
 
96
  if (empty($uploadId)) {
97
  $updraftplus->log("S3 upload: failed: could not get uploadId for multipart upload ($filepath)");
98
- $updraftplus->error("S3 upload: getting uploadID for multipart upload failed - see log file for more details");
99
  continue;
100
  } else {
101
  $updraftplus->log("S3 chunked upload: got multipart ID: $uploadId");
@@ -127,7 +127,7 @@ class UpdraftPlus_BackupModule_s3 {
127
  $successes++;
128
  } else {
129
  $updraftplus->log("S3 chunk $i: upload failed");
130
- $updraftplus->error("S3 chunk $i: upload failed");
131
  }
132
  }
133
  }
@@ -140,12 +140,12 @@ class UpdraftPlus_BackupModule_s3 {
140
  $updraftplus->log("S3 upload ($key): re-assembly succeeded");
141
  $updraftplus->uploaded_file($file);
142
  } else {
143
- $updraftplus->log("S3 upload ($key): re-assembly failed");
144
- $updraftplus->error("S3 upload ($key): re-assembly failed ($file)");
145
  }
146
  } catch (Exception $e) {
147
  $updraftplus->log("S3 re-assembly error ($key): ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')');
148
- $updraftplus->error("S3 re-assembly error ($key): ".$e->getMessage().' (see log file for more)');
149
  }
150
  // Remember to unset, as the deletion code later reuses the object
151
  $s3->setExceptions(false);
@@ -157,7 +157,7 @@ class UpdraftPlus_BackupModule_s3 {
157
  $updraftplus->prune_retained_backups('s3', $this, array('s3_object' => $s3, 's3_orig_bucket_name' => $orig_bucket_name));
158
  } else {
159
  $updraftplus->log("S3 Error: Failed to create bucket $bucket_name.");
160
- $updraftplus->error("S3 Error: Failed to create bucket $bucket_name. Check your permissions and credentials.");
161
  }
162
  }
163
 
@@ -210,11 +210,11 @@ class UpdraftPlus_BackupModule_s3 {
210
  $fullpath = $updraftplus->backups_dir_location().'/'.$file;
211
  if (!$s3->getObject($bucket_name, $bucket_path.$file, $fullpath, true)) {
212
  $updraftplus->log("S3 Error: Failed to download $file. Check your permissions and credentials.");
213
- $updraftplus->error("S3 Error: Failed to download $file. Check your permissions and credentials.");
214
  }
215
  } else {
216
  $updraftplus->log("S3 Error: Failed to access bucket $bucket_name. Check your permissions and credentials.");
217
- $updraftplus->error("S3 Error: Failed to access bucket $bucket_name. Check your permissions and credentials.");
218
  }
219
 
220
  }
@@ -243,28 +243,28 @@ class UpdraftPlus_BackupModule_s3 {
243
  ?>
244
  <tr class="updraftplusmethod s3">
245
  <td></td>
246
- <td><img src="https://d36cz9buwru1tt.cloudfront.net/Powered-by-Amazon-Web-Services.jpg" alt="Amazon Web Services"><p><em>Amazon S3 is a great choice, because UpdraftPlus supports chunked uploads - no matter how big your blog is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts.</em></p></td>
247
  </tr>
248
  <tr class="updraftplusmethod s3">
249
  <th></th>
250
  <td>
251
- <p>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.</p>
252
  </td></tr>
253
  <tr class="updraftplusmethod s3">
254
- <th>S3 access key:</th>
255
  <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>
256
  </tr>
257
  <tr class="updraftplusmethod s3">
258
- <th>S3 secret key:</th>
259
  <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>
260
  </tr>
261
  <tr class="updraftplusmethod s3">
262
- <th>S3 location:</th>
263
  <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>
264
  </tr>
265
  <tr class="updraftplusmethod s3">
266
  <th></th>
267
- <td><p><button id="updraft-s3-test" type="button" class="button-primary" style="font-size:18px !important">Test S3 Settings</button></p></td>
268
  </tr>
269
  <?php
270
  }
@@ -272,11 +272,11 @@ class UpdraftPlus_BackupModule_s3 {
272
  public static function credentials_test() {
273
 
274
  if (empty($_POST['apikey'])) {
275
- echo "Failure: No API key was given.";
276
  return;
277
  }
278
  if (empty($_POST['apisecret'])) {
279
- echo "Failure: No API secret was given.";
280
  return;
281
  }
282
 
@@ -293,7 +293,7 @@ class UpdraftPlus_BackupModule_s3 {
293
  }
294
 
295
  if (empty($bucket)) {
296
- echo "Failure: No bucket details were given.";
297
  return;
298
  }
299
 
@@ -303,15 +303,17 @@ class UpdraftPlus_BackupModule_s3 {
303
  $location = @$s3->getBucketLocation($bucket);
304
  if ($location) {
305
  $bucket_exists = true;
306
- $bucket_verb = "accessed (Amazon region: $location)";
 
307
  $bucket_region = $location;
308
  } else {
309
  $try_to_create_bucket = @$s3->putBucket($bucket, S3::ACL_PRIVATE);
310
  if ($try_to_create_bucket) {
311
- $bucket_verb = 'created';
 
312
  $bucket_exists = true;
313
  } else {
314
- echo "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).";
315
  }
316
  }
317
 
@@ -319,9 +321,9 @@ class UpdraftPlus_BackupModule_s3 {
319
  $try_file = md5(rand());
320
  self::set_endpoint($s3, $location);
321
  if (!$s3->putObjectString($try_file, $bucket, $path.$try_file)) {
322
- echo "Failure: We successfully $bucket_verb the bucket, but the attempt to create a file in it failed.";
323
  } else {
324
- echo "Success: we $bucket_verb the bucket, and were able to create files within it.";
325
  @$s3->deleteObject($bucket, $path.$try_file);
326
  }
327
  }
74
  if ($chunks < 2) {
75
  if (!$s3->putObjectFile($fullpath, $bucket_name, $filepath)) {
76
  $updraftplus->log("S3 regular upload: failed ($fullpath)");
77
+ $updraftplus->error("$file: ".sprintf(__('%s Error: Failed to upload','updraftplus'),'S3'));
78
  } else {
79
  $updraftplus->log("S3 regular upload: success");
80
  $updraftplus->uploaded_file($file);
95
 
96
  if (empty($uploadId)) {
97
  $updraftplus->log("S3 upload: failed: could not get uploadId for multipart upload ($filepath)");
98
+ $updraftplus->error(__("S3 upload: getting uploadID for multipart upload failed - see log file for more details",'updraftplus'));
99
  continue;
100
  } else {
101
  $updraftplus->log("S3 chunked upload: got multipart ID: $uploadId");
127
  $successes++;
128
  } else {
129
  $updraftplus->log("S3 chunk $i: upload failed");
130
+ $updraftplus->error(sprintf(__("S3 chunk %s: upload failed",'updraftplus'),$i));
131
  }
132
  }
133
  }
140
  $updraftplus->log("S3 upload ($key): re-assembly succeeded");
141
  $updraftplus->uploaded_file($file);
142
  } else {
143
+ $updraftplus->log("S3 upload ($key): re-assembly failed ($file)");
144
+ $updraftplus->error(sprintf(__('S3 upload (%s): re-assembly failed (see log for more details)','updraftplus'),$key));
145
  }
146
  } catch (Exception $e) {
147
  $updraftplus->log("S3 re-assembly error ($key): ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')');
148
+ $updraftplus->error($e->getMessage().": ".sprint(__('S3 re-assembly error (%s): (see log file for more)','updraftplus'),$e->getMessage()));
149
  }
150
  // Remember to unset, as the deletion code later reuses the object
151
  $s3->setExceptions(false);
157
  $updraftplus->prune_retained_backups('s3', $this, array('s3_object' => $s3, 's3_orig_bucket_name' => $orig_bucket_name));
158
  } else {
159
  $updraftplus->log("S3 Error: Failed to create bucket $bucket_name.");
160
+ $updraftplus->error(sprintf(__('S3 Error: Failed to create bucket %s. Check your permissions and credentials.','updraftplus'),$bucket_name));
161
  }
162
  }
163
 
210
  $fullpath = $updraftplus->backups_dir_location().'/'.$file;
211
  if (!$s3->getObject($bucket_name, $bucket_path.$file, $fullpath, true)) {
212
  $updraftplus->log("S3 Error: Failed to download $file. Check your permissions and credentials.");
213
+ $updraftplus->error(sprintf(__('S3 Error: Failed to download %s. Check your permissions and credentials.','updraftplus'),$file));
214
  }
215
  } else {
216
  $updraftplus->log("S3 Error: Failed to access bucket $bucket_name. Check your permissions and credentials.");
217
+ $updraftplus->error(sprintf(__('S3 Error: Failed to access bucket %s. Check your permissions and credentials.','updraftplus'),$bucket_name));
218
  }
219
 
220
  }
243
  ?>
244
  <tr class="updraftplusmethod s3">
245
  <td></td>
246
+ <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 blog is, UpdraftPlus can upload it a little at a time, and not get thwarted by timeouts.','updraftplus'),'Amazon S3');?></em></p></td>
247
  </tr>
248
  <tr class="updraftplusmethod s3">
249
  <th></th>
250
  <td>
251
+ <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');?></p>
252
  </td></tr>
253
  <tr class="updraftplusmethod s3">
254
+ <th><?php _e('S3 access key','updraftplus');?>:</th>
255
  <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>
256
  </tr>
257
  <tr class="updraftplusmethod s3">
258
+ <th><?php _e('S3 secret key','updraftplus');?>:</th>
259
  <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>
260
  </tr>
261
  <tr class="updraftplusmethod s3">
262
+ <th><?php _e('S3 location','updraftplus');?>::</th>
263
  <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>
264
  </tr>
265
  <tr class="updraftplusmethod s3">
266
  <th></th>
267
+ <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>
268
  </tr>
269
  <?php
270
  }
272
  public static function credentials_test() {
273
 
274
  if (empty($_POST['apikey'])) {
275
+ printf(__("Failure: No %s was given.",'updraftplus'),__('API key','updraftplus'));
276
  return;
277
  }
278
  if (empty($_POST['apisecret'])) {
279
+ printf(__("Failure: No %s was given.",'updraftplus'),__('API secret','updraftplus'));
280
  return;
281
  }
282
 
293
  }
294
 
295
  if (empty($bucket)) {
296
+ _e("Failure: No bucket details were given.",'updraftplus');
297
  return;
298
  }
299
 
303
  $location = @$s3->getBucketLocation($bucket);
304
  if ($location) {
305
  $bucket_exists = true;
306
+ $bucket_verb =__('Amazon region','updraftplus').": $location: ";
307
+ // $bucket_verb = "accessed (".__('Amazon region','updraftplus').": $location)";
308
  $bucket_region = $location;
309
  } else {
310
  $try_to_create_bucket = @$s3->putBucket($bucket, S3::ACL_PRIVATE);
311
  if ($try_to_create_bucket) {
312
+ // $bucket_verb = 'created';
313
+ $bucket_verb = '';
314
  $bucket_exists = true;
315
  } else {
316
+ _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');
317
  }
318
  }
319
 
321
  $try_file = md5(rand());
322
  self::set_endpoint($s3, $location);
323
  if (!$s3->putObjectString($try_file, $bucket, $path.$try_file)) {
324
+ echo __('Failure','updraftplus').": ${bucket_verb}".__('We successfully accessed the bucket, but the attempt to create a file in it failed.','updraftplus');
325
  } else {
326
+ echo __('Success','updraftplus').": ${bucket_verb}".__('We accessed the bucket, and were able to create files within it.','updraftplus');
327
  @$s3->deleteObject($bucket, $path.$try_file);
328
  }
329
  }
methods/sftp.php CHANGED
@@ -10,7 +10,7 @@ class UpdraftPlus_BackupModule_sftp {
10
  $addon_exists = apply_filters('updraft_sftp_exists', 'no');
11
  if ($addon_exists !== 'yes') {
12
  $updraftplus->log('You do not have the UpdraftPlus SFTP add-on installed - get it from http://updraftplus.com/shop/');
13
- $updraftplus->error('You do not have the UpdraftPlus SFTP add-on installed - get it from http://updraftplus.com/shop/');
14
  return false;
15
  }
16
 
@@ -31,7 +31,7 @@ class UpdraftPlus_BackupModule_sftp {
31
  $addon_exists = apply_filters('updraft_sftp_exists', 'no');
32
  if ($addon_exists !== 'yes') {
33
  $updraftplus->log('You do not have the UpdraftPlus SFTP add-on installed - get it from http://updraftplus.com/shop/');
34
- $updraftplus->error('You do not have the UpdraftPlus SFTP add-on installed - get it from http://updraftplus.com/shop/');
35
  return false;
36
  }
37
 
@@ -47,7 +47,7 @@ class UpdraftPlus_BackupModule_sftp {
47
  $addon_exists = apply_filters('updraft_sftp_exists', 'no');
48
  if ($addon_exists !== 'yes') {
49
  $updraftplus->log('You do not have the UpdraftPlus SFTP add-on installed - get it from http://updraftplus.com/shop/');
50
- $updraftplus->error('You do not have the UpdraftPlus SFTP add-on installed - get it from http://updraftplus.com/shop/');
51
  return false;
52
  }
53
 
@@ -60,10 +60,12 @@ class UpdraftPlus_BackupModule_sftp {
60
  // Note that logging is not available from this context; it will do nothing.
61
  function config_print() {
62
 
 
 
63
  $default = <<<ENDHERE
64
  <tr class="updraftplusmethod sftp">
65
  <th>SFTP:</th>
66
- <td>SFTP support is available as an add-on - <a href="http://updraftplus.com/shop/sftp/">follow this link to get it.</a></td>
67
  </tr>
68
  ENDHERE;
69
 
@@ -77,7 +79,6 @@ ENDHERE;
77
  public static function credentials_test() {
78
 
79
  do_action('updraft_sftp_credentials_test');
80
-
81
  die;
82
 
83
  }
10
  $addon_exists = apply_filters('updraft_sftp_exists', 'no');
11
  if ($addon_exists !== 'yes') {
12
  $updraftplus->log('You do not have the UpdraftPlus SFTP add-on installed - get it from http://updraftplus.com/shop/');
13
+ $updraftplus->error(sprintf(__('You do not have the UpdraftPlus %s add-on installed - get it from %s','updraftplus'),'SFTP','http://updraftplus.com/shop/'));
14
  return false;
15
  }
16
 
31
  $addon_exists = apply_filters('updraft_sftp_exists', 'no');
32
  if ($addon_exists !== 'yes') {
33
  $updraftplus->log('You do not have the UpdraftPlus SFTP add-on installed - get it from http://updraftplus.com/shop/');
34
+ $updraftplus->error(sprintf(__('You do not have the UpdraftPlus %s add-on installed - get it from %s','updraftplus'),'SFTP','http://updraftplus.com/shop/'));
35
  return false;
36
  }
37
 
47
  $addon_exists = apply_filters('updraft_sftp_exists', 'no');
48
  if ($addon_exists !== 'yes') {
49
  $updraftplus->log('You do not have the UpdraftPlus SFTP add-on installed - get it from http://updraftplus.com/shop/');
50
+ $updraftplus->error(sprintf(__('You do not have the UpdraftPlus %s add-on installed - get it from %s','updraftplus'),'SFTP','http://updraftplus.com/shop/'));
51
  return false;
52
  }
53
 
60
  // Note that logging is not available from this context; it will do nothing.
61
  function config_print() {
62
 
63
+ $link = sprintf(__('%s support is available as an add-on','updraftplus'),'SFTP').' - <a href="http://updraftplus.com/shop/sftp/">'.__('follow this link to get it','updraftplus');
64
+
65
  $default = <<<ENDHERE
66
  <tr class="updraftplusmethod sftp">
67
  <th>SFTP:</th>
68
+ <td>$link</a></td>
69
  </tr>
70
  ENDHERE;
71
 
79
  public static function credentials_test() {
80
 
81
  do_action('updraft_sftp_credentials_test');
 
82
  die;
83
 
84
  }
methods/webdav.php CHANGED
@@ -10,7 +10,7 @@ class UpdraftPlus_BackupModule_webdav {
10
  $addon_exists = apply_filters('updraft_webdav_exists', 'no');
11
  if ($addon_exists !== 'yes') {
12
  $updraftplus->log('You do not have the UpdraftPlus WebDAV add-on installed - get it from http://updraftplus.com/shop/');
13
- $updraftplus->error('You do not have the UpdraftPlus WebDAV add-on installed - get it from http://updraftplus.com/shop/');
14
  return false;
15
  }
16
 
@@ -31,7 +31,7 @@ class UpdraftPlus_BackupModule_webdav {
31
  $addon_exists = apply_filters('updraft_webdav_exists', 'no');
32
  if ($addon_exists !== 'yes') {
33
  $updraftplus->log('You do not have the UpdraftPlus WebDAV add-on installed - get it from http://updraftplus.com/shop/');
34
- $updraftplus->error('You do not have the UpdraftPlus WebDAV add-on installed - get it from http://updraftplus.com/shop/');
35
  return false;
36
  }
37
 
@@ -47,7 +47,7 @@ class UpdraftPlus_BackupModule_webdav {
47
  $addon_exists = apply_filters('updraft_webdav_exists', 'no');
48
  if ($addon_exists !== 'yes') {
49
  $updraftplus->log('You do not have the UpdraftPlus WebDAV add-on installed - get it from http://updraftplus.com/shop/');
50
- $updraftplus->error('You do not have the UpdraftPlus WebDAV add-on installed - get it from http://updraftplus.com/shop/');
51
  return false;
52
  }
53
 
@@ -60,10 +60,12 @@ class UpdraftPlus_BackupModule_webdav {
60
  // Note that logging is not available from this context; it will do nothing.
61
  function config_print() {
62
 
 
 
63
  $default = <<<ENDHERE
64
  <tr class="updraftplusmethod webdav">
65
  <th>WebDAV:</th>
66
- <td>WebDAV support is available as an add-on - <a href="http://updraftplus.com/shop/webdav/">follow this link to get it.</a></td>
67
  </tr>
68
  ENDHERE;
69
 
10
  $addon_exists = apply_filters('updraft_webdav_exists', 'no');
11
  if ($addon_exists !== 'yes') {
12
  $updraftplus->log('You do not have the UpdraftPlus WebDAV add-on installed - get it from http://updraftplus.com/shop/');
13
+ $updraftplus->error(sprintf(__('You do not have the UpdraftPlus %s add-on installed - get it from %s','updraftplus'),'WebDAV','http://updraftplus.com/shop/'));
14
  return false;
15
  }
16
 
31
  $addon_exists = apply_filters('updraft_webdav_exists', 'no');
32
  if ($addon_exists !== 'yes') {
33
  $updraftplus->log('You do not have the UpdraftPlus WebDAV add-on installed - get it from http://updraftplus.com/shop/');
34
+ $updraftplus->error(sprintf(__('You do not have the UpdraftPlus %s add-on installed - get it from %s','updraftplus'),'WebDAV','http://updraftplus.com/shop/'));
35
  return false;
36
  }
37
 
47
  $addon_exists = apply_filters('updraft_webdav_exists', 'no');
48
  if ($addon_exists !== 'yes') {
49
  $updraftplus->log('You do not have the UpdraftPlus WebDAV add-on installed - get it from http://updraftplus.com/shop/');
50
+ $updraftplus->error(sprintf(__('You do not have the UpdraftPlus %s add-on installed - get it from %s','updraftplus'),'WebDAV','http://updraftplus.com/shop/'));
51
  return false;
52
  }
53
 
60
  // Note that logging is not available from this context; it will do nothing.
61
  function config_print() {
62
 
63
+ $link = sprintf(__('%s support is available as an add-on','updraftplus'),'WebDAV').' - <a href="http://updraftplus.com/shop/webdav/">'.__('follow this link to get it','updraftplus');
64
+
65
  $default = <<<ENDHERE
66
  <tr class="updraftplusmethod webdav">
67
  <th>WebDAV:</th>
68
+ <td>$link</a></td>
69
  </tr>
70
  ENDHERE;
71
 
options.php CHANGED
@@ -23,7 +23,7 @@ class UpdraftPlus_Options {
23
 
24
  public static function add_admin_pages() {
25
  global $updraftplus;
26
- add_submenu_page('options-general.php', "UpdraftPlus", "UpdraftPlus", "manage_options", "updraftplus", array($updraftplus, "settings_output"));
27
  }
28
 
29
  public static function options_form_begin() {
@@ -74,7 +74,7 @@ class UpdraftPlus_Options {
74
  register_setting('updraft-options-group', 'updraft_starttime_db', array($updraftplus, 'hourminute') );
75
 
76
  global $pagenow;
77
- if (is_multisite() && $pagenow == 'options-general.php') {
78
  add_action('admin_notices', array('UpdraftPlus_Options', 'show_admin_warning_multisite') );
79
  }
80
 
@@ -84,7 +84,7 @@ class UpdraftPlus_Options {
84
 
85
  global $updraftplus;
86
 
87
- $updraftplus->show_admin_warning('<strong>UpdraftPlus warning:</strong> This is a WordPress multi-site (a.k.a. network) installation. <a href="http://updraftplus.com">WordPress Multisite is supported by UpdraftPlus Premium</a>. Non-premium UpdraftPlus does not support multi-site installations securely. <strong>Every</strong> blog admin can both back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) <strong>the entire network</strong>. Unless you are the only blog admin user across the entire network, you should immediately de-activate UpdraftPlus. (This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility).', "error");
88
 
89
  }
90
 
23
 
24
  public static function add_admin_pages() {
25
  global $updraftplus;
26
+ add_submenu_page('options-general.php', 'UpdraftPlus', __('UpdraftPlus Backups','updraftplus'), "manage_options", "updraftplus", array($updraftplus, "settings_output"));
27
  }
28
 
29
  public static function options_form_begin() {
74
  register_setting('updraft-options-group', 'updraft_starttime_db', array($updraftplus, 'hourminute') );
75
 
76
  global $pagenow;
77
+ if (is_multisite() && $pagenow == 'options-general.php' && isset($_REQUEST['page']) && 'updraftplus' == substr($_REQUEST['page'], 0, 11)) {
78
  add_action('admin_notices', array('UpdraftPlus_Options', 'show_admin_warning_multisite') );
79
  }
80
 
84
 
85
  global $updraftplus;
86
 
87
+ $updraftplus->show_admin_warning('<strong>UpdraftPlus warning:</strong> This is a WordPress multi-site (a.k.a. network) installation. <a href="http://updraftplus.com">WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on</a>. Without upgrading, UpdraftPlus allows <strong>every</strong> blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) <strong>the entire network</strong>. (This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility).', "error");
88
 
89
  }
90
 
readme.txt CHANGED
@@ -3,38 +3,35 @@ Contributors: David Anderson
3
  Tags: backup, restore, database, cloud, amazon, s3, dropbox, google drive, ftp, webdav, back up, multisite
4
  Requires at least: 3.2
5
  Tested up to: 3.5.1
6
- Stable tag: 1.4.48
7
  Author URI: http://updraftplus.com
8
  Donate link: http://david.dw-perspective.org.uk/donate
9
  License: GPLv3 or later
10
 
11
  == Upgrade Notice ==
12
- Many tweaks + small bug-fixes: recommended upgraded for all
13
 
14
  == Description ==
15
 
16
  <a href="http://updraftplus.com">UpdraftPlus</a> simplifies backups (and restoration). Backup into the cloud (Amazon S3, Dropbox, Google Drive, FTP, SFTP, WebDAV and email) and restore with a single click. Backups of files and database can have separate schedules.
17
 
18
  * Supports backups to Amazon S3, Dropbox, Google Drive, FTP (including SSL), email, SFTP and WebDAV
19
- * One-click restore
20
  * Backup automatically on a repeating schedule
21
  * Files and databases can have separate schedules
22
  * Failed uploads are automatically resumed/retried
23
  * Select which files to backup (plugins, themes, content, other)
 
24
  * Download backup archives direct from your WordPress dashboard
25
  * Database backups can be encrypted for security
26
  * Debug mode that gives full logging of the backup
27
  * Thousands of users: widely tested and reliable
28
  * Internationalised (translations very welcome - see below)
29
- * Premium/multi-site version and support available - <a href="http://updraftplus.com">http://updraftplus.com</a>
30
 
31
  = Don't Risk Anything Less =
32
 
33
- 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 backing or support? Believe us - writing a reliable backup plugin that works consistently across the huge range of WordPress deployments is hard.
34
-
35
- = Best New WordPress Plugin =
36
-
37
- That's according to WordPress big cheese, Vladimir Prelovac. Check out his weekly chart to see where UpdraftPlus is right now: http://www.prelovac.com/vladimir/wordpress-plugins-rising-stars
38
 
39
  = UpdraftPlus Addons And Premium =
40
 
@@ -48,7 +45,12 @@ UpdraftPlus is written by professional WordPress developers. If your site needs
48
 
49
  = Are you multi-lingual? Can you translate? =
50
 
51
- Are you able to translate UpdraftPlus into another language? UpdraftPlus's code is already internationalized. Just grab the .pot file from <a href="http://plugins.svn.wordpress.org/updraftplus/trunk/languages/updraftplus.pot">http://plugins.svn.wordpress.org/updraftplus/trunk/languages/updraftplus.pot</a>, load it into any application for translating, and sent it to us (contact@updraftplus.com) when done. We will add your name to the 'Notes' page here.
 
 
 
 
 
52
 
53
  = Other support =
54
 
@@ -110,6 +112,24 @@ Thanks for asking - yes, I have. Check out my profile page - http://profiles.wor
110
 
111
  == Changelog ==
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  = 1.4.48 - 03/11/2013 =
114
  * Improve batching on zip creation for sites with very large files
115
  * Unlimited early resumption if zip file creation takes too long
@@ -121,6 +141,7 @@ Thanks for asking - yes, I have. Check out my profile page - http://profiles.wor
121
  * Sort existing backups display by date
122
  * Use WordPress time for creation of filenames
123
  * Fix bug in 1.4.47 which caused problems on new site installs
 
124
 
125
  = 1.4.30 - 03/04/2013 =
126
  * Hooks for WebDAV support via add-on
@@ -343,6 +364,10 @@ Thanks for asking - yes, I have. Check out my profile page - http://profiles.wor
343
 
344
  1. Configuration page
345
 
 
 
 
 
346
  We recognise and thank the following for code and/or libraries used and/or modified under the terms of their licences:
347
  * UpdraftPlus is based on the original Updraft by Paul Kehrer (Twitter: http://twitter.com/reaperhulk, Blog: http://langui.sh)
348
  * Sorin Iclanzan, http://profiles.wordpress.org/hel.io/
3
  Tags: backup, restore, database, cloud, amazon, s3, dropbox, google drive, ftp, webdav, back up, multisite
4
  Requires at least: 3.2
5
  Tested up to: 3.5.1
6
+ Stable tag: 1.5.5
7
  Author URI: http://updraftplus.com
8
  Donate link: http://david.dw-perspective.org.uk/donate
9
  License: GPLv3 or later
10
 
11
  == Upgrade Notice ==
12
+ New features: selective restoration, importing remote backups; plus many tweaks, optimisations + small bug-fixes: recommended upgrade for all
13
 
14
  == Description ==
15
 
16
  <a href="http://updraftplus.com">UpdraftPlus</a> simplifies backups (and restoration). Backup into the cloud (Amazon S3, Dropbox, Google Drive, FTP, SFTP, WebDAV and email) and restore with a single click. Backups of files and database can have separate schedules.
17
 
18
  * Supports backups to Amazon S3, Dropbox, Google Drive, FTP (including SSL), email, SFTP and WebDAV
19
+ * Quick restore
20
  * Backup automatically on a repeating schedule
21
  * Files and databases can have separate schedules
22
  * Failed uploads are automatically resumed/retried
23
  * Select which files to backup (plugins, themes, content, other)
24
+ * Select which components of a backup to restore
25
  * Download backup archives direct from your WordPress dashboard
26
  * Database backups can be encrypted for security
27
  * Debug mode that gives full logging of the backup
28
  * Thousands of users: widely tested and reliable
29
  * Internationalised (translations very welcome - see below)
30
+ * Premium version and support available - <a href="http://updraftplus.com">http://updraftplus.com</a>
31
 
32
  = Don't Risk Anything Less =
33
 
34
+ 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.
 
 
 
 
35
 
36
  = UpdraftPlus Addons And Premium =
37
 
45
 
46
  = Are you multi-lingual? Can you translate? =
47
 
48
+ 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).
49
+
50
+ Many thanks to the existing translators:
51
+
52
+ * Deutsch / German (de_DE): Marcel Herrguth - mherrguth@mrgeneration.de
53
+ * Magyar / Hungarian (hu_HU): Szépe Viktor - http://www.szepe.net
54
 
55
  = Other support =
56
 
112
 
113
  == Changelog ==
114
 
115
+ = 1.5.5 - 2013/03/26 =
116
+ * Now translatable - .pot file included (translators welcome!)
117
+ * When restoring, you can now select only some components to restore
118
+ * History of previous backups can re-scan to find backups manually imported (e.g. via FTP) (trunk version has drag-and-drop import)
119
+ * Multisite add-on (http://updraftplus.com/shop/) now stores/restores blogs and mu-plugins separately
120
+ * Display UpdraftPlus's disk space usage
121
+ * Internationalisation hooks in main body of plugin
122
+ * Correctly remove old 'other' directories from a restoration when requested
123
+ * Various layout + niceness fixes upon restoration
124
+ * Prevent deletion of local archives upon failed restoration when there was no cloud storage
125
+ * Various usability tweaks for the admin UI, including showing multisite warning only on UD's pages
126
+ * Fix incorrect restoration (since 1.4.0) of directory-less paths from 'others' zip
127
+ * Fix prevention of Dropbox re-authentication when Dropbox returns 5xx first time (library error)
128
+ * Clear Dropbox credentials if the user explicitly re-authenticates
129
+ * Clean up temporary files left behind by zipArchive::addFile
130
+ * Tweak Dropbox library to work from behind very weird proxies that double-surround the HTTP header
131
+ * Improved help for people with broken schedulers
132
+
133
  = 1.4.48 - 03/11/2013 =
134
  * Improve batching on zip creation for sites with very large files
135
  * Unlimited early resumption if zip file creation takes too long
141
  * Sort existing backups display by date
142
  * Use WordPress time for creation of filenames
143
  * Fix bug in 1.4.47 which caused problems on new site installs
144
+ * Prevent erroneous warning when backup zip (usually uploads) has no files
145
 
146
  = 1.4.30 - 03/04/2013 =
147
  * Hooks for WebDAV support via add-on
364
 
365
  1. Configuration page
366
 
367
+ 2. Restoring from a backup
368
+
369
+ 3. Showing and downloading backup sets
370
+
371
  We recognise and thank the following for code and/or libraries used and/or modified under the terms of their licences:
372
  * UpdraftPlus is based on the original Updraft by Paul Kehrer (Twitter: http://twitter.com/reaperhulk, Blog: http://langui.sh)
373
  * Sorin Iclanzan, http://profiles.wordpress.org/hel.io/
updraftplus.php CHANGED
@@ -4,19 +4,28 @@ Plugin Name: UpdraftPlus - Backup/Restore
4
  Plugin URI: http://updraftplus.com
5
  Description: Backup and restore: your site can be backed up locally or to Amazon S3, Dropbox, Google Drive, (S)FTP, WebDAV & email, on automatic schedules.
6
  Author: UpdraftPlus.Com, DavidAnderson
7
- Version: 1.4.48
8
  Donate link: http://david.dw-perspective.org.uk/donate
9
  License: GPLv3 or later
10
- Author URI: http://wordshell.net
 
11
  */
12
 
13
  /*
14
  TODO - some of these are out of date/done, needs pruning
 
 
 
 
 
 
 
15
  //Allow use of /usr/bin/zip - since this can escape from PHP's memory limit. Can still batch as we do so, in order to monitor/measure progress
16
  //Do an automated test periodically for the success of loop-back connections
17
  //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.
18
  //Change DB encryption to not require whole gzip in memory (twice)
19
  //Add Rackspace, Box.Net, SugarSync and Microsoft Skydrive support??
 
20
  //The restorer has a hard-coded wp-content - fix
21
  //?? On 'backup now', open up a Lightbox, count down 5 seconds, then start examining the log file (if it can be found)
22
  //Should make clear in dashboard what is a non-fatal error (i.e. can be retried) - leads to unnecessary bug reports
@@ -26,6 +35,7 @@ TODO - some of these are out of date/done, needs pruning
26
  // Create a "Want Support?" button/console, that leads them through what is needed, and performs some basic tests...
27
  // Resuming partial (S)FTP uploads
28
  // Translations
 
29
  // Make disk space check more intelligent (currently hard-coded at 35Mb)
30
  // Provide backup/restoration for UpdraftPlus's settings, to allow 'bootstrap' on a fresh WP install - some kind of single-use code which a remote UpdraftPlus can use to authenticate
31
  // Multiple jobs
@@ -134,6 +144,7 @@ class UpdraftPlus {
134
  var $zipfiles_existingfiles;
135
  var $zipfiles_dirbatched;
136
  var $zipfiles_batched;
 
137
 
138
  var $zip_preferpcl = false;
139
 
@@ -163,11 +174,17 @@ class UpdraftPlus {
163
  add_filter('cron_schedules', array($this,'modify_cron_schedules'));
164
  add_filter('plugin_action_links', array($this, 'plugin_action_links'), 10, 2);
165
  add_action('init', array($this, 'handle_url_actions'));
 
166
 
167
  if (defined('UPDRAFTPLUS_PREFERPCLZIP') && UPDRAFTPLUS_PREFERPCLZIP == true) { $this->zip_preferpcl = true; }
168
 
169
  }
170
 
 
 
 
 
 
171
  // Handle actions passed on to method plugins; e.g. Google OAuth 2.0 - ?page=updraftplus&action=updraftmethod-googledrive-auth
172
  // Also handle action=downloadlog
173
  function handle_url_actions() {
@@ -199,7 +216,8 @@ class UpdraftPlus {
199
  if ($handle = opendir($updraft_dir)) {
200
  $now_time=time();
201
  while (false !== ($entry = readdir($handle))) {
202
- if (preg_match('/\.tmp(\.gz)?$/', $entry) && is_file($updraft_dir.'/'.$entry) && $now_time-filemtime($updraft_dir.'/'.$entry)>86400) {
 
203
  $this->log("Deleting old temporary file: $entry");
204
  @unlink($updraft_dir.'/'.$entry);
205
  }
@@ -211,11 +229,11 @@ class UpdraftPlus {
211
  # Adds the settings link under the plugin on the plugin screen.
212
  function plugin_action_links($links, $file) {
213
  if ($file == plugin_basename(__FILE__)){
214
- $settings_link = '<a href="'.site_url().'/wp-admin/options-general.php?page=updraftplus">'.__("Settings", "UpdraftPlus").'</a>';
215
  array_unshift($links, $settings_link);
216
  // $settings_link = '<a href="http://david.dw-perspective.org.uk/donate">'.__("Donate","UpdraftPlus").'</a>';
217
  // array_unshift($links, $settings_link);
218
- $settings_link = '<a href="http://updraftplus.com">'.__("Add-Ons / Pro Support","UpdraftPlus").'</a>';
219
  array_unshift($links, $settings_link);
220
  }
221
  return $links;
@@ -236,7 +254,7 @@ class UpdraftPlus {
236
  // Use append mode in case it already exists
237
  $this->logfile_handle = fopen($this->logfile_name, 'a');
238
  $this->opened_log_time = microtime(true);
239
- $this->log("Opened log file at time: ".date('r'));
240
  global $wp_version;
241
  $logline = "UpdraftPlus: ".$this->version." WP: ".$wp_version." PHP: ".phpversion()." (".php_uname().") max_execution_time: ".@ini_get("max_execution_time")." memory_limit: ".ini_get('memory_limit')." ZipArchive::addFile : ";
242
 
@@ -294,6 +312,39 @@ class UpdraftPlus {
294
  // return $inter;
295
  }
296
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
  function backup_resume($resumption_no, $bnonce) {
298
 
299
  @ignore_user_abort(true);
@@ -330,7 +381,7 @@ class UpdraftPlus {
330
  wp_schedule_single_event($schedule_for, 'updraft_backup_resume', array($next_resumption, $bnonce));
331
  $this->newresumption_scheduled = $schedule_for;
332
  } else {
333
- $this->log("The current run is our tenth attempt - will not schedule a further attempt until we see something useful happening");
334
  }
335
 
336
  // Sanity check
@@ -344,7 +395,7 @@ class UpdraftPlus {
344
 
345
  // This save, if there was something, is then immediately picked up again
346
  if (is_array($backup_array)) {
347
- $this->log("Saving backup status to database (elements: ".count($backup_array).")");
348
  $this->save_backup_history($backup_array);
349
  }
350
 
@@ -398,10 +449,12 @@ class UpdraftPlus {
398
  $this->save_backup_history($our_files);
399
  }
400
 
 
 
401
  foreach ($our_files as $key => $file) {
402
 
403
  // Only continue if the stored info was about a dump
404
- if ($key != 'plugins' && $key != 'themes' && $key != 'others' && $key != 'uploads' && $key != 'db') continue;
405
 
406
  $hash = md5($file);
407
  $fullpath = $this->backups_dir_location().'/'.$file;
@@ -514,7 +567,7 @@ class UpdraftPlus {
514
 
515
  if (!is_file($this->logfile_name)) {
516
  $this->log('Failed to open log file ('.$this->logfile_name.') - you need to check your UpdraftPlus settings (your chosen directory for creating files in is not writable, or you ran out of disk space). Backup aborted.');
517
- $this->error('Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings.');
518
  return false;
519
  }
520
 
@@ -582,7 +635,7 @@ class UpdraftPlus {
582
  return basename($file.'.crypt');
583
  } else {
584
  $this->log("Encryption error occurred when encrypting database. Encryption aborted.");
585
- $this->error("Encryption error occurred when encrypting database. Encryption aborted.");
586
  return basename($file);
587
  }
588
  } else {
@@ -673,7 +726,7 @@ class UpdraftPlus {
673
 
674
  $append_log = ($debug_mode && $this->logfile_name != "") ? "\r\nLog contents:\r\n".file_get_contents($this->logfile_name) : "" ;
675
 
676
- wp_mail($sendmail_to,'Backed up: '.get_bloginfo('name').' (UpdraftPlus '.$this->version.') '.date('Y-m-d H:i',time()),'Site: '.site_url()."\r\nUpdraftPlus WordPress backup is complete.\r\nBackup contains: ".$backup_contains."\r\nLatest status: $final_message\r\n\r\n".$this->wordshell_random_advert(0)."\r\n".$append_log);
677
 
678
  }
679
 
@@ -767,6 +820,8 @@ class UpdraftPlus {
767
  $file_backups_found = 0;
768
  $this->log("Number of backup sets in history: ".count($backup_history));
769
 
 
 
770
  foreach ($backup_history as $backup_datestamp => $backup_to_examine) {
771
  // $backup_to_examine is an array of file names, keyed on db/plugins/themes/uploads
772
  // The new backup_history array is saved afterwards, so remember to unset the ones that are to be deleted
@@ -783,28 +838,42 @@ class UpdraftPlus {
783
  }
784
  }
785
 
786
- if (isset($backup_to_examine['plugins']) || isset($backup_to_examine['themes']) || isset($backup_to_examine['uploads']) || isset($backup_to_examine['others'])) {
 
 
 
 
 
 
 
 
787
  $file_backups_found++;
788
  $this->log("$backup_datestamp: this set includes files; fileset count is now $file_backups_found");
789
  if ($file_backups_found > $updraft_retain) {
790
  $this->log("$backup_datestamp: over retain limit ($updraft_retain); will delete this file set");
791
- $file = isset($backup_to_examine['plugins']) ? $backup_to_examine['plugins'] : "";
792
- $file2 = isset($backup_to_examine['themes']) ? $backup_to_examine['themes'] : "";
793
- $file3 = isset($backup_to_examine['uploads']) ? $backup_to_examine['uploads'] : "";
794
- $file4 = isset($backup_to_examine['others']) ? $backup_to_examine['others'] : "";
795
- foreach (array($file, $file2, $file3, $file4) as $dofile) {
796
- if (!empty($dofile)) $this->prune_file($service, $dofile, $backup_method_object, $backup_passback);
797
  }
798
- unset($backup_to_examine['plugins']);
799
- unset($backup_to_examine['themes']);
800
- unset($backup_to_examine['uploads']);
801
- unset($backup_to_examine['others']);
 
 
 
 
 
 
802
  }
803
  }
804
 
805
  // Delete backup set completely if empty, o/w just remove DB
806
  // We search on the four keys which represent data, allowing other keys to be used to track other things
807
- if (!isset($backup_to_examine['plugins']) && !isset($backup_to_examine['themes']) && !isset($backup_to_examine['others']) && !isset($backup_to_examine['uploads']) && !isset($backup_to_examine['db']) ) {
808
  $this->log("$backup_datestamp: this backup set is now empty; will remove from history");
809
  unset($backup_history[$backup_datestamp]);
810
  if (isset($backup_to_examine['nonce'])) {
@@ -912,7 +981,7 @@ class UpdraftPlus {
912
  $zipcode = $this->make_zipfile($create_from_dir, $zip_name);
913
  if ($zipcode !== true) {
914
  $this->log("ERROR: Zip failure: Could not create $whichone zip: code=$zipcode");
915
- $this->error("Could not create $whichone zip: code $zipcode. Consult the log file for more information.");
916
  return false;
917
  } else {
918
  rename($full_path.'.tmp', $full_path);
@@ -946,7 +1015,7 @@ class UpdraftPlus {
946
  $updraft_dir = $this->backups_dir_location();
947
  if(!is_writable($updraft_dir)) {
948
  $this->log("Backup directory ($updraft_dir) is not writable, or does not exist");
949
- $this->error("Backup directory ($updraft_dir) is not writable, or does not exist.");
950
  return array();
951
  }
952
 
@@ -959,12 +1028,7 @@ class UpdraftPlus {
959
 
960
  $backup_array = array();
961
 
962
- $wp_themes_dir = WP_CONTENT_DIR.'/themes';
963
- $wp_upload_dir = wp_upload_dir();
964
- $wp_upload_dir = $wp_upload_dir['basedir'];
965
- $wp_plugins_dir = WP_PLUGIN_DIR;
966
-
967
- $possible_backups = array ('plugins' => $wp_plugins_dir, 'themes' => $wp_themes_dir, 'uploads' => $wp_upload_dir);
968
 
969
  # Plugins, themes, uploads
970
  foreach ($possible_backups as $youwhat => $whichdir) {
@@ -990,7 +1054,7 @@ class UpdraftPlus {
990
  }
991
  }
992
 
993
- # Others
994
  if (UpdraftPlus_Options::get_updraft_option('updraft_include_others', true)) {
995
 
996
  $zip_file = $updraft_dir.'/'.$backup_file_basename.'-others.zip';
@@ -1020,20 +1084,28 @@ class UpdraftPlus {
1020
 
1021
  $this->log('Looking for candidates to back up in: '.WP_CONTENT_DIR);
1022
  if ($handle = opendir(WP_CONTENT_DIR)) {
 
 
 
1023
  while (false !== ($entry = readdir($handle))) {
1024
  $candidate = WP_CONTENT_DIR.'/'.$entry;
1025
- if ($entry == "." || $entry == "..") { ; }
1026
- elseif ($candidate == $updraft_dir) { $this->log("others: $entry: skipping: this is the updraft directory"); }
1027
- elseif ($candidate == $wp_themes_dir) { $this->log("others: $entry: skipping: this is the themes directory"); }
1028
- elseif ($candidate == $wp_upload_dir) { $this->log("others: $entry: skipping: this is the uploads directory"); }
1029
- elseif ($candidate == $wp_plugins_dir) { $this->log("others: $entry: skipping: this is the plugins directory"); }
1030
- elseif (isset($others_skip[$entry])) { $this->log("others: $entry: skipping: excluded by options"); }
1031
- else { $this->log("others: $entry: adding to list"); array_push($other_dirlist, $candidate); }
 
 
 
 
 
1032
  }
1033
  @closedir($handle);
1034
  } else {
1035
  $this->log('ERROR: Could not read the content directory: '.WP_CONTENT_DIR);
1036
- $this->error('Could not read the content directory: '.WP_CONTENT_DIR);
1037
  }
1038
 
1039
  if (count($other_dirlist)>0) {
@@ -1063,7 +1135,7 @@ class UpdraftPlus {
1063
  UpdraftPlus_Options::update_updraft_option('updraft_backup_history', $backup_history);
1064
  } else {
1065
  $this->log('Could not save backup history because we have no backup array. Backup probably failed.');
1066
- $this->error('Could not save backup history because we have no backup array. Backup probably failed.');
1067
  }
1068
  }
1069
 
@@ -1092,7 +1164,7 @@ class UpdraftPlus {
1092
  }
1093
  if(!$this->dbhandle) {
1094
  $this->log("ERROR: $file: Could not open the backup file for writing");
1095
- $this->error("$file: Could not open the backup file for writing");
1096
  }
1097
  }
1098
 
@@ -1147,7 +1219,7 @@ class UpdraftPlus {
1147
 
1148
  if (!is_writable($updraft_dir)) {
1149
  $this->log("The backup directory ($updraft_dir) is not writable.");
1150
- $this->error("The backup directory ($updraft_dir) is not writable.");
1151
  return false;
1152
  }
1153
 
@@ -1225,9 +1297,7 @@ class UpdraftPlus {
1225
  $this->log($file_base.'-db.gz: finished writing out complete database file ('.round(filesize($backup_final_file_name)/1024,1).' Kb)');
1226
  $this->close($this->dbhandle);
1227
 
1228
- foreach ($unlink_files as $unlink_file) {
1229
- @unlink($unlink_file);
1230
- }
1231
 
1232
  if (count($this->errors)) {
1233
  return false;
@@ -1509,7 +1579,92 @@ class UpdraftPlus {
1509
 
1510
  return $updraft_dir;
1511
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1512
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1513
  // Called via AJAX
1514
  function updraft_ajax_handler() {
1515
  // Test the nonce (probably not needed, since we're presumably admin-authed, but there's no harm)
@@ -1517,10 +1672,14 @@ class UpdraftPlus {
1517
  if (! wp_verify_nonce($nonce, 'updraftplus-credentialtest-nonce') || empty($_REQUEST['subaction'])) die('Security check');
1518
 
1519
  if ('lastlog' == $_GET['subaction']) {
1520
- echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_lastmessage', '(Nothing yet logged)'));
1521
  } elseif ('lastbackup' == $_GET['subaction']) {
1522
  echo $this->last_backup_html();
 
 
1523
  } elseif ('historystatus' == $_GET['subaction']) {
 
 
1524
  echo $this->existing_backup_table();
1525
  } elseif ('downloadstatus' == $_GET['subaction'] && isset($_GET['timestamp']) && isset($_GET['type'])) {
1526
 
@@ -1534,9 +1693,9 @@ class UpdraftPlus {
1534
  echo "File ready: $size Kb: You should: <button type=\"button\" onclick=\"updraftplus_downloadstage2('".$_GET['timestamp']."', '".$_GET['type']."')\">Download to your computer</button> and then, if you wish, <button id=\"uddownloaddelete_".$_GET['timestamp']."_".$_GET['type']."\" type=\"button\" onclick=\"updraftplus_deletefromserver('".$_GET['timestamp']."', '".$_GET['type']."')\">Delete from your web server</button>";
1535
  } elseif (preg_match('/^downloading:(.*)$/', $file, $matches) && file_exists($matches[1])) {
1536
  $size = round(filesize($matches[1])/1024, 1);
1537
- echo "File downloading: ".basename($matches[1]).": $size Kb";
1538
  } else {
1539
- echo "No local copy present.";
1540
  }
1541
  }
1542
 
@@ -1558,7 +1717,15 @@ class UpdraftPlus {
1558
 
1559
  if (!isset($_REQUEST['_wpnonce']) || !wp_verify_nonce($_REQUEST['_wpnonce'], 'updraftplus_download')) die;
1560
 
1561
- if (!isset($_REQUEST['timestamp']) || !is_numeric($_REQUEST['timestamp']) || !isset($_REQUEST['type']) || ('plugins' != $_REQUEST['type'] && 'themes' != $_REQUEST['type'] && 'uploads' != $_REQUEST['type'] && 'others' != $_REQUEST['type'] && 'db' != $_REQUEST['type'])) exit;
 
 
 
 
 
 
 
 
1562
 
1563
  // Get the information on what is wanted
1564
  $type = $_REQUEST['type'];
@@ -1629,7 +1796,7 @@ class UpdraftPlus {
1629
  header('Content-Encoding: none');
1630
  session_write_close();
1631
  echo "\r\n\r\n";
1632
- $this->download_file($file, $service, true);
1633
  if (is_readable($fullpath)) {
1634
  $this->log('Remote fetch was successful (file size: '.round(filesize($fullpath)/1024,1).' Kb)');
1635
  } else {
@@ -1704,11 +1871,11 @@ class UpdraftPlus {
1704
  }
1705
  // $this->delete_local($file);
1706
  } else {
1707
- echo "File not found";
1708
  }
1709
  }
1710
 
1711
- function download_file($file, $service=false, $detach_from_browser) {
1712
 
1713
  if (!$service) $service = UpdraftPlus_Options::get_updraft_option('updraft_service');
1714
 
@@ -1723,16 +1890,17 @@ class UpdraftPlus {
1723
  $remote_obj->download($file);
1724
  } else {
1725
  $this->log("Automatic backup restoration is not available with the method: $service.");
1726
- $this->error("Automatic backup restoration is not available with the method: $service.");
1727
  }
1728
 
1729
  }
1730
 
1731
  function restore_backup($timestamp) {
 
1732
  global $wp_filesystem;
1733
  $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history');
1734
  if(!is_array($backup_history[$timestamp])) {
1735
- echo '<p>This backup does not exist in the backup history - restoration aborted. Timestamp: '.$timestamp.'</p><br/>';
1736
  return false;
1737
  }
1738
 
@@ -1743,38 +1911,85 @@ class UpdraftPlus {
1743
  show_message($message);
1744
  exit;
1745
  }
1746
-
1747
  //if we make it this far then WP_Filesystem has been instantiated and is functional (tested with ftpext, what about suPHP and other situations where direct may work?)
1748
- echo '<span style="font-weight:bold">Restoration Progress</span><div id="updraft-restore-progress">';
1749
 
1750
  $updraft_dir = $this->backups_dir_location().'/';
1751
 
1752
  $service = (isset($backup_history[$timestamp]['service'])) ? $backup_history[$timestamp]['service'] : false;
1753
 
 
 
 
 
 
 
 
 
 
1754
  foreach($backup_history[$timestamp] as $type => $file) {
1755
  // All restorable entities must be given explicitly, as we can store other arbitrary data in the history array
1756
- if ('themes' != $type && 'plugins' != $type && 'uploads' != $type && 'others' != $type && 'db' != $type) continue;
 
 
 
 
 
 
 
 
 
 
 
 
 
1757
  $fullpath = $updraft_dir.$file;
 
 
1758
  if(!is_readable($fullpath) && $type != 'db') {
 
1759
  $this->download_file($file, $service);
1760
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
1761
  # Types: uploads, themes, plugins, others, db
1762
  if(is_readable($fullpath) && $type != 'db') {
 
1763
  if(!class_exists('WP_Upgrader')) require_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
1764
  require_once(UPDRAFTPLUS_DIR.'/includes/updraft-restorer.php');
1765
  $restorer = new Updraft_Restorer();
1766
- $val = $restorer->restore_backup($fullpath, $type);
 
1767
  if(is_wp_error($val)) {
1768
- print_r($val);
 
 
1769
  echo '</div>'; //close the updraft_restore_progress div even if we error
1770
  return false;
1771
  }
 
 
 
 
 
1772
  }
1773
  }
1774
  echo '</div>'; //close the updraft_restore_progress div
1775
  # The 'off' check is for badly configured setups - http://wordpress.org/support/topic/plugin-wp-super-cache-warning-php-safe-mode-enabled-but-safe-mode-is-off
1776
  if(@ini_get('safe_mode') && strtolower(@ini_get('safe_mode')) != "off") {
1777
- echo "<p>DB could not be restored because PHP safe_mode is active on your server. You will need to manually restore the file via phpMyAdmin or another method.</p><br/>";
1778
  return false;
1779
  }
1780
  return true;
@@ -1783,7 +1998,7 @@ class UpdraftPlus {
1783
  //deletes the -old directories that are created when a backup is restored.
1784
  function delete_old_dirs() {
1785
  global $wp_filesystem;
1786
- $credentials = request_filesystem_credentials("options-general.php?page=updraftplus&action=updraft_delete_old_dirs");
1787
  WP_Filesystem($credentials);
1788
  if ( $wp_filesystem->errors->get_error_code() ) {
1789
  foreach ( $wp_filesystem->errors->get_error_messages() as $message )
@@ -1791,24 +2006,31 @@ class UpdraftPlus {
1791
  exit;
1792
  }
1793
 
1794
- $to_delete = array('themes-old','plugins-old','uploads-old','others-old');
1795
 
1796
- foreach($to_delete as $name) {
1797
- //recursively delete
1798
- if(!$wp_filesystem->delete(WP_CONTENT_DIR.'/'.$name, true)) {
1799
- return false;
 
 
 
 
 
 
 
 
1800
  }
1801
  }
1802
- return true;
 
1803
  }
1804
 
1805
  //scans the content dir to see if any -old dirs are present
1806
  function scan_old_dirs() {
1807
  $dirArr = scandir(WP_CONTENT_DIR);
1808
  foreach($dirArr as $dir) {
1809
- if(strpos($dir,'-old') !== false) {
1810
- return true;
1811
- }
1812
  }
1813
  return false;
1814
  }
@@ -1885,6 +2107,7 @@ class UpdraftPlus {
1885
  @ini_set('track_errors',1);
1886
  }
1887
  wp_enqueue_script('jquery');
 
1888
 
1889
  if (UpdraftPlus_Options::user_can_manage() && UpdraftPlus_Options::get_updraft_option('updraft_service') == "googledrive" && UpdraftPlus_Options::get_updraft_option('updraft_googledrive_clientid','') != '' && UpdraftPlus_Options::get_updraft_option('updraft_googledrive_token','') == '') {
1890
  add_action('admin_notices', array($this,'show_admin_warning_googledrive') );
@@ -1917,19 +2140,22 @@ class UpdraftPlus {
1917
  return $this->url_start($urls,'updraftplus.com')."Want more features or paid, guaranteed support? Check out UpdraftPlus.Com".$this->url_end($urls,'updraftplus.com');
1918
  break;
1919
  case 1:
1920
- return "Find UpdraftPlus useful? ".$this->url_start($urls,'david.dw-perspective.org.uk/donate')."Please make a donation.".$this->url_end($urls,'david.dw-perspective.org.uk/donate');
 
 
 
1921
  case 2:
1922
  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";
1923
  break;
1924
  case 3:
1925
- return "Like UpdraftPlus and can spare one minute? ".$this->url_start($urls,'wordpress.org/support/view/plugin-reviews/updraftplus#postform')."Please help UpdraftPlus by giving a positive review at wordpress.org.".$this->url_end($urls,'wordpress.org/support/view/plugin-reviews/updraftplus#postform');
1926
  break;
1927
  case 4:
1928
  return $this->url_start($urls,'www.simbahosting.co.uk')."Need high-quality WordPress hosting from WordPress specialists? (Including automatic backups and 1-click installer). Get it from the creators of UpdraftPlus.".$this->url_end($urls,'www.simbahosting.co.uk');
1929
  break;
1930
  case 5:
1931
  if (!defined('UPDRAFTPLUS_NOADS')) {
1932
- return $this->url_start($urls,'updraftplus.com')."Need even more features and support? Check out UpdraftPlus Premium".$this->url_end($urls,'updraftplus.com');
1933
  } else {
1934
  return "Thanks for being an UpdraftPlus premium user. Keep visiting ".$this->url_start($urls,'updraftplus.com')."updraftplus.com".$this->url_end($urls,'updraftplus.com')." to see what's going on.";
1935
  }
@@ -1938,10 +2164,10 @@ class UpdraftPlus {
1938
  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/');
1939
  break;
1940
  case 7:
1941
- return $this->url_start($urls,'www.updraftplus.com')."Check out UpdraftPlus.Com for help, add-ons and support".$this->url_end($urls,'www.updraftplus.com');
1942
  break;
1943
  case 8:
1944
- return "Want to say thank-you for UpdraftPlus? ".$this->url_start($urls,'updraftplus.com/shop/')." Please buy our very cheap 'no adverts' add-on.".$this->url_end($urls,'updraftplus.com/shop/');
1945
  break;
1946
  }
1947
  }
@@ -1950,12 +2176,12 @@ class UpdraftPlus {
1950
  $updraft_dir = $this->backups_dir_location();
1951
 
1952
  ?>
1953
- <table class="form-table" style="width:850px;">
1954
  <tr>
1955
- <th>File backup intervals:</th>
1956
  <td><select name="updraft_interval">
1957
  <?php
1958
- $intervals = array ("manual" => "Manual", 'every4hours' => "Every 4 hours", 'every8hours' => "Every 8 hours", 'twicedaily' => "Every 12 hours", 'daily' => "Daily", 'weekly' => "Weekly", 'fortnightly' => "Fortnightly", 'monthly' => "Monthly");
1959
  foreach ($intervals as $cronsched => $descrip) {
1960
  echo "<option value=\"$cronsched\" ";
1961
  if ($cronsched == UpdraftPlus_Options::get_updraft_option('updraft_interval','manual')) echo 'selected="selected"';
@@ -1963,14 +2189,15 @@ class UpdraftPlus {
1963
  }
1964
  ?>
1965
  </select> <?php echo apply_filters('updraftplus_schedule_showfileconfig', '<input type="hidden" name="updraftplus_starttime_files" value="">'); ?>
1966
- and retain this many backups: <?php
 
1967
  $updraft_retain = UpdraftPlus_Options::get_updraft_option('updraft_retain', 1);
1968
  $updraft_retain = ((int)$updraft_retain > 0) ? (int)$updraft_retain : 1;
1969
  ?> <input type="text" name="updraft_retain" value="<?php echo $updraft_retain ?>" style="width:40px;" />
1970
  </td>
1971
  </tr>
1972
  <tr>
1973
- <th>Database backup intervals:</th>
1974
  <td><select name="updraft_interval_database">
1975
  <?php
1976
  foreach ($intervals as $cronsched => $descrip) {
@@ -1980,57 +2207,60 @@ class UpdraftPlus {
1980
  }
1981
  ?>
1982
  </select> <?php echo apply_filters('updraftplus_schedule_showdbconfig', '<input type="hidden" name="updraftplus_starttime_db" value="">'); ?>
1983
- and retain this many backups: <?php
 
1984
  $updraft_retain_db = UpdraftPlus_Options::get_updraft_option('updraft_retain_db', $updraft_retain);
1985
  $updraft_retain_db = ((int)$updraft_retain_db > 0) ? (int)$updraft_retain_db : 1;
1986
  ?> <input type="text" name="updraft_retain_db" value="<?php echo $updraft_retain_db ?>" style="width:40px" />
1987
  </td>
1988
  </tr>
1989
  <tr class="backup-interval-description">
1990
- <td></td><td><p>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 &quot;manual&quot; then you must click the &quot;Backup Now!&quot; button whenever you wish a backup to occur.</p>
1991
- <?php echo apply_filters('updraftplus_fixtime_advert', '<p><strong>To fix the time at which a backup should take place, </strong> (e.g. if your server is busy at day and you want to run overnight), <a href="http://updraftplus.com/shop/fix-time/">use the &quot;Fix Time&quot; add-on</a></p>'); ?>
1992
  </td>
1993
  </tr>
1994
- <?php
1995
- # The true (default value if non-existent) here has the effect of forcing a default of on.
1996
- $include_themes = (UpdraftPlus_Options::get_updraft_option('updraft_include_themes',true)) ? 'checked="checked"' : "";
1997
- $include_plugins = (UpdraftPlus_Options::get_updraft_option('updraft_include_plugins',true)) ? 'checked="checked"' : "";
1998
- $include_uploads = (UpdraftPlus_Options::get_updraft_option('updraft_include_uploads',true)) ? 'checked="checked"' : "";
1999
- $include_others = (UpdraftPlus_Options::get_updraft_option('updraft_include_others',true)) ? 'checked="checked"' : "";
2000
- $include_others_exclude = UpdraftPlus_Options::get_updraft_option('updraft_include_others_exclude',UPDRAFT_DEFAULT_OTHERS_EXCLUDE);
2001
- ?>
2002
  <tr>
2003
  <th>Include in files backup:</th>
2004
  <td>
2005
- <input type="checkbox" name="updraft_include_plugins" value="1" <?php echo $include_plugins; ?> /> Plugins<br>
2006
- <input type="checkbox" name="updraft_include_themes" value="1" <?php echo $include_themes; ?> /> Themes<br>
2007
- <input type="checkbox" name="updraft_include_uploads" value="1" <?php echo $include_uploads; ?> /> Uploads<br>
2008
- <input type="checkbox" name="updraft_include_others" value="1" <?php echo $include_others; ?> /> Any other directories found inside wp-content <?php if (is_multisite()) echo "(which on a multisite install includes users' blog contents) "; ?>- but exclude these directories: <input type="text" name="updraft_include_others_exclude" size="44" value="<?php echo htmlspecialchars($include_others_exclude); ?>"/><br>
2009
- Include all of these, unless you are backing them up outside of UpdraftPlus. The above directories are usually everything (except for WordPress core itself which you can download afresh from WordPress.org). But if you have made customised modifications outside of these directories, you need to back them up another way. (<a href="http://wordshell.net">Use WordShell</a> for automatic backup, version control and patching).<br></td>
 
 
 
 
 
 
 
 
 
 
2010
  </td>
2011
  </tr>
2012
  <tr>
2013
- <th>Email:</th>
2014
- <td><input type="text" style="width:260px" name="updraft_email" value="<?php echo UpdraftPlus_Options::get_updraft_option('updraft_email'); ?>" /> <br>Enter an address here to have a report sent (and the whole backup, if you choose) to it.</td>
2015
  </tr>
2016
 
2017
  <tr>
2018
- <th>Database encryption phrase:</th>
2019
  <?php
2020
  $updraft_encryptionphrase = UpdraftPlus_Options::get_updraft_option('updraft_encryptionphrase');
2021
  ?>
2022
  <td><input type="text" name="updraft_encryptionphrase" value="<?php echo $updraft_encryptionphrase ?>" style="width:132px" /></td>
2023
  </tr>
2024
  <tr class="backup-crypt-description">
2025
- <td></td><td>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). You can also use the file example-decrypt.php from inside the UpdraftPlus plugin directory to decrypt manually.</td>
2026
  </tr>
2027
  </table>
2028
 
2029
- <h2>Copying Your Backup To Remote Storage</h2>
2030
 
2031
- <table class="form-table" style="width:850px;">
2032
  <tr>
2033
- <th>Choose your remote storage:</th>
2034
  <td><select name="updraft_service" id="updraft-service">
2035
  <?php
2036
  $debug_mode = (UpdraftPlus_Options::get_updraft_option('updraft_debug_mode')) ? 'checked="checked"' : "";
@@ -2095,22 +2325,61 @@ class UpdraftPlus {
2095
  });
2096
  }
2097
  var updraft_historytimer = 0;
2098
- function updraft_historytimertoggle() {
2099
- if (updraft_historytimer) {
 
 
 
 
 
 
 
 
2100
  clearTimeout(updraft_historytimer);
2101
  updraft_historytimer = 0;
2102
- } else {
2103
- updraft_updatehistory();
2104
- updraft_historytimer = setInterval(function(){updraft_updatehistory()}, 30000);
2105
  }
2106
  }
2107
- function updraft_updatehistory() {
2108
- jQuery.get(ajaxurl, { action: 'updraft_ajax', subaction: 'historystatus', nonce: '<?php echo wp_create_nonce('updraftplus-credentialtest-nonce'); ?>' }, function(response) {
 
 
 
2109
  jQuery('#updraft_existing_backups').html(response);
2110
  });
2111
  }
2112
 
2113
  jQuery(document).ready(function() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2114
  jQuery('#enableexpertmode').click(function() {
2115
  jQuery('.expertmode').fadeIn();
2116
  return false;
@@ -2129,25 +2398,25 @@ class UpdraftPlus {
2129
  });
2130
  /* ]]> */
2131
  </script>
2132
- <table class="form-table" style="width:850px;">
2133
  <tr>
2134
- <td colspan="2"><h2>Advanced / Debugging Settings</h2></td>
2135
  </tr>
2136
  <tr>
2137
- <th>Debug mode:</th>
2138
- <td><input type="checkbox" name="updraft_debug_mode" value="1" <?php echo $debug_mode; ?> /> <br>Check this to receive more information and emails on the backup process - useful if something is going wrong. You <strong>must</strong> send me this log if you are filing a bug report.</td>
2139
  </tr>
2140
  <tr>
2141
- <th>Expert settings:</th>
2142
- <td><a id="enableexpertmode" href="#">Show expert settings</a> - click this to show some further options; don't bother with this unless you have a problem or are curious.</td>
2143
  </tr>
2144
  <?php
2145
  $delete_local = UpdraftPlus_Options::get_updraft_option('updraft_delete_local', 1);
2146
  ?>
2147
 
2148
  <tr class="deletelocal expertmode" style="display:none;">
2149
- <th>Delete local backup:</th>
2150
- <td><input type="checkbox" name="updraft_delete_local" value="1" <?php if ($delete_local) echo 'checked="checked"'; ?>> <br>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).</td>
2151
  </tr>
2152
 
2153
  <tr class="expertmode backupdirrow" style="display:none;">
@@ -2159,12 +2428,12 @@ class UpdraftPlus {
2159
 
2160
  // Suppress warnings, since if the user is dumping warnings to screen, then invalid JavaScript results and the screen breaks.
2161
  if(@is_writable($updraft_dir)) {
2162
- $dir_info = '<span style="color:green">Backup directory specified is writable, which is good.</span>';
2163
  } else {
2164
- $dir_info = '<span style="color:red">Backup directory specified is <b>not</b> writable, or does not exist. <span style="font-size:110%;font-weight:bold"><a href="options-general.php?page=updraftplus&action=updraft_create_backup_dir">Click here</a></span> to attempt to create the directory and set the permissions, or <a href="#" onclick="jQuery(\'#updraft_dir\').val(\''.WP_CONTENT_DIR.'/updraft\'); return false;">here to reset this option</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.</span>';
2165
  }
2166
 
2167
- 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...).</td>
2168
  </tr>
2169
  <tr>
2170
  <td></td>
@@ -2185,7 +2454,7 @@ class UpdraftPlus {
2185
  <td></td>
2186
  <td>
2187
  <input type="hidden" name="action" value="update" />
2188
- <input type="submit" class="button-primary" value="Save Changes" />
2189
  </td>
2190
  </tr>
2191
  </table>
@@ -2209,13 +2478,13 @@ class UpdraftPlus {
2209
 
2210
  if (!empty($updraft_last_backup['backup_nonce'])) {
2211
  $potential_log_file = $updraft_dir."/log.".$updraft_last_backup['backup_nonce'].".txt";
2212
- if (is_readable($potential_log_file)) $last_backup_text .= "<br><a href=\"?page=updraftplus&action=downloadlog&updraftplus_backup_nonce=".$updraft_last_backup['backup_nonce']."\">Download log file</a>";
2213
  }
2214
 
2215
  $last_backup_color = ($updraft_last_backup['success']) ? 'green' : 'red';
2216
 
2217
  } else {
2218
- $last_backup_text = 'No backup has been completed.';
2219
  $last_backup_color = 'blue';
2220
  }
2221
 
@@ -2225,6 +2494,8 @@ class UpdraftPlus {
2225
 
2226
  function settings_output() {
2227
 
 
 
2228
  /*
2229
  we use request here because the initial restore is triggered by a POSTed form. we then may need to obtain credentials
2230
  for the WP_Filesystem. to do this WP outputs a form that we can't insert variables into (apparently). So the values are
@@ -2233,33 +2504,43 @@ class UpdraftPlus {
2233
  if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'updraft_restore' && isset($_REQUEST['backup_timestamp'])) {
2234
  $backup_success = $this->restore_backup($_REQUEST['backup_timestamp']);
2235
  if(empty($this->errors) && $backup_success == true) {
2236
- echo '<p>Restore successful!</p><br/>';
2237
- echo '<b>Actions:</b> <a href="options-general.php?page=updraftplus&updraft_restore_success=true">Return to Updraft Configuration</a>.';
2238
  return;
2239
  } else {
2240
- echo '<p>Restore failed...</p><ul>';
2241
  foreach ($this->errors as $err) {
2242
- echo "<li>";
2243
- if (is_string($err)) { echo htmlspecialchars($err); } else {
2244
- print_r($err);
 
 
 
 
 
2245
  }
2246
- echo "</li>";
2247
  }
2248
- echo '</ul><b>Actions:</b> <a href="options-general.php?page=updraftplus">Return to Updraft Configuration</a>.';
2249
  return;
2250
  }
2251
  //uncomment the below once i figure out how i want the flow of a restoration to work.
2252
- //echo '<b>Actions:</b> <a href="options-general.php?page=updraftplus">Return to Updraft Configuration</a>.';
2253
  }
2254
  $deleted_old_dirs = false;
2255
  if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'updraft_delete_old_dirs') {
 
 
 
 
 
 
2256
  if($this->delete_old_dirs()) {
 
2257
  $deleted_old_dirs = true;
2258
  } else {
2259
- echo '<p>Old directory removal failed for some reason. You may want to do this manually.</p><br/>';
2260
  }
2261
- echo '<p>Old directories successfully removed.</p><br/>';
2262
- echo '<b>Actions:</b> <a href="options-general.php?page=updraftplus">Return to Updraft Configuration</a>.';
2263
  return;
2264
  }
2265
 
@@ -2272,21 +2553,21 @@ class UpdraftPlus {
2272
 
2273
  if(isset($_GET['action']) && $_GET['action'] == 'updraft_create_backup_dir') {
2274
  if(!$this->create_backup_dir()) {
2275
- echo '<p>Backup directory could not be created...</p><br/>';
2276
  }
2277
- echo '<p>Backup directory successfully created.</p><br/>';
2278
- echo '<b>Actions:</b> <a href="options-general.php?page=updraftplus">Return to Updraft Configuration</a>.';
2279
  return;
2280
  }
2281
 
2282
  if(isset($_POST['action']) && $_POST['action'] == 'updraft_backup') {
2283
  // For unknown reasons, the <script> runs twice if put inside the <div>
2284
- echo '<div class="updated fade" style="max-width: 800px; font-size:140%; line-height: 140%; padding:14px; clear:left;"><strong>Schedule backup:</strong> ';
2285
  if (wp_schedule_single_event(time()+5, 'updraft_backup_all') === false) {
2286
  $this->log("A backup run failed to schedule");
2287
- echo "Failed.</div>";
2288
  } else {
2289
- echo "OK. Now load any page from your site to make sure the schedule can trigger.</div><script>setTimeout(function(){updraft_showlastbackup();}, 7000);</script>";
2290
  $this->log("A backup run has been scheduled");
2291
  }
2292
  }
@@ -2295,44 +2576,46 @@ class UpdraftPlus {
2295
  if(isset($_POST['action']) && $_POST['action'] == 'updraft_backup_debug_all') { $this->boot_backup(true,true); }
2296
  elseif (isset($_POST['action']) && $_POST['action'] == 'updraft_backup_debug_db') { $this->backup_db(); }
2297
  elseif (isset($_POST['action']) && $_POST['action'] == 'updraft_wipesettings') {
2298
- $settings = array('updraft_interval', 'updraft_interval_database', 'updraft_retain', 'updraft_retain_db', 'updraft_encryptionphrase', 'updraft_service', 'updraft_dropbox_appkey', 'updraft_dropbox_secret', 'updraft_googledrive_clientid', 'updraft_googledrive_secret', 'updraft_googledrive_remotepath', 'updraft_ftp_login', 'updraft_ftp_pass', 'updraft_ftp_remote_path', 'updraft_server_address', 'updraft_dir', 'updraft_email', 'updraft_delete_local', 'updraft_debug_mode', 'updraft_include_plugins', 'updraft_include_themes', 'updraft_include_uploads', 'updraft_include_others', 'updraft_include_others_exclude', 'updraft_lastmessage', 'updraft_googledrive_clientid', 'updraft_googledrive_token', 'updraft_dropboxtk_request_token', 'updraft_dropboxtk_access_token', 'updraft_dropbox_folder', 'updraft_last_backup', 'updraft_starttime_files', 'updraft_starttime_db', 'updraft_sftp_settings');
2299
  foreach ($settings as $s) {
2300
  UpdraftPlus_Options::delete_updraft_option($s);
2301
  }
2302
- $this->show_admin_warning("Your settings have been wiped.");
2303
  }
2304
 
2305
  ?>
2306
  <div class="wrap">
2307
  <h1><?php echo $this->plugin_title; ?></h1>
2308
 
2309
- Maintained by <b>David Anderson</b> (<a href="http://updraftplus.com">UpdraftPlus.Com</a> | <a href="http://david.dw-perspective.org.uk">Author Homepage</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">Donate</a> | <?php } ?><a href="http://wordpress.org/extend/plugins/updraftplus/faq/">FAQs</a> | <a href="http://profiles.wordpress.org/davidanderson/">My other WordPress plugins</a>). Version: <?php echo $this->version; ?>
2310
  <br>
2311
  <?php
2312
  if(isset($_GET['updraft_restore_success'])) {
2313
- echo "<div style=\"color:blue\">Your backup has been restored. Your old themes, uploads, and plugins directories have been retained with \"-old\" appended to their name. Remove them when you are satisfied that the backup worked properly. At this time Updraft does not automatically restore your DB. You will need to use an external tool like phpMyAdmin to perform that task.</div>";
2314
  }
2315
 
2316
  $ws_advert = $this->wordshell_random_advert(1);
2317
  if ($ws_advert) { echo '<div class="updated fade" style="max-width: 800px; font-size:140%; line-height: 140%; padding:14px; clear:left;">'.$ws_advert.'</div>'; }
2318
 
2319
- if($deleted_old_dirs) echo '<div style="color:blue">Old directories successfully deleted.</div>';
2320
 
2321
  if(!$this->memory_check(96)) {?>
2322
- <div style="color:orange">Your PHP memory limit is quite low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may not work properly with a memory limit of less than 96 Mb (though on the other hand, it has been used successfully with a 32Mb limit - your mileage may vary, but don't blame us!). Current limit is: <?php echo $this->memory_check_current(); ?> Mb</div>
2323
  <?php
2324
  }
2325
  if(1==0 && !$this->execution_time_check(60)) {?>
2326
- <div style="color:orange">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: <?php echo ini_get('max_execution_time'); ?> seconds.</div>
2327
  <?php
2328
  }
2329
 
2330
  if($this->scan_old_dirs()) {?>
2331
- <div style="color:orange">You have old directories from a previous backup. Click to delete them after you have verified that the restoration worked.</div>
2332
  <form method="post" action="<?php echo remove_query_arg(array('updraft_restore_success','action')) ?>">
 
2333
  <input type="hidden" name="action" value="updraft_delete_old_dirs" />
2334
- <input type="submit" class="button-primary" value="Delete Old Dirs" onclick="return(confirm('Are you sure you want to delete the old directories? This cannot be undone.'))" />
2335
  </form>
 
2336
  <?php
2337
  }
2338
  if(!empty($this->errors)) {
@@ -2343,15 +2626,14 @@ class UpdraftPlus {
2343
  }
2344
  ?>
2345
 
2346
- <h2 style="clear:left;">Existing Schedule And Backups</h2>
2347
  <table class="form-table" style="float:left; clear: both; width:545px;">
2348
  <noscript>
2349
  <tr>
2350
- <th>JavaScript warning:</th>
2351
- <td style="color:red">This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser.</td>
2352
  </tr>
2353
  </noscript>
2354
- <tr>
2355
  <?php
2356
  $updraft_dir = $this->backups_dir_location();
2357
  // UNIX timestamp
@@ -2362,12 +2644,12 @@ class UpdraftPlus {
2362
  // Convert to blog time zone
2363
  $next_scheduled_backup = get_date_from_gmt($next_scheduled_backup_gmt, 'D, F j, Y H:i T');
2364
  } else {
2365
- $next_scheduled_backup = 'No backups are scheduled at this time.';
2366
  }
2367
 
2368
  $next_scheduled_backup_database = wp_next_scheduled('updraft_backup_database');
2369
  if (UpdraftPlus_Options::get_updraft_option('updraft_interval_database',UpdraftPlus_Options::get_updraft_option('updraft_interval')) == UpdraftPlus_Options::get_updraft_option('updraft_interval')) {
2370
- $next_scheduled_backup_database = "Will take place at the same time as the files backup.";
2371
  } else {
2372
  if ($next_scheduled_backup_database) {
2373
  // Convert to GMT
@@ -2375,7 +2657,7 @@ class UpdraftPlus {
2375
  // Convert to blog time zone
2376
  $next_scheduled_backup_database = get_date_from_gmt($next_scheduled_backup_database_gmt, 'D, F j, Y H:i T');
2377
  } else {
2378
- $next_scheduled_backup_database = 'No backups are scheduled at this time.';
2379
  }
2380
  }
2381
  $current_time = get_date_from_gmt(gmdate('Y-m-d H:i:s'), 'D, F j, Y H:i T');
@@ -2386,50 +2668,30 @@ class UpdraftPlus {
2386
 
2387
  ?>
2388
 
2389
- <th>Time now:</th>
2390
- <td style="color:blue"><?php echo $current_time?></td>
2391
- </tr>
2392
  <tr>
2393
- <th>Next scheduled files backup:</th>
2394
- <td style="color:blue"><?php echo $next_scheduled_backup?></td>
2395
- </tr>
2396
- <tr>
2397
- <th>Next scheduled DB backup:</th>
2398
- <td style="color:blue"><?php echo $next_scheduled_backup_database?></td>
2399
  </tr>
2400
  <tr>
2401
- <th>Last finished backup run:</th>
2402
  <td id="updraft_last_backup"><?php echo $last_backup_html ?></td>
2403
  </tr>
2404
  </table>
2405
- <div style="float:left; width:200px; padding-top: 40px;">
2406
- <form method="post" action="">
2407
- <input type="hidden" name="action" value="updraft_backup" />
2408
- <p><input type="submit" <?php echo $backup_disabled ?> class="button-primary" value="Backup Now!" style="padding-top:2px;padding-bottom:2px;font-size:22px !important" onclick="return(confirm('This will schedule a one-time backup. To trigger the backup you should go ahead, then wait 10 seconds, then visit any page on your site. WordPress should then start the backup running in the background.'))"></p>
2409
- </form>
2410
  <div style="position:relative">
2411
  <div style="position:absolute;top:0;left:0">
2412
  <?php
2413
  $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history');
2414
  $backup_history = (is_array($backup_history))?$backup_history:array();
 
2415
  $restore_disabled = (count($backup_history) == 0) ? 'disabled="disabled"' : "";
2416
  ?>
2417
- <input type="button" class="button-primary" <?php echo $restore_disabled ?> value="Restore" style="padding-top:2px;padding-bottom:2px;font-size:22px !important" onclick="jQuery('#backup-restore').fadeIn('slow');jQuery(this).parent().fadeOut('slow')">
2418
- </div>
2419
- <div style="display:none;position:absolute;top:0;left:0" id="backup-restore">
2420
- <form method="post" action="">
2421
- <b>Choose: </b>
2422
- <select name="backup_timestamp" style="display:inline">
2423
- <?php
2424
- foreach($backup_history as $key=>$value) {
2425
- echo "<option value='$key'>".date('Y-m-d G:i',$key)."</option>\n";
2426
- }
2427
- ?>
2428
- </select>
2429
-
2430
- <input type="hidden" name="action" value="updraft_restore" />
2431
- <input type="submit" <?php echo $restore_disabled ?> class="button-primary" value="Restore Now!" style="padding-top:7px;margin-top:5px;padding-bottom:7px;font-size:24px !important" onclick="return(confirm('Restoring from backup will replace this site\'s themes, plugins, uploads and other content directories (according to what is contained in the backup set which you select). Database restoration cannot be done through this process - you must download the database and import yourself (e.g. through PHPMyAdmin). Do you wish to continue with the restoration process?'))" />
2432
- </form>
2433
  </div>
2434
  </div>
2435
  </div>
@@ -2440,14 +2702,24 @@ class UpdraftPlus {
2440
  <td id="updraft_lastlogcontainer"><?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_lastmessage', '(Nothing yet logged)')); ?></td>
2441
  </tr>
2442
  <tr>
2443
- <th>Download backups and logs:</th>
2444
- <td><a href="#" title="Click to see available backups" onclick="jQuery('.download-backups').toggle(); updraft_historytimertoggle();"><?php echo count($backup_history)?> available</a></td>
2445
  </tr>
2446
  <tr>
2447
- <td></td><td class="download-backups" style="display:none">
2448
- <p><em><strong>Note</strong> - Pressing a button will make UpdraftPlus try to bring a backup file back from the remote storage (if any - e.g. Amazon S3, Dropbox, Google Drive, FTP) to your webserver, before then allowing you to download it to your computer. If the fetch from the remote storage stops progressing (wait 30 seconds to make sure), then click again to resume from where it left off. Remember that you can always visit the cloud storage website vendor's website directly. <strong>If you are using the Opera web browser, </strong> then turn Turbo/Road mode off.</em></p>
 
 
 
 
2449
  <div id="ud_downloadstatus"></div>
2450
  <script>
 
 
 
 
 
 
2451
  var lastlog_lastmessage = "";
2452
  function updraftplus_deletefromserver(timestamp, type) {
2453
  var pdata = {
@@ -2503,7 +2775,7 @@ class UpdraftPlus {
2503
  }
2504
  }
2505
  </script>
2506
- <div id="updraft_existing_backups">
2507
  <?php
2508
  print $this->existing_backup_table($backup_history);
2509
  ?>
@@ -2511,25 +2783,55 @@ class UpdraftPlus {
2511
  </td>
2512
  </tr>
2513
  </table>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2514
  <?php
2515
  if (is_multisite() && !file_exists(UPDRAFTPLUS_DIR.'/addons/multisite.php')) {
2516
  ?>
2517
- <h2>UpdraftPlus Multisite</h2>
2518
  <table>
2519
  <tr>
2520
  <td>
2521
- <p style="max-width:800px;">Do you need WordPress Multisite support? Please check out <a href="http://updraftplus.com">UpdraftPlus Premium</a>.</p>
2522
  </td>
2523
  </tr>
2524
  </table>
2525
  <?php } ?>
2526
- <h2>Configure Backup Contents And Schedule</h2>
2527
  <?php UpdraftPlus_Options::options_form_begin(); ?>
2528
  <?php $this->settings_formcontents($last_backup_html); ?>
2529
  </form>
2530
  <div style="padding-top: 40px; display:none;" class="expertmode">
2531
  <hr>
2532
- <h3>Debug Information And Expert Options</h3>
2533
  <p>
2534
  <?php
2535
  $peak_memory_usage = memory_get_peak_usage(true)/1024/1024;
@@ -2539,21 +2841,21 @@ class UpdraftPlus {
2539
  echo 'PHP memory limit: '.ini_get('memory_limit').' <br/>';
2540
  ?>
2541
  </p>
2542
- <p style="max-width: 600px;">The buttons below will immediately execute a backup run, independently of WordPress's scheduler. If these work whilst your scheduled backups and the &quot;Backup Now&quot; 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 &quot; Backup Now&quot; 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.</p>
2543
 
2544
  <form method="post">
2545
  <input type="hidden" name="action" value="updraft_backup_debug_all" />
2546
- <p><input type="submit" class="button-primary" <?php echo $backup_disabled ?> value="Debug Full Backup" onclick="return(confirm('This will cause an immediate backup. The page will stall loading until it finishes (ie, unscheduled).'))" /></p>
2547
  </form>
2548
  <form method="post">
2549
  <input type="hidden" name="action" value="updraft_backup_debug_db" />
2550
- <p><input type="submit" class="button-primary" <?php echo $backup_disabled ?> value="Debug DB Backup" onclick="return(confirm('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.'))" /></p>
2551
  </form>
2552
- <h3>Wipe Settings</h3>
2553
- <p style="max-width: 600px;">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.</p>
2554
  <form method="post">
2555
  <input type="hidden" name="action" value="updraft_wipesettings" />
2556
- <p><input type="submit" class="button-primary" value="Wipe All Settings" onclick="return(confirm('This will delete all your UpdraftPlus settings - are you sure you want to do this?'))" /></p>
2557
  </form>
2558
  </div>
2559
 
@@ -2586,14 +2888,18 @@ class UpdraftPlus {
2586
 
2587
  $updraft_dir = $this->backups_dir_location();
2588
 
 
 
2589
  echo '<table>';
2590
 
2591
  krsort($backup_history);
2592
 
2593
  foreach($backup_history as $key=>$value) {
2594
- ?>
 
 
2595
  <tr>
2596
- <td><b><?php echo date('Y-m-d G:i',$key)?></b></td>
2597
  <td>
2598
  <?php if (isset($value['db'])) { ?>
2599
  <form id="uddownloadform_db_<?php echo $key;?>" action="admin-ajax.php" onsubmit="return updraft_downloader(<?php echo $key;?>, 'db')" method="post">
@@ -2601,54 +2907,29 @@ class UpdraftPlus {
2601
  <input type="hidden" name="action" value="updraft_download_backup" />
2602
  <input type="hidden" name="type" value="db" />
2603
  <input type="hidden" name="timestamp" value="<?php echo $key?>" />
2604
- <input type="submit" value="Database" />
2605
- </form>
2606
- <?php } else { echo "(No database)"; } ?>
2607
- </td>
2608
- <td>
2609
- <?php if (isset($value['plugins'])) { ?>
2610
- <form id="uddownloadform_plugins_<?php echo $key;?>" action="admin-ajax.php" onsubmit="return updraft_downloader(<?php echo $key;?>, 'plugins')" method="post">
2611
- <?php wp_nonce_field('updraftplus_download'); ?>
2612
- <input type="hidden" name="action" value="updraft_download_backup" />
2613
- <input type="hidden" name="type" value="plugins" />
2614
- <input type="hidden" name="timestamp" value="<?php echo $key?>" />
2615
- <input type="submit" value="Plugins" />
2616
  </form>
2617
- <?php } else { echo "(No plugins)"; } ?>
2618
  </td>
2619
- <td>
2620
- <?php if (isset($value['themes'])) { ?>
2621
- <form id="uddownloadform_themes_<?php echo $key;?>" action="admin-ajax.php" onsubmit="return updraft_downloader(<?php echo $key;?>, 'themes')" method="post">
2622
- <?php wp_nonce_field('updraftplus_download'); ?>
2623
- <input type="hidden" name="action" value="updraft_download_backup" />
2624
- <input type="hidden" name="type" value="themes" />
2625
- <input type="hidden" name="timestamp" value="<?php echo $key?>" />
2626
- <input type="submit" value="Themes" />
2627
- </form>
2628
- <?php } else { echo "(No themes)"; } ?>
2629
- </td>
2630
- <td>
2631
- <?php if (isset($value['uploads'])) { ?>
2632
- <form id="uddownloadform_uploads_<?php echo $key;?>" action="admin-ajax.php" onsubmit="return updraft_downloader(<?php echo $key;?>, 'uploads')" method="post">
2633
- <?php wp_nonce_field('updraftplus_download'); ?>
2634
- <input type="hidden" name="action" value="updraft_download_backup" />
2635
- <input type="hidden" name="type" value="uploads" />
2636
- <input type="hidden" name="timestamp" value="<?php echo $key?>" />
2637
- <input type="submit" value="Uploads" />
2638
- </form>
2639
- <?php } else { echo "(No uploads)"; } ?>
2640
- </td>
2641
- <td>
2642
- <?php if (isset($value['others'])) { ?>
2643
- <form id="uddownloadform_others_<?php echo $key;?>" action="admin-ajax.php" onsubmit="return updraft_downloader(<?php echo $key;?>, 'others')" method="post">
2644
  <?php wp_nonce_field('updraftplus_download'); ?>
2645
  <input type="hidden" name="action" value="updraft_download_backup" />
2646
- <input type="hidden" name="type" value="others" />
2647
  <input type="hidden" name="timestamp" value="<?php echo $key?>" />
2648
- <input type="submit" value="Others" />
2649
  </form>
2650
- <?php } else { echo "(No others)"; } ?>
2651
  </td>
 
 
2652
  <td>
2653
  <?php if (isset($value['nonce']) && preg_match("/^[0-9a-f]{12}$/",$value['nonce']) && is_readable($updraft_dir.'/log.'.$value['nonce'].'.txt')) { ?>
2654
  <form action="options-general.php" method="get">
@@ -2657,9 +2938,28 @@ class UpdraftPlus {
2657
  <input type="hidden" name="updraftplus_backup_nonce" value="<?php echo $value['nonce']; ?>" />
2658
  <input type="submit" value="Backup Log" />
2659
  </form>
2660
- <?php } else { echo "(No backup log)"; } ?>
 
 
 
 
 
 
 
2661
  </td>
2662
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
2663
  <?php }
2664
  echo '</table>';
2665
  }
@@ -2669,23 +2969,23 @@ class UpdraftPlus {
2669
  }
2670
 
2671
  function show_admin_warning_diskspace() {
2672
- $this->show_admin_warning('<strong>Warning:</strong> You have less than 35Mb 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.');
2673
  }
2674
 
2675
  function show_admin_warning_wordpressversion() {
2676
- $this->show_admin_warning('<strong>Warning:</strong> UpdraftPlus does not officially support versions of WordPress before 3.2. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress.');
2677
  }
2678
 
2679
  function show_admin_warning_unreadablelog() {
2680
- $this->show_admin_warning('<strong>UpdraftPlus notice:</strong> The log file could not be read.');
2681
  }
2682
 
2683
  function show_admin_warning_dropbox() {
2684
- $this->show_admin_warning('<strong>UpdraftPlus notice:</strong> <a href="options-general.php?page=updraftplus&action=updraftmethod-dropbox-auth&updraftplus_dropboxauth=doit">Click here to authenticate your Dropbox account (you will not be able to back up to Dropbox without it).</a>');
2685
  }
2686
 
2687
  function show_admin_warning_googledrive() {
2688
- $this->show_admin_warning('<strong>UpdraftPlus notice:</strong> <a href="options-general.php?page=updraftplus&action=updraftmethod-googledrive-auth&updraftplus_googleauth=doit">Click here to authenticate your Google Drive account (you will not be able to back up to Google Drive without it).</a>');
2689
  }
2690
 
2691
  // Caution: $source is allowed to be an array, not just a filename
@@ -2730,6 +3030,7 @@ class UpdraftPlus {
2730
  $this->zipfiles_added = 0;
2731
  $this->zipfiles_dirbatched = array();
2732
  $this->zipfiles_batched = array();
 
2733
 
2734
  // Magic value, used later to detect no error occurring
2735
  $last_error = 2349864;
@@ -2787,6 +3088,7 @@ class UpdraftPlus {
2787
  if (file_exists($zipfile)) {
2788
  $opencode = $zip->open($zipfile);
2789
  $original_size = filesize($zipfile);
 
2790
  } else {
2791
  $opencode = $zip->open($zipfile, ZIPARCHIVE::CREATE);
2792
  $original_size = 0;
@@ -2801,16 +3103,21 @@ class UpdraftPlus {
2801
  $fsize = filesize($file);
2802
  if (!isset($this->existing_files[$add_as]) || $this->existing_files[$add_as] != $fsize) {
2803
 
2804
- touch($file);
2805
  $zip->addFile($file, $add_as);
2806
 
2807
  $data_added_since_reopen += $fsize;
2808
  # 25Mb - force a write-out and re-open
2809
- if ($data_added_since_reopen > 26214400) {
2810
 
2811
  $before_size = filesize($zipfile);
 
2812
 
2813
- $this->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)');
 
 
 
 
2814
  if (!$zip->close()) {
2815
  $this->log("zip::Close returned an error");
2816
  }
@@ -2819,17 +3126,22 @@ class UpdraftPlus {
2819
  $opencode = $zip->open($zipfile);
2820
  if ($opencode !== true) return array($opencode, 0);
2821
  $data_added_since_reopen = 0;
 
2822
  // Call here, in case we've got so many big files that we don't complete the whole routine
2823
  if (filesize($zipfile) > $before_size) $this->something_useful_happened();
 
2824
  }
2825
  }
2826
  $this->zipfiles_added++;
 
2827
  if ($this->zipfiles_added % 100 == 0) $this->log("Zip: ".basename($zipfile).": ".$this->zipfiles_added." files added (on-disk size: ".round(filesize($zipfile)/1024,1)." Kb)");
2828
  }
2829
  // Reset the array
2830
  $this->zipfiles_batched = array();
2831
  $ret = $zip->close();
 
2832
  if (filesize($zipfile) > $original_size) $this->something_useful_happened();
 
2833
  return $ret;
2834
  }
2835
 
@@ -2855,7 +3167,7 @@ class UpdraftPlus {
2855
  // Is the place we've ended up above the original base? That leads to infinite recursion
2856
  if (($fullpath !== $original_fullpath && strpos($original_fullpath, $fullpath) === 0) || ($original_fullpath == $fullpath && strpos($use_path_when_storing, '/') !== false) ) {
2857
  $this->log("Infinite recursion: symlink lead us to $fullpath, which is within $original_fullpath");
2858
- $this->error("Infinite recursion: consult your log for more information");
2859
  return false;
2860
  }
2861
 
4
  Plugin URI: http://updraftplus.com
5
  Description: Backup and restore: your site can be backed up locally or to Amazon S3, Dropbox, Google Drive, (S)FTP, WebDAV & email, on automatic schedules.
6
  Author: UpdraftPlus.Com, DavidAnderson
7
+ Version: 1.5.6
8
  Donate link: http://david.dw-perspective.org.uk/donate
9
  License: GPLv3 or later
10
+ Text Domain: updraftplus
11
+ Author URI: http://updraftplus.com
12
  */
13
 
14
  /*
15
  TODO - some of these are out of date/done, needs pruning
16
+ // Add an appeal for translators to email me
17
+ // Separate out all restoration code and admin UI into separate file/classes (optimisation)?
18
+ // Search for other TODO-s in the code
19
+ // Make mcrypt warning on dropbox more prominent - one customer missed it
20
+ // Store meta-data on which version of UD the backup was made with (will help if we ever introduce quirks that need ironing)
21
+ // Test restoration when uploads dir is /assets/ (e.g. with Shoestrap theme)
22
+ // Send the user an email upon their first backup with tips on what to do (e.g. support/improve) (include legacy check to not bug existing users)
23
  //Allow use of /usr/bin/zip - since this can escape from PHP's memory limit. Can still batch as we do so, in order to monitor/measure progress
24
  //Do an automated test periodically for the success of loop-back connections
25
  //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.
26
  //Change DB encryption to not require whole gzip in memory (twice)
27
  //Add Rackspace, Box.Net, SugarSync and Microsoft Skydrive support??
28
+ //Make it easier to find add-ons
29
  //The restorer has a hard-coded wp-content - fix
30
  //?? On 'backup now', open up a Lightbox, count down 5 seconds, then start examining the log file (if it can be found)
31
  //Should make clear in dashboard what is a non-fatal error (i.e. can be retried) - leads to unnecessary bug reports
35
  // Create a "Want Support?" button/console, that leads them through what is needed, and performs some basic tests...
36
  // Resuming partial (S)FTP uploads
37
  // Translations
38
+ // Add-on to manage all your backups from a single dashboard
39
  // Make disk space check more intelligent (currently hard-coded at 35Mb)
40
  // Provide backup/restoration for UpdraftPlus's settings, to allow 'bootstrap' on a fresh WP install - some kind of single-use code which a remote UpdraftPlus can use to authenticate
41
  // Multiple jobs
144
  var $zipfiles_existingfiles;
145
  var $zipfiles_dirbatched;
146
  var $zipfiles_batched;
147
+ var $zipfiles_lastwritetime;
148
 
149
  var $zip_preferpcl = false;
150
 
174
  add_filter('cron_schedules', array($this,'modify_cron_schedules'));
175
  add_filter('plugin_action_links', array($this, 'plugin_action_links'), 10, 2);
176
  add_action('init', array($this, 'handle_url_actions'));
177
+ add_action('plugins_loaded', array($this, 'load_translations'));
178
 
179
  if (defined('UPDRAFTPLUS_PREFERPCLZIP') && UPDRAFTPLUS_PREFERPCLZIP == true) { $this->zip_preferpcl = true; }
180
 
181
  }
182
 
183
+ function load_translations() {
184
+ // Tell WordPress where to find the translations
185
+ load_plugin_textdomain('updraftplus', false, basename(dirname(__FILE__)).'/languages');
186
+ }
187
+
188
  // Handle actions passed on to method plugins; e.g. Google OAuth 2.0 - ?page=updraftplus&action=updraftmethod-googledrive-auth
189
  // Also handle action=downloadlog
190
  function handle_url_actions() {
216
  if ($handle = opendir($updraft_dir)) {
217
  $now_time=time();
218
  while (false !== ($entry = readdir($handle))) {
219
+ // The latter match is for files created internally by zipArchive::addFile
220
+ 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) {
221
  $this->log("Deleting old temporary file: $entry");
222
  @unlink($updraft_dir.'/'.$entry);
223
  }
229
  # Adds the settings link under the plugin on the plugin screen.
230
  function plugin_action_links($links, $file) {
231
  if ($file == plugin_basename(__FILE__)){
232
+ $settings_link = '<a href="'.site_url().'/wp-admin/options-general.php?page=updraftplus">'.__("Settings", "updraftplus").'</a>';
233
  array_unshift($links, $settings_link);
234
  // $settings_link = '<a href="http://david.dw-perspective.org.uk/donate">'.__("Donate","UpdraftPlus").'</a>';
235
  // array_unshift($links, $settings_link);
236
+ $settings_link = '<a href="http://updraftplus.com">'.__("Add-Ons / Pro Support","updraftplus").'</a>';
237
  array_unshift($links, $settings_link);
238
  }
239
  return $links;
254
  // Use append mode in case it already exists
255
  $this->logfile_handle = fopen($this->logfile_name, 'a');
256
  $this->opened_log_time = microtime(true);
257
+ $this->log('Opened log file at time: '.date('r'));
258
  global $wp_version;
259
  $logline = "UpdraftPlus: ".$this->version." WP: ".$wp_version." PHP: ".phpversion()." (".php_uname().") max_execution_time: ".@ini_get("max_execution_time")." memory_limit: ".ini_get('memory_limit')." ZipArchive::addFile : ";
260
 
312
  // return $inter;
313
  }
314
 
315
+ // This important function returns a list of file entities that can potentially be backed up (subject to users settings), and optionally further meta-data about them
316
+ function get_backupable_file_entities($include_others = true, $full_info = false) {
317
+
318
+ $wp_upload_dir = wp_upload_dir();
319
+
320
+ if ($full_info) {
321
+ $arr = array(
322
+ 'plugins' => array('path' => WP_PLUGIN_DIR, 'description' => __('Plugins','updraftplus')),
323
+ 'themes' => array('path' => WP_CONTENT_DIR.'/themes', 'description' => __('Themes','updraftplus')),
324
+ 'uploads' => array('path' => $wp_upload_dir['basedir'], 'description' => __('Uploads','updraftplus'))
325
+ );
326
+ } else {
327
+ $arr = array(
328
+ 'plugins' => WP_PLUGIN_DIR,
329
+ 'themes' => WP_CONTENT_DIR.'/themes',
330
+ 'uploads' => $wp_upload_dir['basedir']
331
+ );
332
+ }
333
+
334
+ $arr = apply_filters('updraft_backupable_file_entities', $arr, $full_info);
335
+
336
+ if ($include_others) {
337
+ if ($full_info) {
338
+ $arr['others'] = array('path' => WP_CONTENT_DIR, 'description' => __('Others','updraftplus'));
339
+ } else {
340
+ $arr['others'] = WP_CONTENT_DIR;
341
+ }
342
+ }
343
+
344
+ return $arr;
345
+
346
+ }
347
+
348
  function backup_resume($resumption_no, $bnonce) {
349
 
350
  @ignore_user_abort(true);
381
  wp_schedule_single_event($schedule_for, 'updraft_backup_resume', array($next_resumption, $bnonce));
382
  $this->newresumption_scheduled = $schedule_for;
383
  } else {
384
+ $this->log(sprintf('The current run is attempt number %d - will not schedule a further attempt until we see something useful happening'), 10);
385
  }
386
 
387
  // Sanity check
395
 
396
  // This save, if there was something, is then immediately picked up again
397
  if (is_array($backup_array)) {
398
+ $this->log('Saving backup status to database (elements: '.count($backup_array).")");
399
  $this->save_backup_history($backup_array);
400
  }
401
 
449
  $this->save_backup_history($our_files);
450
  }
451
 
452
+ $backupable_entities = $this->get_backupable_file_entities(true);
453
+
454
  foreach ($our_files as $key => $file) {
455
 
456
  // Only continue if the stored info was about a dump
457
+ if (!isset($backupable_entities[$key]) && $key != 'db') continue;
458
 
459
  $hash = md5($file);
460
  $fullpath = $this->backups_dir_location().'/'.$file;
567
 
568
  if (!is_file($this->logfile_name)) {
569
  $this->log('Failed to open log file ('.$this->logfile_name.') - you need to check your UpdraftPlus settings (your chosen directory for creating files in is not writable, or you ran out of disk space). Backup aborted.');
570
+ $this->error(__('Could not create files in the backup directory. Backup aborted - check your UpdraftPlus settings.','updraftplus'));
571
  return false;
572
  }
573
 
635
  return basename($file.'.crypt');
636
  } else {
637
  $this->log("Encryption error occurred when encrypting database. Encryption aborted.");
638
+ $this->error(__("Encryption error occurred when encrypting database. Encryption aborted.",'updraftplus'));
639
  return basename($file);
640
  }
641
  } else {
726
 
727
  $append_log = ($debug_mode && $this->logfile_name != "") ? "\r\nLog contents:\r\n".file_get_contents($this->logfile_name) : "" ;
728
 
729
+ 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);
730
 
731
  }
732
 
820
  $file_backups_found = 0;
821
  $this->log("Number of backup sets in history: ".count($backup_history));
822
 
823
+ $backupable_entities = $this->get_backupable_file_entities(true);
824
+
825
  foreach ($backup_history as $backup_datestamp => $backup_to_examine) {
826
  // $backup_to_examine is an array of file names, keyed on db/plugins/themes/uploads
827
  // The new backup_history array is saved afterwards, so remember to unset the ones that are to be deleted
838
  }
839
  }
840
 
841
+ $contains_files = false;
842
+ foreach ($backupable_entities as $entity => $info) {
843
+ if (isset($backup_to_examine[$entity])) {
844
+ $contains_files = true;
845
+ break;
846
+ }
847
+ }
848
+
849
+ if ($contains_files) {
850
  $file_backups_found++;
851
  $this->log("$backup_datestamp: this set includes files; fileset count is now $file_backups_found");
852
  if ($file_backups_found > $updraft_retain) {
853
  $this->log("$backup_datestamp: over retain limit ($updraft_retain); will delete this file set");
854
+
855
+ foreach ($backupable_entities as $entity => $info) {
856
+ if (!empty($backup_to_examine[$entity])) {
857
+ $this->prune_file($service, $backup_to_examine[$entity], $backup_method_object, $backup_passback);
858
+ }
859
+ unset($backup_to_examine[$entity]);
860
  }
861
+
862
+ }
863
+ }
864
+
865
+ // Get new result, post-deletion
866
+ $contains_files = false;
867
+ foreach ($backupable_entities as $entity => $info) {
868
+ if (isset($backup_to_examine[$entity])) {
869
+ $contains_files = true;
870
+ break;
871
  }
872
  }
873
 
874
  // Delete backup set completely if empty, o/w just remove DB
875
  // We search on the four keys which represent data, allowing other keys to be used to track other things
876
+ if (!$contains_files && !isset($backup_to_examine['db']) ) {
877
  $this->log("$backup_datestamp: this backup set is now empty; will remove from history");
878
  unset($backup_history[$backup_datestamp]);
879
  if (isset($backup_to_examine['nonce'])) {
981
  $zipcode = $this->make_zipfile($create_from_dir, $zip_name);
982
  if ($zipcode !== true) {
983
  $this->log("ERROR: Zip failure: Could not create $whichone zip: code=$zipcode");
984
+ $this->error(sprintf(__("Could not create %s zip. Consult the log file for more information.",'updraftplus'),$whichone));
985
  return false;
986
  } else {
987
  rename($full_path.'.tmp', $full_path);
1015
  $updraft_dir = $this->backups_dir_location();
1016
  if(!is_writable($updraft_dir)) {
1017
  $this->log("Backup directory ($updraft_dir) is not writable, or does not exist");
1018
+ $this->error(sprintf(__("Backup directory (%s) is not writable, or does not exist.", 'updraftplus'), $updraft_dir));
1019
  return array();
1020
  }
1021
 
1028
 
1029
  $backup_array = array();
1030
 
1031
+ $possible_backups = $this->get_backupable_file_entities(false);
 
 
 
 
 
1032
 
1033
  # Plugins, themes, uploads
1034
  foreach ($possible_backups as $youwhat => $whichdir) {
1054
  }
1055
  }
1056
 
1057
+ # Others - needs special/separate handling, since its purpose is to mop up everything else
1058
  if (UpdraftPlus_Options::get_updraft_option('updraft_include_others', true)) {
1059
 
1060
  $zip_file = $updraft_dir.'/'.$backup_file_basename.'-others.zip';
1084
 
1085
  $this->log('Looking for candidates to back up in: '.WP_CONTENT_DIR);
1086
  if ($handle = opendir(WP_CONTENT_DIR)) {
1087
+
1088
+ $possible_backups_dirs = array_flip($possible_backups);
1089
+
1090
  while (false !== ($entry = readdir($handle))) {
1091
  $candidate = WP_CONTENT_DIR.'/'.$entry;
1092
+ if ($entry != "." && $entry != "..") {
1093
+ if (isset($possible_backups_dirs[$candidate])) {
1094
+ $this->log("others: $entry: skipping: this is the ".$possible_backups_dirs[$candidate]." directory");
1095
+ } elseif ($candidate == $updraft_dir) {
1096
+ $this->log("others: $entry: skipping: this is the updraft directory");
1097
+ } elseif (isset($others_skip[$entry])) {
1098
+ $this->log("others: $entry: skipping: excluded by options");
1099
+ } else {
1100
+ $this->log("others: $entry: adding to list");
1101
+ array_push($other_dirlist, $candidate);
1102
+ }
1103
+ }
1104
  }
1105
  @closedir($handle);
1106
  } else {
1107
  $this->log('ERROR: Could not read the content directory: '.WP_CONTENT_DIR);
1108
+ $this->error(__('Could not read the content directory', 'updraftplus').': '.WP_CONTENT_DIR);
1109
  }
1110
 
1111
  if (count($other_dirlist)>0) {
1135
  UpdraftPlus_Options::update_updraft_option('updraft_backup_history', $backup_history);
1136
  } else {
1137
  $this->log('Could not save backup history because we have no backup array. Backup probably failed.');
1138
+ $this->error(__('Could not save backup history because we have no backup array. Backup probably failed.','updraftplus'));
1139
  }
1140
  }
1141
 
1164
  }
1165
  if(!$this->dbhandle) {
1166
  $this->log("ERROR: $file: Could not open the backup file for writing");
1167
+ $this->error("$file: ".__("Could not open the backup file for writing",'updraftplus'));
1168
  }
1169
  }
1170
 
1219
 
1220
  if (!is_writable($updraft_dir)) {
1221
  $this->log("The backup directory ($updraft_dir) is not writable.");
1222
+ $this->error("$updraft_dir: ".__('The backup directory is not writable.','updraftplus'));
1223
  return false;
1224
  }
1225
 
1297
  $this->log($file_base.'-db.gz: finished writing out complete database file ('.round(filesize($backup_final_file_name)/1024,1).' Kb)');
1298
  $this->close($this->dbhandle);
1299
 
1300
+ foreach ($unlink_files as $unlink_file) @unlink($unlink_file);
 
 
1301
 
1302
  if (count($this->errors)) {
1303
  return false;
1579
 
1580
  return $updraft_dir;
1581
  }
1582
+
1583
+ function recursive_directory_size($directory) {
1584
+ $size = 0;
1585
+ if(substr($directory,-1) == '/') $directory = substr($directory,0,-1);
1586
+
1587
+ if(!file_exists($directory) || !is_dir($directory) || !is_readable($directory)) return -1;
1588
+
1589
+ if($handle = opendir($directory)) {
1590
+ while(($file = readdir($handle)) !== false) {
1591
+ $path = $directory.'/'.$file;
1592
+ if($file != '.' && $file != '..') {
1593
+ if(is_file($path)) {
1594
+ $size += filesize($path);
1595
+ } elseif(is_dir($path)) {
1596
+ $handlesize = recursive_directory_size($path);
1597
+ if($handlesize >= 0) { $size += $handlesize; } else { return -1; }
1598
+ }
1599
+ }
1600
+ }
1601
+ closedir($handle);
1602
+ }
1603
+ if ($size > 1073741824) {
1604
+ return round($size / 1048576, 1).' Gb';
1605
+ } elseif ($size > 1048576) {
1606
+ return round($size / 1048576, 1).' Mb';
1607
+ } elseif ($size > 1024) {
1608
+ return round($size / 1024, 1).' Kb';
1609
+ } else {
1610
+ return round($size, 1).' b';
1611
+ }
1612
+ }
1613
+
1614
+ // This function examines inside the updraft directory to see if any new archives have been uploaded. If so, it adds them to the backup set. (No removal of items from the backup set is done)
1615
+ function rebuild_backup_history() {
1616
+
1617
+ $known_files = array();
1618
+ $known_nonces = array();
1619
+ $changes = false;
1620
+
1621
+ $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history');
1622
+ if (!is_array($backup_history)) $backup_history = array();
1623
+
1624
+ // Accumulate a list of known files
1625
+ foreach ($backup_history as $btime => $bdata) {
1626
+ foreach ($bdata as $key => $value) {
1627
+ // Record which set this file is found in
1628
+ if (preg_match('/^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-[\-a-z]+\.(zip|gz)$/i', $value, $matches)) {
1629
+ $nonce = $matches[2];
1630
+ $known_files[$value] = $nonce;
1631
+ $known_nonces[$nonce] = $btime;
1632
+ }
1633
+ }
1634
+ }
1635
+
1636
+ $updraft_dir = $this->backups_dir_location();
1637
+
1638
+ if (!is_dir($updraft_dir)) return;
1639
+
1640
+ if (!$handle = opendir($updraft_dir)) return;
1641
 
1642
+ while (false !== ($entry = readdir($handle))) {
1643
+ if ($entry != "." && $entry != "..") {
1644
+ if (preg_match('/^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-([\-a-z]+)\.(zip|gz)$/i', $entry, $matches)) {
1645
+ $btime = strtotime($matches[1]);
1646
+ if ($btime > 100) {
1647
+ if (!isset($known_files[$entry])) {
1648
+ $changes = true;
1649
+ $nonce = $matches[2];
1650
+ $type = $matches[3];
1651
+ // The time from the filename does not include seconds. Need to identify the seconds to get the right time
1652
+ if (isset($known_nonces[$nonce])) $btime = $known_nonces[$nonce];
1653
+ if (!isset($backup_history[$btime])) $backup_history[$btime] = array();
1654
+ $backup_history[$btime][$type] = $entry;
1655
+ $backup_history[$btime][$type.'-size'] = filesize($updraft_dir.'/'.$entry);
1656
+ $backup_history[$btime]['nonce'] = $nonce;
1657
+ }
1658
+ }
1659
+ }
1660
+ }
1661
+ }
1662
+
1663
+
1664
+ if ($changes) UpdraftPlus_Options::update_updraft_option('updraft_backup_history', $backup_history);
1665
+
1666
+ }
1667
+
1668
  // Called via AJAX
1669
  function updraft_ajax_handler() {
1670
  // Test the nonce (probably not needed, since we're presumably admin-authed, but there's no harm)
1672
  if (! wp_verify_nonce($nonce, 'updraftplus-credentialtest-nonce') || empty($_REQUEST['subaction'])) die('Security check');
1673
 
1674
  if ('lastlog' == $_GET['subaction']) {
1675
+ echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_lastmessage', '('.__('Nothing yet logged', 'updraftplus').')'));
1676
  } elseif ('lastbackup' == $_GET['subaction']) {
1677
  echo $this->last_backup_html();
1678
+ } elseif ('diskspaceused' == $_GET['subaction']) {
1679
+ echo $this->recursive_directory_size($this->backups_dir_location());
1680
  } elseif ('historystatus' == $_GET['subaction']) {
1681
+ $rescan = (isset($_GET['rescan']) && $_GET['rescan'] == 1);
1682
+ if ($rescan) $this->rebuild_backup_history();
1683
  echo $this->existing_backup_table();
1684
  } elseif ('downloadstatus' == $_GET['subaction'] && isset($_GET['timestamp']) && isset($_GET['type'])) {
1685
 
1693
  echo "File ready: $size Kb: You should: <button type=\"button\" onclick=\"updraftplus_downloadstage2('".$_GET['timestamp']."', '".$_GET['type']."')\">Download to your computer</button> and then, if you wish, <button id=\"uddownloaddelete_".$_GET['timestamp']."_".$_GET['type']."\" type=\"button\" onclick=\"updraftplus_deletefromserver('".$_GET['timestamp']."', '".$_GET['type']."')\">Delete from your web server</button>";
1694
  } elseif (preg_match('/^downloading:(.*)$/', $file, $matches) && file_exists($matches[1])) {
1695
  $size = round(filesize($matches[1])/1024, 1);
1696
+ echo __('File downloading', 'updraftplus').": ".basename($matches[1]).": $size Kb";
1697
  } else {
1698
+ echo __("No local copy present.", 'updraftplus');
1699
  }
1700
  }
1701
 
1717
 
1718
  if (!isset($_REQUEST['_wpnonce']) || !wp_verify_nonce($_REQUEST['_wpnonce'], 'updraftplus_download')) die;
1719
 
1720
+ if (!isset($_REQUEST['timestamp']) || !is_numeric($_REQUEST['timestamp']) || !isset($_REQUEST['type'])) exit;
1721
+
1722
+ $backupable_entities = $this->get_backupable_file_entities(true);
1723
+ $type_match = false;
1724
+ foreach ($backupable_entities as $type => $info) {
1725
+ if ($_REQUEST['type'] == $type) $type_match = true;
1726
+ }
1727
+
1728
+ if (!$type_match && $_REQUEST['type'] != 'db') exit;
1729
 
1730
  // Get the information on what is wanted
1731
  $type = $_REQUEST['type'];
1796
  header('Content-Encoding: none');
1797
  session_write_close();
1798
  echo "\r\n\r\n";
1799
+ $this->download_file($file, $service);
1800
  if (is_readable($fullpath)) {
1801
  $this->log('Remote fetch was successful (file size: '.round(filesize($fullpath)/1024,1).' Kb)');
1802
  } else {
1871
  }
1872
  // $this->delete_local($file);
1873
  } else {
1874
+ echo __('File not found', 'updraftplus');
1875
  }
1876
  }
1877
 
1878
+ function download_file($file, $service=false) {
1879
 
1880
  if (!$service) $service = UpdraftPlus_Options::get_updraft_option('updraft_service');
1881
 
1890
  $remote_obj->download($file);
1891
  } else {
1892
  $this->log("Automatic backup restoration is not available with the method: $service.");
1893
+ $this->error("$file: ".sprintf(__("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", 'updraftplus'), $service)." (".$this->prune_updraft_dir_prefix($this->backups_dir_location()).")");
1894
  }
1895
 
1896
  }
1897
 
1898
  function restore_backup($timestamp) {
1899
+
1900
  global $wp_filesystem;
1901
  $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history');
1902
  if(!is_array($backup_history[$timestamp])) {
1903
+ echo '<p>'.__('This backup does not exist in the backup history - restoration aborted. Timestamp:','updraftplus')." $timestamp</p><br/>";
1904
  return false;
1905
  }
1906
 
1911
  show_message($message);
1912
  exit;
1913
  }
1914
+
1915
  //if we make it this far then WP_Filesystem has been instantiated and is functional (tested with ftpext, what about suPHP and other situations where direct may work?)
1916
+ echo '<h1>'.__('UpdraftPlus Restoration: Progress', 'updraftplus').'</h1><div id="updraft-restore-progress">';
1917
 
1918
  $updraft_dir = $this->backups_dir_location().'/';
1919
 
1920
  $service = (isset($backup_history[$timestamp]['service'])) ? $backup_history[$timestamp]['service'] : false;
1921
 
1922
+ if (!isset($_POST['updraft_restore']) || !is_array($_POST['updraft_restore'])) {
1923
+ echo '<p>'.__('ABORT: Could not find the information on which entities to restore.', 'updraftplus').'</p>';
1924
+ return false;
1925
+ }
1926
+
1927
+ $entities_to_restore = array_flip($_POST['updraft_restore']);
1928
+
1929
+ $backupable_entities = $this->get_backupable_file_entities(true, true);
1930
+
1931
  foreach($backup_history[$timestamp] as $type => $file) {
1932
  // All restorable entities must be given explicitly, as we can store other arbitrary data in the history array
1933
+
1934
+ if (!isset($backupable_entities[$type]) && 'db' != $type) continue;
1935
+
1936
+ if ($type == 'db') {
1937
+ echo "<h2>".__('Database','updraftplus')."</h2>";
1938
+ } else {
1939
+ echo "<h2>".$backupable_entities[$type]['description']."</h2>";
1940
+ }
1941
+
1942
+ if (!isset($entities_to_restore[$type])) {
1943
+ echo "<p>$type: ".__('This component was not selected for restoration - skipping.', 'updraftplus')."</p>";
1944
+ continue;
1945
+ }
1946
+
1947
  $fullpath = $updraft_dir.$file;
1948
+
1949
+ echo "Looking for $type archive: file name: ".htmlspecialchars($file)."<br>";
1950
  if(!is_readable($fullpath) && $type != 'db') {
1951
+ echo __("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)",'updraftplus')."<br>";
1952
  $this->download_file($file, $service);
1953
  }
1954
+ // If a file size is stored in the backup data, then verify correctness of the local file
1955
+ if (isset($backup_history[$timestamp][$type.'-size'])) {
1956
+ $fs = $backup_history[$timestamp][$type.'-size'];
1957
+ echo __("Archive is expected to be size:",'updraftplus')." ".round($fs/1024)." Kb :";
1958
+ $as = @filesize($fullpath);
1959
+ if ($as == $fs) {
1960
+ echo "OK<br>";
1961
+ } else {
1962
+ echo "<strong>".__('ERROR','updraftplus').":</strong> is size: ".round($as/1024)." ($fs, $as)<br>";
1963
+ }
1964
+ } else {
1965
+ echo __("The backup records do not contain information about the proper size of this file.",'updraftplus')."<br>";
1966
+ }
1967
  # Types: uploads, themes, plugins, others, db
1968
  if(is_readable($fullpath) && $type != 'db') {
1969
+
1970
  if(!class_exists('WP_Upgrader')) require_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
1971
  require_once(UPDRAFTPLUS_DIR.'/includes/updraft-restorer.php');
1972
  $restorer = new Updraft_Restorer();
1973
+ $val = $restorer->restore_backup($fullpath, $type, $service, $backupable_entities[$type]);
1974
+
1975
  if(is_wp_error($val)) {
1976
+ foreach ($val->get_error_messages() as $msg) {
1977
+ echo '<strong>'.__('Error message', 'updraftplus').':</strong> '.htmlspecialchars($msg).'<br>';
1978
+ }
1979
  echo '</div>'; //close the updraft_restore_progress div even if we error
1980
  return false;
1981
  }
1982
+ } elseif ($type != 'db') {
1983
+ $this->error("$file: ".__('Could not find one of the files for restoration', 'updraftplus'));
1984
+ echo __('Could not find one of the files for restoration', 'updraftplus').": ($file)";
1985
+ } else {
1986
+ echo __("Databases are not yet restored through this mechanism - use your web host's control panel, phpMyAdmin or a similar tool",'updraftplus')."<br>";
1987
  }
1988
  }
1989
  echo '</div>'; //close the updraft_restore_progress div
1990
  # The 'off' check is for badly configured setups - http://wordpress.org/support/topic/plugin-wp-super-cache-warning-php-safe-mode-enabled-but-safe-mode-is-off
1991
  if(@ini_get('safe_mode') && strtolower(@ini_get('safe_mode')) != "off") {
1992
+ echo "<p>".__('Database could not be restored because PHP safe_mode is active on your server. You will need to manually restore the file via phpMyAdmin or another method.', 'updraftplus')."</p><br/>";
1993
  return false;
1994
  }
1995
  return true;
1998
  //deletes the -old directories that are created when a backup is restored.
1999
  function delete_old_dirs() {
2000
  global $wp_filesystem;
2001
+ $credentials = request_filesystem_credentials(wp_nonce_url("options-general.php?page=updraftplus&action=updraft_delete_old_dirs", 'updraft_delete_old_dirs'));
2002
  WP_Filesystem($credentials);
2003
  if ( $wp_filesystem->errors->get_error_code() ) {
2004
  foreach ( $wp_filesystem->errors->get_error_messages() as $message )
2006
  exit;
2007
  }
2008
 
2009
+ $list = $wp_filesystem->dirlist(WP_CONTENT_DIR);
2010
 
2011
+ $return_code = true;
2012
+
2013
+ foreach ($list as $item) {
2014
+ if (substr($item['name'], -4, 4) == "-old") {
2015
+ //recursively delete
2016
+ print "<strong>".__('Delete','updraftplus').": </strong>".htmlspecialchars($item['name']).": ";
2017
+ if(!$wp_filesystem->delete(WP_CONTENT_DIR.'/'.$item['name'], true)) {
2018
+ $return_code = false;
2019
+ print "<strong>Failed</strong><br>";
2020
+ } else {
2021
+ print "<strong>OK</strong><br>";
2022
+ }
2023
  }
2024
  }
2025
+
2026
+ return $return_code;
2027
  }
2028
 
2029
  //scans the content dir to see if any -old dirs are present
2030
  function scan_old_dirs() {
2031
  $dirArr = scandir(WP_CONTENT_DIR);
2032
  foreach($dirArr as $dir) {
2033
+ if(strpos($dir,'-old') !== false) return true;
 
 
2034
  }
2035
  return false;
2036
  }
2107
  @ini_set('track_errors',1);
2108
  }
2109
  wp_enqueue_script('jquery');
2110
+ wp_enqueue_script('jquery-ui-dialog');
2111
 
2112
  if (UpdraftPlus_Options::user_can_manage() && UpdraftPlus_Options::get_updraft_option('updraft_service') == "googledrive" && UpdraftPlus_Options::get_updraft_option('updraft_googledrive_clientid','') != '' && UpdraftPlus_Options::get_updraft_option('updraft_googledrive_token','') == '') {
2113
  add_action('admin_notices', array($this,'show_admin_warning_googledrive') );
2140
  return $this->url_start($urls,'updraftplus.com')."Want more features or paid, guaranteed support? Check out UpdraftPlus.Com".$this->url_end($urls,'updraftplus.com');
2141
  break;
2142
  case 1:
2143
+ if (defined('WPLANG') && strlen(WPLANG)>0 && !is_file(UPDRAFTPLUS_DIR.'/languages/updraftplus-'.WPLANG.
2144
+ '.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/');
2145
+
2146
+ 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');
2147
  case 2:
2148
  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";
2149
  break;
2150
  case 3:
2151
+ 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');
2152
  break;
2153
  case 4:
2154
  return $this->url_start($urls,'www.simbahosting.co.uk')."Need high-quality WordPress hosting from WordPress specialists? (Including automatic backups and 1-click installer). Get it from the creators of UpdraftPlus.".$this->url_end($urls,'www.simbahosting.co.uk');
2155
  break;
2156
  case 5:
2157
  if (!defined('UPDRAFTPLUS_NOADS')) {
2158
+ return $this->url_start($urls,'updraftplus.com').__("Need even more features and support? Check out UpdraftPlus Premium",'updraftplus').$this->url_end($urls,'updraftplus.com');
2159
  } else {
2160
  return "Thanks for being an UpdraftPlus premium user. Keep visiting ".$this->url_start($urls,'updraftplus.com')."updraftplus.com".$this->url_end($urls,'updraftplus.com')." to see what's going on.";
2161
  }
2164
  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/');
2165
  break;
2166
  case 7:
2167
+ return $this->url_start($urls,'updraftplus.com').__("Check out UpdraftPlus.Com for help, add-ons and support",'updraftplus').$this->url_end($urls,'updraftplus.com');
2168
  break;
2169
  case 8:
2170
+ return __("Want to say thank-you for UpdraftPlus?",'updraftplus').$this->url_start($urls,'updraftplus.com/shop/')." ".__("Please buy our very cheap 'no adverts' add-on.",'updraftplus').$this->url_end($urls,'updraftplus.com/shop/');
2171
  break;
2172
  }
2173
  }
2176
  $updraft_dir = $this->backups_dir_location();
2177
 
2178
  ?>
2179
+ <table class="form-table" style="width:900px;">
2180
  <tr>
2181
+ <th><?php _e('File backup intervals','updraftplus'); ?>:</th>
2182
  <td><select name="updraft_interval">
2183
  <?php
2184
+ $intervals = array ("manual" => _x("Manual",'i.e. Non-automatic','updraftplus'), 'every4hours' => __("Every 4 hours",'updraftplus'), 'every8hours' => __("Every 8 hours",'updraftplus'), 'twicedaily' => __("Every 12 hours",'updraftplus'), 'daily' => __("Daily",'updraftplus'), 'weekly' => __("Weekly",'updraftplus'), 'fortnightly' => __("Fortnightly",'updraftplus'), 'monthly' => __("Monthly",'updraftplus'));
2185
  foreach ($intervals as $cronsched => $descrip) {
2186
  echo "<option value=\"$cronsched\" ";
2187
  if ($cronsched == UpdraftPlus_Options::get_updraft_option('updraft_interval','manual')) echo 'selected="selected"';
2189
  }
2190
  ?>
2191
  </select> <?php echo apply_filters('updraftplus_schedule_showfileconfig', '<input type="hidden" name="updraftplus_starttime_files" value="">'); ?>
2192
+ <?php
2193
+ echo __('and retain this many backups', 'updraftplus').': ';
2194
  $updraft_retain = UpdraftPlus_Options::get_updraft_option('updraft_retain', 1);
2195
  $updraft_retain = ((int)$updraft_retain > 0) ? (int)$updraft_retain : 1;
2196
  ?> <input type="text" name="updraft_retain" value="<?php echo $updraft_retain ?>" style="width:40px;" />
2197
  </td>
2198
  </tr>
2199
  <tr>
2200
+ <th><?php _e('Database backup intervals','updraftplus'); ?>:</th>
2201
  <td><select name="updraft_interval_database">
2202
  <?php
2203
  foreach ($intervals as $cronsched => $descrip) {
2207
  }
2208
  ?>
2209
  </select> <?php echo apply_filters('updraftplus_schedule_showdbconfig', '<input type="hidden" name="updraftplus_starttime_db" value="">'); ?>
2210
+ <?php
2211
+ echo __('and retain this many backups', 'updraftplus').': ';
2212
  $updraft_retain_db = UpdraftPlus_Options::get_updraft_option('updraft_retain_db', $updraft_retain);
2213
  $updraft_retain_db = ((int)$updraft_retain_db > 0) ? (int)$updraft_retain_db : 1;
2214
  ?> <input type="text" name="updraft_retain_db" value="<?php echo $updraft_retain_db ?>" style="width:40px" />
2215
  </td>
2216
  </tr>
2217
  <tr class="backup-interval-description">
2218
+ <td></td><td><p><?php echo htmlspecialchars(__('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.', 'updraftplus')); ?></p>
2219
+ <?php echo apply_filters('updraftplus_fixtime_advert', '<p><strong>'.__('To fix the time at which a backup should take place,','updraftplus').' </strong> ('.__('e.g. if your server is busy at day and you want to run overnight','updraftplus').'), <a href="http://updraftplus.com/shop/fix-time/">'.htmlspecialchars(__('use the "Fix Time" add-on','updraftplus')).'</a></p>'); ?>
2220
  </td>
2221
  </tr>
 
 
 
 
 
 
 
 
2222
  <tr>
2223
  <th>Include in files backup:</th>
2224
  <td>
2225
+
2226
+ <?php
2227
+ $backupable_entities = $this->get_backupable_file_entities(true, true);
2228
+ $include_others_exclude = UpdraftPlus_Options::get_updraft_option('updraft_include_others_exclude',UPDRAFT_DEFAULT_OTHERS_EXCLUDE);
2229
+ # The true (default value if non-existent) here has the effect of forcing a default of on.
2230
+ foreach ($backupable_entities as $key => $info) {
2231
+ $included = (UpdraftPlus_Options::get_updraft_option("updraft_include_$key",true)) ? 'checked="checked"' : "";
2232
+ if ('others' == $key) {
2233
+ ?><input id="updraft_include_others" type="checkbox" name="updraft_include_others" value="1" <?php echo $included; ?> /> <label for="updraft_include_<?php echo $key ?>"><?php echo __('Any other directories found inside wp-content but exclude these directories:', 'updraftplus');?></label> <input type="text" name="updraft_include_others_exclude" size="44" value="<?php echo htmlspecialchars($include_others_exclude); ?>"/><br><?php
2234
+ } else {
2235
+ echo "<input id=\"updraft_include_$key\" type=\"checkbox\" name=\"updraft_include_$key\" value=\"1\" $included /><label for=\"updraft_include_$key\">".$info['description']."</label><br>";
2236
+ }
2237
+ }
2238
+ ?>
2239
+ <p><?php echo __('Include all of these, unless you are backing them up outside of UpdraftPlus. The above directories are usually everything (except for WordPress core itself which you can download afresh from WordPress.org). But if you have made customised modifications outside of these directories, you need to back them up another way.', 'updraftplus') ?> (<a href="http://wordshell.net"><?php echo __('Use WordShell for automatic backup, version control and patching', 'updraftplus');?></a>).</p></td>
2240
  </td>
2241
  </tr>
2242
  <tr>
2243
+ <th><?php _e('Email','updraftplus'); ?>:</th>
2244
+ <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>
2245
  </tr>
2246
 
2247
  <tr>
2248
+ <th><?php _e('Database encryption phrase','updraftplus');?>:</th>
2249
  <?php
2250
  $updraft_encryptionphrase = UpdraftPlus_Options::get_updraft_option('updraft_encryptionphrase');
2251
  ?>
2252
  <td><input type="text" name="updraft_encryptionphrase" value="<?php echo $updraft_encryptionphrase ?>" style="width:132px" /></td>
2253
  </tr>
2254
  <tr class="backup-crypt-description">
2255
+ <td></td><td><?php _e('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). You can also use the file example-decrypt.php from inside the UpdraftPlus plugin directory to decrypt manually.','updraftplus');?></td>
2256
  </tr>
2257
  </table>
2258
 
2259
+ <h2><?php _e('Copying Your Backup To Remote Storage','updraftplus');?></h2>
2260
 
2261
+ <table class="form-table" style="width:900px;">
2262
  <tr>
2263
+ <th><?php _e('Choose your remote storage','updraftplus');?>:</th>
2264
  <td><select name="updraft_service" id="updraft-service">
2265
  <?php
2266
  $debug_mode = (UpdraftPlus_Options::get_updraft_option('updraft_debug_mode')) ? 'checked="checked"' : "";
2325
  });
2326
  }
2327
  var updraft_historytimer = 0;
2328
+ var calculated_diskspace = 0;
2329
+ function updraft_historytimertoggle(forceon) {
2330
+ if (!updraft_historytimer || forceon == 1) {
2331
+ updraft_updatehistory(0);
2332
+ updraft_historytimer = setInterval(function(){updraft_updatehistory(0)}, 30000);
2333
+ if (!calculated_diskspace) {
2334
+ updraftplus_diskspace();
2335
+ calculated_diskspace=1;
2336
+ }
2337
+ } else {
2338
  clearTimeout(updraft_historytimer);
2339
  updraft_historytimer = 0;
 
 
 
2340
  }
2341
  }
2342
+ function updraft_updatehistory(rescan) {
2343
+ if (rescan == 1) {
2344
+ 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>');
2345
+ }
2346
+ jQuery.get(ajaxurl, { action: 'updraft_ajax', subaction: 'historystatus', nonce: '<?php echo wp_create_nonce('updraftplus-credentialtest-nonce'); ?>', rescan: rescan }, function(response) {
2347
  jQuery('#updraft_existing_backups').html(response);
2348
  });
2349
  }
2350
 
2351
  jQuery(document).ready(function() {
2352
+ jQuery( "#updraft-restore-modal" ).dialog({
2353
+ autoOpen: false, height: 385, width: 480, modal: true,
2354
+ buttons: {
2355
+ Restore: function() {
2356
+ var anyselected = 0;
2357
+ jQuery('input[name="updraft_restore[]"]').each(function(x,y){
2358
+ if (jQuery(y).is(':checked')) {
2359
+ anyselected = 1;
2360
+ //alert(jQuery(y).val());
2361
+ }
2362
+ });
2363
+ if (anyselected == 1) {
2364
+ jQuery('#updraft_restore_form').submit();
2365
+ } else {
2366
+ alert('You did not select any components to restore. Please select at least one, and then try again.');
2367
+ }
2368
+ },
2369
+ <?php _e('Cancel','updraftplus');?>: function() { jQuery(this).dialog("close"); }
2370
+ }
2371
+ });
2372
+
2373
+ jQuery( "#updraft-backupnow-modal" ).dialog({
2374
+ autoOpen: false, height: 265, width: 375, modal: true,
2375
+ buttons: {
2376
+ '<?php _e('Backup Now','updraftplus');?>': function() {
2377
+ jQuery('#updraft-backupnow-form').submit();
2378
+ },
2379
+ <?php _e('Cancel','updraftplus');?>: function() { jQuery(this).dialog("close"); }
2380
+ }
2381
+ });
2382
+
2383
  jQuery('#enableexpertmode').click(function() {
2384
  jQuery('.expertmode').fadeIn();
2385
  return false;
2398
  });
2399
  /* ]]> */
2400
  </script>
2401
+ <table class="form-table" style="width:900px;">
2402
  <tr>
2403
+ <td colspan="2"><h2><?php _e('Advanced / Debugging Settings','updraftplus'); ?></h2></td>
2404
  </tr>
2405
  <tr>
2406
+ <th><?php _e('Debug mode','updraftplus');?>:</th>
2407
+ <td><input type="checkbox" id="updraft_debug_mode" name="updraft_debug_mode" value="1" <?php echo $debug_mode; ?> /> <br><label for="updraft_debug_mode"><?php _e('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.','updraftplus');?></label></td>
2408
  </tr>
2409
  <tr>
2410
+ <th><?php _e('Expert settings','updraftplus');?>:</th>
2411
+ <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');?></td>
2412
  </tr>
2413
  <?php
2414
  $delete_local = UpdraftPlus_Options::get_updraft_option('updraft_delete_local', 1);
2415
  ?>
2416
 
2417
  <tr class="deletelocal expertmode" style="display:none;">
2418
+ <th><?php _e('Delete local backup','updraftplus');?>:</th>
2419
+ <td><input type="checkbox" id="updraft_delete_local" name="updraft_delete_local" value="1" <?php if ($delete_local) echo 'checked="checked"'; ?>> <br><label for="updraft_delete_local"><?php _e('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).','updraftplus');?></label></td>
2420
  </tr>
2421
 
2422
  <tr class="expertmode backupdirrow" style="display:none;">
2428
 
2429
  // Suppress warnings, since if the user is dumping warnings to screen, then invalid JavaScript results and the screen breaks.
2430
  if(@is_writable($updraft_dir)) {
2431
+ $dir_info = '<span style="color:green">'.__('Backup directory specified is writable, which is good.','updraftplus').'</span>';
2432
  } else {
2433
+ $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>';
2434
  }
2435
 
2436
+ 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>
2437
  </tr>
2438
  <tr>
2439
  <td></td>
2454
  <td></td>
2455
  <td>
2456
  <input type="hidden" name="action" value="update" />
2457
+ <input type="submit" class="button-primary" value="<?php _e('Save Changes','updraftplus');?>" />
2458
  </td>
2459
  </tr>
2460
  </table>
2478
 
2479
  if (!empty($updraft_last_backup['backup_nonce'])) {
2480
  $potential_log_file = $updraft_dir."/log.".$updraft_last_backup['backup_nonce'].".txt";
2481
+ if (is_readable($potential_log_file)) $last_backup_text .= "<br><a href=\"?page=updraftplus&action=downloadlog&updraftplus_backup_nonce=".$updraft_last_backup['backup_nonce']."\">".__('Download log file','updraftplus')."</a>";
2482
  }
2483
 
2484
  $last_backup_color = ($updraft_last_backup['success']) ? 'green' : 'red';
2485
 
2486
  } else {
2487
+ $last_backup_text = __('No backup has been completed.','updraftplus');
2488
  $last_backup_color = 'blue';
2489
  }
2490
 
2494
 
2495
  function settings_output() {
2496
 
2497
+ wp_enqueue_style('jquery-ui', UPDRAFTPLUS_URL.'/includes/jquery-ui-1.8.22.custom.css');
2498
+
2499
  /*
2500
  we use request here because the initial restore is triggered by a POSTed form. we then may need to obtain credentials
2501
  for the WP_Filesystem. to do this WP outputs a form that we can't insert variables into (apparently). So the values are
2504
  if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'updraft_restore' && isset($_REQUEST['backup_timestamp'])) {
2505
  $backup_success = $this->restore_backup($_REQUEST['backup_timestamp']);
2506
  if(empty($this->errors) && $backup_success == true) {
2507
+ echo '<p><strong>'.__('Restore successful!','updraftplus').'</strong></p>';
2508
+ echo '<b>'.__('Actions','updraftplus').':</b> <a href="options-general.php?page=updraftplus&updraft_restore_success=true">'.__('Return to UpdraftPlus Configuration','updraftplus').'</a>';
2509
  return;
2510
  } else {
2511
+ echo '<p>Restore failed...</p><ul style="list-style: disc inside;">';
2512
  foreach ($this->errors as $err) {
2513
+ if (is_wp_error($err)) {
2514
+ foreach ($err->get_error_messages() as $msg) {
2515
+ echo '<li>'.htmlspecialchars($msg).'<li>';
2516
+ }
2517
+ } elseif (is_string($err)) {
2518
+ echo "<li>".htmlspecialchars($err)."</li>";
2519
+ } else {
2520
+ print "<li>".print_r($err,true)."</li>";
2521
  }
 
2522
  }
2523
+ echo '</ul><b>Actions:</b> <a href="options-general.php?page=updraftplus">'.__('Return to UpdraftPlus Configuration','updraftplus').'</a>';
2524
  return;
2525
  }
2526
  //uncomment the below once i figure out how i want the flow of a restoration to work.
2527
+ //echo '<b>'__('Actions','updraftplus').':</b> <a href="options-general.php?page=updraftplus">Return to UpdraftPlus Configuration</a>';
2528
  }
2529
  $deleted_old_dirs = false;
2530
  if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'updraft_delete_old_dirs') {
2531
+
2532
+ echo '<h1>UpdraftPlus - '.__('Remove old directories','updraftplus').'</h1>';
2533
+
2534
+ $nonce = (empty($_REQUEST['_wpnonce'])) ? "" : $_REQUEST['_wpnonce'];
2535
+ if (!wp_verify_nonce($nonce, 'updraft_delete_old_dirs')) die('Security check');
2536
+
2537
  if($this->delete_old_dirs()) {
2538
+ echo '<p>'.__('Old directories successfully removed.','updraftplus').'</p><br/>';
2539
  $deleted_old_dirs = true;
2540
  } else {
2541
+ echo '<p>',__('Old directory removal failed for some reason. You may want to do this manually.','updraftplus').'</p><br/>';
2542
  }
2543
+ echo '<b>'.__('Actions','updraftplus').':</b> <a href="options-general.php?page=updraftplus">'.__('Return to UpdraftPlus Configuration','updraftplus').'</a>';
 
2544
  return;
2545
  }
2546
 
2553
 
2554
  if(isset($_GET['action']) && $_GET['action'] == 'updraft_create_backup_dir') {
2555
  if(!$this->create_backup_dir()) {
2556
+ echo '<p>'.__('Backup directory could not be created','updraftplus').'...</p><br/>';
2557
  }
2558
+ echo '<p>'.__('Backup directory successfully created.','updraftplus').'</p><br/>';
2559
+ echo '<b>'.__('Actions','updraftplus').':</b> <a href="options-general.php?page=updraftplus">'.__('Return to UpdraftPlus Configuration','updraftplus').'</a>';
2560
  return;
2561
  }
2562
 
2563
  if(isset($_POST['action']) && $_POST['action'] == 'updraft_backup') {
2564
  // For unknown reasons, the <script> runs twice if put inside the <div>
2565
+ echo '<div class="updated fade" style="max-width: 800px; font-size:140%; line-height: 140%; padding:14px; clear:left;"><strong>',__('Schedule backup','updraftplus').':</strong> ';
2566
  if (wp_schedule_single_event(time()+5, 'updraft_backup_all') === false) {
2567
  $this->log("A backup run failed to schedule");
2568
+ echo __("Failed.",'updraftplus')."</div>";
2569
  } else {
2570
+ 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>";
2571
  $this->log("A backup run has been scheduled");
2572
  }
2573
  }
2576
  if(isset($_POST['action']) && $_POST['action'] == 'updraft_backup_debug_all') { $this->boot_backup(true,true); }
2577
  elseif (isset($_POST['action']) && $_POST['action'] == 'updraft_backup_debug_db') { $this->backup_db(); }
2578
  elseif (isset($_POST['action']) && $_POST['action'] == 'updraft_wipesettings') {
2579
+ $settings = array('updraft_interval', 'updraft_interval_database', 'updraft_retain', 'updraft_retain_db', 'updraft_encryptionphrase', 'updraft_service', 'updraft_dropbox_appkey', 'updraft_dropbox_secret', 'updraft_googledrive_clientid', 'updraft_googledrive_secret', 'updraft_googledrive_remotepath', 'updraft_ftp_login', 'updraft_ftp_pass', 'updraft_ftp_remote_path', 'updraft_server_address', 'updraft_dir', 'updraft_email', 'updraft_delete_local', 'updraft_debug_mode', 'updraft_include_plugins', 'updraft_include_themes', 'updraft_include_uploads', 'updraft_include_others', 'updraft_include_blogs', 'updraft_include_mu-plugins', 'updraft_include_others_exclude', 'updraft_lastmessage', 'updraft_googledrive_clientid', 'updraft_googledrive_token', 'updraft_dropboxtk_request_token', 'updraft_dropboxtk_access_token', 'updraft_dropbox_folder', 'updraft_last_backup', 'updraft_starttime_files', 'updraft_starttime_db', 'updraft_sftp_settings');
2580
  foreach ($settings as $s) {
2581
  UpdraftPlus_Options::delete_updraft_option($s);
2582
  }
2583
+ $this->show_admin_warning(__("Your settings have been wiped.",'updraftplus'));
2584
  }
2585
 
2586
  ?>
2587
  <div class="wrap">
2588
  <h1><?php echo $this->plugin_title; ?></h1>
2589
 
2590
+ <?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 $this->version; ?>
2591
  <br>
2592
  <?php
2593
  if(isset($_GET['updraft_restore_success'])) {
2594
+ 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.').' '.__('At this time UpdraftPlus does not automatically restore your database. You will need to use an external tool like phpMyAdmin to perform that task.','updraftplus')."</div>";
2595
  }
2596
 
2597
  $ws_advert = $this->wordshell_random_advert(1);
2598
  if ($ws_advert) { echo '<div class="updated fade" style="max-width: 800px; font-size:140%; line-height: 140%; padding:14px; clear:left;">'.$ws_advert.'</div>'; }
2599
 
2600
+ if($deleted_old_dirs) echo '<div style="color:blue" class=\"updated fade\">'.__('Old directories successfully deleted.','updraftplus').'</div>';
2601
 
2602
  if(!$this->memory_check(96)) {?>
2603
+ <div style="color:orange"><?php _e("Your PHP memory limit is quite low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may not work properly with a memory limit of less than 96 Mb (though on the other hand, it has been used successfully with a 32Mb limit - your mileage may vary, but don't blame us!).",'updraftplus');?> <?php _e('Current limit is:','updraftplus');?> <?php echo $this->memory_check_current(); ?> Mb</div>
2604
  <?php
2605
  }
2606
  if(1==0 && !$this->execution_time_check(60)) {?>
2607
+ <div style="color:orange"><?php _e("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:",'updraftplus');?> <?php echo ini_get('max_execution_time').' '.__('seconds','updraftplus')?>.</div>
2608
  <?php
2609
  }
2610
 
2611
  if($this->scan_old_dirs()) {?>
2612
+ <div class="updated fade" style="padding:8px;"><?php _e('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).','updraftplus');?>
2613
  <form method="post" action="<?php echo remove_query_arg(array('updraft_restore_success','action')) ?>">
2614
+ <?php wp_nonce_field('updraft_delete_old_dirs'); ?>
2615
  <input type="hidden" name="action" value="updraft_delete_old_dirs" />
2616
+ <input type="submit" class="button-primary" value="<?php _e('Delete Old Directories','updraftplus');?>" onclick="return(confirm('<?php echo htmlspecialchars(__('Are you sure you want to delete the old directories? This cannot be undone.','updraftplus'));?>'))" />
2617
  </form>
2618
+ </div>
2619
  <?php
2620
  }
2621
  if(!empty($this->errors)) {
2626
  }
2627
  ?>
2628
 
2629
+ <h2 style="clear:left;"><?php _e('Existing Schedule And Backups','updraftplus');?></h2>
2630
  <table class="form-table" style="float:left; clear: both; width:545px;">
2631
  <noscript>
2632
  <tr>
2633
+ <th><?php _e('JavaScript warning','updraftplus');?>:</th>
2634
+ <td style="color:red"><?php _e('This admin interface uses JavaScript heavily. You either need to activate it within your browser, or to use a JavaScript-capable browser.','updraftplus');?></td>
2635
  </tr>
2636
  </noscript>
 
2637
  <?php
2638
  $updraft_dir = $this->backups_dir_location();
2639
  // UNIX timestamp
2644
  // Convert to blog time zone
2645
  $next_scheduled_backup = get_date_from_gmt($next_scheduled_backup_gmt, 'D, F j, Y H:i T');
2646
  } else {
2647
+ $next_scheduled_backup = __('Nothing currently scheduled','updraftplus');
2648
  }
2649
 
2650
  $next_scheduled_backup_database = wp_next_scheduled('updraft_backup_database');
2651
  if (UpdraftPlus_Options::get_updraft_option('updraft_interval_database',UpdraftPlus_Options::get_updraft_option('updraft_interval')) == UpdraftPlus_Options::get_updraft_option('updraft_interval')) {
2652
+ $next_scheduled_backup_database = ('Nothing currently scheduled' == $next_scheduled_backup) ? $next_scheduled_backup : __("At the same time as the files backup", 'updraftplus');
2653
  } else {
2654
  if ($next_scheduled_backup_database) {
2655
  // Convert to GMT
2657
  // Convert to blog time zone
2658
  $next_scheduled_backup_database = get_date_from_gmt($next_scheduled_backup_database_gmt, 'D, F j, Y H:i T');
2659
  } else {
2660
+ $next_scheduled_backup_database = __('Nothing currently scheduled','updraftplus');
2661
  }
2662
  }
2663
  $current_time = get_date_from_gmt(gmdate('Y-m-d H:i:s'), 'D, F j, Y H:i T');
2668
 
2669
  ?>
2670
 
 
 
 
2671
  <tr>
2672
+ <th><?php _e('Next scheduled backups','updraftplus');?>:</th>
2673
+ <td>
2674
+ <div style="width: 76px; float:left;">Files:</div><div style="color:blue; float:left;"><?php echo $next_scheduled_backup?></div>
2675
+ <div style="width: 76px; clear: left; float:left;"><?php _e('Database','updraftplus');?>: </div><div style="color:blue; float:left;"><?php echo $next_scheduled_backup_database?></div>
2676
+ <div style="width: 76px; clear: left; float:left;"><?php _e('Time now','updraftplus');?>: </div><div style="color:blue; float:left;"><?php echo $current_time?></div>
2677
+ </td>
2678
  </tr>
2679
  <tr>
2680
+ <th><?php _e('Last finished backup run','updraftplus');?>:</th>
2681
  <td id="updraft_last_backup"><?php echo $last_backup_html ?></td>
2682
  </tr>
2683
  </table>
2684
+ <div style="float:left; width:200px; padding-top: 20px;">
2685
+ <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>
 
 
 
2686
  <div style="position:relative">
2687
  <div style="position:absolute;top:0;left:0">
2688
  <?php
2689
  $backup_history = UpdraftPlus_Options::get_updraft_option('updraft_backup_history');
2690
  $backup_history = (is_array($backup_history))?$backup_history:array();
2691
+ $backup_history_sets = (count($backup_history) == 1) ? 'set' : 'sets';
2692
  $restore_disabled = (count($backup_history) == 0) ? 'disabled="disabled"' : "";
2693
  ?>
2694
+ <input type="button" class="button-primary" <?php echo $restore_disabled ?> 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');">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2695
  </div>
2696
  </div>
2697
  </div>
2702
  <td id="updraft_lastlogcontainer"><?php echo htmlspecialchars(UpdraftPlus_Options::get_updraft_option('updraft_lastmessage', '(Nothing yet logged)')); ?></td>
2703
  </tr>
2704
  <tr>
2705
+ <th>Backups, logs &amp; restoring:</th>
2706
+ <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 count($backup_history).' '.$backup_history_sets; ?> available</a></td>
2707
  </tr>
2708
  <tr>
2709
+ <td></td><td class="download-backups" style="display:none; border: 1px dotted;">
2710
+ <p style="max-width: 740px;"><ul style="list-style: disc inside;">
2711
+ <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>
2712
+ <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');?></li>
2713
+ <li><strong><?php _e('Opera web browser','updraftplus');?>:</strong> <?php _e('If you are using this, then turn Turbo/Road mode off.','updraftplus');?></li>
2714
+ <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> | <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></ul>
2715
  <div id="ud_downloadstatus"></div>
2716
  <script>
2717
+ function updraftplus_diskspace() {
2718
+ jQuery('#updraft_diskspaceused').html('<em><?php _e('calculating...','updraftplus');?></em>');
2719
+ jQuery.get(ajaxurl, { action: 'updraft_ajax', subaction: 'diskspaceused', nonce: '<?php echo wp_create_nonce('updraftplus-credentialtest-nonce'); ?>' }, function(response) {
2720
+ jQuery('#updraft_diskspaceused').html(response);
2721
+ });
2722
+ }
2723
  var lastlog_lastmessage = "";
2724
  function updraftplus_deletefromserver(timestamp, type) {
2725
  var pdata = {
2775
  }
2776
  }
2777
  </script>
2778
+ <div id="updraft_existing_backups" style="margin-bottom:12px;">
2779
  <?php
2780
  print $this->existing_backup_table($backup_history);
2781
  ?>
2783
  </td>
2784
  </tr>
2785
  </table>
2786
+ <div id="updraft-restore-modal" title="UpdraftPlus - <?php _e('Restore backup','updraftplus');?>">
2787
+ <p><strong><?php _e('Restore backup from','updraftplus');?>:</strong> <span id="updraft_restore_date"></span></p>
2788
+ <p><?php _e("Restoring will replace this site's themes, plugins, uploads 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>
2789
+ <form id="updraft_restore_form" method="post">
2790
+ <fieldset>
2791
+ <input type="hidden" name="action" value="updraft_restore">
2792
+ <input type="hidden" name="backup_timestamp" value="0" id="updraft_restore_timestamp">
2793
+ <?php
2794
+ $backupable_entities = $this->get_backupable_file_entities(true, true);
2795
+ foreach ($backupable_entities as $type => $info) {
2796
+ echo '<div><input id="updraft_restore_'.$type.'" type="checkbox" name="updraft_restore[]" value="'.$type.'"> <label for="updraft_restore_'.$type.'">'.$info['description'].'</label><br></div>';
2797
+ }
2798
+ ?>
2799
+ <p><em><?php _e("Databases cannot yet be restored from here - you must download the database file and take it to your web hosting company's control panel.",'updraftplus');?></em></p>
2800
+ </fieldset>
2801
+ </form>
2802
+ </div>
2803
+
2804
+ <div id="updraft-backupnow-modal" title="UpdraftPlus - Perform a backup now">
2805
+
2806
+ <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>
2807
+
2808
+ <form id="updraft-backupnow-form" method="post" action="">
2809
+ <input type="hidden" name="action" value="updraft_backup" />
2810
+ </form>
2811
+
2812
+ <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>
2813
+
2814
+ </div>
2815
+
2816
  <?php
2817
  if (is_multisite() && !file_exists(UPDRAFTPLUS_DIR.'/addons/multisite.php')) {
2818
  ?>
2819
+ <h2>UpdraftPlus <?php _e('Multisite','updraftplus');?></h2>
2820
  <table>
2821
  <tr>
2822
  <td>
2823
+ <p style="max-width:800px;"><?php echo __('Do you need WordPress Multisite support?','updraftplus').' <a href="http://updraftplus.com/">'. __('Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on.','updraftplus');?></a>.</p>
2824
  </td>
2825
  </tr>
2826
  </table>
2827
  <?php } ?>
2828
+ <h2><?php _e('Configure Backup Contents And Schedule','updraftplus');?></h2>
2829
  <?php UpdraftPlus_Options::options_form_begin(); ?>
2830
  <?php $this->settings_formcontents($last_backup_html); ?>
2831
  </form>
2832
  <div style="padding-top: 40px; display:none;" class="expertmode">
2833
  <hr>
2834
+ <h3><?php _e('Debug Information And Expert Options','updraftplus');?></h3>
2835
  <p>
2836
  <?php
2837
  $peak_memory_usage = memory_get_peak_usage(true)/1024/1024;
2841
  echo 'PHP memory limit: '.ini_get('memory_limit').' <br/>';
2842
  ?>
2843
  </p>
2844
+ <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>
2845
 
2846
  <form method="post">
2847
  <input type="hidden" name="action" value="updraft_backup_debug_all" />
2848
+ <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>
2849
  </form>
2850
  <form method="post">
2851
  <input type="hidden" name="action" value="updraft_backup_debug_db" />
2852
+ <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>
2853
  </form>
2854
+ <h3><?php _e('Wipe Settings','updraftplus');?></h3>
2855
+ <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>
2856
  <form method="post">
2857
  <input type="hidden" name="action" value="updraft_wipesettings" />
2858
+ <p><input type="submit" class="button-primary" value="Wipe All Settings" onclick="return(confirm('<?php echo htmlspecialchars(__('This will delete all your UpdraftPlus settings - are you sure you want to do this?'));?>'))" /></p>
2859
  </form>
2860
  </div>
2861
 
2888
 
2889
  $updraft_dir = $this->backups_dir_location();
2890
 
2891
+ $backupable_entities = $this->get_backupable_file_entities(true, true);
2892
+
2893
  echo '<table>';
2894
 
2895
  krsort($backup_history);
2896
 
2897
  foreach($backup_history as $key=>$value) {
2898
+ $pretty_date = date('Y-m-d G:i',$key);
2899
+ $entities = '';
2900
+ ?>
2901
  <tr>
2902
+ <td><b><?php echo $pretty_date?></b></td>
2903
  <td>
2904
  <?php if (isset($value['db'])) { ?>
2905
  <form id="uddownloadform_db_<?php echo $key;?>" action="admin-ajax.php" onsubmit="return updraft_downloader(<?php echo $key;?>, 'db')" method="post">
2907
  <input type="hidden" name="action" value="updraft_download_backup" />
2908
  <input type="hidden" name="type" value="db" />
2909
  <input type="hidden" name="timestamp" value="<?php echo $key?>" />
2910
+ <input type="submit" value="<?php _e('Database','updraftplus');?>" />
 
 
 
 
 
 
 
 
 
 
 
2911
  </form>
2912
+ <?php } else { echo "(No&nbsp;database)"; } ?>
2913
  </td>
2914
+
2915
+ <?php
2916
+ foreach ($backupable_entities as $type => $info) {
2917
+ echo '<td>';
2918
+ if (isset($value[$type])) {
2919
+ $entities .= '/'.$type.'/';
2920
+ $sdescrip = preg_replace('/ \(.*\)$/', '', $info['description']);
2921
+ ?>
2922
+ <form id="uddownloadform_<?php echo $type.'_'.$key;?>" action="admin-ajax.php" onsubmit="return updraft_downloader('<?php echo $key."', '".$type;?>')" method="post">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2923
  <?php wp_nonce_field('updraftplus_download'); ?>
2924
  <input type="hidden" name="action" value="updraft_download_backup" />
2925
+ <input type="hidden" name="type" value="<?php echo $type; ?>" />
2926
  <input type="hidden" name="timestamp" value="<?php echo $key?>" />
2927
+ <input type="submit" title="<?php echo __('Press here to download','updraftplus').' '.strtolower($info['description']); ?>" value="<?php echo $sdescrip;?>" />
2928
  </form>
2929
+ <?php } else { echo "(No&nbsp;".strtolower($info['description']).")"; } ?>
2930
  </td>
2931
+ <?php }; ?>
2932
+
2933
  <td>
2934
  <?php if (isset($value['nonce']) && preg_match("/^[0-9a-f]{12}$/",$value['nonce']) && is_readable($updraft_dir.'/log.'.$value['nonce'].'.txt')) { ?>
2935
  <form action="options-general.php" method="get">
2938
  <input type="hidden" name="updraftplus_backup_nonce" value="<?php echo $value['nonce']; ?>" />
2939
  <input type="submit" value="Backup Log" />
2940
  </form>
2941
+ <?php } else { echo "(No&nbsp;backup&nbsp;log)"; } ?>
2942
+ </td>
2943
+ <td>
2944
+ <form method="post" action="">
2945
+ <input type="hidden" name="backup_timestamp" value="<?php echo $key;?>">
2946
+ <input type="hidden" name="action" value="updraft_restore" />
2947
+ <?php if ($entities) { ?><button title="<?php _e('After pressing this button, you will be given the option to choose which components you wish to restore','updraftplus');?>" type="button" <?php echo $restore_disabled ?> class="button-primary" style="padding-top:2px;padding-bottom:2px;font-size:16px !important; min-height:26px;" onclick="updraft_restore_options('<?php echo $entities;?>'); jQuery('#updraft_restore_timestamp').val('<?php echo $key;?>'); jQuery('#updraft_restore_date').html('<?php echo $pretty_date;?>'); jQuery('#updraft-restore-modal').dialog('open');">Restore</button><?php } ?>
2948
+ </form>
2949
  </td>
2950
  </tr>
2951
+ <script>
2952
+ function updraft_restore_options(entities) {
2953
+ jQuery('input[name="updraft_restore[]"]').each(function(x,y){
2954
+ var entity = jQuery(y).val();
2955
+ if (entities.indexOf('/'+entity+'/') != -1) {
2956
+ jQuery(y).removeAttr('disabled').parent().show();
2957
+ } else {
2958
+ jQuery(y).attr('disabled','disabled').parent().hide();
2959
+ }
2960
+ });
2961
+ }
2962
+ </script>
2963
  <?php }
2964
  echo '</table>';
2965
  }
2969
  }
2970
 
2971
  function show_admin_warning_diskspace() {
2972
+ $this->show_admin_warning('<strong>'.__('Warning','updraftplus').':</strong> '.sprintf(__('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.','updraftplus'),'35 Mb'));
2973
  }
2974
 
2975
  function show_admin_warning_wordpressversion() {
2976
+ $this->show_admin_warning('<strong>'.__('Warning','updraftplus').':</strong> '.sprintf(__('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.'),'3.2'),'updraftplus');
2977
  }
2978
 
2979
  function show_admin_warning_unreadablelog() {
2980
+ $this->show_admin_warning('<strong>'.__('UpdraftPlus notice:','updraftplus').'</strong> '.__('The log file could not be read.','updraftplus'));
2981
  }
2982
 
2983
  function show_admin_warning_dropbox() {
2984
+ $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>');
2985
  }
2986
 
2987
  function show_admin_warning_googledrive() {
2988
+ $this->show_admin_warning('<strong>'.__('UpdraftPlus notice:','updraftplus').'</strong> <a href="options-general.php?page=updraftplus&action=updraftmethod-googledrive-auth&updraftplus_googleauth=doit">.'.sprintf(__('Click here to authenticate your %s account (you will not be able to back up to %s without it).','updraftplus'),'Google Drive','Google Drive').'</a>');
2989
  }
2990
 
2991
  // Caution: $source is allowed to be an array, not just a filename
3030
  $this->zipfiles_added = 0;
3031
  $this->zipfiles_dirbatched = array();
3032
  $this->zipfiles_batched = array();
3033
+ $this->zipfiles_lastwritetime = time();
3034
 
3035
  // Magic value, used later to detect no error occurring
3036
  $last_error = 2349864;
3088
  if (file_exists($zipfile)) {
3089
  $opencode = $zip->open($zipfile);
3090
  $original_size = filesize($zipfile);
3091
+ clearstatcache($zipfile);
3092
  } else {
3093
  $opencode = $zip->open($zipfile, ZIPARCHIVE::CREATE);
3094
  $original_size = 0;
3103
  $fsize = filesize($file);
3104
  if (!isset($this->existing_files[$add_as]) || $this->existing_files[$add_as] != $fsize) {
3105
 
3106
+ @touch($zipfile);
3107
  $zip->addFile($file, $add_as);
3108
 
3109
  $data_added_since_reopen += $fsize;
3110
  # 25Mb - force a write-out and re-open
3111
+ if ($data_added_since_reopen > 26214400 || (time() - $this->zipfiles_lastwritetime) > 2) {
3112
 
3113
  $before_size = filesize($zipfile);
3114
+ clearstatcache($zipfile);
3115
 
3116
+ if ($data_added_since_reopen > 26214400) {
3117
+ $this->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)');
3118
+ } else {
3119
+ $this->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)');
3120
+ }
3121
  if (!$zip->close()) {
3122
  $this->log("zip::Close returned an error");
3123
  }
3126
  $opencode = $zip->open($zipfile);
3127
  if ($opencode !== true) return array($opencode, 0);
3128
  $data_added_since_reopen = 0;
3129
+ $zipfiles_lastwritetime = time();
3130
  // Call here, in case we've got so many big files that we don't complete the whole routine
3131
  if (filesize($zipfile) > $before_size) $this->something_useful_happened();
3132
+ clearstatcache($zipfile);
3133
  }
3134
  }
3135
  $this->zipfiles_added++;
3136
+ // Don't call something_useful_happened() here - nothing necessarily happens until close() is called
3137
  if ($this->zipfiles_added % 100 == 0) $this->log("Zip: ".basename($zipfile).": ".$this->zipfiles_added." files added (on-disk size: ".round(filesize($zipfile)/1024,1)." Kb)");
3138
  }
3139
  // Reset the array
3140
  $this->zipfiles_batched = array();
3141
  $ret = $zip->close();
3142
+ $zipfiles_lastwritetime = time();
3143
  if (filesize($zipfile) > $original_size) $this->something_useful_happened();
3144
+ clearstatcache($zipfile);
3145
  return $ret;
3146
  }
3147
 
3167
  // Is the place we've ended up above the original base? That leads to infinite recursion
3168
  if (($fullpath !== $original_fullpath && strpos($original_fullpath, $fullpath) === 0) || ($original_fullpath == $fullpath && strpos($use_path_when_storing, '/') !== false) ) {
3169
  $this->log("Infinite recursion: symlink lead us to $fullpath, which is within $original_fullpath");
3170
+ $this->error(__("Infinite recursion: consult your log for more information",'updraftplus'));
3171
  return false;
3172
  }
3173