Version Description
Download this release
Release Info
Developer | willmot |
Plugin | The WP Remote WordPress Plugin |
Version | 2.5 |
Comparing to | |
See all releases |
Code changes from version 2.4.13 to 2.5
- backupwordpress/admin/actions.php +0 -450
- backupwordpress/admin/backups.php +0 -74
- backupwordpress/admin/constants.php +0 -33
- backupwordpress/admin/menu.php +0 -86
- backupwordpress/admin/page.php +0 -21
- backupwordpress/admin/schedule-form-excludes.php +0 -125
- backupwordpress/admin/schedule-form.php +0 -60
- backupwordpress/admin/schedule.php +0 -100
- backupwordpress/assets/fancyBox/CHANGELOG.md +0 -55
- backupwordpress/assets/fancyBox/README.md +0 -199
- backupwordpress/assets/fancyBox/demo/1_b.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/1_s.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/2_b.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/2_s.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/3_b.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/3_s.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/4_b.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/4_s.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/5_b.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/5_s.jpg +0 -0
- backupwordpress/assets/fancyBox/demo/ajax.txt +0 -15
- backupwordpress/assets/fancyBox/demo/iframe.html +0 -22
- backupwordpress/assets/fancyBox/demo/index.html +0 -302
- backupwordpress/assets/fancyBox/lib/jquery-1.7.2.min.js +0 -4
- backupwordpress/assets/fancyBox/lib/jquery.mousewheel-3.0.6.pack.js +0 -13
- backupwordpress/assets/fancyBox/source/blank.gif +0 -0
- backupwordpress/assets/fancyBox/source/fancybox_loading.gif +0 -0
- backupwordpress/assets/fancyBox/source/fancybox_sprite.png +0 -0
- backupwordpress/assets/fancyBox/source/helpers/fancybox_buttons.png +0 -0
- backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-buttons.css +0 -85
- backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-buttons.js +0 -115
- backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-media.js +0 -86
- backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-thumbs.css +0 -54
- backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-thumbs.js +0 -157
- backupwordpress/assets/fancyBox/source/jquery.fancybox.css +0 -226
- backupwordpress/assets/fancyBox/source/jquery.fancybox.js +0 -1449
- backupwordpress/assets/fancyBox/source/jquery.fancybox.pack.js +0 -35
- backupwordpress/assets/hmbkp.css +0 -89
- backupwordpress/assets/hmbkp.js +0 -400
- backupwordpress/assets/icon_backupwordpress_16x16.png +0 -0
- backupwordpress/assets/icon_backupwordpress_16x16_hover.png +0 -0
- backupwordpress/assets/icon_backupwordpress_32x32.png +0 -0
- backupwordpress/assets/wpspin_light.gif +0 -0
- backupwordpress/backupwordpress.mo +0 -0
- backupwordpress/backupwordpress.po +0 -703
- backupwordpress/classes/email.php +0 -164
- backupwordpress/classes/schedule.php +0 -771
- backupwordpress/classes/schedules.php +0 -70
- backupwordpress/classes/services.php +0 -233
- backupwordpress/classes/wp-cli.php +0 -93
- backupwordpress/functions/core.php +0 -442
- backupwordpress/functions/interface.php +0 -296
- backupwordpress/icon.png +0 -0
- backupwordpress/languages/hmbkp-de_DE.mo +0 -0
- backupwordpress/languages/hmbkp-de_DE.po +0 -614
- backupwordpress/languages/hmbkp-he_IL.mo +0 -0
- backupwordpress/languages/hmbkp-he_IL.po +0 -610
- backupwordpress/languages/hmbkp-it_IT.mo +0 -0
- backupwordpress/languages/hmbkp-it_IT.po +0 -612
- backupwordpress/languages/hmbkp-nl_NL.mo +0 -0
- backupwordpress/languages/hmbkp-nl_NL.po +0 -610
- backupwordpress/languages/hmbkp-pt_BR.mo +0 -0
- backupwordpress/languages/hmbkp-pt_BR.po +0 -614
- backupwordpress/languages/hmbkp-zh_CN.mo +0 -0
- backupwordpress/languages/hmbkp-zh_CN.po +0 -610
- backupwordpress/plugin.php +0 -162
- backupwordpress/readme.txt +0 -456
- plugin.php +17 -48
- readme.txt +8 -2
- wprp.admin.php +1 -25
- wprp.api.php +19 -16
- wprp.backups.php +393 -138
- backupwordpress/hm-backup/hm-backup.php → wprp.hm.backup.php +59 -45
backupwordpress/admin/actions.php
DELETED
@@ -1,450 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Delete the backup and then redirect
|
5 |
-
* back to the backups page
|
6 |
-
*/
|
7 |
-
function hmbkp_request_delete_backup() {
|
8 |
-
|
9 |
-
if ( empty( $_GET['hmbkp_delete_backup'] ) || ! check_admin_referer( 'hmbkp-delete_backup' ) )
|
10 |
-
return;
|
11 |
-
|
12 |
-
$schedule = new HMBKP_Scheduled_Backup( urldecode( $_GET['hmbkp_schedule_id'] ) );
|
13 |
-
|
14 |
-
$schedule->delete_backup( base64_decode( $_GET['hmbkp_delete_backup'] ) );
|
15 |
-
|
16 |
-
wp_redirect( remove_query_arg( array( 'hmbkp_delete_backup', '_wpnonce' ) ), 303 );
|
17 |
-
|
18 |
-
exit;
|
19 |
-
|
20 |
-
}
|
21 |
-
add_action( 'load-tools_page_' . HMBKP_PLUGIN_SLUG, 'hmbkp_request_delete_backup' );
|
22 |
-
|
23 |
-
/**
|
24 |
-
* Delete a schedule and all it's backups and then redirect
|
25 |
-
* back to the backups page
|
26 |
-
*/
|
27 |
-
function hmbkp_request_delete_schedule() {
|
28 |
-
|
29 |
-
if ( empty( $_GET['action'] ) || $_GET['action'] !== 'hmbkp_delete_schedule' || ! check_admin_referer( 'hmbkp-delete_schedule' ) )
|
30 |
-
return;
|
31 |
-
|
32 |
-
$schedule = new HMBKP_Scheduled_Backup( urldecode( $_GET['hmbkp_schedule_id'] ) );
|
33 |
-
$schedule->cancel( true );
|
34 |
-
|
35 |
-
wp_redirect( remove_query_arg( array( 'hmbkp_schedule_id', 'action', '_wpnonce' ) ), 303 );
|
36 |
-
|
37 |
-
exit;
|
38 |
-
|
39 |
-
}
|
40 |
-
add_action( 'load-tools_page_' . HMBKP_PLUGIN_SLUG, 'hmbkp_request_delete_schedule' );
|
41 |
-
|
42 |
-
/**
|
43 |
-
* Perform a manual backup via ajax
|
44 |
-
*/
|
45 |
-
function hmbkp_ajax_request_do_backup() {
|
46 |
-
|
47 |
-
if ( empty( $_POST['hmbkp_schedule_id'] ) )
|
48 |
-
exit;
|
49 |
-
|
50 |
-
// We want to display any fatal errors in this ajax request so we can catch them on the other side.
|
51 |
-
error_reporting( E_ERROR );
|
52 |
-
@ini_set( 'display_errors', 'On' );
|
53 |
-
@ini_set( 'html_errors', 'Off' );
|
54 |
-
|
55 |
-
// Force a memory error for testing purposes
|
56 |
-
//ini_set( 'memory_limit', '2M' );
|
57 |
-
//function a() { a(); } a();
|
58 |
-
|
59 |
-
ignore_user_abort( true );
|
60 |
-
|
61 |
-
hmbkp_cleanup();
|
62 |
-
|
63 |
-
$schedule = new HMBKP_Scheduled_Backup( urldecode( $_POST['hmbkp_schedule_id'] ) );
|
64 |
-
|
65 |
-
$schedule->run();
|
66 |
-
|
67 |
-
exit;
|
68 |
-
|
69 |
-
}
|
70 |
-
add_action( 'wp_ajax_hmbkp_run_schedule', 'hmbkp_ajax_request_do_backup' );
|
71 |
-
|
72 |
-
/**
|
73 |
-
* Send the download file to the browser and
|
74 |
-
* then redirect back to the backups page
|
75 |
-
*/
|
76 |
-
function hmbkp_request_download_backup() {
|
77 |
-
|
78 |
-
global $is_apache;
|
79 |
-
|
80 |
-
if ( empty( $_GET['hmbkp_download_backup'] ) || ! check_admin_referer( 'hmbkp-download_backup' ) || ! file_exists( base64_decode( $_GET['hmbkp_download_backup'] ) ) )
|
81 |
-
return;
|
82 |
-
|
83 |
-
$url = str_replace( HM_Backup::conform_dir( HM_Backup::get_home_path() ), home_url(), trailingslashit( dirname( base64_decode( $_GET['hmbkp_download_backup'] ) ) ) ) . urlencode( pathinfo( base64_decode( $_GET['hmbkp_download_backup'] ), PATHINFO_BASENAME ) );
|
84 |
-
|
85 |
-
if ( $is_apache ) {
|
86 |
-
|
87 |
-
// Force the .htaccess to be rebuilt
|
88 |
-
if ( file_exists( hmbkp_path() . '/.htaccess' ) )
|
89 |
-
unlink( hmbkp_path() . '/.htaccess' );
|
90 |
-
|
91 |
-
hmbkp_path();
|
92 |
-
|
93 |
-
$url = add_query_arg( 'key', HMBKP_SECURE_KEY, $url );
|
94 |
-
|
95 |
-
}
|
96 |
-
|
97 |
-
wp_redirect( $url, 303 );
|
98 |
-
|
99 |
-
exit;
|
100 |
-
|
101 |
-
}
|
102 |
-
add_action( 'load-tools_page_' . HMBKP_PLUGIN_SLUG, 'hmbkp_request_download_backup' );
|
103 |
-
|
104 |
-
/**
|
105 |
-
* cancels a running backup then redirect
|
106 |
-
* back to the backups page
|
107 |
-
*/
|
108 |
-
function hmbkp_request_cancel_backup() {
|
109 |
-
|
110 |
-
if ( ! isset( $_GET['action'] ) || $_GET['action'] !== 'hmbkp_cancel' )
|
111 |
-
return;
|
112 |
-
|
113 |
-
$schedule = new HMBKP_Scheduled_Backup( urldecode( $_GET['hmbkp_schedule_id'] ) );
|
114 |
-
|
115 |
-
// Delete the running backup
|
116 |
-
if ( $schedule->get_running_backup_filename() && file_exists( trailingslashit( hmbkp_path() ) . $schedule->get_running_backup_filename() ) )
|
117 |
-
unlink( trailingslashit( hmbkp_path() ) . $schedule->get_running_backup_filename() );
|
118 |
-
|
119 |
-
hmbkp_cleanup();
|
120 |
-
|
121 |
-
wp_redirect( remove_query_arg( array( 'action' ) ), 303 );
|
122 |
-
|
123 |
-
exit;
|
124 |
-
|
125 |
-
}
|
126 |
-
add_action( 'load-tools_page_' . HMBKP_PLUGIN_SLUG, 'hmbkp_request_cancel_backup' );
|
127 |
-
|
128 |
-
/**
|
129 |
-
* Dismiss an error and then redirect
|
130 |
-
* back to the backups page
|
131 |
-
*/
|
132 |
-
function hmbkp_dismiss_error() {
|
133 |
-
|
134 |
-
if ( empty( $_GET['action'] ) || $_GET['action'] !== 'hmbkp_dismiss_error' )
|
135 |
-
return;
|
136 |
-
|
137 |
-
hmbkp_cleanup();
|
138 |
-
|
139 |
-
wp_redirect( remove_query_arg( 'action' ), 303 );
|
140 |
-
|
141 |
-
exit;
|
142 |
-
|
143 |
-
}
|
144 |
-
add_action( 'admin_init', 'hmbkp_dismiss_error' );
|
145 |
-
|
146 |
-
/**
|
147 |
-
* Display the running status via ajax
|
148 |
-
*/
|
149 |
-
function hmbkp_ajax_is_backup_in_progress() {
|
150 |
-
|
151 |
-
if ( empty( $_POST['hmbkp_schedule_id'] ) )
|
152 |
-
exit;
|
153 |
-
|
154 |
-
$schedule = new HMBKP_Scheduled_Backup( urldecode( $_POST['hmbkp_schedule_id'] ) );
|
155 |
-
|
156 |
-
if ( ! $schedule->get_status() )
|
157 |
-
echo 0;
|
158 |
-
|
159 |
-
else
|
160 |
-
hmbkp_schedule_actions( $schedule );
|
161 |
-
|
162 |
-
exit;
|
163 |
-
|
164 |
-
}
|
165 |
-
add_action( 'wp_ajax_hmbkp_is_in_progress', 'hmbkp_ajax_is_backup_in_progress' );
|
166 |
-
|
167 |
-
/**
|
168 |
-
* Display the calculated size via ajax
|
169 |
-
*/
|
170 |
-
function hmbkp_ajax_calculate_backup_size() {
|
171 |
-
|
172 |
-
if ( empty( $_POST['hmbkp_schedule_id'] ) )
|
173 |
-
exit;
|
174 |
-
|
175 |
-
$schedule = new HMBKP_Scheduled_Backup( urldecode( $_POST['hmbkp_schedule_id'] ) );
|
176 |
-
|
177 |
-
$recalculate_filesize = true;
|
178 |
-
|
179 |
-
include_once( HMBKP_PLUGIN_PATH . '/admin/schedule.php' );
|
180 |
-
|
181 |
-
exit;
|
182 |
-
|
183 |
-
}
|
184 |
-
add_action( 'wp_ajax_hmbkp_calculate', 'hmbkp_ajax_calculate_backup_size' );
|
185 |
-
|
186 |
-
/**
|
187 |
-
* Test the cron response and if it's not 200 show a warning message
|
188 |
-
*/
|
189 |
-
function hmbkp_ajax_cron_test() {
|
190 |
-
|
191 |
-
$response = wp_remote_head( site_url( 'wp-cron.php' ) );
|
192 |
-
|
193 |
-
if ( is_wp_error( $response ) )
|
194 |
-
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'hmbkp' ) . '</strong> ' . sprintf( __( '%1$s is returning a %2$s response which could mean cron jobs aren\'t getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details.', 'hmbkp' ), '<code>wp-cron.php</code>', '<code>' . $response->get_error_message() . '</code>', '<a href="http://wordpress.org/extend/plugins/backupwordpress/faq/">FAQ</a>' ) . '</p></div>';
|
195 |
-
|
196 |
-
elseif ( wp_remote_retrieve_response_code( $response ) != 200 )
|
197 |
-
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'hmbkp' ) . '</strong> ' . sprintf( __( '%1$s is returning a %2$s response which could mean cron jobs aren\'t getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details.', 'hmbkp' ), '<code>wp-cron.php</code>', '<code>' . wp_remote_retrieve_response_code( $response ) . ' ' . get_status_header_desc( wp_remote_retrieve_response_code( $response ) ) . '</code>', '<a href="http://wordpress.org/extend/plugins/backupwordpress/faq/">FAQ</a>' ) . '</p></div>';
|
198 |
-
|
199 |
-
else
|
200 |
-
echo 1;
|
201 |
-
|
202 |
-
exit;
|
203 |
-
|
204 |
-
}
|
205 |
-
add_action( 'wp_ajax_hmbkp_cron_test', 'hmbkp_ajax_cron_test' );
|
206 |
-
|
207 |
-
/**
|
208 |
-
* Load the edit schedule form
|
209 |
-
*/
|
210 |
-
function hmbkp_edit_schedule_load() {
|
211 |
-
|
212 |
-
if ( empty( $_GET['hmbkp_schedule_id'] ) )
|
213 |
-
exit;
|
214 |
-
|
215 |
-
$schedule = new HMBKP_Scheduled_Backup( $_GET['hmbkp_schedule_id'] );
|
216 |
-
|
217 |
-
require( HMBKP_PLUGIN_PATH . '/admin/schedule-form.php' );
|
218 |
-
|
219 |
-
exit;
|
220 |
-
|
221 |
-
}
|
222 |
-
add_action( 'wp_ajax_hmbkp_edit_schedule_load', 'hmbkp_edit_schedule_load' );
|
223 |
-
|
224 |
-
/**
|
225 |
-
* Load the edit schedule excludes form
|
226 |
-
*/
|
227 |
-
function hmbkp_edit_schedule_excludes_load() {
|
228 |
-
|
229 |
-
if ( empty( $_GET['hmbkp_schedule_id'] ) )
|
230 |
-
exit;
|
231 |
-
|
232 |
-
$schedule = new HMBKP_Scheduled_Backup( $_GET['hmbkp_schedule_id'] );
|
233 |
-
|
234 |
-
require( HMBKP_PLUGIN_PATH . '/admin/schedule-form-excludes.php' );
|
235 |
-
|
236 |
-
exit;
|
237 |
-
|
238 |
-
}
|
239 |
-
add_action( 'wp_ajax_hmbkp_edit_schedule_excludes_load', 'hmbkp_edit_schedule_excludes_load' );
|
240 |
-
|
241 |
-
/**
|
242 |
-
* Load the add schedule form
|
243 |
-
*/
|
244 |
-
function hmbkp_add_schedule_load() {
|
245 |
-
|
246 |
-
$schedule = new HMBKP_Scheduled_Backup( date( 'U' ) );
|
247 |
-
$is_new_schedule = true;
|
248 |
-
|
249 |
-
require( HMBKP_PLUGIN_PATH . '/admin/schedule-form.php' );
|
250 |
-
|
251 |
-
exit;
|
252 |
-
|
253 |
-
}
|
254 |
-
add_action( 'wp_ajax_hmbkp_add_schedule_load', 'hmbkp_add_schedule_load' );
|
255 |
-
|
256 |
-
/**
|
257 |
-
* Catch the edit schedule form
|
258 |
-
*
|
259 |
-
* Validate and either return errors or update the schedule
|
260 |
-
*/
|
261 |
-
function hmnkp_edit_schedule_submit() {
|
262 |
-
|
263 |
-
if ( empty( $_GET['hmbkp_schedule_id'] ) )
|
264 |
-
exit;
|
265 |
-
|
266 |
-
$schedule = new HMBKP_Scheduled_Backup( $_GET['hmbkp_schedule_id'] );
|
267 |
-
|
268 |
-
$errors = array();
|
269 |
-
|
270 |
-
if ( isset( $_GET['hmbkp_schedule_type'] ) ) {
|
271 |
-
|
272 |
-
if ( ! trim( $_GET['hmbkp_schedule_type'] ) )
|
273 |
-
$errors['hmbkp_schedule_type'] = __( 'Backup type cannot be empty', 'hmbkp' );
|
274 |
-
|
275 |
-
elseif ( ! in_array( $_GET['hmbkp_schedule_type'], array( 'complete', 'file', 'database' ) ) )
|
276 |
-
$errors['hmbkp_schedule_type'] = __( 'Invalid backup type', 'hmbkp' );
|
277 |
-
|
278 |
-
else
|
279 |
-
$schedule->set_type( $_GET['hmbkp_schedule_type'] );
|
280 |
-
|
281 |
-
}
|
282 |
-
|
283 |
-
if ( isset( $_GET['hmbkp_schedule_reoccurrence'] ) ) {
|
284 |
-
|
285 |
-
if ( empty( $_GET['hmbkp_schedule_reoccurrence'] ) )
|
286 |
-
$errors['hmbkp_schedule_reoccurrence'] = __( 'Schedule cannot be empty', 'hmbkp' );
|
287 |
-
|
288 |
-
elseif ( ! in_array( $_GET['hmbkp_schedule_reoccurrence'], array_keys( wp_get_schedules() ) ) && $_GET['hmbkp_schedule_reoccurrence'] !== 'manually' )
|
289 |
-
$errors['hmbkp_schedule_reoccurrence'] = __( 'Invalid schedule', 'hmbkp' );
|
290 |
-
|
291 |
-
else
|
292 |
-
$schedule->set_reoccurrence( $_GET['hmbkp_schedule_reoccurrence'] );
|
293 |
-
|
294 |
-
}
|
295 |
-
|
296 |
-
if ( isset( $_GET['hmbkp_schedule_max_backups'] ) ) {
|
297 |
-
|
298 |
-
if ( empty( $_GET['hmbkp_schedule_max_backups'] ) )
|
299 |
-
$errors['hmbkp_schedule_max_backups'] = __( 'Max backups can\'t be empty', 'hmbkp' );
|
300 |
-
|
301 |
-
elseif ( ! is_numeric( $_GET['hmbkp_schedule_max_backups'] ) )
|
302 |
-
$errors['hmbkp_schedule_max_backups'] = __( 'Max backups must be a number', 'hmbkp' );
|
303 |
-
|
304 |
-
elseif ( ! ( $_GET['hmbkp_schedule_max_backups'] >= 1 ) )
|
305 |
-
$errors['hmbkp_schedule_max_backups'] = __( 'Max backups must be greater than 0', 'hmbkp' );
|
306 |
-
|
307 |
-
else
|
308 |
-
$schedule->set_max_backups( (int) $_GET['hmbkp_schedule_max_backups'] );
|
309 |
-
|
310 |
-
$schedule->delete_old_backups();
|
311 |
-
|
312 |
-
}
|
313 |
-
|
314 |
-
foreach ( HMBKP_Services::get_services( $schedule ) as $service )
|
315 |
-
$errors = array_merge( $errors, $service->save() );
|
316 |
-
|
317 |
-
$schedule->save();
|
318 |
-
|
319 |
-
if ( $errors )
|
320 |
-
echo json_encode( $errors );
|
321 |
-
|
322 |
-
exit;
|
323 |
-
|
324 |
-
}
|
325 |
-
add_action( 'wp_ajax_hmnkp_edit_schedule_submit', 'hmnkp_edit_schedule_submit' );
|
326 |
-
|
327 |
-
|
328 |
-
/**
|
329 |
-
* Add an exclude rule
|
330 |
-
*
|
331 |
-
* @access public
|
332 |
-
* @return void
|
333 |
-
*/
|
334 |
-
function hmbkp_add_exclude_rule() {
|
335 |
-
|
336 |
-
if ( empty( $_POST['hmbkp_schedule_id'] ) )
|
337 |
-
exit;
|
338 |
-
|
339 |
-
$schedule = new HMBKP_Scheduled_Backup( $_POST['hmbkp_schedule_id'] );
|
340 |
-
|
341 |
-
$schedule->set_excludes( $_POST['hmbkp_exclude_rule'], true );
|
342 |
-
|
343 |
-
$schedule->save();
|
344 |
-
|
345 |
-
include( HMBKP_PLUGIN_PATH . '/admin/schedule-form-excludes.php' );
|
346 |
-
|
347 |
-
exit;
|
348 |
-
|
349 |
-
}
|
350 |
-
add_action( 'wp_ajax_hmbkp_add_exclude_rule', 'hmbkp_add_exclude_rule' );
|
351 |
-
|
352 |
-
|
353 |
-
/**
|
354 |
-
* Delete an exclude rule
|
355 |
-
*
|
356 |
-
* @access public
|
357 |
-
* @return void
|
358 |
-
*/
|
359 |
-
function hmbkp_delete_exclude_rule() {
|
360 |
-
|
361 |
-
if ( empty( $_GET['hmbkp_schedule_id'] ) )
|
362 |
-
exit;
|
363 |
-
|
364 |
-
$schedule = new HMBKP_Scheduled_Backup( $_GET['hmbkp_schedule_id'] );
|
365 |
-
|
366 |
-
$excludes = $schedule->get_excludes();
|
367 |
-
|
368 |
-
$schedule->set_excludes( array_diff( $excludes, (array) stripslashes( $_GET['hmbkp_exclude_rule'] ) ) );
|
369 |
-
|
370 |
-
$schedule->save();
|
371 |
-
|
372 |
-
include( HMBKP_PLUGIN_PATH . '/admin/schedule-form-excludes.php' );
|
373 |
-
|
374 |
-
exit;
|
375 |
-
|
376 |
-
}
|
377 |
-
add_action( 'wp_ajax_hmbkp_delete_exclude_rule', 'hmbkp_delete_exclude_rule' );
|
378 |
-
|
379 |
-
|
380 |
-
/**
|
381 |
-
* Ajax action for previewing an exclude rule.
|
382 |
-
*
|
383 |
-
* @access public
|
384 |
-
* @return void
|
385 |
-
*/
|
386 |
-
function hmbkp_preview_exclude_rule() {
|
387 |
-
|
388 |
-
if ( empty( $_POST['hmbkp_schedule_id'] ) || empty( $_POST['hmbkp_schedule_excludes'] ) )
|
389 |
-
exit;
|
390 |
-
|
391 |
-
$schedule = new HMBKP_Scheduled_Backup( $_POST['hmbkp_schedule_id'] );
|
392 |
-
|
393 |
-
$excludes = explode( ',', $_POST['hmbkp_schedule_excludes'] );
|
394 |
-
|
395 |
-
hmbkp_file_list( $schedule, $excludes, 'get_excluded_files' );
|
396 |
-
|
397 |
-
$schedule->set_excludes( $excludes );
|
398 |
-
|
399 |
-
if ( $schedule->get_excluded_file_count() ) { ?>
|
400 |
-
|
401 |
-
<p><?php printf( _n( '%s matches 1 file.', '%1$s matches %2$d files.', $schedule->get_excluded_file_count(), 'hmbkp' ), '<code>' . implode( '</code>, <code>', $excludes ) . '</code>', $schedule->get_excluded_file_count() ); ?></p>
|
402 |
-
|
403 |
-
<?php } else { ?>
|
404 |
-
|
405 |
-
<p><?php printf( __( '%s didn\'t match any files.', 'hmbkp' ), '<code>' . implode( '</code>, <code>', $excludes ) . '</code>' ); ?></p>
|
406 |
-
|
407 |
-
<?php } ?>
|
408 |
-
|
409 |
-
<p><button type="button" class="button-primary hmbkp_save_exclude_rule"><?php _e( 'Exclude', 'hmbkp' ); ?></button> <button type="button" class="button-secondary hmbkp_cancel_save_exclude_rule"><?php _e( 'Cancel', 'hmbkp' ); ?></button></p>
|
410 |
-
|
411 |
-
<?php exit;
|
412 |
-
|
413 |
-
}
|
414 |
-
add_action( 'wp_ajax_hmbkp_file_list', 'hmbkp_preview_exclude_rule', 10, 0 );
|
415 |
-
|
416 |
-
function hmbkp_display_error_and_offer_to_email_it() {
|
417 |
-
|
418 |
-
if ( empty( $_POST['hmbkp_error'] ) )
|
419 |
-
exit;
|
420 |
-
|
421 |
-
$error = str_replace( HM_Backup::get_home_path(), '', $_POST['hmbkp_error'] ); ?>
|
422 |
-
|
423 |
-
<h3><?php _e( 'Your BackUp Failed', 'hmbkp' ); ?></h3>
|
424 |
-
|
425 |
-
<p><?php _e( "Here's the response from the server:" ); ?></p>
|
426 |
-
|
427 |
-
<pre><?php echo esc_attr( $error ); ?></pre>
|
428 |
-
|
429 |
-
<p class="description">You can email details of this error to <a href="http://hmn.md">Human Made Limited</a> so they can look into the issue.<br /><br /></p>
|
430 |
-
|
431 |
-
<button class="button hmbkp-fancybox-close"><?php _e( 'Close', 'hmbkp' ); ?></button>
|
432 |
-
<button class="button-primary hmbkp_send_error_via_email right"><?php _e( 'Email to Support', 'hmbkp' ); ?></button>
|
433 |
-
|
434 |
-
<?php exit;
|
435 |
-
}
|
436 |
-
add_action( 'wp_ajax_hmbkp_backup_error', 'hmbkp_display_error_and_offer_to_email_it' );
|
437 |
-
|
438 |
-
function hmbkp_send_error_via_email() {
|
439 |
-
|
440 |
-
if ( empty( $_POST['hmbkp_error'] ) )
|
441 |
-
exit;
|
442 |
-
|
443 |
-
$error = $_POST['hmbkp_error'];
|
444 |
-
|
445 |
-
wp_mail( 'support@humanmade.co.uk', 'BackUpWordPress Fatal error on ' . parse_url( home_url(), PHP_URL_HOST ), $error, 'From: BackUpWordPress <' . get_bloginfo( 'admin_email' ) . '>' . "\r\n" );
|
446 |
-
|
447 |
-
exit;
|
448 |
-
|
449 |
-
}
|
450 |
-
add_action( 'wp_ajax_hmbkp_email_error', 'hmbkp_send_error_via_email' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/admin/backups.php
DELETED
@@ -1,74 +0,0 @@
|
|
1 |
-
<?php $schedules = new HMBKP_Schedules; ?>
|
2 |
-
|
3 |
-
<div>
|
4 |
-
|
5 |
-
<ul class="subsubsub">
|
6 |
-
|
7 |
-
<?php foreach ( $schedules->get_schedules() as $schedule ) : ?>
|
8 |
-
|
9 |
-
<li<?php if ( $schedule->get_status() ) { ?> class="hmbkp-running"<?php } ?>><a<?php if ( ! empty ( $_GET['hmbkp_schedule_id'] ) && $schedule->get_id() == $_GET['hmbkp_schedule_id'] ) { ?> class="current"<?php } ?> href="<?php echo esc_url( add_query_arg( 'hmbkp_schedule_id', $schedule->get_id(), HMBKP_ADMIN_URL ) ); ?> "><?php echo esc_attr( $schedule->get_name() ); ?> <span class="count">(<?php echo count( $schedule->get_backups() ); ?>)</span></a></li>
|
10 |
-
|
11 |
-
<?php endforeach; ?>
|
12 |
-
|
13 |
-
<li><a class="fancybox" href="<?php echo esc_url( add_query_arg( array( 'action' => 'hmbkp_add_schedule_load' ), admin_url( 'admin-ajax.php' ) ) ); ?>"> + <?php _e( 'add schedule', 'hmbkp' ); ?></a></li>
|
14 |
-
|
15 |
-
</ul>
|
16 |
-
|
17 |
-
<?php if ( ! empty( $_GET['hmbkp_schedule_id'] ) )
|
18 |
-
$schedule = new HMBKP_Scheduled_Backup( $_GET['hmbkp_schedule_id'] );
|
19 |
-
|
20 |
-
else
|
21 |
-
$schedule = reset( $schedules->get_schedules() );
|
22 |
-
|
23 |
-
if ( ! $schedule )
|
24 |
-
return; ?>
|
25 |
-
|
26 |
-
<div data-hmbkp-schedule-id="<?php echo esc_attr( $schedule->get_id() ); ?>" class="hmbkp_schedule">
|
27 |
-
|
28 |
-
<?php require( HMBKP_PLUGIN_PATH . '/admin/schedule.php' ); ?>
|
29 |
-
|
30 |
-
<table class="widefat">
|
31 |
-
|
32 |
-
<thead>
|
33 |
-
|
34 |
-
<tr>
|
35 |
-
|
36 |
-
<th scope="col"><?php printf( _n( '1 backup completed', '%d backups completed', count( $schedule->get_backups() ), 'hmbkp' ), count( $schedule->get_backups() ) ); ?></th>
|
37 |
-
<th scope="col"><?php _e( 'Size', 'hmbkp' ); ?></th>
|
38 |
-
<th scope="col"><?php _e( 'Type', 'hmbkp' ); ?></th>
|
39 |
-
<th scope="col"><?php _e( 'Actions', 'hmbkp' ); ?></th>
|
40 |
-
|
41 |
-
</tr>
|
42 |
-
|
43 |
-
</thead>
|
44 |
-
|
45 |
-
<tbody>
|
46 |
-
|
47 |
-
<?php if ( $schedule->get_backups() ) :
|
48 |
-
|
49 |
-
foreach ( $schedule->get_backups() as $file ) :
|
50 |
-
|
51 |
-
if ( ! file_exists( $file ) )
|
52 |
-
continue;
|
53 |
-
|
54 |
-
hmbkp_get_backup_row( $file, $schedule );
|
55 |
-
|
56 |
-
endforeach;
|
57 |
-
|
58 |
-
else : ?>
|
59 |
-
|
60 |
-
<tr>
|
61 |
-
|
62 |
-
<td class="hmbkp-no-backups" colspan="3"><?php _e( 'This is where your backups will appear once you have one.', 'hmbkp' ); ?></td>
|
63 |
-
|
64 |
-
</tr>
|
65 |
-
|
66 |
-
<?php endif; ?>
|
67 |
-
|
68 |
-
</tbody>
|
69 |
-
|
70 |
-
</table>
|
71 |
-
|
72 |
-
</div>
|
73 |
-
|
74 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/admin/constants.php
DELETED
@@ -1,33 +0,0 @@
|
|
1 |
-
<div id="hmbkp-constants">
|
2 |
-
|
3 |
-
<p><?php printf( __( 'You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted.', 'hmbkp' ), '<code>define</code>', '<code>' . __( 'Constants', 'hmbkp' ) . '</code>', '<code>wp-config.php</code>', '<a href="http://codex.wordpress.org/Editing_wp-config.php">' . __( 'The Codex can help', 'hmbkp' ) . '</a>', '<code>' . __( 'Constants', 'hmbkp' ) . '</code>' ); ?></p>
|
4 |
-
|
5 |
-
<dl>
|
6 |
-
|
7 |
-
<dt<?php if ( defined( 'HMBKP_PATH' ) ) { ?> class="hmbkp_active"<?php } ?>><code>HMBKP_PATH</code></dt>
|
8 |
-
<dd><p><?php printf( __( 'The path to folder you would like to store your backup files in, defaults to %s.', 'hmbkp' ), '<code>' . hmbkp_path_default() . '</code>' ); ?></p><p class="example"><?php _e( 'e.g.', 'hmbkp' ); ?> <code>define( 'HMBKP_PATH', '/home/willmot/backups' );</code></p></dd>
|
9 |
-
|
10 |
-
<dt<?php if ( defined( 'HMBKP_MYSQLDUMP_PATH' ) ) { ?> class="hmbkp_active"<?php } ?>><code>HMBKP_MYSQLDUMP_PATH</code></dt>
|
11 |
-
<dd><p><?php printf( __( 'The path to your %1$s executable. Will be used for the %2$s part of the back up if available.', 'hmbkp' ), '<code>mysqldump</code>', '<code>' . __( 'database', 'hmbkp' ) . '</code>' ); ?></p><p class="example"><?php _e( 'e.g.', 'hmbkp' ); ?> <code>define( 'HMBKP_MYSQLDUMP_PATH', '/opt/local/bin/mysqldump' );</code></p></dd>
|
12 |
-
|
13 |
-
<dt<?php if ( defined( 'HMBKP_ZIP_PATH' ) ) { ?> class="hmbkp_active"<?php } ?>><code>HMBKP_ZIP_PATH</code></dt>
|
14 |
-
<dd><p><?php printf( __( 'The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available.', 'hmbkp' ), '<code>zip</code>', '<code>' . __( 'files', 'hmbkp' ) . '</code>', '<code>' . __( 'database', 'hmbkp' ) . '</code>' ); ?><p class="example"><?php _e( 'e.g.', 'hmbkp' ); ?> <code>define( 'HMBKP_ZIP_PATH', '/opt/local/bin/zip' );</code></p></dd>
|
15 |
-
|
16 |
-
<dt<?php if ( defined( 'HMBKP_EMAIL' ) ) { ?> class="hmbkp_active"<?php } ?>><code>HMBKP_EMAIL</code></dt>
|
17 |
-
<dd><p><?php printf( __( 'Attempt to email a copy of your backups. Value should be email address to send backups to. Defaults to %s.', 'hmbkp' ), '<code>(bool) false</code>' ); ?><p class="example"><?php _e( 'e.g.', 'hmbkp' ); ?> <code>define( 'HMBKP_EMAIL', 'email@example.com' );</code></p></dd>
|
18 |
-
|
19 |
-
<dt<?php if ( defined( 'HMBKP_EXCLUDE' ) ) { ?> class="hmbkp_active"<?php } ?>><code>HMBKP_EXCLUDE</code></dt>
|
20 |
-
<dd><p><?php _e( 'Comma separated list of files or directories to exclude, the backups directory is automatically excluded.', 'hmbkp' ); ?><p class="example"><?php _e( 'e.g.', 'hmbkp' ); ?> <code>define( 'HMBKP_EXCLUDE', '/wp-content/uploads/, /stats/, .svn/, *.txt' );</code></p></dd>
|
21 |
-
|
22 |
-
<dt<?php if ( defined( 'HMBKP_CAPABILITY' ) ) { ?> class="hmbkp_active"<?php } ?>><code>HMBKP_CAPABILITY</code></dt>
|
23 |
-
<dd><p><?php printf( __( 'The capability to use when calling %1$s. Defaults to %2$s.', 'hmbkp' ), '<code>add_menu_page</code>', '<code>manage_options</code>' ); ?><p class="example"><?php _e( 'e.g.', 'hmbkp' ); ?> <code>define( 'HMBKP_CAPABILITY', 'edit_posts' );</code></p></dd>
|
24 |
-
|
25 |
-
<dt<?php if ( defined( 'HMBKP_ROOT' ) ) { ?> class="hmbkp_active"<?php } ?>><code>HMBKP_ROOT</code></dt>
|
26 |
-
<dd><p><?php printf( __( 'The root directory that is backed up. Defaults to %s.', 'hmbkp' ), '<code>' . HM_Backup::get_home_path() . '</code>' ); ?><p class="example"><?php _e( 'e.g.', 'hmbkp' ); ?> <code>define( 'HMBKP_ROOT', ABSPATH . 'wp/' );</code></p></dd>
|
27 |
-
|
28 |
-
<dt<?php if ( defined( 'HMBKP_SCHEDULE_TIME' ) ) { ?> class="hmbkp_active"<?php } ?>><code>HMBKP_SCHEDULE_TIME</code></dt>
|
29 |
-
<dd><p><?php printf( __( 'The time that your schedules should run. Defaults to %s.', 'hmbkp' ), '<code>23:00</code>' ); ?><p class="example"><?php _e( 'e.g.', 'hmbkp' ); ?> <code>define( 'HMBKP_SCHEDULE_TIME', '07:30' );</code></p></dd>
|
30 |
-
|
31 |
-
</dl>
|
32 |
-
|
33 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/admin/menu.php
DELETED
@@ -1,86 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Add the backups menu item
|
5 |
-
* to the tools menu
|
6 |
-
*
|
7 |
-
* @return null
|
8 |
-
*/
|
9 |
-
function hmbkp_admin_menu() {
|
10 |
-
add_management_page( __( 'Manage Backups','hmbkp' ), __( 'Backups','hmbkp' ), ( defined( 'HMBKP_CAPABILITY' ) && HMBKP_CAPABILITY ) ? HMBKP_CAPABILITY : 'manage_options', HMBKP_PLUGIN_SLUG, 'hmbkp_manage_backups' );
|
11 |
-
}
|
12 |
-
add_action( 'admin_menu', 'hmbkp_admin_menu' );
|
13 |
-
|
14 |
-
/**
|
15 |
-
* Load the backups admin page
|
16 |
-
* when the menu option is clicked
|
17 |
-
*
|
18 |
-
* @return null
|
19 |
-
*/
|
20 |
-
function hmbkp_manage_backups() {
|
21 |
-
require_once( HMBKP_PLUGIN_PATH . '/admin/page.php' );
|
22 |
-
}
|
23 |
-
|
24 |
-
/**
|
25 |
-
* Add a link to the backups page to the plugin action links.
|
26 |
-
*
|
27 |
-
* @param array $links
|
28 |
-
* @param string $file
|
29 |
-
* @return array $links
|
30 |
-
*/
|
31 |
-
function hmbkp_plugin_action_link( $links, $file ) {
|
32 |
-
|
33 |
-
if ( strpos( $file, HMBKP_PLUGIN_SLUG ) !== false )
|
34 |
-
array_push( $links, '<a href="tools.php?page=' . esc_attr( HMBKP_PLUGIN_SLUG ) . '">' . __( 'Backups', 'hmbkp' ) . '</a>' );
|
35 |
-
|
36 |
-
return $links;
|
37 |
-
|
38 |
-
}
|
39 |
-
add_filter( 'plugin_action_links', 'hmbkp_plugin_action_link', 10, 2 );
|
40 |
-
|
41 |
-
/**
|
42 |
-
* Add Contextual Help to Backups tools page.
|
43 |
-
*
|
44 |
-
* Help is pulled from the readme FAQ.
|
45 |
-
*
|
46 |
-
* @return null
|
47 |
-
*/
|
48 |
-
function hmbkp_contextual_help() {
|
49 |
-
|
50 |
-
// Pre WordPress 3.3 compat
|
51 |
-
if ( ! method_exists( get_current_screen(), 'add_help_tab' ) )
|
52 |
-
return;
|
53 |
-
|
54 |
-
require_once( ABSPATH . 'wp-admin/includes/plugin-install.php' );
|
55 |
-
|
56 |
-
if ( ! $plugin = get_transient( 'hmbkp_plugin_data' ) ) {
|
57 |
-
|
58 |
-
$plugin = plugins_api( 'plugin_information', array( 'slug' => HMBKP_PLUGIN_SLUG ) );
|
59 |
-
|
60 |
-
// Cache for one day
|
61 |
-
set_transient( 'hmbkp_plugin_data', $plugin, 86400 );
|
62 |
-
|
63 |
-
}
|
64 |
-
|
65 |
-
$warning = '';
|
66 |
-
|
67 |
-
// Check if help is for the right version.
|
68 |
-
if ( ! empty( $plugin->version ) && version_compare( HMBKP_VERSION, $plugin->version, '!=' ) )
|
69 |
-
$warning = sprintf( '<div id="message" class="updated inline"><p><strong>' . __( 'You are not using the latest stable version of BackUpWordPress', 'hmbkp' ) . '</strong> — ' . __( 'The information below is for version %1$s. View the %2$s file for help specific to version %3$s.', 'hmbkp' ) . '</p></div>', '<code>' . esc_attr( $plugin->version ) . '</code>', '<code>readme.txt</code>', '<code>' . esc_attr( HMBKP_VERSION ) . '</code>' );
|
70 |
-
|
71 |
-
ob_start();
|
72 |
-
require_once( HMBKP_PLUGIN_PATH . '/admin/constants.php' );
|
73 |
-
$constants = ob_get_clean();
|
74 |
-
|
75 |
-
get_current_screen()->add_help_tab( array( 'title' => __( 'FAQ', 'hmbkp' ), 'id' => 'hmbkp_faq', 'content' => $warning . $plugin->sections['faq'] ) );
|
76 |
-
get_current_screen()->add_help_tab( array( 'title' => __( 'Constants', 'hmbkp' ), 'id' => 'hmbkp_constants', 'content' => $constants ) );
|
77 |
-
|
78 |
-
get_current_screen()->set_help_sidebar(
|
79 |
-
'<p><strong>' . __( 'For more information:', 'hmbkp' ) . '</strong></p>' .
|
80 |
-
'<p><a href="https://github.com/humanmade/backupwordpress" target="_blank">GitHub</a></p>' .
|
81 |
-
'<p><a href="http://wordpress.org/tags/backupwordpress?forum_id=10" target="_blank">' . __( 'Support Forums', 'hmbkp' ) .'</a></p>' .
|
82 |
-
'<p><a href="http://translate.hmn.md/" target="_blank">' . __( 'Help with translation', 'hmbkp' ) .'</a></p>'
|
83 |
-
);
|
84 |
-
|
85 |
-
}
|
86 |
-
add_filter( 'load-tools_page_' . HMBKP_PLUGIN_SLUG, 'hmbkp_contextual_help' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/admin/page.php
DELETED
@@ -1,21 +0,0 @@
|
|
1 |
-
<div class="wrap">
|
2 |
-
|
3 |
-
<?php screen_icon( HMBKP_PLUGIN_SLUG ); ?>
|
4 |
-
|
5 |
-
<h2><?php _e( 'Manage Backups', 'hmbkp' ); ?></h2>
|
6 |
-
|
7 |
-
<?php if ( hmbkp_possible() ) : ?>
|
8 |
-
|
9 |
-
<?php include_once( HMBKP_PLUGIN_PATH . '/admin/backups.php' ); ?>
|
10 |
-
|
11 |
-
<?php else : ?>
|
12 |
-
|
13 |
-
<p><strong><?php _e( 'You need to fix the issues detailed above before BackUpWordPress can start.', 'hmbkp' ); ?></strong></p>
|
14 |
-
|
15 |
-
<?php endif; ?>
|
16 |
-
|
17 |
-
<p class="howto"><?php printf( __( 'If your finding BackUpWordPress useful, please %s.', 'hmbkp' ), '<a href="http://wordpress.org/support/view/plugin-reviews/backupwordpress">' . __( 'rate it on the plugin directory', 'hmbkp' ) . '</a>' ); ?></p>
|
18 |
-
|
19 |
-
<p class="howto"><?php printf( __( 'If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page.', 'hmbkp' ), '<a href="mailto:support@hmn.md">support@hmn.md</a>' ); ?></p>
|
20 |
-
|
21 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/admin/schedule-form-excludes.php
DELETED
@@ -1,125 +0,0 @@
|
|
1 |
-
<form method="post" class="hmbkp-form">
|
2 |
-
|
3 |
-
<input type="hidden" name="hmbkp_schedule_id" value="<?php echo esc_attr( $schedule->get_id() ); ?>" />
|
4 |
-
|
5 |
-
<fieldset class="hmbkp-edit-schedule-excludes-form">
|
6 |
-
|
7 |
-
<legend><?php _e( 'Manage Excludes', 'hmbkp' ); ?></legend>
|
8 |
-
|
9 |
-
<div class="hmbkp_add_exclude_rule">
|
10 |
-
|
11 |
-
<label for="hmbkp-new-exclude-rule">
|
12 |
-
|
13 |
-
<?php _e( 'New Exclude Rule[s]', 'hmbkp' ); ?>
|
14 |
-
|
15 |
-
<input id="hmbkp-new-exclude-rule" type="text" class="code" placeholder="" />
|
16 |
-
|
17 |
-
<span class="howto">Enter new exclude rules as a comma separated list, e.g. <code>.git/, *.mp3, wp-content/uploads/</code></span>
|
18 |
-
|
19 |
-
<button type="button" class="button-secondary hmbkp_preview_exclude_rule"><?php _e( 'Preview', 'hmbkp' ); ?></button>
|
20 |
-
|
21 |
-
</label>
|
22 |
-
|
23 |
-
</div>
|
24 |
-
|
25 |
-
<table class="widefat fixed">
|
26 |
-
|
27 |
-
<thead>
|
28 |
-
<tr>
|
29 |
-
<th><?php _e( 'Exclude Rules', 'hmbkp' ); ?></th>
|
30 |
-
</tr>
|
31 |
-
</thead>
|
32 |
-
|
33 |
-
<tbody>
|
34 |
-
|
35 |
-
<?php foreach( $schedule->get_excludes() as $key => $exclude ) : ?>
|
36 |
-
|
37 |
-
<tr>
|
38 |
-
<td data-hmbkp-exclude-rule="<?php echo esc_attr( $exclude ); ?>">
|
39 |
-
|
40 |
-
<span class="code"><?php echo esc_attr( str_ireplace( untrailingslashit( $schedule->get_root() ), '', $exclude ) ); ?></span>
|
41 |
-
|
42 |
-
<?php if ( $schedule->get_path() === untrailingslashit( $exclude ) ) : ?>
|
43 |
-
|
44 |
-
<span class="reason"><?php _e( 'default', 'hmbkp' ); ?></span>
|
45 |
-
|
46 |
-
<?php elseif ( defined( 'HMBKP_EXCLUDE' ) && strpos( HMBKP_EXCLUDE, $exclude ) !== false ) : ?>
|
47 |
-
|
48 |
-
<span class="reason"><?php _e( 'defined', 'hmbkp' ); ?></span>
|
49 |
-
|
50 |
-
<?php else : ?>
|
51 |
-
|
52 |
-
<a href="#" class="delete-action"><?php _e( 'Remove', 'hmbkp' ); ?></a>
|
53 |
-
|
54 |
-
<?php endif; ?>
|
55 |
-
|
56 |
-
</td>
|
57 |
-
</tr>
|
58 |
-
|
59 |
-
<?php endforeach; ?>
|
60 |
-
|
61 |
-
</tbody>
|
62 |
-
|
63 |
-
</table>
|
64 |
-
|
65 |
-
<div class="hmbkp-tabs">
|
66 |
-
|
67 |
-
<ul class="subsubsub">
|
68 |
-
|
69 |
-
<?php if ( $schedule->get_excluded_file_count() ) : ?>
|
70 |
-
|
71 |
-
<li><a href="#hmbkp_excluded_files"><?php _e( 'Excluded', 'hmbkp' ); ?></a>(<?php echo $schedule->get_excluded_file_count(); ?>)</li>
|
72 |
-
|
73 |
-
<?php endif; ?>
|
74 |
-
|
75 |
-
<li><a href="#hmbkp_included_files"><?php _e( 'Included', 'hmbkp' ); ?></a>(<?php echo $schedule->get_included_file_count(); ?>)</li>
|
76 |
-
|
77 |
-
<?php if ( $schedule->get_unreadable_file_count() ) : ?>
|
78 |
-
|
79 |
-
<li><a href="#hmbkp_unreadable_files"><?php _e( 'Unreadable', 'hmbkp' ); ?></a>(<?php echo $schedule->get_unreadable_file_count(); ?>)</li>
|
80 |
-
|
81 |
-
<?php endif; ?>
|
82 |
-
|
83 |
-
</ul>
|
84 |
-
|
85 |
-
<?php if ( $schedule->get_excluded_file_count() ) : ?>
|
86 |
-
|
87 |
-
<div id="hmbkp_excluded_files">
|
88 |
-
|
89 |
-
<?php hmbkp_file_list( $schedule, null, 'get_excluded_files' ); ?>
|
90 |
-
|
91 |
-
</div>
|
92 |
-
|
93 |
-
<?php endif; ?>
|
94 |
-
|
95 |
-
<div id="hmbkp_included_files">
|
96 |
-
|
97 |
-
<?php hmbkp_file_list( $schedule, null, 'get_included_files' ); ?>
|
98 |
-
|
99 |
-
</div>
|
100 |
-
|
101 |
-
<?php if ( $schedule->get_unreadable_file_count() ) : ?>
|
102 |
-
|
103 |
-
<div id="hmbkp_unreadable_files">
|
104 |
-
|
105 |
-
<?php hmbkp_file_list( $schedule, null, 'get_unreadable_files' ); ?>
|
106 |
-
|
107 |
-
<p class="description"><?php _e( 'Unreadable files can\'t be backed up', 'hmbkp' ); ?></p>
|
108 |
-
|
109 |
-
</div>
|
110 |
-
|
111 |
-
<?php endif; ?>
|
112 |
-
|
113 |
-
<p><?php printf( __( 'Your site is %s. Backups will be compressed and so will be smaller.', 'hmbkp' ), '<code>' . $schedule->get_filesize( false ) . '</code>' ); ?></p>
|
114 |
-
|
115 |
-
</div>
|
116 |
-
|
117 |
-
<p class="submit">
|
118 |
-
|
119 |
-
<button type="submit" class="button-primary"><?php _e( 'Close', 'hmbkp' ); ?></button>
|
120 |
-
|
121 |
-
</p>
|
122 |
-
|
123 |
-
</fieldset>
|
124 |
-
|
125 |
-
</form>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/admin/schedule-form.php
DELETED
@@ -1,60 +0,0 @@
|
|
1 |
-
<form method="post" class="hmbkp-form" novalidate data-schedule-action="<?php if ( isset( $is_new_schedule ) ) { ?>add<?php } else { ?>edit<?php } ?>">
|
2 |
-
|
3 |
-
<input type="hidden" name="hmbkp_schedule_id" value="<?php echo esc_attr( $schedule->get_id() ); ?>" />
|
4 |
-
|
5 |
-
<fieldset class="hmbkp-edit-schedule-form">
|
6 |
-
|
7 |
-
<legend><?php _e( 'Schedule Settings', 'hmbkp' ); ?></legend>
|
8 |
-
|
9 |
-
<label>
|
10 |
-
|
11 |
-
<?php _e( 'Backup', 'hmbkp' ); ?>
|
12 |
-
|
13 |
-
<select name="hmbkp_schedule_type" id="hmbkp_schedule_type">
|
14 |
-
<option<?php selected( $schedule->get_type(), 'complete'); ?> value="complete"><?php _e( 'Both Database & files', 'hmbkp' ); ?></option>
|
15 |
-
<option<?php selected( $schedule->get_type(), 'file'); ?> value="file"><?php _e( 'Files only', 'hmbkp' ); ?></option>
|
16 |
-
<option<?php selected( $schedule->get_type(), 'database'); ?> value="database"><?php _e( 'Database only', 'hmbkp' ); ?></option>
|
17 |
-
</select>
|
18 |
-
|
19 |
-
</label>
|
20 |
-
|
21 |
-
<label>
|
22 |
-
|
23 |
-
<?php _e( 'Schedule', 'hmbkp' ); ?>
|
24 |
-
|
25 |
-
<select name="hmbkp_schedule_reoccurrence" id="hmbkp_schedule_reoccurrence">
|
26 |
-
|
27 |
-
<option value="manually"><?php _e( 'Manual Only', 'hmbkp' ); ?></option>
|
28 |
-
|
29 |
-
<?php foreach( wp_get_schedules() as $cron_schedule => $cron_details ) : ?>
|
30 |
-
|
31 |
-
<option<?php selected( $schedule->get_reoccurrence(), $cron_schedule ); ?> value="<?php echo esc_attr( $cron_schedule ); ?>"><?php echo esc_attr( $cron_details['display'] ); ?></option>
|
32 |
-
|
33 |
-
<?php endforeach; ?>
|
34 |
-
|
35 |
-
</select>
|
36 |
-
|
37 |
-
</label>
|
38 |
-
|
39 |
-
<label>
|
40 |
-
|
41 |
-
<?php _e( 'Number of backups to store on this server', 'hmbkp' ); ?>
|
42 |
-
|
43 |
-
<input type="number" name="hmbkp_schedule_max_backups" min="1" step="1" value="<?php echo esc_attr( $schedule->get_max_backups() ); ?>" />
|
44 |
-
|
45 |
-
<p class="description"><?php _e( 'The number of previous backups to store on the server. past this limit older backups will be deleted automatically.', 'hmbkp' ); ?></p>
|
46 |
-
|
47 |
-
</label>
|
48 |
-
|
49 |
-
<?php foreach ( HMBKP_Services::get_services( $schedule ) as $service )
|
50 |
-
$service->field(); ?>
|
51 |
-
|
52 |
-
<p class="submit">
|
53 |
-
|
54 |
-
<button type="submit" class="button-primary"><?php _e( 'Update', 'hmbkp' ); ?></button>
|
55 |
-
|
56 |
-
</p>
|
57 |
-
|
58 |
-
</fieldset>
|
59 |
-
|
60 |
-
</form>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/admin/schedule.php
DELETED
@@ -1,100 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
// Calculated filesize
|
4 |
-
$filesize = $schedule->is_filesize_cached() || isset( $recalculate_filesize ) ? '<code title="' . __( 'Backups will be compressed and should be smaller than this.', 'hmbkp' ) . '">' . esc_attr( $schedule->get_filesize() ) . '</code>' : '<code class="calculating" title="' . __( 'this shouldn\'t take long…', 'hmbkp' ) . '">' . __( 'calculating the size of your site…', 'hmbkp' ) . '</code>';
|
5 |
-
|
6 |
-
// Backup Type
|
7 |
-
$type = strtolower( hmbkp_human_get_type( $schedule->get_type() ) );
|
8 |
-
|
9 |
-
// Backup Time
|
10 |
-
$day = date_i18n( 'l', $schedule->get_next_occurrence( false ) );
|
11 |
-
|
12 |
-
$next_backup = 'title="' . sprintf( __( 'The next backup will be on %1$s at %2$s', 'hmbkp' ), date_i18n( get_option( 'date_format' ), $schedule->get_next_occurrence( false ) ), date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence( false ) ) ) . '"';
|
13 |
-
|
14 |
-
// Backup Re-occurrence
|
15 |
-
switch ( $schedule->get_reoccurrence() ) :
|
16 |
-
|
17 |
-
case 'hourly' :
|
18 |
-
|
19 |
-
$reoccurrence = date_i18n( 'i', $schedule->get_next_occurrence( false ) ) === '00' ? '<span ' . $next_backup . '>' . __( 'hourly on the hour', 'hmbkp' ) . '</span>' : sprintf( __( 'hourly at %s minutes past the hour', 'hmbkp' ), '<span ' . $next_backup . '>' . str_replace( '0', '', date_i18n( 'i', $schedule->get_next_occurrence( false ) ) ) ) . '</span>';
|
20 |
-
|
21 |
-
break;
|
22 |
-
|
23 |
-
case 'daily' :
|
24 |
-
|
25 |
-
$reoccurrence = sprintf( __( 'daily at %s', 'hmbkp' ), '<span ' . $next_backup . '>' . date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence( false ) ) . '</span>' );
|
26 |
-
|
27 |
-
break;
|
28 |
-
|
29 |
-
|
30 |
-
case 'twicedaily' :
|
31 |
-
|
32 |
-
$times[] = date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence( false ) );
|
33 |
-
$times[] = date_i18n( get_option( 'time_format' ), strtotime( '+ 12 hours', $schedule->get_next_occurrence( false ) ) );
|
34 |
-
|
35 |
-
sort( $times );
|
36 |
-
|
37 |
-
$reoccurrence = sprintf( __( 'every 12 hours at %1$s & %2$s', 'hmbkp' ), '<span ' . $next_backup . '>' . reset( $times ) . '</span>', '<span>' . end( $times ) ) . '</span>';
|
38 |
-
|
39 |
-
break;
|
40 |
-
|
41 |
-
case 'weekly' :
|
42 |
-
|
43 |
-
$reoccurrence = sprintf( __( 'weekly on %1$s at %2$s', 'hmbkp' ), '<span ' . $next_backup . '>' . $day . '</span>', '<span>' . date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence( false ) ) . '</span>' );
|
44 |
-
|
45 |
-
break;
|
46 |
-
|
47 |
-
case 'fortnightly' :
|
48 |
-
|
49 |
-
$reoccurrence = sprintf( __( 'fortnightly on %1$s at %2$s', 'hmbkp' ), '<span ' . $next_backup . '>' . $day . '</span>', '<span>' . date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence( false ) ) . '</span>' );
|
50 |
-
|
51 |
-
break;
|
52 |
-
|
53 |
-
|
54 |
-
case 'monthly' :
|
55 |
-
|
56 |
-
$reoccurrence = sprintf( __( 'on the %1$s of each month at %2$s', 'hmbkp' ), '<span ' . $next_backup . '>' . date_i18n( 'jS', $schedule->get_next_occurrence( false ) ) . '</span>', '<span>' . date_i18n( get_option( 'time_format' ), $schedule->get_next_occurrence( false ) ) . '</span>' );
|
57 |
-
|
58 |
-
break;
|
59 |
-
|
60 |
-
case 'manually' :
|
61 |
-
|
62 |
-
$reoccurrence = __( 'manually', 'hmbkp' );
|
63 |
-
|
64 |
-
break;
|
65 |
-
|
66 |
-
endswitch;
|
67 |
-
|
68 |
-
$server = '<span title="' . esc_attr( hmbkp_path() ) . '">' . __( 'this server', 'hmbkp' ) . '</span>';
|
69 |
-
|
70 |
-
// Backup to keep
|
71 |
-
switch ( $schedule->get_max_backups() ) :
|
72 |
-
|
73 |
-
case 1 :
|
74 |
-
|
75 |
-
$backup_to_keep = sprintf( __( 'store the only the last backup on %s', 'hmbkp' ), $server );
|
76 |
-
|
77 |
-
break;
|
78 |
-
|
79 |
-
case 0 :
|
80 |
-
|
81 |
-
$backup_to_keep = sprintf( __( 'don\'t store any backups on %s', 'hmbkp' ), $server );
|
82 |
-
|
83 |
-
break;
|
84 |
-
|
85 |
-
default :
|
86 |
-
|
87 |
-
$backup_to_keep = sprintf( __( 'store only the last %1$s backups on %2$s', 'hmbkp' ), esc_attr( $schedule->get_max_backups() ), $server );
|
88 |
-
|
89 |
-
endswitch;
|
90 |
-
|
91 |
-
foreach ( HMBKP_Services::get_services( $schedule ) as $file => $service )
|
92 |
-
$services[] = $service->display(); ?>
|
93 |
-
|
94 |
-
<div class="hmbkp-schedule-sentence<?php if ( $schedule->get_status() ) { ?> hmbkp-running<?php } ?>">
|
95 |
-
|
96 |
-
<?php printf( __( 'Backup my %1$s %2$s %3$s, %4$s. %5$s', 'hmbkp' ), $filesize, '<span>' . $type . '</span>', $reoccurrence, $backup_to_keep, implode( '. ', array_filter( $services ) ) ); ?>
|
97 |
-
|
98 |
-
<?php hmbkp_schedule_actions( $schedule ); ?>
|
99 |
-
|
100 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/assets/fancyBox/CHANGELOG.md
DELETED
@@ -1,55 +0,0 @@
|
|
1 |
-
fancyBox - Changelog
|
2 |
-
=========
|
3 |
-
|
4 |
-
### Version 2.0.5 - February 21, 2012
|
5 |
-
|
6 |
-
* Fixed #155 - easing for prev/next animations
|
7 |
-
* Fixed #153 - overriding "keys" options
|
8 |
-
* Fixed #147 - IE7 problem with #hash links
|
9 |
-
* Fixed #130 - changing dynamically data-fancybox-group
|
10 |
-
* Fixed #126 - obey minWidth/minHeight
|
11 |
-
* Fixed #118 - placement of loading icon and navigation arrows
|
12 |
-
* Fixed #101 - "index" option not working
|
13 |
-
* Fixed #94 - "orig" option not working
|
14 |
-
* Fixed #80 - does not work on IE6
|
15 |
-
* Fixed #72 - can't set overlay opacity to 0
|
16 |
-
* Fixed #63 - properly set gallery index
|
17 |
-
* New option "autoCenter" - toggles centering on window resize or scroll, disabled for mobile devices by default
|
18 |
-
* New option "autoResize" - toggles responsivity, disabled for mobile devices by default
|
19 |
-
* New option "preload" - number of images to preload
|
20 |
-
* New feature to target mobile/desktop browsers using CSS, see #108
|
21 |
-
* Changed ajax option defaults to "{ dataType: 'html', headers: { 'X-fancyBox': true } }", see #150 and #128
|
22 |
-
* Updated loading icon for IE7, IE8
|
23 |
-
* Calculates height of the iframe if 'autoSize' is set to 'true' and the iframe is on the same domain as the main page
|
24 |
-
|
25 |
-
### Version 2.0.4 - December 12, 2011
|
26 |
-
|
27 |
-
* Fixed #47 - fix overriding properties
|
28 |
-
* New option "position" to thumbnail and button helpers
|
29 |
-
|
30 |
-
|
31 |
-
### Version 2.0.3 - November 29, 2011
|
32 |
-
|
33 |
-
* Fixed #29 - broken elastic transitions
|
34 |
-
|
35 |
-
|
36 |
-
### Version 2.0.2 - November 28, 2011
|
37 |
-
|
38 |
-
* Fixed slidshow
|
39 |
-
* Fixed scrollbar issue when displayed a very tall image
|
40 |
-
* New option "nextClick" - navigate to next gallery item when user clicks the content
|
41 |
-
* New option "modal" - to disable navigation and closing
|
42 |
-
* Add 'metadata' plugin support
|
43 |
-
* Add ability to create groups using 'data-fancybox-group' attribute
|
44 |
-
* Updated manual usage to match earlier releases
|
45 |
-
|
46 |
-
|
47 |
-
### Version 2.0.1 - November 23, 2011
|
48 |
-
|
49 |
-
* Fixed keyboard events inside form elements
|
50 |
-
* Fixed manual usage
|
51 |
-
|
52 |
-
|
53 |
-
### Version 2.0.0 - November 21, 2011
|
54 |
-
|
55 |
-
First release - completely rewritten, many new features and updated graphics.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/assets/fancyBox/README.md
DELETED
@@ -1,199 +0,0 @@
|
|
1 |
-
fancyBox
|
2 |
-
========
|
3 |
-
|
4 |
-
fancyBox is a tool that offers a nice and elegant way to add zooming functionality for images, html content and multi-media on your webpages.
|
5 |
-
|
6 |
-
More information and examples: http://www.fancyapps.com/fancybox/
|
7 |
-
|
8 |
-
License: http://www.fancyapps.com/fancybox/#license
|
9 |
-
|
10 |
-
Copyright (c) 2012 Janis Skarnelis - janis@fancyapps.com
|
11 |
-
|
12 |
-
|
13 |
-
How to use
|
14 |
-
----------
|
15 |
-
|
16 |
-
To get started, download the plugin, unzip it and copy files to your website/application directory.
|
17 |
-
Load files in the <head> section of your HTML document. Make sure you also add the jQuery library.
|
18 |
-
|
19 |
-
<head>
|
20 |
-
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
|
21 |
-
<link rel="stylesheet" href="/fancybox/jquery.fancybox.css" type="text/css" media="screen" />
|
22 |
-
<script type="text/javascript" src="/fancybox/jquery.fancybox.pack.js"></script>
|
23 |
-
</head>
|
24 |
-
|
25 |
-
Create your links with a `title` if you want a title to be shown, and add a class:
|
26 |
-
|
27 |
-
<a href="large_image.jpg" class="fancybox" title="Sample title"><img src="small_image.jpg" /></a>
|
28 |
-
|
29 |
-
If you have a set of related items that you would like to group,
|
30 |
-
additionally include a group name in the `rel` (or `data-fancybox-group`) attribute:
|
31 |
-
|
32 |
-
<a href="large_1.jpg" class="fancybox" rel="gallery" title="Sample title 1"><img src="small_1.jpg" /></a>
|
33 |
-
<a href="large_2.jpg" class="fancybox" rel="gallery" title="Sample title 1"><img src="small_2.jpg" /></a>
|
34 |
-
|
35 |
-
Initialise the script like this:
|
36 |
-
|
37 |
-
<script>
|
38 |
-
$(document).ready(function() {
|
39 |
-
$('.fancybox').fancybox();
|
40 |
-
});
|
41 |
-
</script>
|
42 |
-
|
43 |
-
May also be passed an optional options object which will extend the default values. Example:
|
44 |
-
|
45 |
-
<script>
|
46 |
-
$(document).ready(function() {
|
47 |
-
$('.fancybox').fancybox({
|
48 |
-
padding : 5,
|
49 |
-
loop : false
|
50 |
-
});
|
51 |
-
});
|
52 |
-
</script>
|
53 |
-
|
54 |
-
Script uses the `href` attribute of the matched elements to obtain the location of the content and to figure out content type you want to display.
|
55 |
-
You can specify type directly by adding classname (fancybox.image, fancybox.iframe, etc).
|
56 |
-
|
57 |
-
//Ajax:
|
58 |
-
<a href="/example.html" class="fancybox fancybox.ajax">Example</a>
|
59 |
-
|
60 |
-
//Iframe:
|
61 |
-
<a href="example.html" class="fancybox fancybox.iframe">Example</a>
|
62 |
-
|
63 |
-
//Inline:
|
64 |
-
<a href="#example" class="fancybox">Example</a>
|
65 |
-
|
66 |
-
//SWF:
|
67 |
-
<a href="example.swf" class="fancybox">Example</a>
|
68 |
-
|
69 |
-
//Image:
|
70 |
-
<a href="example.jpg" class="fancybox">Example</a>
|
71 |
-
|
72 |
-
Note, ajax requests are subject to the [same origin policy](http://en.wikipedia.org/wiki/Same_origin_policy).
|
73 |
-
If fancyBox will not be able to get content type, error message will be displayed (this is different from previsous versions where 'ajax' was used as default type).
|
74 |
-
|
75 |
-
Advanced
|
76 |
-
--------
|
77 |
-
|
78 |
-
### Helpers
|
79 |
-
|
80 |
-
Helpers provide a simple mechanism to extend the capabilities of fancyBox. There are two built-in helpers - 'overlay' and 'title'.
|
81 |
-
You can disable them, set custom options or enable other helpers. Examples:
|
82 |
-
|
83 |
-
//Disable title helper
|
84 |
-
$(".fancybox").fancybox({
|
85 |
-
helpers: {
|
86 |
-
title: null
|
87 |
-
}
|
88 |
-
});
|
89 |
-
|
90 |
-
//Disable overlay helper
|
91 |
-
$(".fancybox").fancybox({
|
92 |
-
helpers: {
|
93 |
-
overlay : null
|
94 |
-
}
|
95 |
-
});
|
96 |
-
|
97 |
-
//Change title position and overlay color
|
98 |
-
$(".fancybox").fancybox({
|
99 |
-
helpers: {
|
100 |
-
title : {
|
101 |
-
type : 'inside'
|
102 |
-
},
|
103 |
-
overlay : {
|
104 |
-
css : {
|
105 |
-
'background-color' : '#fff'
|
106 |
-
}
|
107 |
-
}
|
108 |
-
}
|
109 |
-
});
|
110 |
-
|
111 |
-
//Enable thumbnail helper and set custom options
|
112 |
-
$(".fancybox").fancybox({
|
113 |
-
helpers: {
|
114 |
-
thumbs : {
|
115 |
-
width: 50,
|
116 |
-
height: 50
|
117 |
-
}
|
118 |
-
}
|
119 |
-
});
|
120 |
-
|
121 |
-
|
122 |
-
### API
|
123 |
-
|
124 |
-
Also available are event driven callback methods. The `this` keyword refers to the current or upcoming object (depends on callback method). Here is how you can change title:
|
125 |
-
|
126 |
-
$(".fancybox").fancybox({
|
127 |
-
beforeLoad : function() {
|
128 |
-
this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
|
129 |
-
|
130 |
-
/*
|
131 |
-
"this.element" refers to current element, so you can, for example, use the "alt" attribute of the image to store the title:
|
132 |
-
this.title = $(this.element).find('img').attr('alt');
|
133 |
-
*/
|
134 |
-
}
|
135 |
-
});
|
136 |
-
|
137 |
-
It`s possible to open fancyBox programmatically in various ways:
|
138 |
-
|
139 |
-
//HTML content:
|
140 |
-
$.fancybox( '<div><h1>Lorem Lipsum</h1><p>Lorem lipsum</p></div>', {
|
141 |
-
title : 'Custom Title'
|
142 |
-
});
|
143 |
-
|
144 |
-
//DOM element:
|
145 |
-
$.fancybox( $("#inline"), {
|
146 |
-
title : 'Custom Title'
|
147 |
-
});
|
148 |
-
|
149 |
-
//Custom object:
|
150 |
-
$.fancybox({
|
151 |
-
href: 'example.jpg',
|
152 |
-
title : 'Custom Title'
|
153 |
-
});
|
154 |
-
|
155 |
-
//Array of objects:
|
156 |
-
$.fancybox([
|
157 |
-
{
|
158 |
-
href: 'example1.jpg',
|
159 |
-
title : 'Custom Title 1'
|
160 |
-
},
|
161 |
-
{
|
162 |
-
href: 'example2.jpg',
|
163 |
-
title : 'Custom Title 2'
|
164 |
-
}
|
165 |
-
], {
|
166 |
-
padding: 0
|
167 |
-
});
|
168 |
-
|
169 |
-
There are several methods that allow you to interact with and manipulate fancyBox, example:
|
170 |
-
|
171 |
-
//Close fancybox:
|
172 |
-
$.fancybox.close();
|
173 |
-
|
174 |
-
There is a simply way to access wrapping elements using JS:
|
175 |
-
|
176 |
-
$.fancybox.wrap
|
177 |
-
$.fancybox.outer
|
178 |
-
$.fancybox.inner
|
179 |
-
|
180 |
-
You can override CSS to customize the look. For example, make navigation arrows always visible
|
181 |
-
and move them outside of area (use this snippet after including fancybox.css):
|
182 |
-
|
183 |
-
.fancybox-nav span {
|
184 |
-
visibility: visible;
|
185 |
-
}
|
186 |
-
|
187 |
-
.fancybox-prev {
|
188 |
-
left: -50px;
|
189 |
-
}
|
190 |
-
|
191 |
-
.fancybox-next {
|
192 |
-
right: 50px;
|
193 |
-
}
|
194 |
-
|
195 |
-
|
196 |
-
Bug tracker
|
197 |
-
-----------
|
198 |
-
|
199 |
-
Have a bug? Please create an issue on GitHub at https://github.com/fancyapps/fancyBox/issues
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/assets/fancyBox/demo/1_b.jpg
DELETED
Binary file
|
backupwordpress/assets/fancyBox/demo/1_s.jpg
DELETED
Binary file
|
backupwordpress/assets/fancyBox/demo/2_b.jpg
DELETED
Binary file
|
backupwordpress/assets/fancyBox/demo/2_s.jpg
DELETED
Binary file
|
backupwordpress/assets/fancyBox/demo/3_b.jpg
DELETED
Binary file
|
backupwordpress/assets/fancyBox/demo/3_s.jpg
DELETED
Binary file
|
backupwordpress/assets/fancyBox/demo/4_b.jpg
DELETED
Binary file
|
backupwordpress/assets/fancyBox/demo/4_s.jpg
DELETED
Binary file
|
backupwordpress/assets/fancyBox/demo/5_b.jpg
DELETED
Binary file
|
backupwordpress/assets/fancyBox/demo/5_s.jpg
DELETED
Binary file
|
backupwordpress/assets/fancyBox/demo/ajax.txt
DELETED
@@ -1,15 +0,0 @@
|
|
1 |
-
<div style="max-width:700px;">
|
2 |
-
<h2>Lorem ipsum dolor sit amet3</h2>
|
3 |
-
<p>
|
4 |
-
<a href="javascript:jQuery.fancybox.close();">Close me</a>
|
5 |
-
</p>
|
6 |
-
<p>
|
7 |
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas fermentum ante et sapien dignissim in viverra magna feugiat. Donec tempus ipsum nec neque dignissim quis eleifend eros gravida. Praesent nisi massa, sodales quis tincidunt ac, semper quis risus. In suscipit nisl sed leo aliquet consequat. Integer vitae augue in risus porttitor pellentesque eu eget odio. Fusce ut sagittis quam. Morbi aliquam interdum blandit. Integer pharetra tempor velit, aliquam dictum justo tempus sed. Morbi congue fringilla justo a feugiat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent quis metus et nisl consectetur pharetra. Nam bibendum turpis eu metus luctus eu volutpat sem molestie. Nam sollicitudin porttitor lorem, ac ultricies est venenatis eu. Ut dignissim elit et orci feugiat ac placerat purus euismod. Ut mi lorem, cursus et sagittis elementum, luctus ac massa.
|
8 |
-
</p>
|
9 |
-
<p>
|
10 |
-
Phasellus et ligula vel diam ullamcorper volutpat. Integer rhoncus rhoncus aliquam. Aliquam erat volutpat. Aenean luctus vestibulum placerat. Quisque quam neque, lacinia aliquet eleifend ac, aliquet blandit felis. Curabitur porta ultricies dui, sit amet mattis quam euismod a. Ut eleifend scelerisque neque, sit amet accumsan odio consequat ut. Proin facilisis auctor elit sed accumsan. Cras dapibus nisl in nisi rhoncus laoreet. Nullam pellentesque tortor libero, eget facilisis ipsum. Donec ultricies tellus tellus, in tincidunt purus. Nullam in est aliquam velit scelerisque blandit. In tincidunt, magna a dapibus imperdiet, quam urna elementum leo, vitae rhoncus nisl velit cursus velit. In dignissim sem ac mauris rhoncus ornare.
|
11 |
-
</p>
|
12 |
-
<p>
|
13 |
-
Duis imperdiet velit vel quam malesuada suscipit imperdiet tellus hendrerit. Mauris vestibulum odio mauris, ut placerat leo. Mauris quis neque at tellus feugiat congue id non enim. Nam vehicula posuere nulla eget vehicula. Donec pretium purus nec ligula porta eu laoreet sapien venenatis. Nulla facilisi. Phasellus eget mi enim. Phasellus molestie tincidunt ultrices. Aenean id sem a tellus lobortis tincidunt. Nam laoreet nulla vel velit tincidunt ac rutrum libero malesuada. Nulla consequat dolor quis nisl tempor fermentum. Integer sodales pretium varius. Aenean a leo vitae odio dictum dignissim malesuada nec dolor. Phasellus adipiscing viverra est, ac sagittis libero sagittis quis. Sed interdum dapibus nunc et fringilla. Nunc vel velit et urna laoreet bibendum.
|
14 |
-
</p>
|
15 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/assets/fancyBox/demo/iframe.html
DELETED
@@ -1,22 +0,0 @@
|
|
1 |
-
<!DOCTYPE html>
|
2 |
-
<html>
|
3 |
-
<head>
|
4 |
-
<title>fancyBox - iframe demo</title>
|
5 |
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
6 |
-
</head>
|
7 |
-
<body>
|
8 |
-
<h1>fancyBox - iframe demo</h1>
|
9 |
-
|
10 |
-
<p>
|
11 |
-
<a href="javascript:parent.jQuery.fancybox.close();">Close iframe parent</a>
|
12 |
-
</p>
|
13 |
-
|
14 |
-
<p>
|
15 |
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque justo ac eros consectetur bibendum. In hac habitasse platea dictumst. Nulla aliquam turpis et tellus elementum luctus. Duis sit amet rhoncus velit. Duis nisl ligula, mattis interdum blandit laoreet, mattis id ante. Cras pulvinar lacus vitae nisi egestas non euismod neque bibendum. Vestibulum faucibus libero id ante molestie ultricies. Vestibulum quis nibh felis. Vestibulum libero nisl, vehicula vel ullamcorper sit amet, tristique sit amet augue. Etiam urna neque, porttitor sed sodales lacinia, posuere a nisl. Vestibulum blandit neque in sapien volutpat ac condimentum sapien auctor. Ut imperdiet venenatis ultricies. Phasellus accumsan, sem eu placerat commodo, felis purus commodo ipsum, sit amet vulputate orci est viverra est.
|
16 |
-
</p>
|
17 |
-
|
18 |
-
<p>
|
19 |
-
Aenean velit est, condimentum ut iaculis ut, accumsan at mi. Maecenas velit mi, venenatis ut condimentum at, ultrices vel tortor. Curabitur pharetra ornare dapibus. Ut volutpat cursus semper. In hac habitasse platea dictumst. Donec eu iaculis ipsum. Morbi eu dolor velit, a semper nunc.
|
20 |
-
</p>
|
21 |
-
</body>
|
22 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/assets/fancyBox/demo/index.html
DELETED
@@ -1,302 +0,0 @@
|
|
1 |
-
<!DOCTYPE html>
|
2 |
-
<html>
|
3 |
-
<head>
|
4 |
-
<title>fancyBox - Fancy jQuery Lightbox Alternative | Demonstration</title>
|
5 |
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
6 |
-
|
7 |
-
<!-- Add jQuery library -->
|
8 |
-
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
|
9 |
-
|
10 |
-
<!-- Add mousewheel plugin (this is optional) -->
|
11 |
-
<script type="text/javascript" src="../lib/jquery.mousewheel-3.0.6.pack.js"></script>
|
12 |
-
|
13 |
-
<!-- Add fancyBox main JS and CSS files -->
|
14 |
-
<script type="text/javascript" src="../source/jquery.fancybox.js"></script>
|
15 |
-
<link rel="stylesheet" type="text/css" href="../source/jquery.fancybox.css" media="screen" />
|
16 |
-
|
17 |
-
<!-- Add Button helper (this is optional) -->
|
18 |
-
<link rel="stylesheet" type="text/css" href="../source/helpers/jquery.fancybox-buttons.css?v=1.0.2" />
|
19 |
-
<script type="text/javascript" src="../source/helpers/jquery.fancybox-buttons.js?v=1.0.2"></script>
|
20 |
-
|
21 |
-
<!-- Add Thumbnail helper (this is optional) -->
|
22 |
-
<link rel="stylesheet" type="text/css" href="../source/helpers/jquery.fancybox-thumbs.css?v=1.0.2" />
|
23 |
-
<script type="text/javascript" src="../source/helpers/jquery.fancybox-thumbs.js?v=1.0.2"></script>
|
24 |
-
|
25 |
-
<!-- Add Media helper (this is optional) -->
|
26 |
-
<script type="text/javascript" src="../source/helpers/jquery.fancybox-media.js?v=1.0.0"></script>
|
27 |
-
|
28 |
-
<script type="text/javascript">
|
29 |
-
$(document).ready(function() {
|
30 |
-
/*
|
31 |
-
* Simple image gallery. Uses default settings
|
32 |
-
*/
|
33 |
-
|
34 |
-
$('.fancybox').fancybox();
|
35 |
-
|
36 |
-
/*
|
37 |
-
* Different effects
|
38 |
-
*/
|
39 |
-
|
40 |
-
// Change title type, overlay opening speed and opacity
|
41 |
-
$(".fancybox-effects-a").fancybox({
|
42 |
-
helpers: {
|
43 |
-
title : {
|
44 |
-
type : 'outside'
|
45 |
-
},
|
46 |
-
overlay : {
|
47 |
-
speedIn : 500,
|
48 |
-
opacity : 0.95
|
49 |
-
}
|
50 |
-
}
|
51 |
-
});
|
52 |
-
|
53 |
-
// Disable opening and closing animations, change title type
|
54 |
-
$(".fancybox-effects-b").fancybox({
|
55 |
-
openEffect : 'none',
|
56 |
-
closeEffect : 'none',
|
57 |
-
|
58 |
-
helpers : {
|
59 |
-
title : {
|
60 |
-
type : 'over'
|
61 |
-
}
|
62 |
-
}
|
63 |
-
});
|
64 |
-
|
65 |
-
// Set custom style, close if clicked, change title type and overlay color
|
66 |
-
$(".fancybox-effects-c").fancybox({
|
67 |
-
wrapCSS : 'fancybox-custom',
|
68 |
-
closeClick : true,
|
69 |
-
|
70 |
-
helpers : {
|
71 |
-
title : {
|
72 |
-
type : 'inside'
|
73 |
-
},
|
74 |
-
overlay : {
|
75 |
-
css : {
|
76 |
-
'background-color' : '#eee'
|
77 |
-
}
|
78 |
-
}
|
79 |
-
}
|
80 |
-
});
|
81 |
-
|
82 |
-
// Remove padding, set opening and closing animations, close if clicked and disable overlay
|
83 |
-
$(".fancybox-effects-d").fancybox({
|
84 |
-
padding: 0,
|
85 |
-
|
86 |
-
openEffect : 'elastic',
|
87 |
-
openSpeed : 150,
|
88 |
-
|
89 |
-
closeEffect : 'elastic',
|
90 |
-
closeSpeed : 150,
|
91 |
-
|
92 |
-
closeClick : true,
|
93 |
-
|
94 |
-
helpers : {
|
95 |
-
overlay : null
|
96 |
-
}
|
97 |
-
});
|
98 |
-
|
99 |
-
/*
|
100 |
-
* Button helper. Disable animations, hide close button, change title type and content
|
101 |
-
*/
|
102 |
-
|
103 |
-
$('.fancybox-buttons').fancybox({
|
104 |
-
openEffect : 'none',
|
105 |
-
closeEffect : 'none',
|
106 |
-
|
107 |
-
prevEffect : 'none',
|
108 |
-
nextEffect : 'none',
|
109 |
-
|
110 |
-
closeBtn : false,
|
111 |
-
|
112 |
-
helpers : {
|
113 |
-
title : {
|
114 |
-
type : 'inside'
|
115 |
-
},
|
116 |
-
buttons : {}
|
117 |
-
},
|
118 |
-
|
119 |
-
afterLoad : function() {
|
120 |
-
this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
|
121 |
-
}
|
122 |
-
});
|
123 |
-
|
124 |
-
|
125 |
-
/*
|
126 |
-
* Thumbnail helper. Disable animations, hide close button, arrows and slide to next gallery item if clicked
|
127 |
-
*/
|
128 |
-
|
129 |
-
$('.fancybox-thumbs').fancybox({
|
130 |
-
prevEffect : 'none',
|
131 |
-
nextEffect : 'none',
|
132 |
-
|
133 |
-
closeBtn : false,
|
134 |
-
arrows : false,
|
135 |
-
nextClick : true,
|
136 |
-
|
137 |
-
helpers : {
|
138 |
-
thumbs : {
|
139 |
-
width : 50,
|
140 |
-
height : 50
|
141 |
-
}
|
142 |
-
}
|
143 |
-
});
|
144 |
-
|
145 |
-
/*
|
146 |
-
* Media helper. Group items, disable animations, hide arrows, enable media and button helpers.
|
147 |
-
*/
|
148 |
-
$('.fancybox-media')
|
149 |
-
.attr('rel', 'media-gallery')
|
150 |
-
.fancybox({
|
151 |
-
openEffect : 'none',
|
152 |
-
closeEffect : 'none',
|
153 |
-
prevEffect : 'none',
|
154 |
-
nextEffect : 'none',
|
155 |
-
|
156 |
-
arrows : false,
|
157 |
-
helpers : {
|
158 |
-
media : {},
|
159 |
-
buttons : {}
|
160 |
-
}
|
161 |
-
});
|
162 |
-
|
163 |
-
/*
|
164 |
-
* Open manually
|
165 |
-
*/
|
166 |
-
|
167 |
-
$("#fancybox-manual-a").click(function() {
|
168 |
-
$.fancybox.open('1_b.jpg');
|
169 |
-
});
|
170 |
-
|
171 |
-
$("#fancybox-manual-b").click(function() {
|
172 |
-
$.fancybox.open({
|
173 |
-
href : 'iframe.html',
|
174 |
-
type : 'iframe',
|
175 |
-
padding : 5
|
176 |
-
});
|
177 |
-
});
|
178 |
-
|
179 |
-
$("#fancybox-manual-c").click(function() {
|
180 |
-
$.fancybox.open([
|
181 |
-
{
|
182 |
-
href : '1_b.jpg',
|
183 |
-
title : 'My title'
|
184 |
-
}, {
|
185 |
-
href : '2_b.jpg',
|
186 |
-
title : '2nd title'
|
187 |
-
}, {
|
188 |
-
href : '3_b.jpg'
|
189 |
-
}
|
190 |
-
], {
|
191 |
-
helpers : {
|
192 |
-
thumbs : {
|
193 |
-
width: 75,
|
194 |
-
height: 50
|
195 |
-
}
|
196 |
-
}
|
197 |
-
});
|
198 |
-
});
|
199 |
-
|
200 |
-
|
201 |
-
});
|
202 |
-
</script>
|
203 |
-
<style type="text/css">
|
204 |
-
.fancybox-custom .fancybox-outer {
|
205 |
-
box-shadow: 0 0 50px #222;
|
206 |
-
}
|
207 |
-
</style>
|
208 |
-
</head>
|
209 |
-
<body>
|
210 |
-
<h1>fancyBox</h1>
|
211 |
-
|
212 |
-
<p>This is a demonstration. More information and examples: <a href="http://fancyapps.com/fancybox/">www.fancyapps.com/fancybox/</a></p>
|
213 |
-
|
214 |
-
<h3>Simple image gallery</h3>
|
215 |
-
<p>
|
216 |
-
<a class="fancybox" href="1_b.jpg" data-fancybox-group="gallery" title="Lorem ipsum dolor sit amet"><img src="1_s.jpg" alt="" /></a>
|
217 |
-
|
218 |
-
<a class="fancybox" href="2_b.jpg" data-fancybox-group="gallery" title="Etiam quis mi eu elit temp"><img src="2_s.jpg" alt="" /></a>
|
219 |
-
|
220 |
-
<a class="fancybox" href="3_b.jpg" data-fancybox-group="gallery" title="Cras neque mi, semper leon"><img src="3_s.jpg" alt="" /></a>
|
221 |
-
|
222 |
-
<a class="fancybox" href="4_b.jpg" data-fancybox-group="gallery" title="Sed vel sapien vel sem uno"><img src="4_s.jpg" alt="" /></a>
|
223 |
-
</p>
|
224 |
-
|
225 |
-
<h3>Different effects</h3>
|
226 |
-
<p>
|
227 |
-
<a class="fancybox-effects-a" href="5_b.jpg" title="Lorem ipsum dolor sit amet, consectetur adipiscing elit"><img src="5_s.jpg" alt="" /></a>
|
228 |
-
|
229 |
-
<a class="fancybox-effects-b" href="5_b.jpg" title="Lorem ipsum dolor sit amet, consectetur adipiscing elit"><img src="5_s.jpg" alt="" /></a>
|
230 |
-
|
231 |
-
<a class="fancybox-effects-c" href="5_b.jpg" title="Lorem ipsum dolor sit amet, consectetur adipiscing elit"><img src="5_s.jpg" alt="" /></a>
|
232 |
-
|
233 |
-
<a class="fancybox-effects-d" href="5_b.jpg" title="Lorem ipsum dolor sit amet, consectetur adipiscing elit"><img src="5_s.jpg" alt="" /></a>
|
234 |
-
</p>
|
235 |
-
|
236 |
-
<h3>Various types</h3>
|
237 |
-
<p>
|
238 |
-
fancyBox will try to guess content type from href attribute but you can specify it directly by adding classname (fancybox.image, fancybox.iframe, etc).
|
239 |
-
</p>
|
240 |
-
<ul>
|
241 |
-
<li><a class="fancybox" href="#inline1" title="Lorem ipsum dolor sit amet">Inline</a></li>
|
242 |
-
<li><a class="fancybox fancybox.ajax" href="ajax.txt">Ajax</a></li>
|
243 |
-
<li><a class="fancybox fancybox.iframe" href="iframe.html">Iframe</a></li>
|
244 |
-
<li><a class="fancybox" href="http://www.adobe.com/jp/events/cs3_web_edition_tour/swfs/perform.swf">Swf</a></li>
|
245 |
-
</ul>
|
246 |
-
|
247 |
-
<div id="inline1" style="width:400px;display: none;">
|
248 |
-
<h3>Etiam quis mi eu elit</h3>
|
249 |
-
<p>
|
250 |
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis mi eu elit tempor facilisis id et neque. Nulla sit amet sem sapien. Vestibulum imperdiet porta ante ac ornare. Nulla et lorem eu nibh adipiscing ultricies nec at lacus. Cras laoreet ultricies sem, at blandit mi eleifend aliquam. Nunc enim ipsum, vehicula non pretium varius, cursus ac tortor. Vivamus fringilla congue laoreet. Quisque ultrices sodales orci, quis rhoncus justo auctor in. Phasellus dui eros, bibendum eu feugiat ornare, faucibus eu mi. Nunc aliquet tempus sem, id aliquam diam varius ac. Maecenas nisl nunc, molestie vitae eleifend vel, iaculis sed magna. Aenean tempus lacus vitae orci posuere porttitor eget non felis. Donec lectus elit, aliquam nec eleifend sit amet, vestibulum sed nunc.
|
251 |
-
</p>
|
252 |
-
</div>
|
253 |
-
|
254 |
-
<p>
|
255 |
-
Ajax example will not run from your local computer and requires a server to run.
|
256 |
-
</p>
|
257 |
-
|
258 |
-
<h3>Button helper</h3>
|
259 |
-
<p>
|
260 |
-
<a class="fancybox-buttons" data-fancybox-group="button" href="1_b.jpg"><img src="1_s.jpg" alt="" /></a>
|
261 |
-
|
262 |
-
<a class="fancybox-buttons" data-fancybox-group="button" href="2_b.jpg"><img src="2_s.jpg" alt="" /></a>
|
263 |
-
|
264 |
-
<a class="fancybox-buttons" data-fancybox-group="button" href="3_b.jpg"><img src="3_s.jpg" alt="" /></a>
|
265 |
-
|
266 |
-
<a class="fancybox-buttons" data-fancybox-group="button" href="4_b.jpg"><img src="4_s.jpg" alt="" /></a>
|
267 |
-
</p>
|
268 |
-
|
269 |
-
<h3>Thumbnail helper</h3>
|
270 |
-
<p>
|
271 |
-
<a class="fancybox-thumbs" data-fancybox-group="thumb" href="4_b.jpg"><img src="4_s.jpg" alt="" /></a>
|
272 |
-
|
273 |
-
<a class="fancybox-thumbs" data-fancybox-group="thumb" href="3_b.jpg"><img src="3_s.jpg" alt="" /></a>
|
274 |
-
|
275 |
-
<a class="fancybox-thumbs" data-fancybox-group="thumb" href="2_b.jpg"><img src="2_s.jpg" alt="" /></a>
|
276 |
-
|
277 |
-
<a class="fancybox-thumbs" data-fancybox-group="thumb" href="1_b.jpg"><img src="1_s.jpg" alt="" /></a>
|
278 |
-
</p>
|
279 |
-
|
280 |
-
<h3>Media helper</h3>
|
281 |
-
<ul>
|
282 |
-
<li><a class="fancybox-media" href="http://www.youtube.com/watch?v=opj24KnzrWo">Youtube</a></li>
|
283 |
-
<li><a class="fancybox-media" href="http://vimeo.com/25634903">Vimeo</a></li>
|
284 |
-
<li><a class="fancybox-media" href="http://www.metacafe.com/watch/7635964/">Metacafe</a></li>
|
285 |
-
<li><a class="fancybox-media" href="http://www.dailymotion.com/video/xoeylt_electric-guest-this-head-i-hold_music">Dailymotion</a></li>
|
286 |
-
<li><a class="fancybox-media" href="http://twitvid.com/QY7MD">Twitvid</a></li>
|
287 |
-
<li><a class="fancybox-media" href="http://twitpic.com/7p93st">Twitpic</a></li>
|
288 |
-
<li><a class="fancybox-media" href="http://instagr.am/p/IejkuUGxQn">Instagram</a></li>
|
289 |
-
</ul>
|
290 |
-
|
291 |
-
<h3>Open manually</h3>
|
292 |
-
<ul>
|
293 |
-
<li><a id="fancybox-manual-a" href="javascript:;">Open single item</a></li>
|
294 |
-
<li><a id="fancybox-manual-b" href="javascript:;">Open single item, custom options</a></li>
|
295 |
-
<li><a id="fancybox-manual-c" href="javascript:;">Open gallery</a></li>
|
296 |
-
</ul>
|
297 |
-
|
298 |
-
<p>
|
299 |
-
Photo Credit: Instagrammer @whitjohns
|
300 |
-
</p>
|
301 |
-
</body>
|
302 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/assets/fancyBox/lib/jquery-1.7.2.min.js
DELETED
@@ -1,4 +0,0 @@
|
|
1 |
-
/*! jQuery v1.7.2 jquery.com | jquery.org/license */
|
2 |
-
(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
|
3 |
-
a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
|
4 |
-
.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
|
|
|
|
|
|
|
|
backupwordpress/assets/fancyBox/lib/jquery.mousewheel-3.0.6.pack.js
DELETED
@@ -1,13 +0,0 @@
|
|
1 |
-
/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
|
2 |
-
* Licensed under the MIT License (LICENSE.txt).
|
3 |
-
*
|
4 |
-
* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
|
5 |
-
* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
|
6 |
-
* Thanks to: Seamus Leahy for adding deltaX and deltaY
|
7 |
-
*
|
8 |
-
* Version: 3.0.6
|
9 |
-
*
|
10 |
-
* Requires: 1.2.2+
|
11 |
-
*/
|
12 |
-
(function(d){function e(a){var b=a||window.event,c=[].slice.call(arguments,1),f=0,e=0,g=0,a=d.event.fix(b);a.type="mousewheel";b.wheelDelta&&(f=b.wheelDelta/120);b.detail&&(f=-b.detail/3);g=f;b.axis!==void 0&&b.axis===b.HORIZONTAL_AXIS&&(g=0,e=-1*f);b.wheelDeltaY!==void 0&&(g=b.wheelDeltaY/120);b.wheelDeltaX!==void 0&&(e=-1*b.wheelDeltaX/120);c.unshift(a,f,e,g);return(d.event.dispatch||d.event.handle).apply(this,c)}var c=["DOMMouseScroll","mousewheel"];if(d.event.fixHooks)for(var h=c.length;h;)d.event.fixHooks[c[--h]]=
|
13 |
-
d.event.mouseHooks;d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=c.length;a;)this.addEventListener(c[--a],e,false);else this.onmousewheel=e},teardown:function(){if(this.removeEventListener)for(var a=c.length;a;)this.removeEventListener(c[--a],e,false);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/assets/fancyBox/source/blank.gif
DELETED
Binary file
|
backupwordpress/assets/fancyBox/source/fancybox_loading.gif
DELETED
Binary file
|
backupwordpress/assets/fancyBox/source/fancybox_sprite.png
DELETED
Binary file
|
backupwordpress/assets/fancyBox/source/helpers/fancybox_buttons.png
DELETED
Binary file
|
backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-buttons.css
DELETED
@@ -1,85 +0,0 @@
|
|
1 |
-
#fancybox-buttons {
|
2 |
-
position: fixed;
|
3 |
-
left: 0;
|
4 |
-
width: 100%;
|
5 |
-
z-index: 1005;
|
6 |
-
}
|
7 |
-
|
8 |
-
#fancybox-buttons.top {
|
9 |
-
top: 10px;
|
10 |
-
}
|
11 |
-
|
12 |
-
#fancybox-buttons.bottom {
|
13 |
-
bottom: 10px;
|
14 |
-
}
|
15 |
-
|
16 |
-
#fancybox-buttons ul {
|
17 |
-
display: block;
|
18 |
-
width: 170px;
|
19 |
-
height: 30px;
|
20 |
-
margin: 0 auto;
|
21 |
-
padding: 0;
|
22 |
-
list-style: none;
|
23 |
-
background: #111;
|
24 |
-
-webkit-box-shadow: 0 1px 3px #000,0 0 0 1px rgba(0,0,0,.7),inset 0 0 0 1px rgba(255,255,255,.05);
|
25 |
-
-moz-box-shadow: 0 1px 3px #000,0 0 0 1px rgba(0,0,0,.7),inset 0 0 0 1px rgba(255,255,255,.05);
|
26 |
-
background: #111 -webkit-gradient(linear,0% 0%,0% 100%,from(rgba(255,255,255,.2)),color-stop(.5,rgba(255,255,255,.15)),color-stop(.5,rgba(255,255,255,.1)),to(rgba(255,255,255,.15)));
|
27 |
-
background: #111 -moz-linear-gradient(top,rgba(255,255,255,.2) 0%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.1) 50%,rgba(255,255,255,.15) 100%);
|
28 |
-
border-radius: 3px;
|
29 |
-
}
|
30 |
-
|
31 |
-
#fancybox-buttons ul li {
|
32 |
-
float: left;
|
33 |
-
margin: 0;
|
34 |
-
padding: 0;
|
35 |
-
}
|
36 |
-
|
37 |
-
#fancybox-buttons a {
|
38 |
-
display: block;
|
39 |
-
width: 30px;
|
40 |
-
height: 30px;
|
41 |
-
text-indent: -9999px;
|
42 |
-
background-image: url('fancybox_buttons.png');
|
43 |
-
background-repeat: no-repeat;
|
44 |
-
outline: none;
|
45 |
-
}
|
46 |
-
|
47 |
-
#fancybox-buttons a.btnPrev {
|
48 |
-
width: 32px;
|
49 |
-
background-position: 6px 0;
|
50 |
-
}
|
51 |
-
|
52 |
-
#fancybox-buttons a.btnNext {
|
53 |
-
background-position: -33px 0;
|
54 |
-
border-right: 1px solid #3e3e3e;
|
55 |
-
}
|
56 |
-
|
57 |
-
#fancybox-buttons a.btnPlay {
|
58 |
-
background-position: 0 -30px;
|
59 |
-
}
|
60 |
-
|
61 |
-
#fancybox-buttons a.btnPlayOn {
|
62 |
-
background-position: -30px -30px;
|
63 |
-
}
|
64 |
-
|
65 |
-
#fancybox-buttons a.btnToggle {
|
66 |
-
background-position: 3px -60px;
|
67 |
-
border-left: 1px solid #111;
|
68 |
-
border-right: 1px solid #3e3e3e;
|
69 |
-
width: 35px
|
70 |
-
}
|
71 |
-
|
72 |
-
#fancybox-buttons a.btnToggleOn {
|
73 |
-
background-position: -27px -60px;
|
74 |
-
}
|
75 |
-
|
76 |
-
#fancybox-buttons a.btnClose {
|
77 |
-
border-left: 1px solid #111;
|
78 |
-
width: 38px;
|
79 |
-
background-position: -57px 0px;
|
80 |
-
}
|
81 |
-
|
82 |
-
#fancybox-buttons a.btnDisabled {
|
83 |
-
opacity : 0.5;
|
84 |
-
cursor: default;
|
85 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-buttons.js
DELETED
@@ -1,115 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
* Buttons helper for fancyBox
|
3 |
-
* version: 1.0.2
|
4 |
-
* @requires fancyBox v2.0 or later
|
5 |
-
*
|
6 |
-
* Usage:
|
7 |
-
* $(".fancybox").fancybox({
|
8 |
-
* buttons: {
|
9 |
-
* position : 'top'
|
10 |
-
* }
|
11 |
-
* });
|
12 |
-
*
|
13 |
-
* Options:
|
14 |
-
* tpl - HTML template
|
15 |
-
* position - 'top' or 'bottom'
|
16 |
-
*
|
17 |
-
*/
|
18 |
-
(function ($) {
|
19 |
-
//Shortcut for fancyBox object
|
20 |
-
var F = $.fancybox;
|
21 |
-
|
22 |
-
//Add helper object
|
23 |
-
F.helpers.buttons = {
|
24 |
-
tpl: '<div id="fancybox-buttons"><ul><li><a class="btnPrev" title="Previous" href="javascript:;"></a></li><li><a class="btnPlay" title="Start slideshow" href="javascript:;"></a></li><li><a class="btnNext" title="Next" href="javascript:;"></a></li><li><a class="btnToggle" title="Toggle size" href="javascript:;"></a></li><li><a class="btnClose" title="Close" href="javascript:jQuery.fancybox.close();"></a></li></ul></div>',
|
25 |
-
list: null,
|
26 |
-
buttons: {},
|
27 |
-
|
28 |
-
update: function () {
|
29 |
-
var toggle = this.buttons.toggle.removeClass('btnDisabled btnToggleOn');
|
30 |
-
|
31 |
-
//Size toggle button
|
32 |
-
if (F.current.canShrink) {
|
33 |
-
toggle.addClass('btnToggleOn');
|
34 |
-
|
35 |
-
} else if (!F.current.canExpand) {
|
36 |
-
toggle.addClass('btnDisabled');
|
37 |
-
}
|
38 |
-
},
|
39 |
-
|
40 |
-
beforeLoad: function (opts) {
|
41 |
-
//Remove self if gallery do not have at least two items
|
42 |
-
if (F.group.length < 2) {
|
43 |
-
F.coming.helpers.buttons = false;
|
44 |
-
F.coming.closeBtn = true;
|
45 |
-
|
46 |
-
return;
|
47 |
-
}
|
48 |
-
|
49 |
-
//Increase top margin to give space for buttons
|
50 |
-
F.coming.margin[ opts.position === 'bottom' ? 2 : 0 ] += 30;
|
51 |
-
},
|
52 |
-
|
53 |
-
onPlayStart: function () {
|
54 |
-
if (this.list) {
|
55 |
-
this.buttons.play.attr('title', 'Pause slideshow').addClass('btnPlayOn');
|
56 |
-
}
|
57 |
-
},
|
58 |
-
|
59 |
-
onPlayEnd: function () {
|
60 |
-
if (this.list) {
|
61 |
-
this.buttons.play.attr('title', 'Start slideshow').removeClass('btnPlayOn');
|
62 |
-
}
|
63 |
-
},
|
64 |
-
|
65 |
-
afterShow: function (opts) {
|
66 |
-
var buttons;
|
67 |
-
|
68 |
-
if (!this.list) {
|
69 |
-
this.list = $(opts.tpl || this.tpl).addClass(opts.position || 'top').appendTo('body');
|
70 |
-
|
71 |
-
this.buttons = {
|
72 |
-
prev : this.list.find('.btnPrev').click( F.prev ),
|
73 |
-
next : this.list.find('.btnNext').click( F.next ),
|
74 |
-
play : this.list.find('.btnPlay').click( F.play ),
|
75 |
-
toggle : this.list.find('.btnToggle').click( F.toggle )
|
76 |
-
}
|
77 |
-
}
|
78 |
-
|
79 |
-
buttons = this.buttons;
|
80 |
-
|
81 |
-
//Prev
|
82 |
-
if (F.current.index > 0 || F.current.loop) {
|
83 |
-
buttons.prev.removeClass('btnDisabled');
|
84 |
-
} else {
|
85 |
-
buttons.prev.addClass('btnDisabled');
|
86 |
-
}
|
87 |
-
|
88 |
-
//Next / Play
|
89 |
-
if (F.current.loop || F.current.index < F.group.length - 1) {
|
90 |
-
buttons.next.removeClass('btnDisabled');
|
91 |
-
buttons.play.removeClass('btnDisabled');
|
92 |
-
|
93 |
-
} else {
|
94 |
-
buttons.next.addClass('btnDisabled');
|
95 |
-
buttons.play.addClass('btnDisabled');
|
96 |
-
}
|
97 |
-
|
98 |
-
this.update();
|
99 |
-
},
|
100 |
-
|
101 |
-
onUpdate: function () {
|
102 |
-
this.update();
|
103 |
-
},
|
104 |
-
|
105 |
-
beforeClose: function () {
|
106 |
-
if (this.list) {
|
107 |
-
this.list.remove();
|
108 |
-
}
|
109 |
-
|
110 |
-
this.list = null;
|
111 |
-
this.buttons = {};
|
112 |
-
}
|
113 |
-
};
|
114 |
-
|
115 |
-
}(jQuery));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-media.js
DELETED
@@ -1,86 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
* Media helper for fancyBox
|
3 |
-
* version: 1.0.0
|
4 |
-
* @requires fancyBox v2.0 or later
|
5 |
-
*
|
6 |
-
* Usage:
|
7 |
-
* $(".fancybox").fancybox({
|
8 |
-
* media: {}
|
9 |
-
* });
|
10 |
-
*
|
11 |
-
* Supports:
|
12 |
-
* Youtube
|
13 |
-
* http://www.youtube.com/watch?v=opj24KnzrWo
|
14 |
-
* http://youtu.be/opj24KnzrWo
|
15 |
-
* Vimeo
|
16 |
-
* http://vimeo.com/25634903
|
17 |
-
* Metacafe
|
18 |
-
* http://www.metacafe.com/watch/7635964/dr_seuss_the_lorax_movie_trailer/
|
19 |
-
* http://www.metacafe.com/watch/7635964/
|
20 |
-
* Dailymotion
|
21 |
-
* http://www.dailymotion.com/video/xoytqh_dr-seuss-the-lorax-premiere_people
|
22 |
-
* Twitvid
|
23 |
-
* http://twitvid.com/QY7MD
|
24 |
-
* Twitpic
|
25 |
-
* http://twitpic.com/7p93st
|
26 |
-
* Instagram
|
27 |
-
* http://instagr.am/p/IejkuUGxQn/
|
28 |
-
* http://instagram.com/p/IejkuUGxQn/
|
29 |
-
* Google maps
|
30 |
-
* http://maps.google.com/maps?q=Eiffel+Tower,+Avenue+Gustave+Eiffel,+Paris,+France&t=h&z=17
|
31 |
-
* http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16
|
32 |
-
* http://maps.google.com/?ll=48.859463,2.292626&spn=0.000965,0.002642&t=m&z=19&layer=c&cbll=48.859524,2.292532&panoid=YJ0lq28OOy3VT2IqIuVY0g&cbp=12,151.58,,0,-15.56
|
33 |
-
*/
|
34 |
-
(function ($) {
|
35 |
-
//Shortcut for fancyBox object
|
36 |
-
var F = $.fancybox;
|
37 |
-
|
38 |
-
//Add helper object
|
39 |
-
F.helpers.media = {
|
40 |
-
beforeLoad : function(opts, obj) {
|
41 |
-
var href = obj.href || '',
|
42 |
-
type = false,
|
43 |
-
rez;
|
44 |
-
|
45 |
-
if ((rez = href.match(/(youtube\.com|youtu\.be)\/(v\/|u\/|embed\/|watch\?v=)?([^#\&\?]*).*/i))) {
|
46 |
-
href = '//www.youtube.com/embed/' + rez[3] + '?autoplay=1&fs=1&rel=0&modestbranding=1&enablejsapi=1';
|
47 |
-
type = 'iframe';
|
48 |
-
|
49 |
-
} else if ((rez = href.match(/vimeo.com\/(\d+)\/?(.*)/))) {
|
50 |
-
href = '//player.vimeo.com/video/' + rez[1] + '?hd=1&autoplay=1&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1';
|
51 |
-
type = 'iframe';
|
52 |
-
|
53 |
-
} else if ((rez = href.match(/metacafe.com\/watch\/(\d+)\/?(.*)/))) {
|
54 |
-
href = '//www.metacafe.com/fplayer/' + rez[1] + '/.swf?playerVars=autoPlay=yes';
|
55 |
-
type = 'swf';
|
56 |
-
|
57 |
-
} else if ((rez = href.match(/dailymotion.com\/video\/(.*)\/?(.*)/))) {
|
58 |
-
href = '//www.dailymotion.com/swf/video/' + rez[1] + '?additionalInfos=0&autoStart=1';
|
59 |
-
type = 'swf';
|
60 |
-
|
61 |
-
} else if ((rez = href.match(/twitvid\.com\/([a-zA-Z0-9_\-\?\=]+)/i))) {
|
62 |
-
href = '//www.twitvid.com/embed.php?autoplay=0&guid=' + rez[1];
|
63 |
-
type = 'iframe';
|
64 |
-
|
65 |
-
} else if ((rez = href.match(/twitpic\.com\/(?!(?:place|photos|events)\/)([a-zA-Z0-9\?\=\-]+)/i))) {
|
66 |
-
href = '//twitpic.com/show/full/' + rez[1];
|
67 |
-
type = 'image';
|
68 |
-
|
69 |
-
} else if ((rez = href.match(/(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i))) {
|
70 |
-
href = '//' + rez[1] + '/p/' + rez[2] + '/media/?size=l';
|
71 |
-
type = 'image';
|
72 |
-
|
73 |
-
} else if ((rez = href.match(/maps\.google\.com\/(\?ll=|maps\/?\?q=)(.*)/i))) {
|
74 |
-
href = '//maps.google.com/' + rez[1] + '' + rez[2] + '&output=' + (rez[2].indexOf('layer=c') ? 'svembed' : 'embed');
|
75 |
-
type = 'iframe';
|
76 |
-
}
|
77 |
-
|
78 |
-
if (type) {
|
79 |
-
obj.href = href;
|
80 |
-
obj.type = type;
|
81 |
-
obj.autoSize = false;
|
82 |
-
}
|
83 |
-
}
|
84 |
-
}
|
85 |
-
|
86 |
-
}(jQuery));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-thumbs.css
DELETED
@@ -1,54 +0,0 @@
|
|
1 |
-
#fancybox-thumbs {
|
2 |
-
position: fixed;
|
3 |
-
left: 0px;
|
4 |
-
width: 100%;
|
5 |
-
overflow: hidden;
|
6 |
-
z-index: 1005;
|
7 |
-
}
|
8 |
-
|
9 |
-
#fancybox-thumbs.bottom {
|
10 |
-
bottom: 2px;
|
11 |
-
}
|
12 |
-
|
13 |
-
#fancybox-thumbs.top {
|
14 |
-
top: 2px;
|
15 |
-
}
|
16 |
-
|
17 |
-
#fancybox-thumbs ul {
|
18 |
-
position: relative;
|
19 |
-
list-style: none;
|
20 |
-
margin: 0;
|
21 |
-
padding: 0;
|
22 |
-
}
|
23 |
-
|
24 |
-
#fancybox-thumbs ul li {
|
25 |
-
float: left;
|
26 |
-
padding: 1px;
|
27 |
-
opacity: 0.5;
|
28 |
-
}
|
29 |
-
|
30 |
-
#fancybox-thumbs ul li.active {
|
31 |
-
opacity: 0.75;
|
32 |
-
padding: 0;
|
33 |
-
border: 1px solid #fff;
|
34 |
-
}
|
35 |
-
|
36 |
-
#fancybox-thumbs ul li:hover {
|
37 |
-
opacity: 1;
|
38 |
-
}
|
39 |
-
|
40 |
-
#fancybox-thumbs ul li a {
|
41 |
-
display: block;
|
42 |
-
position: relative;
|
43 |
-
overflow: hidden;
|
44 |
-
border: 1px solid #222;
|
45 |
-
background: #111;
|
46 |
-
outline: none;
|
47 |
-
}
|
48 |
-
|
49 |
-
#fancybox-thumbs ul li img {
|
50 |
-
display: block;
|
51 |
-
position: relative;
|
52 |
-
border: 0;
|
53 |
-
padding: 0;
|
54 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/assets/fancyBox/source/helpers/jquery.fancybox-thumbs.js
DELETED
@@ -1,157 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
* Thumbnail helper for fancyBox
|
3 |
-
* version: 1.0.4
|
4 |
-
* @requires fancyBox v2.0 or later
|
5 |
-
*
|
6 |
-
* Usage:
|
7 |
-
* $(".fancybox").fancybox({
|
8 |
-
* thumbs: {
|
9 |
-
* width : 50,
|
10 |
-
* height : 50
|
11 |
-
* }
|
12 |
-
* });
|
13 |
-
*
|
14 |
-
* Options:
|
15 |
-
* width - thumbnail width
|
16 |
-
* height - thumbnail height
|
17 |
-
* source - function to obtain the URL of the thumbnail image
|
18 |
-
* position - 'top' or 'bottom'
|
19 |
-
*
|
20 |
-
*/
|
21 |
-
(function ($) {
|
22 |
-
//Shortcut for fancyBox object
|
23 |
-
var F = $.fancybox;
|
24 |
-
|
25 |
-
//Add helper object
|
26 |
-
F.helpers.thumbs = {
|
27 |
-
wrap: null,
|
28 |
-
list: null,
|
29 |
-
width: 0,
|
30 |
-
|
31 |
-
//Default function to obtain the URL of the thumbnail image
|
32 |
-
source: function (el) {
|
33 |
-
var img;
|
34 |
-
|
35 |
-
if ($.type(el) === 'string') {
|
36 |
-
return el;
|
37 |
-
}
|
38 |
-
|
39 |
-
img = $(el).find('img');
|
40 |
-
|
41 |
-
return img.length ? img.attr('src') : el.href;
|
42 |
-
},
|
43 |
-
|
44 |
-
init: function (opts) {
|
45 |
-
var that = this,
|
46 |
-
list,
|
47 |
-
thumbWidth = opts.width || 50,
|
48 |
-
thumbHeight = opts.height || 50,
|
49 |
-
thumbSource = opts.source || this.source;
|
50 |
-
|
51 |
-
//Build list structure
|
52 |
-
list = '';
|
53 |
-
|
54 |
-
for (var n = 0; n < F.group.length; n++) {
|
55 |
-
list += '<li><a style="width:' + thumbWidth + 'px;height:' + thumbHeight + 'px;" href="javascript:jQuery.fancybox.jumpto(' + n + ');"></a></li>';
|
56 |
-
}
|
57 |
-
|
58 |
-
this.wrap = $('<div id="fancybox-thumbs"></div>').addClass(opts.position || 'bottom').appendTo('body');
|
59 |
-
this.list = $('<ul>' + list + '</ul>').appendTo(this.wrap);
|
60 |
-
|
61 |
-
//Load each thumbnail
|
62 |
-
$.each(F.group, function (i) {
|
63 |
-
$("<img />").load(function () {
|
64 |
-
var width = this.width,
|
65 |
-
height = this.height,
|
66 |
-
widthRatio, heightRatio, parent;
|
67 |
-
|
68 |
-
if (!that.list || !width || !height) {
|
69 |
-
return;
|
70 |
-
}
|
71 |
-
|
72 |
-
//Calculate thumbnail width/height and center it
|
73 |
-
widthRatio = width / thumbWidth;
|
74 |
-
heightRatio = height / thumbHeight;
|
75 |
-
parent = that.list.children().eq(i).find('a');
|
76 |
-
|
77 |
-
if (widthRatio >= 1 && heightRatio >= 1) {
|
78 |
-
if (widthRatio > heightRatio) {
|
79 |
-
width = Math.floor(width / heightRatio);
|
80 |
-
height = thumbHeight;
|
81 |
-
|
82 |
-
} else {
|
83 |
-
width = thumbWidth;
|
84 |
-
height = Math.floor(height / widthRatio);
|
85 |
-
}
|
86 |
-
}
|
87 |
-
|
88 |
-
$(this).css({
|
89 |
-
width: width,
|
90 |
-
height: height,
|
91 |
-
top: Math.floor(thumbHeight / 2 - height / 2),
|
92 |
-
left: Math.floor(thumbWidth / 2 - width / 2)
|
93 |
-
});
|
94 |
-
|
95 |
-
parent.width(thumbWidth).height(thumbHeight);
|
96 |
-
|
97 |
-
$(this).hide().appendTo(parent).fadeIn(300);
|
98 |
-
|
99 |
-
}).attr('src', thumbSource( F.group[ i ] ));
|
100 |
-
});
|
101 |
-
|
102 |
-
//Set initial width
|
103 |
-
this.width = this.list.children().eq(0).outerWidth(true);
|
104 |
-
|
105 |
-
this.list.width(this.width * (F.group.length + 1)).css('left', Math.floor($(window).width() * 0.5 - (F.current.index * this.width + this.width * 0.5)));
|
106 |
-
},
|
107 |
-
|
108 |
-
//Center list
|
109 |
-
update: function (opts) {
|
110 |
-
if (this.list) {
|
111 |
-
this.list.stop(true).animate({
|
112 |
-
'left': Math.floor($(window).width() * 0.5 - (F.current.index * this.width + this.width * 0.5))
|
113 |
-
}, 150);
|
114 |
-
}
|
115 |
-
},
|
116 |
-
|
117 |
-
beforeLoad: function (opts) {
|
118 |
-
//Remove self if gallery do not have at least two items
|
119 |
-
if (F.group.length < 2) {
|
120 |
-
F.coming.helpers.thumbs = false;
|
121 |
-
|
122 |
-
return;
|
123 |
-
}
|
124 |
-
|
125 |
-
//Increase bottom margin to give space for thumbs
|
126 |
-
F.coming.margin[ opts.position === 'top' ? 0 : 2 ] = opts.height + 30;
|
127 |
-
},
|
128 |
-
|
129 |
-
afterShow: function (opts) {
|
130 |
-
//Check if exists and create or update list
|
131 |
-
if (this.list) {
|
132 |
-
this.update(opts);
|
133 |
-
|
134 |
-
} else {
|
135 |
-
this.init(opts);
|
136 |
-
}
|
137 |
-
|
138 |
-
//Set active element
|
139 |
-
this.list.children().removeClass('active').eq(F.current.index).addClass('active');
|
140 |
-
},
|
141 |
-
|
142 |
-
onUpdate: function () {
|
143 |
-
this.update();
|
144 |
-
},
|
145 |
-
|
146 |
-
beforeClose: function () {
|
147 |
-
if (this.wrap) {
|
148 |
-
this.wrap.remove();
|
149 |
-
}
|
150 |
-
|
151 |
-
this.wrap = null;
|
152 |
-
this.list = null;
|
153 |
-
this.width = 0;
|
154 |
-
}
|
155 |
-
}
|
156 |
-
|
157 |
-
}(jQuery));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/assets/fancyBox/source/jquery.fancybox.css
DELETED
@@ -1,226 +0,0 @@
|
|
1 |
-
/*! fancyBox v2.0.5 fancyapps.com | fancyapps.com/fancybox/#license */
|
2 |
-
.fancybox-tmp iframe, .fancybox-tmp object {
|
3 |
-
vertical-align: top;
|
4 |
-
padding: 0;
|
5 |
-
margin: 0;
|
6 |
-
}
|
7 |
-
|
8 |
-
.fancybox-wrap {
|
9 |
-
position: absolute;
|
10 |
-
top: 0;
|
11 |
-
left: 0;
|
12 |
-
z-index: 1002;
|
13 |
-
}
|
14 |
-
|
15 |
-
.fancybox-outer {
|
16 |
-
position: relative;
|
17 |
-
padding: 0;
|
18 |
-
margin: 0;
|
19 |
-
background: #f9f9f9;
|
20 |
-
color: #444;
|
21 |
-
text-shadow: none;
|
22 |
-
-webkit-border-radius: 4px;
|
23 |
-
-moz-border-radius: 4px;
|
24 |
-
border-radius: 4px;
|
25 |
-
}
|
26 |
-
|
27 |
-
.fancybox-opened {
|
28 |
-
z-index: 1003;
|
29 |
-
}
|
30 |
-
|
31 |
-
.fancybox-opened .fancybox-outer {
|
32 |
-
-webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
|
33 |
-
-moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
|
34 |
-
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
|
35 |
-
}
|
36 |
-
|
37 |
-
.fancybox-inner {
|
38 |
-
width: 100%;
|
39 |
-
height: 100%;
|
40 |
-
padding: 0;
|
41 |
-
margin: 0;
|
42 |
-
position: relative;
|
43 |
-
outline: none;
|
44 |
-
overflow: hidden;
|
45 |
-
}
|
46 |
-
|
47 |
-
.fancybox-type-iframe .fancybox-inner {
|
48 |
-
-webkit-overflow-scrolling: touch
|
49 |
-
}
|
50 |
-
|
51 |
-
.fancybox-error {
|
52 |
-
color: #444;
|
53 |
-
font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
|
54 |
-
margin: 0;
|
55 |
-
padding: 10px;
|
56 |
-
}
|
57 |
-
|
58 |
-
.fancybox-image, .fancybox-iframe {
|
59 |
-
display: block;
|
60 |
-
width: 100%;
|
61 |
-
height: 100%;
|
62 |
-
border: 0;
|
63 |
-
padding: 0;
|
64 |
-
margin: 0;
|
65 |
-
vertical-align: top;
|
66 |
-
}
|
67 |
-
|
68 |
-
.fancybox-image {
|
69 |
-
max-width: 100%;
|
70 |
-
max-height: 100%;
|
71 |
-
}
|
72 |
-
|
73 |
-
#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
|
74 |
-
background-image: url('fancybox_sprite.png');
|
75 |
-
}
|
76 |
-
|
77 |
-
#fancybox-loading {
|
78 |
-
position: fixed;
|
79 |
-
top: 50%;
|
80 |
-
left: 50%;
|
81 |
-
margin-top: -22px;
|
82 |
-
margin-left: -22px;
|
83 |
-
background-position: 0 -108px;
|
84 |
-
opacity: 0.8;
|
85 |
-
cursor: pointer;
|
86 |
-
z-index: 1010;
|
87 |
-
}
|
88 |
-
|
89 |
-
#fancybox-loading div {
|
90 |
-
width: 44px;
|
91 |
-
height: 44px;
|
92 |
-
background: url('fancybox_loading.gif') center center no-repeat;
|
93 |
-
}
|
94 |
-
|
95 |
-
.fancybox-close {
|
96 |
-
position: absolute;
|
97 |
-
top: -18px;
|
98 |
-
right: -18px;
|
99 |
-
width: 36px;
|
100 |
-
height: 36px;
|
101 |
-
cursor: pointer;
|
102 |
-
z-index: 1004;
|
103 |
-
}
|
104 |
-
|
105 |
-
.fancybox-nav {
|
106 |
-
position: absolute;
|
107 |
-
top: 0;
|
108 |
-
width: 40%;
|
109 |
-
height: 100%;
|
110 |
-
cursor: pointer;
|
111 |
-
background: transparent url('blank.gif'); /* helps IE */
|
112 |
-
z-index: 1003;
|
113 |
-
}
|
114 |
-
|
115 |
-
.fancybox-prev {
|
116 |
-
left: 0;
|
117 |
-
}
|
118 |
-
|
119 |
-
.fancybox-next {
|
120 |
-
right: 0;
|
121 |
-
}
|
122 |
-
|
123 |
-
.fancybox-nav span {
|
124 |
-
position: absolute;
|
125 |
-
top: 50%;
|
126 |
-
width: 36px;
|
127 |
-
height: 36px;
|
128 |
-
margin-top: -18px;
|
129 |
-
cursor: pointer;
|
130 |
-
z-index: 1003;
|
131 |
-
visibility: hidden;
|
132 |
-
}
|
133 |
-
|
134 |
-
.fancybox-prev span {
|
135 |
-
left: 20px;
|
136 |
-
background-position: 0 -36px;
|
137 |
-
}
|
138 |
-
|
139 |
-
.fancybox-next span {
|
140 |
-
right: 20px;
|
141 |
-
background-position: 0 -72px;
|
142 |
-
}
|
143 |
-
|
144 |
-
.fancybox-nav:hover span {
|
145 |
-
visibility: visible;
|
146 |
-
}
|
147 |
-
|
148 |
-
.fancybox-tmp {
|
149 |
-
position: absolute;
|
150 |
-
top: -9999px;
|
151 |
-
left: -9999px;
|
152 |
-
padding: 0;
|
153 |
-
overflow: visible;
|
154 |
-
visibility: hidden;
|
155 |
-
}
|
156 |
-
|
157 |
-
/* Overlay helper */
|
158 |
-
|
159 |
-
#fancybox-overlay {
|
160 |
-
position: absolute;
|
161 |
-
top: 0;
|
162 |
-
left: 0;
|
163 |
-
overflow: hidden;
|
164 |
-
display: none;
|
165 |
-
z-index: 1001;
|
166 |
-
background: #000;
|
167 |
-
}
|
168 |
-
|
169 |
-
/* Title helper */
|
170 |
-
|
171 |
-
.fancybox-title {
|
172 |
-
visibility: hidden;
|
173 |
-
font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
|
174 |
-
position: relative;
|
175 |
-
text-shadow: none;
|
176 |
-
z-index: 1005;
|
177 |
-
}
|
178 |
-
|
179 |
-
.fancybox-opened .fancybox-title {
|
180 |
-
visibility: visible;
|
181 |
-
}
|
182 |
-
|
183 |
-
.fancybox-title-float-wrap {
|
184 |
-
position: absolute;
|
185 |
-
bottom: 0;
|
186 |
-
right: 50%;
|
187 |
-
margin-bottom: -35px;
|
188 |
-
z-index: 1003;
|
189 |
-
text-align: center;
|
190 |
-
}
|
191 |
-
|
192 |
-
.fancybox-title-float-wrap .child {
|
193 |
-
display: inline-block;
|
194 |
-
margin-right: -100%;
|
195 |
-
padding: 2px 20px;
|
196 |
-
background: transparent; /* Fallback for web browsers that doesn't support RGBa */
|
197 |
-
background: rgba(0, 0, 0, 0.8);
|
198 |
-
-webkit-border-radius: 15px;
|
199 |
-
-moz-border-radius: 15px;
|
200 |
-
border-radius: 15px;
|
201 |
-
text-shadow: 0 1px 2px #222;
|
202 |
-
color: #FFF;
|
203 |
-
font-weight: bold;
|
204 |
-
line-height: 24px;
|
205 |
-
white-space: nowrap;
|
206 |
-
}
|
207 |
-
|
208 |
-
.fancybox-title-outside-wrap {
|
209 |
-
position: relative;
|
210 |
-
margin-top: 10px;
|
211 |
-
color: #fff;
|
212 |
-
}
|
213 |
-
|
214 |
-
.fancybox-title-inside-wrap {
|
215 |
-
margin-top: 10px;
|
216 |
-
}
|
217 |
-
|
218 |
-
.fancybox-title-over-wrap {
|
219 |
-
position: absolute;
|
220 |
-
bottom: 0;
|
221 |
-
left: 0;
|
222 |
-
color: #fff;
|
223 |
-
padding: 10px;
|
224 |
-
background: #000;
|
225 |
-
background: rgba(0, 0, 0, .8);
|
226 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/assets/fancyBox/source/jquery.fancybox.js
DELETED
@@ -1,1449 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
* fancyBox - jQuery Plugin
|
3 |
-
* version: 2.0.5 (27/03/2012)
|
4 |
-
* @requires jQuery v1.6 or later
|
5 |
-
*
|
6 |
-
* Examples at http://fancyapps.com/fancybox/
|
7 |
-
* License: www.fancyapps.com/fancybox/#license
|
8 |
-
*
|
9 |
-
* Copyright 2012 Janis Skarnelis - janis@fancyapps.com
|
10 |
-
*
|
11 |
-
*/
|
12 |
-
(function (window, document, undefined) {
|
13 |
-
"use strict";
|
14 |
-
|
15 |
-
var $ = window.jQuery,
|
16 |
-
W = $(window),
|
17 |
-
D = $(document),
|
18 |
-
F = $.fancybox = function () {
|
19 |
-
F.open.apply( this, arguments );
|
20 |
-
},
|
21 |
-
didResize = false,
|
22 |
-
resizeTimer = null,
|
23 |
-
isMobile = document.createTouch !== undefined,
|
24 |
-
isString = function(str) {
|
25 |
-
return $.type(str) === "string";
|
26 |
-
},
|
27 |
-
isPercentage = function(str) {
|
28 |
-
return isString(str) && str.indexOf('%') > -1;
|
29 |
-
};
|
30 |
-
|
31 |
-
$.extend(F, {
|
32 |
-
// The current version of fancyBox
|
33 |
-
version: '2.0.5',
|
34 |
-
|
35 |
-
defaults: {
|
36 |
-
padding: 15,
|
37 |
-
margin: 20,
|
38 |
-
|
39 |
-
width: 800,
|
40 |
-
height: 600,
|
41 |
-
minWidth: 100,
|
42 |
-
minHeight: 100,
|
43 |
-
maxWidth: 9999,
|
44 |
-
maxHeight: 9999,
|
45 |
-
|
46 |
-
autoSize: true,
|
47 |
-
autoResize: !isMobile,
|
48 |
-
autoCenter : !isMobile,
|
49 |
-
fitToView: true,
|
50 |
-
aspectRatio: false,
|
51 |
-
topRatio: 0.5,
|
52 |
-
|
53 |
-
fixed: !($.browser.msie && $.browser.version <= 6) && !isMobile,
|
54 |
-
scrolling: 'auto', // 'auto', 'yes' or 'no'
|
55 |
-
wrapCSS: 'fancybox-default',
|
56 |
-
|
57 |
-
arrows: true,
|
58 |
-
closeBtn: true,
|
59 |
-
closeClick: false,
|
60 |
-
nextClick : false,
|
61 |
-
mouseWheel: true,
|
62 |
-
autoPlay: false,
|
63 |
-
playSpeed: 3000,
|
64 |
-
preload : 3,
|
65 |
-
|
66 |
-
modal: false,
|
67 |
-
loop: true,
|
68 |
-
ajax: { dataType: 'html', headers: { 'X-fancyBox': true } },
|
69 |
-
keys: {
|
70 |
-
next: [13, 32, 34, 39, 40], // enter, space, page down, right arrow, down arrow
|
71 |
-
prev: [8, 33, 37, 38], // backspace, page up, left arrow, up arrow
|
72 |
-
close: [27] // escape key
|
73 |
-
},
|
74 |
-
|
75 |
-
// Override some properties
|
76 |
-
index: 0,
|
77 |
-
type: null,
|
78 |
-
href: null,
|
79 |
-
content: null,
|
80 |
-
title: null,
|
81 |
-
|
82 |
-
// HTML templates
|
83 |
-
tpl: {
|
84 |
-
wrap: '<div class="fancybox-wrap"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div>',
|
85 |
-
image: '<img class="fancybox-image" src="{href}" alt="" />',
|
86 |
-
iframe: '<iframe class="fancybox-iframe" name="fancybox-frame{rnd}" frameborder="0" hspace="0"' + ($.browser.msie ? ' allowtransparency="true"' : '') + '></iframe>',
|
87 |
-
swf: '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="wmode" value="transparent" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="{href}" /><embed src="{href}" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="100%" height="100%" wmode="transparent"></embed></object>',
|
88 |
-
error: '<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',
|
89 |
-
closeBtn: '<div title="Close" class="fancybox-item fancybox-close"></div>',
|
90 |
-
next: '<a title="Next" class="fancybox-nav fancybox-next"><span></span></a>',
|
91 |
-
prev: '<a title="Previous" class="fancybox-nav fancybox-prev"><span></span></a>'
|
92 |
-
},
|
93 |
-
|
94 |
-
// Properties for each animation type
|
95 |
-
// Opening fancyBox
|
96 |
-
openEffect: 'fade', // 'elastic', 'fade' or 'none'
|
97 |
-
openSpeed: 250,
|
98 |
-
openEasing: 'swing',
|
99 |
-
openOpacity: true,
|
100 |
-
openMethod: 'zoomIn',
|
101 |
-
|
102 |
-
// Closing fancyBox
|
103 |
-
closeEffect: 'fade', // 'elastic', 'fade' or 'none'
|
104 |
-
closeSpeed: 250,
|
105 |
-
closeEasing: 'swing',
|
106 |
-
closeOpacity: true,
|
107 |
-
closeMethod: 'zoomOut',
|
108 |
-
|
109 |
-
// Changing next gallery item
|
110 |
-
nextEffect: 'elastic', // 'elastic', 'fade' or 'none'
|
111 |
-
nextSpeed: 300,
|
112 |
-
nextEasing: 'swing',
|
113 |
-
nextMethod: 'changeIn',
|
114 |
-
|
115 |
-
// Changing previous gallery item
|
116 |
-
prevEffect: 'elastic', // 'elastic', 'fade' or 'none'
|
117 |
-
prevSpeed: 300,
|
118 |
-
prevEasing: 'swing',
|
119 |
-
prevMethod: 'changeOut',
|
120 |
-
|
121 |
-
// Enabled helpers
|
122 |
-
helpers: {
|
123 |
-
overlay: {
|
124 |
-
speedIn: 0,
|
125 |
-
speedOut: 300,
|
126 |
-
opacity: 0.8,
|
127 |
-
css: {
|
128 |
-
cursor: 'pointer'
|
129 |
-
},
|
130 |
-
closeClick: true
|
131 |
-
},
|
132 |
-
title: {
|
133 |
-
type: 'float' // 'float', 'inside', 'outside' or 'over'
|
134 |
-
}
|
135 |
-
},
|
136 |
-
|
137 |
-
// Callbacks
|
138 |
-
onCancel: $.noop, // If canceling
|
139 |
-
beforeLoad: $.noop, // Before loading
|
140 |
-
afterLoad: $.noop, // After loading
|
141 |
-
beforeShow: $.noop, // Before changing in current item
|
142 |
-
afterShow: $.noop, // After opening
|
143 |
-
beforeClose: $.noop, // Before closing
|
144 |
-
afterClose: $.noop // After closing
|
145 |
-
},
|
146 |
-
|
147 |
-
//Current state
|
148 |
-
group: {}, // Selected group
|
149 |
-
opts: {}, // Group options
|
150 |
-
coming: null, // Element being loaded
|
151 |
-
current: null, // Currently loaded element
|
152 |
-
isOpen: false, // Is currently open
|
153 |
-
isOpened: false, // Have been fully opened at least once
|
154 |
-
wrap: null,
|
155 |
-
outer: null,
|
156 |
-
inner: null,
|
157 |
-
|
158 |
-
player: {
|
159 |
-
timer: null,
|
160 |
-
isActive: false
|
161 |
-
},
|
162 |
-
|
163 |
-
// Loaders
|
164 |
-
ajaxLoad: null,
|
165 |
-
imgPreload: null,
|
166 |
-
|
167 |
-
// Some collections
|
168 |
-
transitions: {},
|
169 |
-
helpers: {},
|
170 |
-
|
171 |
-
/*
|
172 |
-
* Static methods
|
173 |
-
*/
|
174 |
-
|
175 |
-
open: function (group, opts) {
|
176 |
-
//Kill existing instances
|
177 |
-
F.close(true);
|
178 |
-
|
179 |
-
//Normalize group
|
180 |
-
if (group && !$.isArray(group)) {
|
181 |
-
group = group instanceof $ ? $(group).get() : [group];
|
182 |
-
}
|
183 |
-
|
184 |
-
F.isActive = true;
|
185 |
-
|
186 |
-
//Extend the defaults
|
187 |
-
F.opts = $.extend(true, {}, F.defaults, opts);
|
188 |
-
|
189 |
-
//All options are merged recursive except keys
|
190 |
-
if ($.isPlainObject(opts) && opts.keys !== undefined) {
|
191 |
-
F.opts.keys = opts.keys ? $.extend({}, F.defaults.keys, opts.keys) : false;
|
192 |
-
}
|
193 |
-
|
194 |
-
F.group = group;
|
195 |
-
|
196 |
-
F._start(F.opts.index || 0);
|
197 |
-
},
|
198 |
-
|
199 |
-
cancel: function () {
|
200 |
-
if (F.coming && false === F.trigger('onCancel')) {
|
201 |
-
return;
|
202 |
-
}
|
203 |
-
|
204 |
-
F.coming = null;
|
205 |
-
|
206 |
-
F.hideLoading();
|
207 |
-
|
208 |
-
if (F.ajaxLoad) {
|
209 |
-
F.ajaxLoad.abort();
|
210 |
-
}
|
211 |
-
|
212 |
-
F.ajaxLoad = null;
|
213 |
-
|
214 |
-
if (F.imgPreload) {
|
215 |
-
F.imgPreload.onload = F.imgPreload.onabort = F.imgPreload.onerror = null;
|
216 |
-
}
|
217 |
-
},
|
218 |
-
|
219 |
-
close: function (a) {
|
220 |
-
F.cancel();
|
221 |
-
|
222 |
-
if (!F.current || false === F.trigger('beforeClose')) {
|
223 |
-
return;
|
224 |
-
}
|
225 |
-
|
226 |
-
F.unbindEvents();
|
227 |
-
|
228 |
-
//If forced or is still opening then remove immediately
|
229 |
-
if (!F.isOpen || (a && a[0] === true)) {
|
230 |
-
$(".fancybox-wrap").stop().trigger('onReset').remove();
|
231 |
-
|
232 |
-
F._afterZoomOut();
|
233 |
-
|
234 |
-
} else {
|
235 |
-
F.isOpen = F.isOpened = false;
|
236 |
-
|
237 |
-
$(".fancybox-item, .fancybox-nav").remove();
|
238 |
-
|
239 |
-
F.wrap.stop(true).removeClass('fancybox-opened');
|
240 |
-
F.inner.css('overflow', 'hidden');
|
241 |
-
|
242 |
-
F.transitions[F.current.closeMethod]();
|
243 |
-
}
|
244 |
-
},
|
245 |
-
|
246 |
-
// Start/stop slideshow
|
247 |
-
play: function (a) {
|
248 |
-
var clear = function () {
|
249 |
-
clearTimeout(F.player.timer);
|
250 |
-
},
|
251 |
-
set = function () {
|
252 |
-
clear();
|
253 |
-
|
254 |
-
if (F.current && F.player.isActive) {
|
255 |
-
F.player.timer = setTimeout(F.next, F.current.playSpeed);
|
256 |
-
}
|
257 |
-
},
|
258 |
-
stop = function () {
|
259 |
-
clear();
|
260 |
-
|
261 |
-
$('body').unbind('.player');
|
262 |
-
|
263 |
-
F.player.isActive = false;
|
264 |
-
|
265 |
-
F.trigger('onPlayEnd');
|
266 |
-
},
|
267 |
-
start = function () {
|
268 |
-
if (F.current && (F.current.loop || F.current.index < F.group.length - 1)) {
|
269 |
-
F.player.isActive = true;
|
270 |
-
|
271 |
-
$('body').bind({
|
272 |
-
'afterShow.player onUpdate.player': set,
|
273 |
-
'onCancel.player beforeClose.player': stop,
|
274 |
-
'beforeLoad.player': clear
|
275 |
-
});
|
276 |
-
|
277 |
-
set();
|
278 |
-
|
279 |
-
F.trigger('onPlayStart');
|
280 |
-
}
|
281 |
-
};
|
282 |
-
|
283 |
-
if (F.player.isActive || (a && a[0] === false)) {
|
284 |
-
stop();
|
285 |
-
} else {
|
286 |
-
start();
|
287 |
-
}
|
288 |
-
},
|
289 |
-
|
290 |
-
next: function () {
|
291 |
-
if (F.current) {
|
292 |
-
F.jumpto(F.current.index + 1);
|
293 |
-
}
|
294 |
-
},
|
295 |
-
|
296 |
-
prev: function () {
|
297 |
-
if (F.current) {
|
298 |
-
F.jumpto(F.current.index - 1);
|
299 |
-
}
|
300 |
-
},
|
301 |
-
|
302 |
-
jumpto: function (index) {
|
303 |
-
if (!F.current) {
|
304 |
-
return;
|
305 |
-
}
|
306 |
-
|
307 |
-
index = parseInt(index, 10);
|
308 |
-
|
309 |
-
if (F.group.length > 1 && F.current.loop) {
|
310 |
-
if (index >= F.group.length) {
|
311 |
-
index = 0;
|
312 |
-
|
313 |
-
} else if (index < 0) {
|
314 |
-
index = F.group.length - 1;
|
315 |
-
}
|
316 |
-
}
|
317 |
-
|
318 |
-
if (F.group[index] !== undefined) {
|
319 |
-
F.cancel();
|
320 |
-
|
321 |
-
F._start(index);
|
322 |
-
}
|
323 |
-
},
|
324 |
-
|
325 |
-
reposition: function (absolute, e) {
|
326 |
-
if (F.isOpen) {
|
327 |
-
if (e && e.type === 'scroll') {
|
328 |
-
F.wrap.stop().animate(F._getPosition(absolute), 200);
|
329 |
-
} else {
|
330 |
-
F.wrap.css(F._getPosition(absolute));
|
331 |
-
}
|
332 |
-
}
|
333 |
-
},
|
334 |
-
|
335 |
-
update: function (e) {
|
336 |
-
if (F.isOpen) {
|
337 |
-
// It's a very bad idea to attach handlers to the window scroll event, run this code after a delay
|
338 |
-
if (!didResize) {
|
339 |
-
resizeTimer = setTimeout(function () {
|
340 |
-
var current = F.current;
|
341 |
-
|
342 |
-
if (didResize) {
|
343 |
-
didResize = false;
|
344 |
-
|
345 |
-
if (current) {
|
346 |
-
if (!e || (e && (e.type === 'orientationchange' || (current.autoResize && e.type === 'resize')))) {
|
347 |
-
if (current.autoSize && current.type !== 'iframe') {
|
348 |
-
F.inner.height('auto');
|
349 |
-
current.height = F.inner.height();
|
350 |
-
}
|
351 |
-
|
352 |
-
F._setDimension();
|
353 |
-
|
354 |
-
if (current.canGrow && current.type !== 'iframe') {
|
355 |
-
F.inner.height('auto');
|
356 |
-
}
|
357 |
-
}
|
358 |
-
|
359 |
-
if (current.autoCenter) {
|
360 |
-
F.reposition(null, e);
|
361 |
-
}
|
362 |
-
|
363 |
-
F.trigger('onUpdate');
|
364 |
-
}
|
365 |
-
}
|
366 |
-
}, 100);
|
367 |
-
}
|
368 |
-
|
369 |
-
didResize = true;
|
370 |
-
}
|
371 |
-
},
|
372 |
-
|
373 |
-
toggle: function () {
|
374 |
-
if (F.isOpen) {
|
375 |
-
F.current.fitToView = !F.current.fitToView;
|
376 |
-
|
377 |
-
F.update();
|
378 |
-
}
|
379 |
-
},
|
380 |
-
|
381 |
-
hideLoading: function () {
|
382 |
-
D.unbind('keypress.fb');
|
383 |
-
|
384 |
-
$("#fancybox-loading").remove();
|
385 |
-
},
|
386 |
-
|
387 |
-
showLoading: function () {
|
388 |
-
F.hideLoading();
|
389 |
-
|
390 |
-
//If user will press the escape-button, the request will be canceled
|
391 |
-
D.bind('keypress.fb', function(e) {
|
392 |
-
if (e.keyCode === 27) {
|
393 |
-
e.preventDefault();
|
394 |
-
F.cancel();
|
395 |
-
}
|
396 |
-
});
|
397 |
-
|
398 |
-
$('<div id="fancybox-loading"><div></div></div>').click(F.cancel).appendTo('body');
|
399 |
-
},
|
400 |
-
|
401 |
-
getViewport: function () {
|
402 |
-
return {
|
403 |
-
x: W.scrollLeft(),
|
404 |
-
y: W.scrollTop(),
|
405 |
-
w: window.innerWidth ? window.innerWidth : W.width(),
|
406 |
-
h: window.innerHeight ? window.innerHeight : W.height()
|
407 |
-
};
|
408 |
-
},
|
409 |
-
|
410 |
-
// Unbind the keyboard / clicking actions
|
411 |
-
unbindEvents: function () {
|
412 |
-
if (F.wrap) {
|
413 |
-
F.wrap.unbind('.fb');
|
414 |
-
}
|
415 |
-
|
416 |
-
D.unbind('.fb');
|
417 |
-
W.unbind('.fb');
|
418 |
-
},
|
419 |
-
|
420 |
-
bindEvents: function () {
|
421 |
-
var current = F.current,
|
422 |
-
keys = current.keys;
|
423 |
-
|
424 |
-
if (!current) {
|
425 |
-
return;
|
426 |
-
}
|
427 |
-
|
428 |
-
W.bind('resize.fb, orientationchange.fb', F.update);
|
429 |
-
|
430 |
-
if (!current.fixed && current.autoCenter) {
|
431 |
-
W.bind("scroll.fb", F.update);
|
432 |
-
}
|
433 |
-
|
434 |
-
if (keys) {
|
435 |
-
D.bind('keydown.fb', function (e) {
|
436 |
-
var code;
|
437 |
-
|
438 |
-
// Ignore key combinations and key events within form elements
|
439 |
-
if (!e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey && $.inArray(e.target.tagName.toLowerCase(), ['input', 'textarea', 'select', 'button']) < 0 && !$(e.target).is('[contenteditable]')) {
|
440 |
-
code = e.keyCode;
|
441 |
-
|
442 |
-
if ($.inArray(code, keys.close) > -1) {
|
443 |
-
F.close();
|
444 |
-
e.preventDefault();
|
445 |
-
|
446 |
-
} else if ($.inArray(code, keys.next) > -1) {
|
447 |
-
F.next();
|
448 |
-
e.preventDefault();
|
449 |
-
|
450 |
-
} else if ($.inArray(code, keys.prev) > -1) {
|
451 |
-
F.prev();
|
452 |
-
e.preventDefault();
|
453 |
-
}
|
454 |
-
}
|
455 |
-
});
|
456 |
-
}
|
457 |
-
|
458 |
-
if ($.fn.mousewheel && current.mouseWheel && F.group.length > 1) {
|
459 |
-
F.wrap.bind('mousewheel.fb', function (e, delta) {
|
460 |
-
var target = e.target || null;
|
461 |
-
|
462 |
-
if (delta !== 0 && (!target || target.clientHeight === 0 || (target.scrollHeight === target.clientHeight && target.scrollWidth === target.clientWidth))) {
|
463 |
-
e.preventDefault();
|
464 |
-
|
465 |
-
F[delta > 0 ? 'prev' : 'next']();
|
466 |
-
}
|
467 |
-
});
|
468 |
-
}
|
469 |
-
},
|
470 |
-
|
471 |
-
trigger: function (event) {
|
472 |
-
var ret, obj = F[ $.inArray(event, ['onCancel', 'beforeLoad', 'afterLoad']) > -1 ? 'coming' : 'current' ];
|
473 |
-
|
474 |
-
if (!obj) {
|
475 |
-
return;
|
476 |
-
}
|
477 |
-
|
478 |
-
if ($.isFunction( obj[event] )) {
|
479 |
-
ret = obj[event].apply(obj, Array.prototype.slice.call(arguments, 1));
|
480 |
-
}
|
481 |
-
|
482 |
-
if (ret === false) {
|
483 |
-
return false;
|
484 |
-
}
|
485 |
-
|
486 |
-
if (obj.helpers) {
|
487 |
-
$.each(obj.helpers, function (helper, opts) {
|
488 |
-
if (opts && $.isPlainObject(F.helpers[helper]) && $.isFunction(F.helpers[helper][event])) {
|
489 |
-
F.helpers[helper][event](opts, obj);
|
490 |
-
}
|
491 |
-
});
|
492 |
-
}
|
493 |
-
|
494 |
-
$.event.trigger(event + '.fb');
|
495 |
-
},
|
496 |
-
|
497 |
-
isImage: function (str) {
|
498 |
-
return isString(str) && str.match(/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i);
|
499 |
-
},
|
500 |
-
|
501 |
-
isSWF: function (str) {
|
502 |
-
return isString(str) && str.match(/\.(swf)(.*)?$/i);
|
503 |
-
},
|
504 |
-
|
505 |
-
_start: function (index) {
|
506 |
-
var coming = {},
|
507 |
-
element = F.group[index] || null,
|
508 |
-
isDom,
|
509 |
-
href,
|
510 |
-
type,
|
511 |
-
rez,
|
512 |
-
hrefParts;
|
513 |
-
|
514 |
-
if (element && (element.nodeType || element instanceof $)) {
|
515 |
-
isDom = true;
|
516 |
-
|
517 |
-
if ($.metadata) {
|
518 |
-
coming = $(element).metadata();
|
519 |
-
}
|
520 |
-
}
|
521 |
-
|
522 |
-
coming = $.extend(true, {}, F.opts, {index : index, element : element}, ($.isPlainObject(element) ? element : coming));
|
523 |
-
|
524 |
-
// Re-check overridable options
|
525 |
-
$.each(['href', 'title', 'content', 'type'], function(i,v) {
|
526 |
-
coming[v] = F.opts[ v ] || (isDom && $(element).attr( v )) || coming[ v ] || null;
|
527 |
-
});
|
528 |
-
|
529 |
-
// Convert margin property to array - top, right, bottom, left
|
530 |
-
if (typeof coming.margin === 'number') {
|
531 |
-
coming.margin = [coming.margin, coming.margin, coming.margin, coming.margin];
|
532 |
-
}
|
533 |
-
|
534 |
-
// 'modal' propery is just a shortcut
|
535 |
-
if (coming.modal) {
|
536 |
-
$.extend(true, coming, {
|
537 |
-
closeBtn : false,
|
538 |
-
closeClick: false,
|
539 |
-
nextClick : false,
|
540 |
-
arrows : false,
|
541 |
-
mouseWheel : false,
|
542 |
-
keys : null,
|
543 |
-
helpers: {
|
544 |
-
overlay : {
|
545 |
-
css: {
|
546 |
-
cursor : 'auto'
|
547 |
-
},
|
548 |
-
closeClick : false
|
549 |
-
}
|
550 |
-
}
|
551 |
-
});
|
552 |
-
}
|
553 |
-
|
554 |
-
//Give a chance for callback or helpers to update coming item (type, title, etc)
|
555 |
-
F.coming = coming;
|
556 |
-
|
557 |
-
if (false === F.trigger('beforeLoad')) {
|
558 |
-
F.coming = null;
|
559 |
-
return;
|
560 |
-
}
|
561 |
-
|
562 |
-
type = coming.type;
|
563 |
-
href = coming.href || element;
|
564 |
-
|
565 |
-
///Check if content type is set, if not, try to get
|
566 |
-
if (!type) {
|
567 |
-
if (isDom) {
|
568 |
-
rez = $(element).data('fancybox-type');
|
569 |
-
|
570 |
-
if (!rez && element.className) {
|
571 |
-
rez = element.className.match(/fancybox\.(\w+)/);
|
572 |
-
type = rez ? rez[1] : null;
|
573 |
-
}
|
574 |
-
}
|
575 |
-
|
576 |
-
if (!type && isString(href)) {
|
577 |
-
if (F.isImage(href)) {
|
578 |
-
type = 'image';
|
579 |
-
|
580 |
-
} else if (F.isSWF(href)) {
|
581 |
-
type = 'swf';
|
582 |
-
|
583 |
-
} else if (href.match(/^#/)) {
|
584 |
-
type = 'inline';
|
585 |
-
}
|
586 |
-
}
|
587 |
-
|
588 |
-
// ...if not - display element itself
|
589 |
-
if (!type) {
|
590 |
-
type = isDom ? 'inline' : 'html';
|
591 |
-
}
|
592 |
-
|
593 |
-
coming.type = type;
|
594 |
-
}
|
595 |
-
|
596 |
-
// Check before try to load; 'inline' and 'html' types need content, others - href
|
597 |
-
if (type === 'inline' || type === 'html') {
|
598 |
-
if (!coming.content) {
|
599 |
-
if (type === 'inline') {
|
600 |
-
coming.content = $( isString(href) ? href.replace(/.*(?=#[^\s]+$)/, '') : href ); //strip for ie7
|
601 |
-
|
602 |
-
} else {
|
603 |
-
coming.content = element;
|
604 |
-
}
|
605 |
-
}
|
606 |
-
|
607 |
-
if (!coming.content || !coming.content.length) {
|
608 |
-
type = null;
|
609 |
-
}
|
610 |
-
|
611 |
-
} else if (!href) {
|
612 |
-
type = null;
|
613 |
-
}
|
614 |
-
|
615 |
-
/*
|
616 |
-
* Add reference to the group, so it`s possible to access from callbacks, example:
|
617 |
-
* afterLoad : function() {
|
618 |
-
* this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
|
619 |
-
* }
|
620 |
-
*/
|
621 |
-
|
622 |
-
if (type === 'ajax' && isString(href)) {
|
623 |
-
hrefParts = href.split(/\s+/, 2);
|
624 |
-
|
625 |
-
href = hrefParts.shift();
|
626 |
-
coming.selector = hrefParts.shift();
|
627 |
-
}
|
628 |
-
|
629 |
-
coming.href = href;
|
630 |
-
coming.group = F.group;
|
631 |
-
coming.isDom = isDom;
|
632 |
-
|
633 |
-
if (type === 'image') {
|
634 |
-
F._loadImage();
|
635 |
-
|
636 |
-
} else if (type === 'ajax') {
|
637 |
-
F._loadAjax();
|
638 |
-
|
639 |
-
} else if (type) {
|
640 |
-
F._afterLoad();
|
641 |
-
|
642 |
-
} else {
|
643 |
-
F._error( 'type' );
|
644 |
-
}
|
645 |
-
},
|
646 |
-
|
647 |
-
_error: function ( type ) {
|
648 |
-
F.hideLoading();
|
649 |
-
|
650 |
-
$.extend(F.coming, {
|
651 |
-
type : 'html',
|
652 |
-
autoSize : true,
|
653 |
-
minHeight : 0,
|
654 |
-
hasError : type,
|
655 |
-
content : F.coming.tpl.error
|
656 |
-
});
|
657 |
-
|
658 |
-
F._afterLoad();
|
659 |
-
},
|
660 |
-
|
661 |
-
_loadImage: function () {
|
662 |
-
// Reset preload image so it is later possible to check "complete" property
|
663 |
-
var img = F.imgPreload = new Image();
|
664 |
-
|
665 |
-
img.onload = function () {
|
666 |
-
this.onload = this.onerror = null;
|
667 |
-
|
668 |
-
F.coming.width = this.width;
|
669 |
-
F.coming.height = this.height;
|
670 |
-
|
671 |
-
F._afterLoad();
|
672 |
-
};
|
673 |
-
|
674 |
-
img.onerror = function () {
|
675 |
-
this.onload = this.onerror = null;
|
676 |
-
|
677 |
-
F._error( 'image' );
|
678 |
-
};
|
679 |
-
|
680 |
-
img.src = F.coming.href;
|
681 |
-
|
682 |
-
if (!img.width) {
|
683 |
-
F.showLoading();
|
684 |
-
}
|
685 |
-
},
|
686 |
-
|
687 |
-
_loadAjax: function () {
|
688 |
-
F.showLoading();
|
689 |
-
|
690 |
-
F.ajaxLoad = $.ajax($.extend({}, F.coming.ajax, {
|
691 |
-
url: F.coming.href,
|
692 |
-
error: function (jqXHR, textStatus) {
|
693 |
-
if (F.coming && textStatus !== 'abort') {
|
694 |
-
F._error( 'ajax', jqXHR );
|
695 |
-
|
696 |
-
} else {
|
697 |
-
F.hideLoading();
|
698 |
-
}
|
699 |
-
},
|
700 |
-
success: function (data, textStatus) {
|
701 |
-
if (textStatus === 'success') {
|
702 |
-
F.coming.content = data;
|
703 |
-
|
704 |
-
F._afterLoad();
|
705 |
-
}
|
706 |
-
}
|
707 |
-
}));
|
708 |
-
},
|
709 |
-
|
710 |
-
_preloadImages: function() {
|
711 |
-
var group = F.group,
|
712 |
-
current = F.current,
|
713 |
-
len = group.length,
|
714 |
-
item,
|
715 |
-
href,
|
716 |
-
i,
|
717 |
-
cnt = Math.min(current.preload, len - 1);
|
718 |
-
|
719 |
-
if (!current.preload || group.length < 2) {
|
720 |
-
return;
|
721 |
-
}
|
722 |
-
|
723 |
-
for (i = 1; i <= cnt; i += 1) {
|
724 |
-
item = group[ (current.index + i ) % len ];
|
725 |
-
href = $( item ).attr('href') || item;
|
726 |
-
|
727 |
-
if (item.type === 'image' || F.isImage(href)) {
|
728 |
-
new Image().src = href;
|
729 |
-
}
|
730 |
-
}
|
731 |
-
},
|
732 |
-
|
733 |
-
_afterLoad: function () {
|
734 |
-
F.hideLoading();
|
735 |
-
|
736 |
-
if (!F.coming || false === F.trigger('afterLoad', F.current)) {
|
737 |
-
F.coming = false;
|
738 |
-
|
739 |
-
return;
|
740 |
-
}
|
741 |
-
|
742 |
-
if (F.isOpened) {
|
743 |
-
$(".fancybox-item").remove();
|
744 |
-
|
745 |
-
F.wrap.stop(true).removeClass('fancybox-opened');
|
746 |
-
F.inner.css('overflow', 'hidden');
|
747 |
-
|
748 |
-
F.transitions[F.current.prevMethod]();
|
749 |
-
|
750 |
-
} else {
|
751 |
-
$(".fancybox-wrap").stop().trigger('onReset').remove();
|
752 |
-
|
753 |
-
F.trigger('afterClose');
|
754 |
-
}
|
755 |
-
|
756 |
-
F.unbindEvents();
|
757 |
-
|
758 |
-
F.isOpen = false;
|
759 |
-
F.current = F.coming;
|
760 |
-
|
761 |
-
//Build the neccessary markup
|
762 |
-
F.wrap = $(F.current.tpl.wrap).addClass('fancybox-' + (isMobile ? 'mobile' : 'desktop') + ' fancybox-type-' + F.current.type + ' fancybox-tmp ' + F.current.wrapCSS).appendTo('body');
|
763 |
-
F.outer = $('.fancybox-outer', F.wrap).css('padding', F.current.padding + 'px');
|
764 |
-
F.inner = $('.fancybox-inner', F.wrap);
|
765 |
-
|
766 |
-
F._setContent();
|
767 |
-
},
|
768 |
-
|
769 |
-
_setContent: function () {
|
770 |
-
var current = F.current,
|
771 |
-
content = current.content,
|
772 |
-
type = current.type,
|
773 |
-
loadingBay,
|
774 |
-
minWidth = current.minWidth,
|
775 |
-
minHeight = current.minHeight,
|
776 |
-
maxWidth = current.maxWidth,
|
777 |
-
maxHeight = current.maxHeight;
|
778 |
-
|
779 |
-
switch (type) {
|
780 |
-
case 'inline':
|
781 |
-
case 'ajax':
|
782 |
-
case 'html':
|
783 |
-
if (current.selector) {
|
784 |
-
content = $('<div>').html(content).find(current.selector);
|
785 |
-
|
786 |
-
} else if (content instanceof $) {
|
787 |
-
if (content.parent().hasClass('fancybox-inner')) {
|
788 |
-
content.parents('.fancybox-wrap').unbind('onReset');
|
789 |
-
}
|
790 |
-
|
791 |
-
content = content.show().detach();
|
792 |
-
|
793 |
-
$(F.wrap).bind('onReset', function () {
|
794 |
-
content.appendTo('body').hide();
|
795 |
-
});
|
796 |
-
}
|
797 |
-
|
798 |
-
if (current.autoSize) {
|
799 |
-
loadingBay = $('<div class="fancybox-wrap ' + F.current.wrapCSS + ' fancybox-tmp"></div>')
|
800 |
-
.appendTo('body')
|
801 |
-
.css({
|
802 |
-
minWidth : isPercentage(minWidth) ? minWidth : minWidth + 'px',
|
803 |
-
minHeight : isPercentage(minHeight) ? minHeight : minHeight + 'px',
|
804 |
-
maxWidth : isPercentage(maxWidth) ? maxWidth : maxWidth + 'px',
|
805 |
-
maxHeight : isPercentage(maxHeight) ? maxHeight : maxHeight + 'px'
|
806 |
-
})
|
807 |
-
.append(content);
|
808 |
-
|
809 |
-
current.width = loadingBay.width();
|
810 |
-
current.height = loadingBay.height();
|
811 |
-
|
812 |
-
// Re-check to fix 1px bug in some browsers
|
813 |
-
loadingBay.width( F.current.width );
|
814 |
-
|
815 |
-
if (loadingBay.height() > current.height) {
|
816 |
-
loadingBay.width(current.width + 1);
|
817 |
-
|
818 |
-
current.width = loadingBay.width();
|
819 |
-
current.height = loadingBay.height();
|
820 |
-
}
|
821 |
-
|
822 |
-
content = loadingBay.contents().detach();
|
823 |
-
|
824 |
-
loadingBay.remove();
|
825 |
-
}
|
826 |
-
|
827 |
-
break;
|
828 |
-
|
829 |
-
case 'image':
|
830 |
-
content = current.tpl.image.replace('{href}', current.href);
|
831 |
-
|
832 |
-
current.aspectRatio = true;
|
833 |
-
break;
|
834 |
-
|
835 |
-
case 'swf':
|
836 |
-
content = current.tpl.swf.replace(/\{width\}/g, current.width).replace(/\{height\}/g, current.height).replace(/\{href\}/g, current.href);
|
837 |
-
break;
|
838 |
-
|
839 |
-
case 'iframe':
|
840 |
-
content = $(current.tpl.iframe.replace('{rnd}', new Date().getTime()) )
|
841 |
-
.attr('scrolling', current.scrolling)
|
842 |
-
.attr('src', current.href);
|
843 |
-
|
844 |
-
current.scrolling = isMobile ? 'scroll' : 'auto';
|
845 |
-
|
846 |
-
break;
|
847 |
-
}
|
848 |
-
|
849 |
-
if (type === 'image' || type === 'swf') {
|
850 |
-
current.autoSize = false;
|
851 |
-
current.scrolling = 'visible';
|
852 |
-
}
|
853 |
-
|
854 |
-
if (type === 'iframe' && current.autoSize) {
|
855 |
-
F.showLoading();
|
856 |
-
|
857 |
-
F.inner
|
858 |
-
.width(current.width)
|
859 |
-
.height(current.height)
|
860 |
-
.css('overflow', current.scrolling);
|
861 |
-
|
862 |
-
content.bind({
|
863 |
-
onCancel : function() {
|
864 |
-
$(this).unbind();
|
865 |
-
|
866 |
-
F._afterZoomOut();
|
867 |
-
},
|
868 |
-
load : function() {
|
869 |
-
F.hideLoading();
|
870 |
-
|
871 |
-
try {
|
872 |
-
if (this.contentWindow.document.location) {
|
873 |
-
F.current.height = $(this).contents().find('body').height();
|
874 |
-
}
|
875 |
-
} catch (e) {
|
876 |
-
F.current.autoSize = false;
|
877 |
-
}
|
878 |
-
|
879 |
-
if (F.isOpened) {
|
880 |
-
F.update();
|
881 |
-
|
882 |
-
} else {
|
883 |
-
F._beforeShow();
|
884 |
-
}
|
885 |
-
}
|
886 |
-
}).appendTo(F.inner);
|
887 |
-
|
888 |
-
} else {
|
889 |
-
F.inner.append(content);
|
890 |
-
|
891 |
-
F._beforeShow();
|
892 |
-
}
|
893 |
-
},
|
894 |
-
|
895 |
-
_beforeShow : function() {
|
896 |
-
F.coming = null;
|
897 |
-
|
898 |
-
//Give a chance for helpers or callbacks to update elements
|
899 |
-
F.trigger('beforeShow');
|
900 |
-
|
901 |
-
//Set initial dimensions and hide
|
902 |
-
F._setDimension();
|
903 |
-
F.wrap.hide().removeClass('fancybox-tmp');
|
904 |
-
|
905 |
-
F.bindEvents();
|
906 |
-
|
907 |
-
F._preloadImages();
|
908 |
-
|
909 |
-
F.transitions[ F.isOpened ? F.current.nextMethod : F.current.openMethod ]();
|
910 |
-
},
|
911 |
-
|
912 |
-
_setDimension: function () {
|
913 |
-
var wrap = F.wrap,
|
914 |
-
outer = F.outer,
|
915 |
-
inner = F.inner,
|
916 |
-
current = F.current,
|
917 |
-
viewport = F.getViewport(),
|
918 |
-
margin = current.margin,
|
919 |
-
padding2 = current.padding * 2,
|
920 |
-
width = current.width,
|
921 |
-
height = current.height,
|
922 |
-
maxWidth = current.maxWidth + padding2,
|
923 |
-
maxHeight = current.maxHeight + padding2,
|
924 |
-
minWidth = current.minWidth + padding2,
|
925 |
-
minHeight = current.minHeight + padding2,
|
926 |
-
ratio,
|
927 |
-
height_,
|
928 |
-
space;
|
929 |
-
|
930 |
-
viewport.w -= (margin[1] + margin[3]);
|
931 |
-
viewport.h -= (margin[0] + margin[2]);
|
932 |
-
|
933 |
-
if (isPercentage(width)) {
|
934 |
-
width = (((viewport.w - padding2) * parseFloat(width)) / 100);
|
935 |
-
}
|
936 |
-
|
937 |
-
if (isPercentage(height)) {
|
938 |
-
height = (((viewport.h - padding2) * parseFloat(height)) / 100);
|
939 |
-
}
|
940 |
-
|
941 |
-
ratio = width / height;
|
942 |
-
width += padding2;
|
943 |
-
height += padding2;
|
944 |
-
|
945 |
-
if (current.fitToView) {
|
946 |
-
maxWidth = Math.min(viewport.w, maxWidth);
|
947 |
-
maxHeight = Math.min(viewport.h, maxHeight);
|
948 |
-
}
|
949 |
-
|
950 |
-
if (current.aspectRatio) {
|
951 |
-
if (width > maxWidth) {
|
952 |
-
width = maxWidth;
|
953 |
-
height = ((width - padding2) / ratio) + padding2;
|
954 |
-
}
|
955 |
-
|
956 |
-
if (height > maxHeight) {
|
957 |
-
height = maxHeight;
|
958 |
-
width = ((height - padding2) * ratio) + padding2;
|
959 |
-
}
|
960 |
-
|
961 |
-
if (width < minWidth) {
|
962 |
-
width = minWidth;
|
963 |
-
height = ((width - padding2) / ratio) + padding2;
|
964 |
-
}
|
965 |
-
|
966 |
-
if (height < minHeight) {
|
967 |
-
height = minHeight;
|
968 |
-
width = ((height - padding2) * ratio) + padding2;
|
969 |
-
}
|
970 |
-
|
971 |
-
} else {
|
972 |
-
width = Math.max(minWidth, Math.min(width, maxWidth));
|
973 |
-
height = Math.max(minHeight, Math.min(height, maxHeight));
|
974 |
-
}
|
975 |
-
|
976 |
-
width = Math.round(width);
|
977 |
-
height = Math.round(height);
|
978 |
-
|
979 |
-
//Reset dimensions
|
980 |
-
$(wrap.add(outer).add(inner)).width('auto').height('auto');
|
981 |
-
|
982 |
-
inner.width(width - padding2).height(height - padding2);
|
983 |
-
wrap.width(width);
|
984 |
-
|
985 |
-
height_ = wrap.height(); // Real wrap height
|
986 |
-
|
987 |
-
//Fit wrapper inside
|
988 |
-
if (width > maxWidth || height_ > maxHeight) {
|
989 |
-
while ((width > maxWidth || height_ > maxHeight) && width > minWidth && height_ > minHeight) {
|
990 |
-
height = height - 10;
|
991 |
-
|
992 |
-
if (current.aspectRatio) {
|
993 |
-
width = Math.round(((height - padding2) * ratio) + padding2);
|
994 |
-
|
995 |
-
if (width < minWidth) {
|
996 |
-
width = minWidth;
|
997 |
-
height = ((width - padding2) / ratio) + padding2;
|
998 |
-
}
|
999 |
-
|
1000 |
-
} else {
|
1001 |
-
width = width - 10;
|
1002 |
-
}
|
1003 |
-
|
1004 |
-
inner.width(width - padding2).height(height - padding2);
|
1005 |
-
wrap.width(width);
|
1006 |
-
|
1007 |
-
height_ = wrap.height();
|
1008 |
-
}
|
1009 |
-
}
|
1010 |
-
|
1011 |
-
current.dim = {
|
1012 |
-
width: width,
|
1013 |
-
height: height_
|
1014 |
-
};
|
1015 |
-
|
1016 |
-
current.canGrow = current.autoSize && height > minHeight && height < maxHeight;
|
1017 |
-
current.canShrink = false;
|
1018 |
-
current.canExpand = false;
|
1019 |
-
|
1020 |
-
if ((width - padding2) < current.width || (height - padding2) < current.height) {
|
1021 |
-
current.canExpand = true;
|
1022 |
-
|
1023 |
-
} else if ((width > viewport.w || height_ > viewport.h) && width > minWidth && height > minHeight) {
|
1024 |
-
current.canShrink = true;
|
1025 |
-
}
|
1026 |
-
|
1027 |
-
space = height_ - padding2;
|
1028 |
-
|
1029 |
-
F.innerSpace = space - inner.height();
|
1030 |
-
F.outerSpace = space - outer.height();
|
1031 |
-
},
|
1032 |
-
|
1033 |
-
_getPosition: function (a) {
|
1034 |
-
var current = F.current,
|
1035 |
-
viewport = F.getViewport(),
|
1036 |
-
margin = current.margin,
|
1037 |
-
width = F.wrap.width() + margin[1] + margin[3],
|
1038 |
-
height = F.wrap.height() + margin[0] + margin[2],
|
1039 |
-
rez = {
|
1040 |
-
position: 'absolute',
|
1041 |
-
top: margin[0] + viewport.y,
|
1042 |
-
left: margin[3] + viewport.x
|
1043 |
-
};
|
1044 |
-
|
1045 |
-
if (current.autoCenter && current.fixed && (!a || a[0] === false) && height <= viewport.h && width <= viewport.w) {
|
1046 |
-
rez = {
|
1047 |
-
position: 'fixed',
|
1048 |
-
top: margin[0],
|
1049 |
-
left: margin[3]
|
1050 |
-
};
|
1051 |
-
}
|
1052 |
-
|
1053 |
-
rez.top = Math.ceil(Math.max(rez.top, rez.top + ((viewport.h - height) * current.topRatio))) + 'px';
|
1054 |
-
rez.left = Math.ceil(Math.max(rez.left, rez.left + ((viewport.w - width) * 0.5))) + 'px';
|
1055 |
-
|
1056 |
-
return rez;
|
1057 |
-
},
|
1058 |
-
|
1059 |
-
_afterZoomIn: function () {
|
1060 |
-
var current = F.current, scrolling = current ? current.scrolling : 'no';
|
1061 |
-
|
1062 |
-
if (!current) {
|
1063 |
-
return;
|
1064 |
-
}
|
1065 |
-
|
1066 |
-
F.isOpen = F.isOpened = true;
|
1067 |
-
|
1068 |
-
F.wrap.addClass('fancybox-opened').css('overflow', 'visible');
|
1069 |
-
|
1070 |
-
F.inner.css('overflow', scrolling === 'yes' ? 'scroll' : (scrolling === 'no' ? 'hidden' : scrolling));
|
1071 |
-
|
1072 |
-
//Assign a click event
|
1073 |
-
if (current.closeClick || current.nextClick) {
|
1074 |
-
//This is not the perfect solution but arrows have to be next to content so their height will match
|
1075 |
-
// and I do not want another wrapper around content
|
1076 |
-
F.inner.css('cursor', 'pointer').bind('click.fb', function(e) {
|
1077 |
-
if (!$(e.target).is('a') && !$(e.target).parent().is('a')) {
|
1078 |
-
F[ current.closeClick ? 'close' : 'next' ]();
|
1079 |
-
}
|
1080 |
-
});
|
1081 |
-
}
|
1082 |
-
|
1083 |
-
//Create a close button
|
1084 |
-
if (current.closeBtn) {
|
1085 |
-
$(current.tpl.closeBtn).appendTo(F.outer).bind('click.fb', F.close);
|
1086 |
-
}
|
1087 |
-
|
1088 |
-
//Create navigation arrows
|
1089 |
-
if (current.arrows && F.group.length > 1) {
|
1090 |
-
if (current.loop || current.index > 0) {
|
1091 |
-
$(current.tpl.prev).appendTo(F.inner).bind('click.fb', F.prev);
|
1092 |
-
}
|
1093 |
-
|
1094 |
-
if (current.loop || current.index < F.group.length - 1) {
|
1095 |
-
$(current.tpl.next).appendTo(F.inner).bind('click.fb', F.next);
|
1096 |
-
}
|
1097 |
-
}
|
1098 |
-
|
1099 |
-
F.trigger('afterShow');
|
1100 |
-
|
1101 |
-
F.update();
|
1102 |
-
|
1103 |
-
if (F.opts.autoPlay && !F.player.isActive) {
|
1104 |
-
F.opts.autoPlay = false;
|
1105 |
-
|
1106 |
-
F.play();
|
1107 |
-
}
|
1108 |
-
},
|
1109 |
-
|
1110 |
-
_afterZoomOut: function () {
|
1111 |
-
F.trigger('afterClose');
|
1112 |
-
|
1113 |
-
F.wrap.trigger('onReset').remove();
|
1114 |
-
|
1115 |
-
$.extend(F, {
|
1116 |
-
group: {},
|
1117 |
-
opts: {},
|
1118 |
-
current: null,
|
1119 |
-
isActive: false,
|
1120 |
-
isOpened: false,
|
1121 |
-
isOpen: false,
|
1122 |
-
wrap: null,
|
1123 |
-
outer: null,
|
1124 |
-
inner: null
|
1125 |
-
});
|
1126 |
-
}
|
1127 |
-
});
|
1128 |
-
|
1129 |
-
/*
|
1130 |
-
* Default transitions
|
1131 |
-
*/
|
1132 |
-
|
1133 |
-
F.transitions = {
|
1134 |
-
getOrigPosition: function () {
|
1135 |
-
var current = F.current,
|
1136 |
-
element = current.element,
|
1137 |
-
padding = current.padding,
|
1138 |
-
orig = $(current.orig),
|
1139 |
-
pos = {},
|
1140 |
-
width = 50,
|
1141 |
-
height = 50,
|
1142 |
-
viewport;
|
1143 |
-
|
1144 |
-
if (!orig.length && current.isDom && $(element).is(':visible')) {
|
1145 |
-
orig = $(element).find('img:first');
|
1146 |
-
|
1147 |
-
if (!orig.length) {
|
1148 |
-
orig = $(element);
|
1149 |
-
}
|
1150 |
-
}
|
1151 |
-
|
1152 |
-
if (orig.length) {
|
1153 |
-
pos = orig.offset();
|
1154 |
-
|
1155 |
-
if (orig.is('img')) {
|
1156 |
-
width = orig.outerWidth();
|
1157 |
-
height = orig.outerHeight();
|
1158 |
-
}
|
1159 |
-
|
1160 |
-
} else {
|
1161 |
-
viewport = F.getViewport();
|
1162 |
-
|
1163 |
-
pos.top = viewport.y + (viewport.h - height) * 0.5;
|
1164 |
-
pos.left = viewport.x + (viewport.w - width) * 0.5;
|
1165 |
-
}
|
1166 |
-
|
1167 |
-
pos = {
|
1168 |
-
top: Math.ceil(pos.top - padding) + 'px',
|
1169 |
-
left: Math.ceil(pos.left - padding) + 'px',
|
1170 |
-
width: Math.ceil(width + padding * 2) + 'px',
|
1171 |
-
height: Math.ceil(height + padding * 2) + 'px'
|
1172 |
-
};
|
1173 |
-
|
1174 |
-
return pos;
|
1175 |
-
},
|
1176 |
-
|
1177 |
-
step: function (now, fx) {
|
1178 |
-
var ratio, innerValue, outerValue;
|
1179 |
-
|
1180 |
-
if (fx.prop === 'width' || fx.prop === 'height') {
|
1181 |
-
innerValue = outerValue = Math.ceil(now - (F.current.padding * 2));
|
1182 |
-
|
1183 |
-
if (fx.prop === 'height') {
|
1184 |
-
ratio = (now - fx.start) / (fx.end - fx.start);
|
1185 |
-
|
1186 |
-
if (fx.start > fx.end) {
|
1187 |
-
ratio = 1 - ratio;
|
1188 |
-
}
|
1189 |
-
|
1190 |
-
innerValue -= F.innerSpace * ratio;
|
1191 |
-
outerValue -= F.outerSpace * ratio;
|
1192 |
-
}
|
1193 |
-
|
1194 |
-
F.inner[fx.prop](innerValue);
|
1195 |
-
F.outer[fx.prop](outerValue);
|
1196 |
-
}
|
1197 |
-
},
|
1198 |
-
|
1199 |
-
zoomIn: function () {
|
1200 |
-
var wrap = F.wrap,
|
1201 |
-
current = F.current,
|
1202 |
-
effect = current.openEffect,
|
1203 |
-
elastic = effect === 'elastic',
|
1204 |
-
dim = current.dim,
|
1205 |
-
startPos = $.extend({}, dim, F._getPosition( elastic )),
|
1206 |
-
endPos = $.extend({opacity : 1}, startPos);
|
1207 |
-
|
1208 |
-
//Remove "position" property that breaks older IE
|
1209 |
-
delete endPos.position;
|
1210 |
-
|
1211 |
-
if (elastic) {
|
1212 |
-
startPos = this.getOrigPosition();
|
1213 |
-
|
1214 |
-
if (current.openOpacity) {
|
1215 |
-
startPos.opacity = 0;
|
1216 |
-
}
|
1217 |
-
|
1218 |
-
F.outer.add(F.inner).width('auto').height('auto');
|
1219 |
-
} else if (effect === 'fade') {
|
1220 |
-
startPos.opacity = 0;
|
1221 |
-
}
|
1222 |
-
|
1223 |
-
wrap.css(startPos)
|
1224 |
-
.show()
|
1225 |
-
.animate(endPos, {
|
1226 |
-
duration : effect === 'none' ? 0 : current.openSpeed,
|
1227 |
-
easing : current.openEasing,
|
1228 |
-
step: elastic ? this.step : null,
|
1229 |
-
complete: F._afterZoomIn
|
1230 |
-
});
|
1231 |
-
},
|
1232 |
-
|
1233 |
-
zoomOut: function () {
|
1234 |
-
var wrap = F.wrap,
|
1235 |
-
current = F.current,
|
1236 |
-
effect = current.openEffect,
|
1237 |
-
elastic = effect === 'elastic',
|
1238 |
-
endPos = {opacity : 0};
|
1239 |
-
|
1240 |
-
if (elastic) {
|
1241 |
-
if (wrap.css('position') === 'fixed') {
|
1242 |
-
wrap.css(F._getPosition(true));
|
1243 |
-
}
|
1244 |
-
|
1245 |
-
endPos = this.getOrigPosition();
|
1246 |
-
|
1247 |
-
if (current.closeOpacity) {
|
1248 |
-
endPos.opacity = 0;
|
1249 |
-
}
|
1250 |
-
}
|
1251 |
-
|
1252 |
-
wrap.animate(endPos, {
|
1253 |
-
duration: effect === 'none' ? 0 : current.closeSpeed,
|
1254 |
-
easing: current.closeEasing,
|
1255 |
-
step: elastic ? this.step : null,
|
1256 |
-
complete: F._afterZoomOut
|
1257 |
-
});
|
1258 |
-
},
|
1259 |
-
|
1260 |
-
changeIn: function () {
|
1261 |
-
var wrap = F.wrap,
|
1262 |
-
current = F.current,
|
1263 |
-
effect = current.nextEffect,
|
1264 |
-
startPos = F._getPosition( effect === 'elastic' ),
|
1265 |
-
endPos = { opacity : 1 };
|
1266 |
-
|
1267 |
-
if (effect === 'elastic') {
|
1268 |
-
startPos.top = (parseInt(startPos.top, 10) - 200) + 'px';
|
1269 |
-
endPos.top = '+=200px';
|
1270 |
-
startPos.opacity = 0;
|
1271 |
-
}
|
1272 |
-
|
1273 |
-
wrap.css(startPos)
|
1274 |
-
.show()
|
1275 |
-
.animate(endPos, {
|
1276 |
-
duration : effect === 'none' ? 0 : current.nextSpeed,
|
1277 |
-
easing : current.nextEasing,
|
1278 |
-
complete: function() {
|
1279 |
-
//Somehow this helps to restore overflow
|
1280 |
-
setTimeout( F._afterZoomIn, 1);
|
1281 |
-
}
|
1282 |
-
});
|
1283 |
-
},
|
1284 |
-
|
1285 |
-
changeOut: function () {
|
1286 |
-
var wrap = F.wrap,
|
1287 |
-
current = F.current,
|
1288 |
-
effect = current.nextEffect,
|
1289 |
-
endPos = { opacity : 0 },
|
1290 |
-
cleanUp = function () {
|
1291 |
-
$(this).trigger('onReset').remove();
|
1292 |
-
};
|
1293 |
-
|
1294 |
-
wrap.removeClass('fancybox-opened');
|
1295 |
-
|
1296 |
-
if (effect === 'elastic') {
|
1297 |
-
endPos.top = '+=200px';
|
1298 |
-
}
|
1299 |
-
|
1300 |
-
wrap.animate(endPos, {
|
1301 |
-
duration: effect === 'none' ? 0 : current.prevSpeed,
|
1302 |
-
easing: current.prevEasing,
|
1303 |
-
complete: cleanUp
|
1304 |
-
});
|
1305 |
-
}
|
1306 |
-
};
|
1307 |
-
|
1308 |
-
/*
|
1309 |
-
* Overlay helper
|
1310 |
-
*/
|
1311 |
-
|
1312 |
-
F.helpers.overlay = {
|
1313 |
-
overlay: null,
|
1314 |
-
|
1315 |
-
update: function () {
|
1316 |
-
var width, scrollWidth, offsetWidth;
|
1317 |
-
|
1318 |
-
if (!isMobile) {
|
1319 |
-
//Reset width/height so it will not mess
|
1320 |
-
this.overlay.width(0).height(0);
|
1321 |
-
}
|
1322 |
-
|
1323 |
-
if ($.browser.msie) {
|
1324 |
-
scrollWidth = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);
|
1325 |
-
offsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth);
|
1326 |
-
|
1327 |
-
width = scrollWidth < offsetWidth ? W.width() : scrollWidth;
|
1328 |
-
|
1329 |
-
} else {
|
1330 |
-
width = D.width();
|
1331 |
-
}
|
1332 |
-
|
1333 |
-
this.overlay.width(width).height(D.height());
|
1334 |
-
},
|
1335 |
-
|
1336 |
-
beforeShow: function (opts) {
|
1337 |
-
if (this.overlay) {
|
1338 |
-
return;
|
1339 |
-
}
|
1340 |
-
|
1341 |
-
opts = $.extend(true, {
|
1342 |
-
speedIn : 'fast',
|
1343 |
-
closeClick : true,
|
1344 |
-
opacity : 1,
|
1345 |
-
css : {
|
1346 |
-
background: 'black'
|
1347 |
-
}
|
1348 |
-
}, opts);
|
1349 |
-
|
1350 |
-
this.overlay = $('<div id="fancybox-overlay"></div>').css(opts.css).appendTo('body');
|
1351 |
-
|
1352 |
-
this.update();
|
1353 |
-
|
1354 |
-
if (opts.closeClick) {
|
1355 |
-
this.overlay.bind('click.fb', F.close);
|
1356 |
-
}
|
1357 |
-
|
1358 |
-
W.bind("resize.fb", $.proxy(this.update, this));
|
1359 |
-
|
1360 |
-
this.overlay.fadeTo(opts.speedIn, opts.opacity);
|
1361 |
-
},
|
1362 |
-
|
1363 |
-
onUpdate: function () {
|
1364 |
-
//Update as content may change document dimensions
|
1365 |
-
this.update();
|
1366 |
-
},
|
1367 |
-
|
1368 |
-
afterClose: function (opts) {
|
1369 |
-
if (this.overlay) {
|
1370 |
-
this.overlay.fadeOut(opts.speedOut || 0, function () {
|
1371 |
-
$(this).remove();
|
1372 |
-
});
|
1373 |
-
}
|
1374 |
-
|
1375 |
-
this.overlay = null;
|
1376 |
-
}
|
1377 |
-
};
|
1378 |
-
|
1379 |
-
/*
|
1380 |
-
* Title helper
|
1381 |
-
*/
|
1382 |
-
|
1383 |
-
F.helpers.title = {
|
1384 |
-
beforeShow: function (opts) {
|
1385 |
-
var title, text = F.current.title;
|
1386 |
-
|
1387 |
-
if (text) {
|
1388 |
-
title = $('<div class="fancybox-title fancybox-title-' + opts.type + '-wrap">' + text + '</div>').appendTo('body');
|
1389 |
-
|
1390 |
-
if (opts.type === 'float') {
|
1391 |
-
//This helps for some browsers
|
1392 |
-
title.width(title.width());
|
1393 |
-
|
1394 |
-
title.wrapInner('<span class="child"></span>');
|
1395 |
-
|
1396 |
-
//Increase bottom margin so this title will also fit into viewport
|
1397 |
-
F.current.margin[2] += Math.abs(parseInt(title.css('margin-bottom'), 10));
|
1398 |
-
}
|
1399 |
-
|
1400 |
-
title.appendTo(opts.type === 'over' ? F.inner : (opts.type === 'outside' ? F.wrap : F.outer));
|
1401 |
-
}
|
1402 |
-
}
|
1403 |
-
};
|
1404 |
-
|
1405 |
-
// jQuery plugin initialization
|
1406 |
-
$.fn.fancybox = function (options) {
|
1407 |
-
var that = $(this),
|
1408 |
-
selector = this.selector || '',
|
1409 |
-
index,
|
1410 |
-
run = function(e) {
|
1411 |
-
var what = this, idx = index, relType, relVal;
|
1412 |
-
|
1413 |
-
if (!(e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {
|
1414 |
-
e.preventDefault();
|
1415 |
-
|
1416 |
-
relType = options.groupAttr || 'data-fancybox-group';
|
1417 |
-
relVal = $(what).attr(relType);
|
1418 |
-
|
1419 |
-
if (!relVal) {
|
1420 |
-
relType = 'rel';
|
1421 |
-
relVal = what[ relType ];
|
1422 |
-
}
|
1423 |
-
|
1424 |
-
if (relVal && relVal !== '' && relVal !== 'nofollow') {
|
1425 |
-
what = selector.length ? $(selector) : that;
|
1426 |
-
what = what.filter('[' + relType + '="' + relVal + '"]');
|
1427 |
-
idx = what.index(this);
|
1428 |
-
}
|
1429 |
-
|
1430 |
-
options.index = idx;
|
1431 |
-
|
1432 |
-
F.open(what, options);
|
1433 |
-
}
|
1434 |
-
};
|
1435 |
-
|
1436 |
-
options = options || {};
|
1437 |
-
index = options.index || 0;
|
1438 |
-
|
1439 |
-
if (selector) {
|
1440 |
-
D.undelegate(selector, 'click.fb-start').delegate(selector, 'click.fb-start', run);
|
1441 |
-
|
1442 |
-
} else {
|
1443 |
-
that.unbind('click.fb-start').bind('click.fb-start', run);
|
1444 |
-
}
|
1445 |
-
|
1446 |
-
return this;
|
1447 |
-
};
|
1448 |
-
|
1449 |
-
}(window, document));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/assets/fancyBox/source/jquery.fancybox.pack.js
DELETED
@@ -1,35 +0,0 @@
|
|
1 |
-
/*! fancyBox v2.0.5 fancyapps.com | fancyapps.com/fancybox/#license */
|
2 |
-
(function(n,q,v){var d=n.jQuery,l=d(n),m=d(q),a=d.fancybox=function(){a.open.apply(this,arguments)},u=!1,r=q.createTouch!==v,s=function(a){return"string"===d.type(a)},t=function(a){return s(a)&&-1<a.indexOf("%")};d.extend(a,{version:"2.0.5",defaults:{padding:15,margin:20,width:800,height:600,minWidth:100,minHeight:100,maxWidth:9999,maxHeight:9999,autoSize:!0,autoResize:!r,autoCenter:!r,fitToView:!0,aspectRatio:!1,topRatio:0.5,fixed:!(d.browser.msie&&6>=d.browser.version)&&!r,scrolling:"auto",wrapCSS:"fancybox-default",
|
3 |
-
arrows:!0,closeBtn:!0,closeClick:!1,nextClick:!1,mouseWheel:!0,autoPlay:!1,playSpeed:3E3,preload:3,modal:!1,loop:!0,ajax:{dataType:"html",headers:{"X-fancyBox":!0}},keys:{next:[13,32,34,39,40],prev:[8,33,37,38],close:[27]},tpl:{wrap:'<div class="fancybox-wrap"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div>',image:'<img class="fancybox-image" src="{href}" alt="" />',iframe:'<iframe class="fancybox-iframe" name="fancybox-frame{rnd}" frameborder="0" hspace="0"'+(d.browser.msie?
|
4 |
-
' allowtransparency="true"':"")+"></iframe>",swf:'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="wmode" value="transparent" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="{href}" /><embed src="{href}" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="100%" height="100%" wmode="transparent"></embed></object>',error:'<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',
|
5 |
-
closeBtn:'<div title="Close" class="fancybox-item fancybox-close"></div>',next:'<a title="Next" class="fancybox-nav fancybox-next"><span></span></a>',prev:'<a title="Previous" class="fancybox-nav fancybox-prev"><span></span></a>'},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0,openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:300,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",
|
6 |
-
prevSpeed:300,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:{speedIn:0,speedOut:300,opacity:0.8,css:{cursor:"pointer"},closeClick:!0},title:{type:"float"}}},group:{},opts:{},coming:null,current:null,isOpen:!1,isOpened:!1,wrap:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(b,c){a.close(!0);b&&!d.isArray(b)&&(b=b instanceof d?d(b).get():[b]);a.isActive=!0;a.opts=d.extend(!0,{},a.defaults,c);d.isPlainObject(c)&&
|
7 |
-
c.keys!==v&&(a.opts.keys=c.keys?d.extend({},a.defaults.keys,c.keys):!1);a.group=b;a._start(a.opts.index||0)},cancel:function(){a.coming&&!1===a.trigger("onCancel")||(a.coming=null,a.hideLoading(),a.ajaxLoad&&a.ajaxLoad.abort(),a.ajaxLoad=null,a.imgPreload&&(a.imgPreload.onload=a.imgPreload.onabort=a.imgPreload.onerror=null))},close:function(b){a.cancel();a.current&&!1!==a.trigger("beforeClose")&&(a.unbindEvents(),!a.isOpen||b&&!0===b[0]?(d(".fancybox-wrap").stop().trigger("onReset").remove(),a._afterZoomOut()):
|
8 |
-
(a.isOpen=a.isOpened=!1,d(".fancybox-item, .fancybox-nav").remove(),a.wrap.stop(!0).removeClass("fancybox-opened"),a.inner.css("overflow","hidden"),a.transitions[a.current.closeMethod]()))},play:function(b){var c=function(){clearTimeout(a.player.timer)},g=function(){c();a.current&&a.player.isActive&&(a.player.timer=setTimeout(a.next,a.current.playSpeed))},e=function(){c();d("body").unbind(".player");a.player.isActive=!1;a.trigger("onPlayEnd")};if(a.player.isActive||b&&!1===b[0])e();else if(a.current&&
|
9 |
-
(a.current.loop||a.current.index<a.group.length-1))a.player.isActive=!0,d("body").bind({"afterShow.player onUpdate.player":g,"onCancel.player beforeClose.player":e,"beforeLoad.player":c}),g(),a.trigger("onPlayStart")},next:function(){a.current&&a.jumpto(a.current.index+1)},prev:function(){a.current&&a.jumpto(a.current.index-1)},jumpto:function(b){a.current&&(b=parseInt(b,10),1<a.group.length&&a.current.loop&&(b>=a.group.length?b=0:0>b&&(b=a.group.length-1)),a.group[b]!==v&&(a.cancel(),a._start(b)))},
|
10 |
-
reposition:function(b,c){a.isOpen&&(c&&"scroll"===c.type?a.wrap.stop().animate(a._getPosition(b),200):a.wrap.css(a._getPosition(b)))},update:function(b){a.isOpen&&(u||setTimeout(function(){var c=a.current;if(u&&(u=!1,c)){if(!b||b&&("orientationchange"===b.type||c.autoResize&&"resize"===b.type))c.autoSize&&"iframe"!==c.type&&(a.inner.height("auto"),c.height=a.inner.height()),a._setDimension(),c.canGrow&&"iframe"!==c.type&&a.inner.height("auto");c.autoCenter&&a.reposition(null,b);a.trigger("onUpdate")}},
|
11 |
-
100),u=!0)},toggle:function(){a.isOpen&&(a.current.fitToView=!a.current.fitToView,a.update())},hideLoading:function(){m.unbind("keypress.fb");d("#fancybox-loading").remove()},showLoading:function(){a.hideLoading();m.bind("keypress.fb",function(b){27===b.keyCode&&(b.preventDefault(),a.cancel())});d('<div id="fancybox-loading"><div></div></div>').click(a.cancel).appendTo("body")},getViewport:function(){return{x:l.scrollLeft(),y:l.scrollTop(),w:n.innerWidth?n.innerWidth:l.width(),h:n.innerHeight?n.innerHeight:
|
12 |
-
l.height()}},unbindEvents:function(){a.wrap&&a.wrap.unbind(".fb");m.unbind(".fb");l.unbind(".fb")},bindEvents:function(){var b=a.current,c=b.keys;b&&(l.bind("resize.fb, orientationchange.fb",a.update),!b.fixed&&b.autoCenter&&l.bind("scroll.fb",a.update),c&&m.bind("keydown.fb",function(b){var e;!b.ctrlKey&&!b.altKey&&!b.shiftKey&&!b.metaKey&&0>d.inArray(b.target.tagName.toLowerCase(),["input","textarea","select","button"])&&!d(b.target).is("[contenteditable]")&&(e=b.keyCode,-1<d.inArray(e,c.close)?
|
13 |
-
(a.close(),b.preventDefault()):-1<d.inArray(e,c.next)?(a.next(),b.preventDefault()):-1<d.inArray(e,c.prev)&&(a.prev(),b.preventDefault()))}),d.fn.mousewheel&&b.mouseWheel&&1<a.group.length&&a.wrap.bind("mousewheel.fb",function(b,c){var d=b.target||null;if(0!==c&&(!d||0===d.clientHeight||d.scrollHeight===d.clientHeight&&d.scrollWidth===d.clientWidth))b.preventDefault(),a[0<c?"prev":"next"]()}))},trigger:function(b){var c,g=a[-1<d.inArray(b,["onCancel","beforeLoad","afterLoad"])?"coming":"current"];
|
14 |
-
if(g){d.isFunction(g[b])&&(c=g[b].apply(g,Array.prototype.slice.call(arguments,1)));if(!1===c)return!1;g.helpers&&d.each(g.helpers,function(c,f){if(f&&d.isPlainObject(a.helpers[c])&&d.isFunction(a.helpers[c][b]))a.helpers[c][b](f,g)});d.event.trigger(b+".fb")}},isImage:function(a){return s(a)&&a.match(/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i)},isSWF:function(a){return s(a)&&a.match(/\.(swf)(.*)?$/i)},_start:function(b){var c={},g=a.group[b]||null,e,f,i;if(g&&(g.nodeType||g instanceof d))e=!0,d.metadata&&
|
15 |
-
(c=d(g).metadata());c=d.extend(!0,{},a.opts,{index:b,element:g},d.isPlainObject(g)?g:c);d.each(["href","title","content","type"],function(b,f){c[f]=a.opts[f]||e&&d(g).attr(f)||c[f]||null});"number"===typeof c.margin&&(c.margin=[c.margin,c.margin,c.margin,c.margin]);c.modal&&d.extend(!0,c,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,mouseWheel:!1,keys:null,helpers:{overlay:{css:{cursor:"auto"},closeClick:!1}}});a.coming=c;if(!1===a.trigger("beforeLoad"))a.coming=null;else{f=c.type;b=c.href||g;
|
16 |
-
f||(e&&(i=d(g).data("fancybox-type"),!i&&g.className&&(f=(i=g.className.match(/fancybox\.(\w+)/))?i[1]:null)),!f&&s(b)&&(a.isImage(b)?f="image":a.isSWF(b)?f="swf":b.match(/^#/)&&(f="inline")),f||(f=e?"inline":"html"),c.type=f);if("inline"===f||"html"===f){if(c.content||(c.content="inline"===f?d(s(b)?b.replace(/.*(?=#[^\s]+$)/,""):b):g),!c.content||!c.content.length)f=null}else b||(f=null);"ajax"===f&&s(b)&&(i=b.split(/\s+/,2),b=i.shift(),c.selector=i.shift());c.href=b;c.group=a.group;c.isDom=e;"image"===
|
17 |
-
f?a._loadImage():"ajax"===f?a._loadAjax():f?a._afterLoad():a._error("type")}},_error:function(b){a.hideLoading();d.extend(a.coming,{type:"html",autoSize:!0,minHeight:0,hasError:b,content:a.coming.tpl.error});a._afterLoad()},_loadImage:function(){var b=a.imgPreload=new Image;b.onload=function(){this.onload=this.onerror=null;a.coming.width=this.width;a.coming.height=this.height;a._afterLoad()};b.onerror=function(){this.onload=this.onerror=null;a._error("image")};b.src=a.coming.href;b.width||a.showLoading()},
|
18 |
-
_loadAjax:function(){a.showLoading();a.ajaxLoad=d.ajax(d.extend({},a.coming.ajax,{url:a.coming.href,error:function(b,c){a.coming&&"abort"!==c?a._error("ajax",b):a.hideLoading()},success:function(b,c){"success"===c&&(a.coming.content=b,a._afterLoad())}}))},_preloadImages:function(){var b=a.group,c=a.current,g=b.length,e,f,i,h=Math.min(c.preload,g-1);if(c.preload&&!(2>b.length))for(i=1;i<=h;i+=1)if(e=b[(c.index+i)%g],f=d(e).attr("href")||e,"image"===e.type||a.isImage(f))(new Image).src=f},_afterLoad:function(){a.hideLoading();
|
19 |
-
!a.coming||!1===a.trigger("afterLoad",a.current)?a.coming=!1:(a.isOpened?(d(".fancybox-item").remove(),a.wrap.stop(!0).removeClass("fancybox-opened"),a.inner.css("overflow","hidden"),a.transitions[a.current.prevMethod]()):(d(".fancybox-wrap").stop().trigger("onReset").remove(),a.trigger("afterClose")),a.unbindEvents(),a.isOpen=!1,a.current=a.coming,a.wrap=d(a.current.tpl.wrap).addClass("fancybox-"+(r?"mobile":"desktop")+" fancybox-type-"+a.current.type+" fancybox-tmp "+a.current.wrapCSS).appendTo("body"),
|
20 |
-
a.outer=d(".fancybox-outer",a.wrap).css("padding",a.current.padding+"px"),a.inner=d(".fancybox-inner",a.wrap),a._setContent())},_setContent:function(){var b=a.current,c=b.content,g=b.type,e;e=b.minWidth;var f=b.minHeight,i=b.maxWidth,h=b.maxHeight;switch(g){case "inline":case "ajax":case "html":b.selector?c=d("<div>").html(c).find(b.selector):c instanceof d&&(c.parent().hasClass("fancybox-inner")&&c.parents(".fancybox-wrap").unbind("onReset"),c=c.show().detach(),d(a.wrap).bind("onReset",function(){c.appendTo("body").hide()}));
|
21 |
-
b.autoSize&&(e=d('<div class="fancybox-wrap '+a.current.wrapCSS+' fancybox-tmp"></div>').appendTo("body").css({minWidth:t(e)?e:e+"px",minHeight:t(f)?f:f+"px",maxWidth:t(i)?i:i+"px",maxHeight:t(h)?h:h+"px"}).append(c),b.width=e.width(),b.height=e.height(),e.width(a.current.width),e.height()>b.height&&(e.width(b.width+1),b.width=e.width(),b.height=e.height()),c=e.contents().detach(),e.remove());break;case "image":c=b.tpl.image.replace("{href}",b.href);b.aspectRatio=!0;break;case "swf":c=b.tpl.swf.replace(/\{width\}/g,
|
22 |
-
b.width).replace(/\{height\}/g,b.height).replace(/\{href\}/g,b.href);break;case "iframe":c=d(b.tpl.iframe.replace("{rnd}",(new Date).getTime())).attr("scrolling",b.scrolling).attr("src",b.href),b.scrolling=r?"scroll":"auto"}if("image"===g||"swf"===g)b.autoSize=!1,b.scrolling="visible";"iframe"===g&&b.autoSize?(a.showLoading(),a.inner.width(b.width).height(b.height).css("overflow",b.scrolling),c.bind({onCancel:function(){d(this).unbind();a._afterZoomOut()},load:function(){a.hideLoading();try{this.contentWindow.document.location&&
|
23 |
-
(a.current.height=d(this).contents().find("body").height())}catch(b){a.current.autoSize=!1}a.isOpened?a.update():a._beforeShow()}}).appendTo(a.inner)):(a.inner.append(c),a._beforeShow())},_beforeShow:function(){a.coming=null;a.trigger("beforeShow");a._setDimension();a.wrap.hide().removeClass("fancybox-tmp");a.bindEvents();a._preloadImages();a.transitions[a.isOpened?a.current.nextMethod:a.current.openMethod]()},_setDimension:function(){var b=a.wrap,c=a.outer,g=a.inner,e=a.current,f=a.getViewport(),
|
24 |
-
i=e.margin,h=2*e.padding,j=e.width,k=e.height,l=e.maxWidth+h,o=e.maxHeight+h,m=e.minWidth+h,n=e.minHeight+h,p;f.w-=i[1]+i[3];f.h-=i[0]+i[2];t(j)&&(j=(f.w-h)*parseFloat(j)/100);t(k)&&(k=(f.h-h)*parseFloat(k)/100);i=j/k;j+=h;k+=h;e.fitToView&&(l=Math.min(f.w,l),o=Math.min(f.h,o));if(e.aspectRatio){if(j>l&&(j=l,k=(j-h)/i+h),k>o&&(k=o,j=(k-h)*i+h),j<m&&(j=m,k=(j-h)/i+h),k<n)k=n,j=(k-h)*i+h}else j=Math.max(m,Math.min(j,l)),k=Math.max(n,Math.min(k,o));j=Math.round(j);k=Math.round(k);d(b.add(c).add(g)).width("auto").height("auto");
|
25 |
-
g.width(j-h).height(k-h);b.width(j);p=b.height();if(j>l||p>o)for(;(j>l||p>o)&&j>m&&p>n;)k-=10,e.aspectRatio?(j=Math.round((k-h)*i+h),j<m&&(j=m,k=(j-h)/i+h)):j-=10,g.width(j-h).height(k-h),b.width(j),p=b.height();e.dim={width:j,height:p};e.canGrow=e.autoSize&&k>n&&k<o;e.canShrink=!1;e.canExpand=!1;if(j-h<e.width||k-h<e.height)e.canExpand=!0;else if((j>f.w||p>f.h)&&j>m&&k>n)e.canShrink=!0;b=p-h;a.innerSpace=b-g.height();a.outerSpace=b-c.height()},_getPosition:function(b){var c=a.current,d=a.getViewport(),
|
26 |
-
e=c.margin,f=a.wrap.width()+e[1]+e[3],i=a.wrap.height()+e[0]+e[2],h={position:"absolute",top:e[0]+d.y,left:e[3]+d.x};if(c.autoCenter&&c.fixed&&(!b||!1===b[0])&&i<=d.h&&f<=d.w)h={position:"fixed",top:e[0],left:e[3]};h.top=Math.ceil(Math.max(h.top,h.top+(d.h-i)*c.topRatio))+"px";h.left=Math.ceil(Math.max(h.left,h.left+0.5*(d.w-f)))+"px";return h},_afterZoomIn:function(){var b=a.current,c=b?b.scrolling:"no";if(b&&(a.isOpen=a.isOpened=!0,a.wrap.addClass("fancybox-opened").css("overflow","visible"),a.inner.css("overflow",
|
27 |
-
"yes"===c?"scroll":"no"===c?"hidden":c),(b.closeClick||b.nextClick)&&a.inner.css("cursor","pointer").bind("click.fb",function(c){if(!d(c.target).is("a")&&!d(c.target).parent().is("a"))a[b.closeClick?"close":"next"]()}),b.closeBtn&&d(b.tpl.closeBtn).appendTo(a.outer).bind("click.fb",a.close),b.arrows&&1<a.group.length&&((b.loop||0<b.index)&&d(b.tpl.prev).appendTo(a.inner).bind("click.fb",a.prev),(b.loop||b.index<a.group.length-1)&&d(b.tpl.next).appendTo(a.inner).bind("click.fb",a.next)),a.trigger("afterShow"),
|
28 |
-
a.update(),a.opts.autoPlay&&!a.player.isActive))a.opts.autoPlay=!1,a.play()},_afterZoomOut:function(){a.trigger("afterClose");a.wrap.trigger("onReset").remove();d.extend(a,{group:{},opts:{},current:null,isActive:!1,isOpened:!1,isOpen:!1,wrap:null,outer:null,inner:null})}});a.transitions={getOrigPosition:function(){var b=a.current,c=b.element,g=b.padding,e=d(b.orig),f={},i=50,h=50;!e.length&&b.isDom&&d(c).is(":visible")&&(e=d(c).find("img:first"),e.length||(e=d(c)));e.length?(f=e.offset(),e.is("img")&&
|
29 |
-
(i=e.outerWidth(),h=e.outerHeight())):(b=a.getViewport(),f.top=b.y+0.5*(b.h-h),f.left=b.x+0.5*(b.w-i));return f={top:Math.ceil(f.top-g)+"px",left:Math.ceil(f.left-g)+"px",width:Math.ceil(i+2*g)+"px",height:Math.ceil(h+2*g)+"px"}},step:function(b,c){var d,e,f;if("width"===c.prop||"height"===c.prop)e=f=Math.ceil(b-2*a.current.padding),"height"===c.prop&&(d=(b-c.start)/(c.end-c.start),c.start>c.end&&(d=1-d),e-=a.innerSpace*d,f-=a.outerSpace*d),a.inner[c.prop](e),a.outer[c.prop](f)},zoomIn:function(){var b=
|
30 |
-
a.wrap,c=a.current,g=c.openEffect,e="elastic"===g,f=d.extend({},c.dim,a._getPosition(e)),i=d.extend({opacity:1},f);delete i.position;e?(f=this.getOrigPosition(),c.openOpacity&&(f.opacity=0),a.outer.add(a.inner).width("auto").height("auto")):"fade"===g&&(f.opacity=0);b.css(f).show().animate(i,{duration:"none"===g?0:c.openSpeed,easing:c.openEasing,step:e?this.step:null,complete:a._afterZoomIn})},zoomOut:function(){var b=a.wrap,c=a.current,d=c.openEffect,e="elastic"===d,f={opacity:0};e&&("fixed"===b.css("position")&&
|
31 |
-
b.css(a._getPosition(!0)),f=this.getOrigPosition(),c.closeOpacity&&(f.opacity=0));b.animate(f,{duration:"none"===d?0:c.closeSpeed,easing:c.closeEasing,step:e?this.step:null,complete:a._afterZoomOut})},changeIn:function(){var b=a.wrap,c=a.current,d=c.nextEffect,e=a._getPosition("elastic"===d),f={opacity:1};"elastic"===d&&(e.top=parseInt(e.top,10)-200+"px",f.top="+=200px",e.opacity=0);b.css(e).show().animate(f,{duration:"none"===d?0:c.nextSpeed,easing:c.nextEasing,complete:function(){setTimeout(a._afterZoomIn,
|
32 |
-
1)}})},changeOut:function(){var b=a.wrap,c=a.current,g=c.nextEffect,e={opacity:0};b.removeClass("fancybox-opened");"elastic"===g&&(e.top="+=200px");b.animate(e,{duration:"none"===g?0:c.prevSpeed,easing:c.prevEasing,complete:function(){d(this).trigger("onReset").remove()}})}};a.helpers.overlay={overlay:null,update:function(){var a,c;r||this.overlay.width(0).height(0);d.browser.msie?(a=Math.max(q.documentElement.scrollWidth,q.body.scrollWidth),c=Math.max(q.documentElement.offsetWidth,q.body.offsetWidth),
|
33 |
-
a=a<c?l.width():a):a=m.width();this.overlay.width(a).height(m.height())},beforeShow:function(b){this.overlay||(b=d.extend(!0,{speedIn:"fast",closeClick:!0,opacity:1,css:{background:"black"}},b),this.overlay=d('<div id="fancybox-overlay"></div>').css(b.css).appendTo("body"),this.update(),b.closeClick&&this.overlay.bind("click.fb",a.close),l.bind("resize.fb",d.proxy(this.update,this)),this.overlay.fadeTo(b.speedIn,b.opacity))},onUpdate:function(){this.update()},afterClose:function(a){this.overlay&&
|
34 |
-
this.overlay.fadeOut(a.speedOut||0,function(){d(this).remove()});this.overlay=null}};a.helpers.title={beforeShow:function(b){var c;if(c=a.current.title)c=d('<div class="fancybox-title fancybox-title-'+b.type+'-wrap">'+c+"</div>").appendTo("body"),"float"===b.type&&(c.width(c.width()),c.wrapInner('<span class="child"></span>'),a.current.margin[2]+=Math.abs(parseInt(c.css("margin-bottom"),10))),c.appendTo("over"===b.type?a.inner:"outside"===b.type?a.wrap:a.outer)}};d.fn.fancybox=function(b){var c=d(this),
|
35 |
-
g=this.selector||"",e,f=function(f){var h=this,j=e,k;!f.ctrlKey&&!f.altKey&&!f.shiftKey&&!f.metaKey&&(f.preventDefault(),f=b.groupAttr||"data-fancybox-group",k=d(h).attr(f),k||(f="rel",k=h[f]),k&&""!==k&&"nofollow"!==k&&(h=g.length?d(g):c,h=h.filter("["+f+'="'+k+'"]'),j=h.index(this)),b.index=j,a.open(h,b))},b=b||{};e=b.index||0;g?m.undelegate(g,"click.fb-start").delegate(g,"click.fb-start",f):c.unbind("click.fb-start").bind("click.fb-start",f);return this}})(window,document);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/assets/hmbkp.css
DELETED
@@ -1,89 +0,0 @@
|
|
1 |
-
#icon-backupwordpress.icon32 { background: url(icon_backupwordpress_32x32.png); }
|
2 |
-
|
3 |
-
tfoot p { margin: 0; font-weight: normal; }
|
4 |
-
#hmbkp-constants dl { overflow: hidden; margin: 20px 0; }
|
5 |
-
#hmbkp-constants dt { float: left; min-width: 250px; clear: both; padding: 6px; margin: 1px 0; cursor: pointer; }
|
6 |
-
#hmbkp-constants dd { color: #666; padding: 7px 0 7px 250px; border-top: 1px solid #DFDFDF; margin: 0; cursor: pointer; min-height: 40px; }
|
7 |
-
#hmbkp-constants dd:last-child { border-bottom: 1px solid #DFDFDF; }
|
8 |
-
#hmbkp-constants dt:not(.hmbkp_active) + dd { background: #F9F9F9; }
|
9 |
-
#hmbkp-constants dd .example { white-space: nowrap; display: none; }
|
10 |
-
#hmbkp-constants dd p { margin: 0; }
|
11 |
-
#hmbkp-constants dt:not(.hmbkp_active):hover + dd, #hmbkp-constants dt:not(.hmbkp_active) + dd:hover { background-color: #FFF; }
|
12 |
-
#hmbkp-constants dd:hover p, #hmbkp-constants dt:hover + dd p { display: none; }
|
13 |
-
#hmbkp-constants dd:hover .example, #hmbkp-constants dt:hover + dd .example { display: inline; }
|
14 |
-
|
15 |
-
.completed th, .completed td { background-color: #FFFFE0; }
|
16 |
-
.hmbkp_active:before { content: "\00a0 \2713 "; font-size: 11px; }
|
17 |
-
.hmbkp_active, .hmbkp_active code, #hmbkp-constants .hmbkp_active + dd { background: #E5F7E8; }
|
18 |
-
.contextual-help-tabs-wrap .updated { margin: 15px 0 0; }
|
19 |
-
|
20 |
-
.subsubsub { width: 100%; margin: 20px 0px 0px 0px; border-bottom: 1px solid #EEE; }
|
21 |
-
.subsubsub li + li::before { content: "| "; }
|
22 |
-
.subsubsub .add-new-h2 { top: 0; }
|
23 |
-
|
24 |
-
.ui-tabs-nav .ui-tabs-selected a, .ui-tabs-nav .ui-state-active a { font-weight: bold; color: #000; }
|
25 |
-
.hmbkp_schedule { clear: both; overflow: hidden; }
|
26 |
-
|
27 |
-
.fancybox-inner { overflow-x: hidden !important; }
|
28 |
-
.fancybox-inner fieldset { max-width: 100%; }
|
29 |
-
.hmbkp-form fieldset { float: left; }
|
30 |
-
.js .hmbkp-form fieldset + fieldset { display: none; margin-right: -100%; }
|
31 |
-
|
32 |
-
.hmbkp-form label { display: block; line-height: 25px; padding-bottom: 20px; border-bottom: 1px dotted #CCC; margin-bottom: 20px; width: 320px; position: relative; }
|
33 |
-
|
34 |
-
.hmbkp-form legend { padding: 0 0 20px; font-size: 1.17em; font-weight: bold; }
|
35 |
-
.hmbkp-form label > * { float: right; }
|
36 |
-
.hmbkp-form label.hidden { display: none; }
|
37 |
-
.hmbkp-form label > input, .hmbkp-form label > select { min-width: 200px; }
|
38 |
-
.hmbkp-form label .description { line-height: 16px; margin-top: 10px; float: none; }
|
39 |
-
.hmbkp-form p.submit { margin: 20px 0 0; padding: 0; }
|
40 |
-
.hmbkp-form .button-primary { float: right; }
|
41 |
-
.hmbkp-form [type="number"] { min-width: 40px; width: 40px; }
|
42 |
-
.hmbkp-error span { position: absolute; top: -18px; left: 0; color: red; }
|
43 |
-
.hmbkp-error input[type], .hmbkp-error select { border-color: red; }
|
44 |
-
|
45 |
-
.hmbkp-form ul { width: 320px; overflow: hidden; }
|
46 |
-
.hmbkp-form ul.hmbkp_file_list { background-color: #FFF; max-height: 200px; overflow-y: scroll; display: block; border-radius: 4px; box-sizing: border-box; clear: both; box-shadow: inset 0px 0px 2px #CCC; font-size: 11px; }
|
47 |
-
.hmbkp_file_list li { margin: 0; padding: 5px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: 16px; }
|
48 |
-
.hmbkp_file_list li + li { border-top: 1px dotted #CCC; }
|
49 |
-
|
50 |
-
.hmbkp-schedule-sentence { margin: 0; font-size: 16px; font-weight: lighter; margin: 30px 0 10px; clear: both; margin-left: 10px; }
|
51 |
-
.hmbkp-schedule-sentence::before { content: "\2714"; margin-right: 10px; width: 16px; height: 47px; display: block; float: left; }
|
52 |
-
.hmbkp-schedule-sentence.hmbkp-error::before { content: "\2718"; }
|
53 |
-
.hmbkp-schedule-sentence.hmbkp-running::before { background-image: url('wpspin_light.gif'); background-repeat: no-repeat; margin-right: 10px; content: " "; }
|
54 |
-
.hmbkp-schedule-sentence .hmbkp-status { display: none; font-size: 12px; color: #666; margin: 2px 0 0 26px; }
|
55 |
-
.hmbkp-schedule-sentence.hmbkp-running .hmbkp-status { display: block; }
|
56 |
-
.hmbkp-schedule-sentence.hmbkp-running .hmbkp-schedule-actions { display: none; }
|
57 |
-
.hmbkp-schedule-sentence [title] { border-bottom: 1px dotted #CCC; cursor: help; }
|
58 |
-
|
59 |
-
.subsubsub li.hmbkp-running a { background-image: url('wpspin_light.gif'); background-repeat: no-repeat; padding-left: 20px; vertical-align: middle; }
|
60 |
-
.subsubsub li.hmbkp-running a.current { padding: 0; background-image: none; }
|
61 |
-
|
62 |
-
.hmbkp-schedule-sentence .hmbkp-schedule-actions { visibility: visible; }
|
63 |
-
.hmbkp-schedule-actions { font-size: 12px; font-weight: normal; margin: 0 0 0 26px; }
|
64 |
-
|
65 |
-
.hmbkp-ajax-loading, button.hmbkp-ajax-loading { padding-left: 20px; }
|
66 |
-
.hmbkp-ajax-loading::before { background-image: url('wpspin_light.gif'); background-repeat: no-repeat; background-position: 1px -1px; margin-left: -20px; display: inline-block; width: 16px; height: 16px; content: " "; vertical-align: middle; padding-right: 3px; }
|
67 |
-
|
68 |
-
button { height: 14px; }
|
69 |
-
|
70 |
-
.delete-action { color: #BC0B0B; }
|
71 |
-
.delete-action:hover .delete-action:focus { color: red; }
|
72 |
-
|
73 |
-
label[for="hmbkp-new-exclude-rule"] { overflow: hidden; }
|
74 |
-
.hmbkp_preview_exclude_rule { float: right; margin-top: 1px; }
|
75 |
-
.hmbkp_preview_exclude_rule.hmbkp-ajax-loading { width: 44px; }
|
76 |
-
div.hmbkp_add_exclude_rule { display: block; line-height: 25px; width: 320px; overflow: hidden; }
|
77 |
-
div.hmbkp_add_exclude_rule input { min-width: 240px; float: left; }
|
78 |
-
.hmbkp_preview_exclude_rule { float: right; width: 56px; }
|
79 |
-
.hmbkp_save_exclude_rule, .hmbkp_cancel_save_exclude_rule { float: right; }
|
80 |
-
|
81 |
-
.hmbkp-exclude-preview-open table, .hmbkp-exclude-preview-open .hmbkp-tabs, .hmbkp-exclude-preview-open p.submit { display: none; }
|
82 |
-
.hmbkp-exclude-preview-open .hmbkp_add_exclude_rule { margin: 0; }
|
83 |
-
|
84 |
-
table.widefat tbody td { padding: 8px 7px; }
|
85 |
-
.hmbkp-edit-schedule-excludes-form td a, .hmbkp-edit-schedule-excludes-form td span.reason { float: right; }
|
86 |
-
.hmbkp-edit-schedule-excludes-form td span.reason { color: #CCC; }
|
87 |
-
input[type="datetime-local"] { border-radius: 3px; border-width: 1px; border-style: solid; box-sizing: border-box; border-color: #DFDFDF; background-color: white; }
|
88 |
-
|
89 |
-
pre { background-color: #eee; padding: 10px; white-space: normal; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/assets/hmbkp.js
DELETED
@@ -1,400 +0,0 @@
|
|
1 |
-
jQuery( document ).ready( function( $ ) {
|
2 |
-
|
3 |
-
// Don't ever cache ajax requests
|
4 |
-
$.ajaxSetup( { 'cache' : false } );
|
5 |
-
|
6 |
-
// Remove the loading class when ajax requests complete
|
7 |
-
$( document ).ajaxComplete( function() {
|
8 |
-
$( '.hmbkp-ajax-loading' ).removeClass( 'hmbkp-ajax-loading' );
|
9 |
-
} );
|
10 |
-
|
11 |
-
$( document ).on( 'click', '.hmbkp-fancybox-close', function() {
|
12 |
-
$.fancybox.close();
|
13 |
-
} );
|
14 |
-
|
15 |
-
// Setup the tabs
|
16 |
-
$( '.hmbkp-tabs' ).tabs();
|
17 |
-
|
18 |
-
// Set the first tab to be active
|
19 |
-
if ( ! $( '.subsubsub a.current' ).size() )
|
20 |
-
$( '.subsubsub li:first a').addClass( 'current' );
|
21 |
-
|
22 |
-
// Initialize fancybox
|
23 |
-
$( '.fancybox' ).fancybox( {
|
24 |
-
|
25 |
-
'modal' : true,
|
26 |
-
'type' : 'ajax',
|
27 |
-
'maxWidth' : 320,
|
28 |
-
'afterShow' : function() {
|
29 |
-
|
30 |
-
$( '.hmbkp-tabs' ).tabs();
|
31 |
-
|
32 |
-
if ( $( ".hmbkp-form p.submit:contains('" + objectL10n.update + "')" ).size() )
|
33 |
-
$( '<button type="button" class="button-secondary hmbkp-fancybox-close">' + objectL10n.cancel + '</button></p>' ).appendTo( '.hmbkp-form p.submit' );
|
34 |
-
|
35 |
-
}
|
36 |
-
|
37 |
-
} );
|
38 |
-
|
39 |
-
// Show delete confirm message for delete schedule
|
40 |
-
$( document ).on( 'click', '.hmbkp-schedule-actions .delete-action', function( e ) {
|
41 |
-
|
42 |
-
if ( ! confirm( objectL10n.delete_schedule ) )
|
43 |
-
e.preventDefault();
|
44 |
-
|
45 |
-
} );
|
46 |
-
|
47 |
-
// Show delete confirm message for delete backup
|
48 |
-
$( document ).on( 'click', '.hmbkp_manage_backups_row .delete-action', function( e ) {
|
49 |
-
|
50 |
-
if ( ! confirm( objectL10n.delete_backup ) )
|
51 |
-
e.preventDefault();
|
52 |
-
|
53 |
-
} );
|
54 |
-
|
55 |
-
// Show delete confirm message for remove exclude rule
|
56 |
-
$( document ).on( 'click', '.hmbkp-edit-schedule-excludes-form .delete-action', function( e ) {
|
57 |
-
|
58 |
-
if ( ! confirm( objectL10n.remove_exclude_rule ) )
|
59 |
-
e.preventDefault();
|
60 |
-
|
61 |
-
} );
|
62 |
-
|
63 |
-
// Preview exclude rule
|
64 |
-
$( document ).on( 'click', '.hmbkp_preview_exclude_rule', function() {
|
65 |
-
|
66 |
-
if ( ! $( '.hmbkp_add_exclude_rule input' ).val() ) {
|
67 |
-
$( '.hmbkp_add_exclude_rule ul' ).remove();
|
68 |
-
$( '.hmbkp_add_exclude_rule p' ).remove();
|
69 |
-
return;
|
70 |
-
}
|
71 |
-
|
72 |
-
$( this ).addClass( 'hmbkp-ajax-loading' );
|
73 |
-
|
74 |
-
$.post(
|
75 |
-
ajaxurl,
|
76 |
-
{ 'action' : 'hmbkp_file_list', 'hmbkp_schedule_excludes' : $( '.hmbkp_add_exclude_rule input' ).val(), 'hmbkp_schedule_id' : $( '[name="hmbkp_schedule_id"]' ).val() },
|
77 |
-
function( data ) {
|
78 |
-
|
79 |
-
$( '.hmbkp_add_exclude_rule ul' ).remove();
|
80 |
-
$( '.hmbkp_add_exclude_rule p' ).remove();
|
81 |
-
|
82 |
-
if ( data.indexOf( 'hmbkp_file_list' ) != -1 )
|
83 |
-
$( '.hmbkp_add_exclude_rule' ).append( data );
|
84 |
-
|
85 |
-
else
|
86 |
-
$( '.hmbkp_add_exclude_rule' ).append( '<p>There was an error previewing the exclude rule.</p>' );
|
87 |
-
|
88 |
-
$( '.hmbkp-edit-schedule-excludes-form' ).addClass( 'hmbkp-exclude-preview-open' );
|
89 |
-
|
90 |
-
}
|
91 |
-
)
|
92 |
-
|
93 |
-
} );
|
94 |
-
|
95 |
-
// Fire the preview button when the enter key is pressed in the preview input
|
96 |
-
$( document ).on( 'keypress', '.hmbkp_add_exclude_rule input', function( e ) {
|
97 |
-
|
98 |
-
if ( ! $( '.hmbkp_add_exclude_rule input' ).val() )
|
99 |
-
return true;
|
100 |
-
|
101 |
-
var code = ( e.keyCode ? e.keyCode : e.which );
|
102 |
-
|
103 |
-
if ( code != 13 )
|
104 |
-
return true;
|
105 |
-
|
106 |
-
$( '.hmbkp_preview_exclude_rule' ).click();
|
107 |
-
|
108 |
-
e.preventDefault();
|
109 |
-
|
110 |
-
} );
|
111 |
-
|
112 |
-
// Cancel add exclude rule
|
113 |
-
$( document ).on( 'click', '.hmbkp_cancel_save_exclude_rule, .hmbkp-edit-schedule-excludes-form .submit button', function() {
|
114 |
-
|
115 |
-
$( '.hmbkp_add_exclude_rule ul' ).remove();
|
116 |
-
$( '.hmbkp_add_exclude_rule p' ).remove();
|
117 |
-
|
118 |
-
$( '.hmbkp-edit-schedule-excludes-form' ).removeClass( 'hmbkp-exclude-preview-open' );
|
119 |
-
|
120 |
-
} );
|
121 |
-
|
122 |
-
// Toggle additional fieldsets on
|
123 |
-
$( document ).on( 'click', '.hmbkp-toggle-fieldset', function() {
|
124 |
-
|
125 |
-
// Get the current fieldset
|
126 |
-
var fromFieldset = 'fieldset.' + $( this ).closest( 'fieldset' ).attr( 'class' );
|
127 |
-
var toFieldset = 'fieldset.' + $( this ).attr( 'data-hmbkp-fieldset' );
|
128 |
-
|
129 |
-
// Show the one we are moving too
|
130 |
-
$( toFieldset ).show().find( 'p.submit button' ).data( 'hmbkp-previous-fieldset', fromFieldset );
|
131 |
-
|
132 |
-
// Animate
|
133 |
-
$( fromFieldset ).animate( {
|
134 |
-
marginLeft : '-100%'
|
135 |
-
}, 'fast', function() {
|
136 |
-
$( this ).hide();
|
137 |
-
} );
|
138 |
-
|
139 |
-
} );
|
140 |
-
|
141 |
-
// Toggle additional fieldsets off
|
142 |
-
$( document ).on( 'click', '.hmbkp-form fieldset + fieldset p.submit button', function() {
|
143 |
-
|
144 |
-
// Get the current fieldset
|
145 |
-
var fromFieldset = 'fieldset.' + $( this ).closest( 'fieldset' ).attr( 'class' );
|
146 |
-
var toFieldset = $( this ).data( 'hmbkp-previous-fieldset' );
|
147 |
-
|
148 |
-
// Show the one we are moving too
|
149 |
-
$( toFieldset ).show();
|
150 |
-
|
151 |
-
$( toFieldset ).animate( {
|
152 |
-
marginLeft : '0'
|
153 |
-
}, 'fast', function() {
|
154 |
-
$( fromFieldset ).hide();
|
155 |
-
}
|
156 |
-
);
|
157 |
-
|
158 |
-
} );
|
159 |
-
|
160 |
-
// Add exclude rule
|
161 |
-
$( document ).on( 'click', '.hmbkp_save_exclude_rule', function() {
|
162 |
-
|
163 |
-
$( this ).addClass( 'hmbkp-ajax-loading' );
|
164 |
-
|
165 |
-
$.post(
|
166 |
-
ajaxurl,
|
167 |
-
{ 'action' : 'hmbkp_add_exclude_rule', 'hmbkp_exclude_rule' : $( '.hmbkp_add_exclude_rule input' ).val(), 'hmbkp_schedule_id' : $( '[name="hmbkp_schedule_id"]' ).val() },
|
168 |
-
function( data ) {
|
169 |
-
$( '.hmbkp-edit-schedule-excludes-form' ).replaceWith( data );
|
170 |
-
$( '.hmbkp-edit-schedule-excludes-form' ).show();
|
171 |
-
$( '.hmbkp-tabs' ).tabs();
|
172 |
-
}
|
173 |
-
);
|
174 |
-
|
175 |
-
} );
|
176 |
-
|
177 |
-
// Remove exclude rule
|
178 |
-
$( document ).on( 'click', '.hmbkp-edit-schedule-excludes-form td a', function( e ) {
|
179 |
-
|
180 |
-
$( this ).addClass( 'hmbkp-ajax-loading' ).text( '' );
|
181 |
-
|
182 |
-
e.preventDefault();
|
183 |
-
|
184 |
-
$.get(
|
185 |
-
ajaxurl,
|
186 |
-
{ 'action' : 'hmbkp_delete_exclude_rule', 'hmbkp_exclude_rule' : $( this ).closest( 'td' ).attr( 'data-hmbkp-exclude-rule' ), 'hmbkp_schedule_id' : $( '[name="hmbkp_schedule_id"]' ).val() },
|
187 |
-
function( data ) {
|
188 |
-
$( '.hmbkp-edit-schedule-excludes-form' ).replaceWith( data );
|
189 |
-
$( '.hmbkp-edit-schedule-excludes-form' ).show();
|
190 |
-
$( '.hmbkp-tabs' ).tabs();
|
191 |
-
}
|
192 |
-
);
|
193 |
-
|
194 |
-
} );
|
195 |
-
|
196 |
-
// Edit schedule form submit
|
197 |
-
$( document ).on( 'submit', 'form.hmbkp-form', function( e ) {
|
198 |
-
|
199 |
-
isNewSchedule = $( this ).closest( 'form' ).attr( 'data-schedule-action' ) == 'add' ? true : false;
|
200 |
-
scheduleId = $( this ).closest( 'form' ).find( '[name="hmbkp_schedule_id"]' ).val();
|
201 |
-
|
202 |
-
// Warn that backups will be deleted if max backups has been set to less than the number of backups currently stored
|
203 |
-
if ( ! isNewSchedule && Number( $( 'input[name="hmbkp_schedule_max_backups"]' ).val() ) < Number( $( '.hmbkp_manage_backups_row' ).size() ) && ! confirm( objectL10n.remove_old_backups ) )
|
204 |
-
return false;
|
205 |
-
|
206 |
-
$( this ).find( 'button[type="submit"]' ).addClass( 'hmbkp-ajax-loading' );
|
207 |
-
|
208 |
-
$( '.hmbkp-error span' ).remove();
|
209 |
-
$( '.hmbkp-error' ).removeClass( 'hmbkp-error' );
|
210 |
-
|
211 |
-
e.preventDefault();
|
212 |
-
|
213 |
-
$.get(
|
214 |
-
ajaxurl + '?' + $( this ).serialize(),
|
215 |
-
{ 'action' : 'hmnkp_edit_schedule_submit' },
|
216 |
-
function( data ) {
|
217 |
-
|
218 |
-
// Assume success if no data passed back
|
219 |
-
if ( ! data || data == 0 ) {
|
220 |
-
|
221 |
-
$.fancybox.close();
|
222 |
-
|
223 |
-
// Reload the page so we see changes
|
224 |
-
if ( isNewSchedule )
|
225 |
-
location.replace( '//' + location.host + location.pathname + '?page=backupwordpress&hmbkp_schedule_id=' + scheduleId );
|
226 |
-
|
227 |
-
else
|
228 |
-
location.reload( true );
|
229 |
-
|
230 |
-
} else {
|
231 |
-
|
232 |
-
// Get the errors json string
|
233 |
-
errors = JSON.parse( data );
|
234 |
-
|
235 |
-
// Loop through the errors
|
236 |
-
$.each( errors, function( key, value ) {
|
237 |
-
|
238 |
-
// Focus the first field that errored
|
239 |
-
if ( typeof( hmbkp_focused ) == 'undefined' ) {
|
240 |
-
|
241 |
-
$( '[name="' + key + '"]' ).focus();
|
242 |
-
|
243 |
-
hmbkp_focused = true;
|
244 |
-
|
245 |
-
}
|
246 |
-
|
247 |
-
// Add an error class to all fields with errors
|
248 |
-
$( '[name="' + key + '"]' ).closest( 'label' ).addClass( 'hmbkp-error' );
|
249 |
-
|
250 |
-
// Add the error message
|
251 |
-
$( '[name="' + key + '"]' ).after( '<span>' + value + '</span>' );
|
252 |
-
|
253 |
-
} );
|
254 |
-
|
255 |
-
}
|
256 |
-
|
257 |
-
}
|
258 |
-
);
|
259 |
-
|
260 |
-
} );
|
261 |
-
|
262 |
-
// Test the cron response using ajax
|
263 |
-
$.post( ajaxurl, { 'action' : 'hmbkp_cron_test' },
|
264 |
-
function( data ) {
|
265 |
-
if ( data != 1 ) {
|
266 |
-
$( '.wrap > h2' ).after( data );
|
267 |
-
}
|
268 |
-
}
|
269 |
-
);
|
270 |
-
|
271 |
-
// Calculate the estimated backup size
|
272 |
-
if ( $( '.hmbkp-schedule-sentence .calculating' ).size() ) {
|
273 |
-
$.post( ajaxurl, { 'action' : 'hmbkp_calculate', 'hmbkp_schedule_id' : $( '[data-hmbkp-schedule-id]' ).attr( 'data-hmbkp-schedule-id' ) },
|
274 |
-
function( data ) {
|
275 |
-
|
276 |
-
if ( data.indexOf( 'title' ) != -1 )
|
277 |
-
$( '.hmbkp-schedule-sentence' ).replaceWith( data );
|
278 |
-
|
279 |
-
// Fail silently for now
|
280 |
-
else
|
281 |
-
$( '.calculating' ).remove();
|
282 |
-
|
283 |
-
}
|
284 |
-
).error( function() {
|
285 |
-
|
286 |
-
// Fail silently for now
|
287 |
-
$( '.calculating' ).remove();
|
288 |
-
|
289 |
-
} );
|
290 |
-
}
|
291 |
-
|
292 |
-
if ( $( '.hmbkp-schedule-sentence.hmbkp-running' ).size() )
|
293 |
-
hmbkpRedirectOnBackupComplete( $( '[data-hmbkp-schedule-id]' ).attr( 'data-hmbkp-schedule-id' ), true );
|
294 |
-
|
295 |
-
$( document ).on( 'click', '.hmbkp-run', function( e ) {
|
296 |
-
|
297 |
-
$( this ).closest( '.hmbkp-schedule-sentence' ).addClass( 'hmbkp-running' );
|
298 |
-
|
299 |
-
$( '.hmbkp-error' ).removeClass( 'hmbkp-error' );
|
300 |
-
|
301 |
-
scheduleId = $( '[data-hmbkp-schedule-id]' ).attr( 'data-hmbkp-schedule-id' );
|
302 |
-
|
303 |
-
ajaxRequest = $.post(
|
304 |
-
ajaxurl,
|
305 |
-
{ 'action' : 'hmbkp_run_schedule', 'hmbkp_schedule_id' : scheduleId },
|
306 |
-
function( data ) {
|
307 |
-
|
308 |
-
// Backup Succeeded
|
309 |
-
if ( ! data || data == 0 ) {
|
310 |
-
location.reload( true );
|
311 |
-
}
|
312 |
-
|
313 |
-
// The backup failed, show the error and offer to have it emailed back
|
314 |
-
else {
|
315 |
-
|
316 |
-
$( '.hmbkp-schedule-sentence.hmbkp-running' ).removeClass( 'hmbkp-running' ).addClass( 'hmbkp-error' );
|
317 |
-
|
318 |
-
$.post(
|
319 |
-
ajaxurl,
|
320 |
-
{ 'action' : 'hmbkp_backup_error', 'hmbkp_error' : data },
|
321 |
-
function( data ) {
|
322 |
-
|
323 |
-
if ( ! data || data == 0 )
|
324 |
-
return;
|
325 |
-
|
326 |
-
$.fancybox( {
|
327 |
-
'maxWidth' : 500,
|
328 |
-
'content' : data,
|
329 |
-
'modal' : true
|
330 |
-
} );
|
331 |
-
|
332 |
-
}
|
333 |
-
);
|
334 |
-
|
335 |
-
}
|
336 |
-
|
337 |
-
$( document ).one( 'click', '.hmbkp_send_error_via_email', function( e ) {
|
338 |
-
|
339 |
-
e.preventDefault();
|
340 |
-
|
341 |
-
$( this ).addClass( 'hmbkp-ajax-loading' );
|
342 |
-
|
343 |
-
$.post(
|
344 |
-
ajaxurl,
|
345 |
-
{ 'action' : 'hmbkp_email_error', 'hmbkp_error' : data },
|
346 |
-
function( data ) {
|
347 |
-
$.fancybox.close();
|
348 |
-
}
|
349 |
-
|
350 |
-
)
|
351 |
-
|
352 |
-
} );
|
353 |
-
|
354 |
-
}
|
355 |
-
|
356 |
-
// Redirect back on error
|
357 |
-
).error( function( data ) {
|
358 |
-
location.replace( '//' + location.host + location.pathname + '?page=backupwordpress&action=hmbkp_cancel&reason=broken&hmbkp_schedule_id=' + scheduleId );
|
359 |
-
} );
|
360 |
-
|
361 |
-
setTimeout( function() {
|
362 |
-
hmbkpRedirectOnBackupComplete( scheduleId, false )
|
363 |
-
}, 1000 );
|
364 |
-
|
365 |
-
e.preventDefault();
|
366 |
-
|
367 |
-
} );
|
368 |
-
|
369 |
-
} );
|
370 |
-
|
371 |
-
function hmbkpRedirectOnBackupComplete( schedule_id, redirect ) {
|
372 |
-
|
373 |
-
jQuery.post(
|
374 |
-
ajaxurl,
|
375 |
-
{ 'action' : 'hmbkp_is_in_progress', 'hmbkp_schedule_id' : jQuery( '[data-hmbkp-schedule-id]' ).attr( 'data-hmbkp-schedule-id' ) },
|
376 |
-
function( data ) {
|
377 |
-
|
378 |
-
if ( data == 0 && redirect === true ) {
|
379 |
-
location.reload( true );
|
380 |
-
|
381 |
-
} else {
|
382 |
-
|
383 |
-
if ( data != 0 ) {
|
384 |
-
|
385 |
-
redirect = true;
|
386 |
-
|
387 |
-
jQuery( '.hmbkp-status' ).remove();
|
388 |
-
jQuery( '.hmbkp-schedule-actions' ).replaceWith( data );
|
389 |
-
|
390 |
-
}
|
391 |
-
|
392 |
-
setTimeout( function() {
|
393 |
-
hmbkpRedirectOnBackupComplete( schedule_id, redirect );
|
394 |
-
}, 5000 );
|
395 |
-
|
396 |
-
}
|
397 |
-
}
|
398 |
-
);
|
399 |
-
|
400 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/assets/icon_backupwordpress_16x16.png
DELETED
Binary file
|
backupwordpress/assets/icon_backupwordpress_16x16_hover.png
DELETED
Binary file
|
backupwordpress/assets/icon_backupwordpress_32x32.png
DELETED
Binary file
|
backupwordpress/assets/wpspin_light.gif
DELETED
Binary file
|
backupwordpress/backupwordpress.mo
DELETED
Binary file
|
backupwordpress/backupwordpress.po
DELETED
@@ -1,703 +0,0 @@
|
|
1 |
-
msgid ""
|
2 |
-
msgstr ""
|
3 |
-
"Project-Id-Version: BackUpWordPress\n"
|
4 |
-
"Report-Msgid-Bugs-To: \n"
|
5 |
-
"POT-Creation-Date: 2012-11-22 15:37-0000\n"
|
6 |
-
"PO-Revision-Date: 2012-11-22 15:37-0000\n"
|
7 |
-
"Last-Translator: Tom Willmot <tom@humanmade.co.uk>\n"
|
8 |
-
"Language-Team: Human Made Limited <support@humanmade.co.uk>\n"
|
9 |
-
"Language: en_GB\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: __;_e\n"
|
14 |
-
"X-Poedit-Basepath: .\n"
|
15 |
-
"X-Generator: Poedit 1.5.4\n"
|
16 |
-
"X-Poedit-SearchPath-0: .\n"
|
17 |
-
|
18 |
-
#: plugin.php:60
|
19 |
-
msgid "BackUpWordPress requires PHP version 5.2.4 or greater."
|
20 |
-
msgstr ""
|
21 |
-
|
22 |
-
#: plugin.php:71
|
23 |
-
#, php-format
|
24 |
-
msgid "BackUpWordPress requires WordPress version %s or greater."
|
25 |
-
msgstr ""
|
26 |
-
|
27 |
-
#: plugin.php:140 admin/schedule-form.php:54
|
28 |
-
msgid "Update"
|
29 |
-
msgstr ""
|
30 |
-
|
31 |
-
#: plugin.php:141 admin/actions.php:396
|
32 |
-
msgid "Cancel"
|
33 |
-
msgstr ""
|
34 |
-
|
35 |
-
#: plugin.php:142
|
36 |
-
msgid ""
|
37 |
-
"Are you sure you want to delete this schedule? All of it's backups will also "
|
38 |
-
"be deleted."
|
39 |
-
msgstr ""
|
40 |
-
|
41 |
-
#: plugin.php:142 plugin.php:143 plugin.php:144 plugin.php:145
|
42 |
-
msgid "'Cancel' to go back, 'OK' to delete."
|
43 |
-
msgstr ""
|
44 |
-
|
45 |
-
#: plugin.php:143
|
46 |
-
msgid "Are you sure you want to delete this backup?"
|
47 |
-
msgstr ""
|
48 |
-
|
49 |
-
#: plugin.php:144
|
50 |
-
msgid "Are you sure you want to remove this exclude rule?"
|
51 |
-
msgstr ""
|
52 |
-
|
53 |
-
#: plugin.php:145
|
54 |
-
msgid ""
|
55 |
-
"Reducing the number of backups that are stored on this server will cause "
|
56 |
-
"some of your existing backups to be deleted, are you sure that's what you "
|
57 |
-
"want?"
|
58 |
-
msgstr ""
|
59 |
-
|
60 |
-
#: admin/actions.php:192 admin/actions.php:195 functions/interface.php:72
|
61 |
-
#: functions/interface.php:82 functions/interface.php:92
|
62 |
-
msgid "BackUpWordPress has detected a problem."
|
63 |
-
msgstr ""
|
64 |
-
|
65 |
-
#: admin/actions.php:192 admin/actions.php:195
|
66 |
-
#, php-format
|
67 |
-
msgid ""
|
68 |
-
"%1$s is returning a %2$s response which could mean cron jobs aren't getting "
|
69 |
-
"fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. "
|
70 |
-
"See the %3$s for more details."
|
71 |
-
msgstr ""
|
72 |
-
|
73 |
-
#: admin/actions.php:265
|
74 |
-
msgid "Backup type cannot be empty"
|
75 |
-
msgstr ""
|
76 |
-
|
77 |
-
#: admin/actions.php:268
|
78 |
-
msgid "Invalid backup type"
|
79 |
-
msgstr ""
|
80 |
-
|
81 |
-
#: admin/actions.php:278
|
82 |
-
msgid "Schedule cannot be empty"
|
83 |
-
msgstr ""
|
84 |
-
|
85 |
-
#: admin/actions.php:281
|
86 |
-
msgid "Invalid schedule"
|
87 |
-
msgstr ""
|
88 |
-
|
89 |
-
#: admin/actions.php:291
|
90 |
-
msgid "Max backups can't be empty"
|
91 |
-
msgstr ""
|
92 |
-
|
93 |
-
#: admin/actions.php:294
|
94 |
-
msgid "Max backups must be a number"
|
95 |
-
msgstr ""
|
96 |
-
|
97 |
-
#: admin/actions.php:297
|
98 |
-
msgid "Max backups must be greater than 0"
|
99 |
-
msgstr ""
|
100 |
-
|
101 |
-
#: admin/actions.php:392
|
102 |
-
#, php-format
|
103 |
-
msgid "%s didn't match any files."
|
104 |
-
msgstr ""
|
105 |
-
|
106 |
-
#: admin/actions.php:396
|
107 |
-
msgid "Exclude"
|
108 |
-
msgstr ""
|
109 |
-
|
110 |
-
#: admin/actions.php:410
|
111 |
-
msgid "Your BackUp Failed"
|
112 |
-
msgstr ""
|
113 |
-
|
114 |
-
#: admin/actions.php:412
|
115 |
-
msgid "Here's the response from the server:"
|
116 |
-
msgstr ""
|
117 |
-
|
118 |
-
#: admin/actions.php:418 admin/schedule-form-excludes.php:119
|
119 |
-
msgid "Close"
|
120 |
-
msgstr ""
|
121 |
-
|
122 |
-
#: admin/actions.php:419
|
123 |
-
msgid "Email to Support"
|
124 |
-
msgstr ""
|
125 |
-
|
126 |
-
#: admin/backups.php:13
|
127 |
-
msgid "add schedule"
|
128 |
-
msgstr ""
|
129 |
-
|
130 |
-
#: admin/backups.php:37
|
131 |
-
msgid "Size"
|
132 |
-
msgstr ""
|
133 |
-
|
134 |
-
#: admin/backups.php:38
|
135 |
-
msgid "Type"
|
136 |
-
msgstr ""
|
137 |
-
|
138 |
-
#: admin/backups.php:39
|
139 |
-
msgid "Actions"
|
140 |
-
msgstr ""
|
141 |
-
|
142 |
-
#: admin/backups.php:62
|
143 |
-
msgid "This is where your backups will appear once you have one."
|
144 |
-
msgstr ""
|
145 |
-
|
146 |
-
#: admin/constants.php:3
|
147 |
-
#, php-format
|
148 |
-
msgid ""
|
149 |
-
"You can %1$s any of the following %2$s in your %3$s to control advanced "
|
150 |
-
"settings. %4$s. Defined %5$s will be highlighted."
|
151 |
-
msgstr ""
|
152 |
-
|
153 |
-
#: admin/constants.php:3 admin/menu.php:76
|
154 |
-
msgid "Constants"
|
155 |
-
msgstr ""
|
156 |
-
|
157 |
-
#: admin/constants.php:3
|
158 |
-
msgid "The Codex can help"
|
159 |
-
msgstr ""
|
160 |
-
|
161 |
-
#: admin/constants.php:8
|
162 |
-
#, php-format
|
163 |
-
msgid ""
|
164 |
-
"The path to folder you would like to store your backup files in, defaults to "
|
165 |
-
"%s."
|
166 |
-
msgstr ""
|
167 |
-
|
168 |
-
#: admin/constants.php:8 admin/constants.php:11 admin/constants.php:14
|
169 |
-
#: admin/constants.php:17 admin/constants.php:20 admin/constants.php:23
|
170 |
-
#: admin/constants.php:26 admin/constants.php:29
|
171 |
-
msgid "e.g."
|
172 |
-
msgstr ""
|
173 |
-
|
174 |
-
#: admin/constants.php:11
|
175 |
-
#, php-format
|
176 |
-
msgid ""
|
177 |
-
"The path to your %1$s executable. Will be used for the %2$s part of the back "
|
178 |
-
"up if available."
|
179 |
-
msgstr ""
|
180 |
-
|
181 |
-
#: admin/constants.php:11 admin/constants.php:14
|
182 |
-
msgid "database"
|
183 |
-
msgstr ""
|
184 |
-
|
185 |
-
#: admin/constants.php:14
|
186 |
-
#, php-format
|
187 |
-
msgid ""
|
188 |
-
"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s "
|
189 |
-
"if available."
|
190 |
-
msgstr ""
|
191 |
-
|
192 |
-
#: admin/constants.php:14
|
193 |
-
msgid "files"
|
194 |
-
msgstr ""
|
195 |
-
|
196 |
-
#: admin/constants.php:17
|
197 |
-
#, php-format
|
198 |
-
msgid ""
|
199 |
-
"Attempt to email a copy of your backups. Value should be email address to "
|
200 |
-
"send backups to. Defaults to %s."
|
201 |
-
msgstr ""
|
202 |
-
|
203 |
-
#: admin/constants.php:20
|
204 |
-
msgid ""
|
205 |
-
"Comma separated list of files or directories to exclude, the backups "
|
206 |
-
"directory is automatically excluded."
|
207 |
-
msgstr ""
|
208 |
-
|
209 |
-
#: admin/constants.php:23
|
210 |
-
#, php-format
|
211 |
-
msgid "The capability to use when calling %1$s. Defaults to %2$s."
|
212 |
-
msgstr ""
|
213 |
-
|
214 |
-
#: admin/constants.php:26
|
215 |
-
#, php-format
|
216 |
-
msgid "The root directory that is backed up. Defaults to %s."
|
217 |
-
msgstr ""
|
218 |
-
|
219 |
-
#: admin/constants.php:29
|
220 |
-
#, php-format
|
221 |
-
msgid "The time that your schedules should run. Defaults to %s."
|
222 |
-
msgstr ""
|
223 |
-
|
224 |
-
#: admin/menu.php:10 admin/page.php:5
|
225 |
-
msgid "Manage Backups"
|
226 |
-
msgstr ""
|
227 |
-
|
228 |
-
#: admin/menu.php:10 admin/menu.php:34
|
229 |
-
msgid "Backups"
|
230 |
-
msgstr ""
|
231 |
-
|
232 |
-
#: admin/menu.php:69
|
233 |
-
msgid "You are not using the latest stable version of BackUpWordPress"
|
234 |
-
msgstr ""
|
235 |
-
|
236 |
-
#: admin/menu.php:69
|
237 |
-
#, php-format
|
238 |
-
msgid ""
|
239 |
-
"The information below is for version %1$s. View the %2$s file for help "
|
240 |
-
"specific to version %3$s."
|
241 |
-
msgstr ""
|
242 |
-
|
243 |
-
#: admin/menu.php:75
|
244 |
-
msgid "FAQ"
|
245 |
-
msgstr ""
|
246 |
-
|
247 |
-
#: admin/menu.php:79
|
248 |
-
msgid "For more information:"
|
249 |
-
msgstr ""
|
250 |
-
|
251 |
-
#: admin/menu.php:81
|
252 |
-
msgid "Support Forums"
|
253 |
-
msgstr ""
|
254 |
-
|
255 |
-
#: admin/menu.php:82
|
256 |
-
msgid "Help with translation"
|
257 |
-
msgstr ""
|
258 |
-
|
259 |
-
#: admin/page.php:13
|
260 |
-
msgid ""
|
261 |
-
"You need to fix the issues detailed above before BackUpWordPress can start."
|
262 |
-
msgstr ""
|
263 |
-
|
264 |
-
#: admin/page.php:17
|
265 |
-
#, php-format
|
266 |
-
msgid "If your finding BackUpWordPress useful, please %s."
|
267 |
-
msgstr ""
|
268 |
-
|
269 |
-
#: admin/page.php:17
|
270 |
-
msgid "rate it on the plugin directory"
|
271 |
-
msgstr ""
|
272 |
-
|
273 |
-
#: admin/page.php:19
|
274 |
-
msgid ""
|
275 |
-
"If you need help getting things working then check the FAQ by clicking on "
|
276 |
-
"help in the top right hand corner of this page."
|
277 |
-
msgstr ""
|
278 |
-
|
279 |
-
#: admin/schedule-form-excludes.php:7
|
280 |
-
msgid "Manage Excludes"
|
281 |
-
msgstr ""
|
282 |
-
|
283 |
-
#: admin/schedule-form-excludes.php:13
|
284 |
-
msgid "New Exclude Rule[s]"
|
285 |
-
msgstr ""
|
286 |
-
|
287 |
-
#: admin/schedule-form-excludes.php:19
|
288 |
-
msgid "Preview"
|
289 |
-
msgstr ""
|
290 |
-
|
291 |
-
#: admin/schedule-form-excludes.php:29
|
292 |
-
msgid "Exclude Rules"
|
293 |
-
msgstr ""
|
294 |
-
|
295 |
-
#: admin/schedule-form-excludes.php:44
|
296 |
-
msgid "default"
|
297 |
-
msgstr ""
|
298 |
-
|
299 |
-
#: admin/schedule-form-excludes.php:48
|
300 |
-
msgid "defined"
|
301 |
-
msgstr ""
|
302 |
-
|
303 |
-
#: admin/schedule-form-excludes.php:52
|
304 |
-
msgid "Remove"
|
305 |
-
msgstr ""
|
306 |
-
|
307 |
-
#: admin/schedule-form-excludes.php:71
|
308 |
-
msgid "Excluded"
|
309 |
-
msgstr ""
|
310 |
-
|
311 |
-
#: admin/schedule-form-excludes.php:75
|
312 |
-
msgid "Included"
|
313 |
-
msgstr ""
|
314 |
-
|
315 |
-
#: admin/schedule-form-excludes.php:79
|
316 |
-
msgid "Unreadable"
|
317 |
-
msgstr ""
|
318 |
-
|
319 |
-
#: admin/schedule-form-excludes.php:107
|
320 |
-
msgid "Unreadable files can't be backed up"
|
321 |
-
msgstr ""
|
322 |
-
|
323 |
-
#: admin/schedule-form-excludes.php:113
|
324 |
-
#, php-format
|
325 |
-
msgid "Your site is %s. Backups will be compressed and so will be smaller."
|
326 |
-
msgstr ""
|
327 |
-
|
328 |
-
#: admin/schedule-form.php:7
|
329 |
-
msgid "Schedule Settings"
|
330 |
-
msgstr ""
|
331 |
-
|
332 |
-
#: admin/schedule-form.php:11
|
333 |
-
msgid "Backup"
|
334 |
-
msgstr ""
|
335 |
-
|
336 |
-
#: admin/schedule-form.php:14
|
337 |
-
msgid "Both Database & files"
|
338 |
-
msgstr ""
|
339 |
-
|
340 |
-
#: admin/schedule-form.php:15
|
341 |
-
msgid "Files only"
|
342 |
-
msgstr ""
|
343 |
-
|
344 |
-
#: admin/schedule-form.php:16
|
345 |
-
msgid "Database only"
|
346 |
-
msgstr ""
|
347 |
-
|
348 |
-
#: admin/schedule-form.php:23
|
349 |
-
msgid "Schedule"
|
350 |
-
msgstr ""
|
351 |
-
|
352 |
-
#: admin/schedule-form.php:27
|
353 |
-
msgid "Manual Only"
|
354 |
-
msgstr ""
|
355 |
-
|
356 |
-
#: admin/schedule-form.php:41
|
357 |
-
msgid "Number of backups to store on this server"
|
358 |
-
msgstr ""
|
359 |
-
|
360 |
-
#: admin/schedule-form.php:45
|
361 |
-
msgid ""
|
362 |
-
"The number of previous backups to store on the server. past this limit older "
|
363 |
-
"backups will be deleted automatically."
|
364 |
-
msgstr ""
|
365 |
-
|
366 |
-
#: admin/schedule.php:4
|
367 |
-
msgid "Backups will be compressed and should be smaller than this."
|
368 |
-
msgstr ""
|
369 |
-
|
370 |
-
#: admin/schedule.php:4
|
371 |
-
msgid "this shouldn't take long…"
|
372 |
-
msgstr ""
|
373 |
-
|
374 |
-
#: admin/schedule.php:4
|
375 |
-
msgid "calculating the size of your site…"
|
376 |
-
msgstr ""
|
377 |
-
|
378 |
-
#: admin/schedule.php:12
|
379 |
-
#, php-format
|
380 |
-
msgid "The next backup will be on %1$s at %2$s"
|
381 |
-
msgstr ""
|
382 |
-
|
383 |
-
#: admin/schedule.php:19
|
384 |
-
msgid "hourly on the hour"
|
385 |
-
msgstr ""
|
386 |
-
|
387 |
-
#: admin/schedule.php:19
|
388 |
-
#, php-format
|
389 |
-
msgid "hourly at %s minutes past the hour"
|
390 |
-
msgstr ""
|
391 |
-
|
392 |
-
#: admin/schedule.php:25
|
393 |
-
#, php-format
|
394 |
-
msgid "daily at %s"
|
395 |
-
msgstr ""
|
396 |
-
|
397 |
-
#: admin/schedule.php:37
|
398 |
-
#, php-format
|
399 |
-
msgid "every 12 hours at %1$s & %2$s"
|
400 |
-
msgstr ""
|
401 |
-
|
402 |
-
#: admin/schedule.php:43
|
403 |
-
#, php-format
|
404 |
-
msgid "weekly on %1$s at %2$s"
|
405 |
-
msgstr ""
|
406 |
-
|
407 |
-
#: admin/schedule.php:49
|
408 |
-
#, php-format
|
409 |
-
msgid "fortnightly on %1$s at %2$s"
|
410 |
-
msgstr ""
|
411 |
-
|
412 |
-
#: admin/schedule.php:56
|
413 |
-
#, php-format
|
414 |
-
msgid "on the %1$s of each month at %2$s"
|
415 |
-
msgstr ""
|
416 |
-
|
417 |
-
#: admin/schedule.php:62
|
418 |
-
msgid "manually"
|
419 |
-
msgstr ""
|
420 |
-
|
421 |
-
#: admin/schedule.php:68
|
422 |
-
msgid "this server"
|
423 |
-
msgstr ""
|
424 |
-
|
425 |
-
#: admin/schedule.php:75
|
426 |
-
#, php-format
|
427 |
-
msgid "store the only the last backup on %s"
|
428 |
-
msgstr ""
|
429 |
-
|
430 |
-
#: admin/schedule.php:81
|
431 |
-
#, php-format
|
432 |
-
msgid "don't store any backups on %s"
|
433 |
-
msgstr ""
|
434 |
-
|
435 |
-
#: admin/schedule.php:87
|
436 |
-
#, php-format
|
437 |
-
msgid "store only the last %1$s backups on %2$s"
|
438 |
-
msgstr ""
|
439 |
-
|
440 |
-
#: admin/schedule.php:96
|
441 |
-
#, php-format
|
442 |
-
msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s"
|
443 |
-
msgstr ""
|
444 |
-
|
445 |
-
#: classes/email.php:19
|
446 |
-
msgid "Email notification"
|
447 |
-
msgstr ""
|
448 |
-
|
449 |
-
#: classes/email.php:23
|
450 |
-
msgid ""
|
451 |
-
"Receive a notification email when a backup completes, if the backup is small "
|
452 |
-
"enough (< 10mb) then it will be attached to the email. Separate multiple "
|
453 |
-
"email address's with a comma."
|
454 |
-
msgstr ""
|
455 |
-
|
456 |
-
#: classes/email.php:50
|
457 |
-
#, php-format
|
458 |
-
msgid "Send an email notification to %s"
|
459 |
-
msgstr ""
|
460 |
-
|
461 |
-
#: classes/email.php:72
|
462 |
-
#, php-format
|
463 |
-
msgid "%s isn't a valid email"
|
464 |
-
msgstr ""
|
465 |
-
|
466 |
-
#: classes/email.php:127
|
467 |
-
#, php-format
|
468 |
-
msgid "Backup of %s Failed"
|
469 |
-
msgstr ""
|
470 |
-
|
471 |
-
#: classes/email.php:129
|
472 |
-
#, php-format
|
473 |
-
msgid "BackUpWordPress was unable to backup your site %1$s."
|
474 |
-
msgstr ""
|
475 |
-
|
476 |
-
#: classes/email.php:129
|
477 |
-
msgid "Here are the errors that we're encountered:"
|
478 |
-
msgstr ""
|
479 |
-
|
480 |
-
#: classes/email.php:129
|
481 |
-
#, php-format
|
482 |
-
msgid ""
|
483 |
-
"If the errors above look like Martian, forward this email to %3$s and we'll "
|
484 |
-
"take a look"
|
485 |
-
msgstr ""
|
486 |
-
|
487 |
-
#: classes/email.php:129
|
488 |
-
msgid ""
|
489 |
-
"Kind Regards,\n"
|
490 |
-
"The Apologetic BackUpWordPress Backup Emailing Robot"
|
491 |
-
msgstr ""
|
492 |
-
|
493 |
-
#: classes/email.php:137
|
494 |
-
#, php-format
|
495 |
-
msgid "Backup of %s"
|
496 |
-
msgstr ""
|
497 |
-
|
498 |
-
#: classes/email.php:142 classes/email.php:151
|
499 |
-
#, php-format
|
500 |
-
msgid "BackUpWordPress has completed a backup of your site %1$s."
|
501 |
-
msgstr ""
|
502 |
-
|
503 |
-
#: classes/email.php:142
|
504 |
-
msgid "The backup file should be attached to this email."
|
505 |
-
msgstr ""
|
506 |
-
|
507 |
-
#: classes/email.php:142 classes/email.php:151
|
508 |
-
msgid "You can download the backup file by clicking the link below:"
|
509 |
-
msgstr ""
|
510 |
-
|
511 |
-
#: classes/email.php:142 classes/email.php:151
|
512 |
-
msgid ""
|
513 |
-
"Kind Regards,\n"
|
514 |
-
"The Happy BackUpWordPress Backup Emailing Robot"
|
515 |
-
msgstr ""
|
516 |
-
|
517 |
-
#: classes/email.php:151
|
518 |
-
msgid "Unfortunately the backup file was too large to attach to this email."
|
519 |
-
msgstr ""
|
520 |
-
|
521 |
-
#: classes/schedule.php:512 functions/interface.php:252
|
522 |
-
msgid "Starting Backup"
|
523 |
-
msgstr ""
|
524 |
-
|
525 |
-
#: classes/schedule.php:582
|
526 |
-
#, php-format
|
527 |
-
msgid "Dumping Database %s"
|
528 |
-
msgstr ""
|
529 |
-
|
530 |
-
#: classes/schedule.php:588
|
531 |
-
#, php-format
|
532 |
-
msgid "Verifying Database Dump %s"
|
533 |
-
msgstr ""
|
534 |
-
|
535 |
-
#: classes/schedule.php:594
|
536 |
-
#, php-format
|
537 |
-
msgid "Creating zip archive %s"
|
538 |
-
msgstr ""
|
539 |
-
|
540 |
-
#: classes/schedule.php:600
|
541 |
-
#, php-format
|
542 |
-
msgid "Verifying Zip Archive %s"
|
543 |
-
msgstr ""
|
544 |
-
|
545 |
-
#: classes/schedule.php:606
|
546 |
-
msgid "Finishing Backup"
|
547 |
-
msgstr ""
|
548 |
-
|
549 |
-
#: classes/wp-cli.php:16
|
550 |
-
#, php-format
|
551 |
-
msgid "BackUpWordPress may not work when php is running with %s on"
|
552 |
-
msgstr ""
|
553 |
-
|
554 |
-
#: classes/wp-cli.php:19
|
555 |
-
msgid "Backup: Dumping database..."
|
556 |
-
msgstr ""
|
557 |
-
|
558 |
-
#: classes/wp-cli.php:23
|
559 |
-
msgid "Backup: Zipping everything up..."
|
560 |
-
msgstr ""
|
561 |
-
|
562 |
-
#: classes/wp-cli.php:38
|
563 |
-
msgid "Invalid backup path"
|
564 |
-
msgstr ""
|
565 |
-
|
566 |
-
#: classes/wp-cli.php:43
|
567 |
-
msgid "Invalid root path"
|
568 |
-
msgstr ""
|
569 |
-
|
570 |
-
#: classes/wp-cli.php:68
|
571 |
-
msgid "Backup Complete: "
|
572 |
-
msgstr ""
|
573 |
-
|
574 |
-
#: classes/wp-cli.php:71
|
575 |
-
msgid "Backup Failed"
|
576 |
-
msgstr ""
|
577 |
-
|
578 |
-
#: functions/core.php:202
|
579 |
-
msgid "BackUpWordPress has setup your default schedules."
|
580 |
-
msgstr ""
|
581 |
-
|
582 |
-
#: functions/core.php:202
|
583 |
-
msgid ""
|
584 |
-
"By default BackUpWordPress performs a daily backup of your database and a "
|
585 |
-
"weekly backup of your database & files. You can modify these schedules."
|
586 |
-
msgstr ""
|
587 |
-
|
588 |
-
#: functions/core.php:293
|
589 |
-
#, php-format
|
590 |
-
msgid ""
|
591 |
-
"This %s file ensures that other people cannot download your backup files."
|
592 |
-
msgstr ""
|
593 |
-
|
594 |
-
#: functions/interface.php:27
|
595 |
-
msgid "Download"
|
596 |
-
msgstr ""
|
597 |
-
|
598 |
-
#: functions/interface.php:28 functions/interface.php:264
|
599 |
-
msgid "Delete"
|
600 |
-
msgstr ""
|
601 |
-
|
602 |
-
#: functions/interface.php:50 functions/interface.php:62
|
603 |
-
msgid "BackUpWordPress is almost ready."
|
604 |
-
msgstr ""
|
605 |
-
|
606 |
-
#: functions/interface.php:50
|
607 |
-
#, php-format
|
608 |
-
msgid ""
|
609 |
-
"The backups directory can't be created because your %1$s directory isn't "
|
610 |
-
"writable, run %2$s or %3$s or create the folder yourself."
|
611 |
-
msgstr ""
|
612 |
-
|
613 |
-
#: functions/interface.php:62
|
614 |
-
#, php-format
|
615 |
-
msgid ""
|
616 |
-
"Your backups directory isn't writable, run %1$s or %2$s or set the "
|
617 |
-
"permissions yourself."
|
618 |
-
msgstr ""
|
619 |
-
|
620 |
-
#: functions/interface.php:72
|
621 |
-
#, php-format
|
622 |
-
msgid ""
|
623 |
-
"%1$s is running in %2$s, please contact your host and ask them to disable "
|
624 |
-
"it. BackUpWordPress may not work correctly whilst %3$s is on."
|
625 |
-
msgstr ""
|
626 |
-
|
627 |
-
#: functions/interface.php:72
|
628 |
-
msgid "http://php.net/manual/en/features.safe-mode.php"
|
629 |
-
msgstr ""
|
630 |
-
|
631 |
-
#: functions/interface.php:72
|
632 |
-
msgid "Safe Mode"
|
633 |
-
msgstr ""
|
634 |
-
|
635 |
-
#: functions/interface.php:82
|
636 |
-
#, php-format
|
637 |
-
msgid ""
|
638 |
-
"Your custom backups directory %1$s doesn't exist and can't be created, your "
|
639 |
-
"backups will be saved to %2$s instead."
|
640 |
-
msgstr ""
|
641 |
-
|
642 |
-
#: functions/interface.php:92
|
643 |
-
#, php-format
|
644 |
-
msgid ""
|
645 |
-
"Your custom backups directory %1$s isn't writable, new backups will be saved "
|
646 |
-
"to %2$s instead."
|
647 |
-
msgstr ""
|
648 |
-
|
649 |
-
#: functions/interface.php:102
|
650 |
-
msgid "BackUpWordPress detected issues with your last backup."
|
651 |
-
msgstr ""
|
652 |
-
|
653 |
-
#: functions/interface.php:111
|
654 |
-
msgid "BackUpWordPress failed to perform the backup."
|
655 |
-
msgstr ""
|
656 |
-
|
657 |
-
#: functions/interface.php:111
|
658 |
-
msgid "You have likely hit a memory limit."
|
659 |
-
msgstr ""
|
660 |
-
|
661 |
-
#: functions/interface.php:227
|
662 |
-
msgid "Database and Files"
|
663 |
-
msgstr ""
|
664 |
-
|
665 |
-
#: functions/interface.php:230
|
666 |
-
msgid "Files"
|
667 |
-
msgstr ""
|
668 |
-
|
669 |
-
#: functions/interface.php:233
|
670 |
-
msgid "Database"
|
671 |
-
msgstr ""
|
672 |
-
|
673 |
-
#: functions/interface.php:238
|
674 |
-
msgid "Legacy"
|
675 |
-
msgstr ""
|
676 |
-
|
677 |
-
#: functions/interface.php:252
|
678 |
-
msgid "cancel"
|
679 |
-
msgstr ""
|
680 |
-
|
681 |
-
#: functions/interface.php:256
|
682 |
-
msgid "Settings"
|
683 |
-
msgstr ""
|
684 |
-
|
685 |
-
#: functions/interface.php:259
|
686 |
-
msgid "Excludes"
|
687 |
-
msgstr ""
|
688 |
-
|
689 |
-
#: functions/interface.php:262
|
690 |
-
msgid "Run now"
|
691 |
-
msgstr ""
|
692 |
-
|
693 |
-
#: hm-backup/hm-backup.php:906
|
694 |
-
msgid "The mysqldump file was not created"
|
695 |
-
msgstr ""
|
696 |
-
|
697 |
-
#: hm-backup/hm-backup.php:931
|
698 |
-
msgid "The backup file was not created"
|
699 |
-
msgstr ""
|
700 |
-
|
701 |
-
#: hm-backup/hm-backup.php:951
|
702 |
-
msgid "The following files are unreadable and couldn't be backed up: "
|
703 |
-
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/classes/email.php
DELETED
@@ -1,164 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Email notifications for backups
|
5 |
-
*
|
6 |
-
* @extends HMBKP_Service
|
7 |
-
*/
|
8 |
-
class HMBKP_Email_Service extends HMBKP_Service {
|
9 |
-
|
10 |
-
/**
|
11 |
-
* Output the email form field
|
12 |
-
*
|
13 |
-
* @access public
|
14 |
-
*/
|
15 |
-
public function field() { ?>
|
16 |
-
|
17 |
-
<label>
|
18 |
-
|
19 |
-
<?php _e( 'Email notification', 'hmbkp' ); ?>
|
20 |
-
|
21 |
-
<input type="email" name="<?php echo $this->get_field_name( 'email' ); ?>" value="<?php echo $this->get_field_value( 'email' ); ?>" />
|
22 |
-
|
23 |
-
<p class="description"><?php _e( 'Receive a notification email when a backup completes, if the backup is small enough (< 10mb) then it will be attached to the email. Separate multiple email address\'s with a comma.', 'hmbkp' ); ?></p>
|
24 |
-
|
25 |
-
</label>
|
26 |
-
|
27 |
-
<?php }
|
28 |
-
|
29 |
-
/**
|
30 |
-
* Not used as we only need a field
|
31 |
-
*
|
32 |
-
* @see field
|
33 |
-
* @return string Empty string
|
34 |
-
*/
|
35 |
-
public function form() {
|
36 |
-
return '';
|
37 |
-
}
|
38 |
-
|
39 |
-
/**
|
40 |
-
* The sentence fragment that is output as part of the schedule sentence
|
41 |
-
*
|
42 |
-
* @return string The sentence fragment
|
43 |
-
*/
|
44 |
-
public function display() {
|
45 |
-
|
46 |
-
if ( $emails = $this->get_email_address_array() ) {
|
47 |
-
|
48 |
-
$email = '<code>' . implode( '</code>, <code>', $emails ) . '</code>';
|
49 |
-
|
50 |
-
return sprintf( __( 'Send an email notification to %s', 'hmbkp' ), $email );
|
51 |
-
|
52 |
-
}
|
53 |
-
|
54 |
-
}
|
55 |
-
|
56 |
-
/**
|
57 |
-
* Validate the email and return an error if validation fails
|
58 |
-
*
|
59 |
-
* @param array &$new_data Array of new data, passed by reference
|
60 |
-
* @param array $old_data The data we are replacing
|
61 |
-
* @return null|array Null on success, array of errors if validation failed
|
62 |
-
*/
|
63 |
-
public function update( &$new_data, $old_data ) {
|
64 |
-
|
65 |
-
$errors = array();
|
66 |
-
|
67 |
-
if ( isset( $new_data['email'] ) ) {
|
68 |
-
|
69 |
-
if ( ! empty( $new_data['email'] ) )
|
70 |
-
foreach( explode( ',', $new_data['email'] ) as $email )
|
71 |
-
if ( ! is_email( trim( $email ) ) )
|
72 |
-
$errors['email'] = sprintf( __( '%s isn\'t a valid email', 'hmbkp' ), esc_attr( $email ) );
|
73 |
-
|
74 |
-
|
75 |
-
if ( ! empty( $errors['email'] ) )
|
76 |
-
$new_data['email'] = '';
|
77 |
-
|
78 |
-
}
|
79 |
-
|
80 |
-
return $errors;
|
81 |
-
|
82 |
-
}
|
83 |
-
|
84 |
-
/**
|
85 |
-
* Get an array or validated email address's
|
86 |
-
* @return array An array of validated email address's
|
87 |
-
*/
|
88 |
-
private function get_email_address_array() {
|
89 |
-
|
90 |
-
$emails = array_map( 'trim', explode( ',', $this->get_field_value( 'email' ) ) );
|
91 |
-
|
92 |
-
return array_filter( array_unique( $emails ), 'is_email' );
|
93 |
-
|
94 |
-
}
|
95 |
-
|
96 |
-
/**
|
97 |
-
* Fire the email notification on the hmbkp_backup_complete
|
98 |
-
*
|
99 |
-
* @see HM_Backup::do_action
|
100 |
-
* @param string $action The action received from the backup
|
101 |
-
* @return void
|
102 |
-
*/
|
103 |
-
public function action( $action ) {
|
104 |
-
|
105 |
-
if ( $action == 'hmbkp_backup_complete' && $this->get_email_address_array() ) {
|
106 |
-
|
107 |
-
$file = $this->schedule->get_archive_filepath();
|
108 |
-
|
109 |
-
$sent = false;
|
110 |
-
|
111 |
-
$download = add_query_arg( 'hmbkp_download', base64_encode( $file ), HMBKP_ADMIN_URL );
|
112 |
-
$domain = parse_url( home_url(), PHP_URL_HOST ) . parse_url( home_url(), PHP_URL_PATH );
|
113 |
-
|
114 |
-
$headers = 'From: BackUpWordPress <' . get_bloginfo( 'admin_email' ) . '>' . "\r\n";
|
115 |
-
|
116 |
-
// The backup failed, send a message saying as much
|
117 |
-
if ( ! file_exists( $file ) && ( $errors = array_merge( $this->schedule->get_errors(), $this->schedule->get_warnings() ) ) ) {
|
118 |
-
|
119 |
-
$error_message = '';
|
120 |
-
|
121 |
-
foreach ( $errors as $error_set )
|
122 |
-
$error_message .= implode( "\n - ", $error_set );
|
123 |
-
|
124 |
-
if ( $error_message )
|
125 |
-
$error_message = ' - ' . $error_message;
|
126 |
-
|
127 |
-
$subject = sprintf( __( 'Backup of %s Failed', 'hmbkp' ), $domain );
|
128 |
-
|
129 |
-
$message = sprintf( __( 'BackUpWordPress was unable to backup your site %1$s.', 'hmbkp' ) . "\n\n" . __( 'Here are the errors that we\'re encountered:', 'hmbkp' ) . "\n\n" . '%2$s' . "\n\n" . __( 'If the errors above look like Martian, forward this email to %3$s and we\'ll take a look', 'hmbkp' ) . "\n\n" . __( "Kind Regards,\nThe Apologetic BackUpWordPress Backup Emailing Robot", 'hmbkp' ), home_url(), $error_message, 'support@hmn.md' );
|
130 |
-
|
131 |
-
$sent = wp_mail( $this->get_email_address_array(), $subject, $message, $headers );
|
132 |
-
|
133 |
-
return;
|
134 |
-
|
135 |
-
}
|
136 |
-
|
137 |
-
$subject = sprintf( __( 'Backup of %s', 'hmbkp' ), $domain );
|
138 |
-
|
139 |
-
// If it's larger than 10MB assume it's not going to be able to send the backup
|
140 |
-
if ( filesize( $file ) < 1000 * 1000 * 10 ) {
|
141 |
-
|
142 |
-
$message = sprintf( __( 'BackUpWordPress has completed a backup of your site %1$s.', 'hmbkp' ) . "\n\n" . __( 'The backup file should be attached to this email.', 'hmbkp' ) . "\n\n" . __( 'You can download the backup file by clicking the link below:', 'hmbkp' ) . "\n\n" . '%2$s' . "\n\n" . __( "Kind Regards,\nThe Happy BackUpWordPress Backup Emailing Robot", 'hmbkp' ), home_url(), $download );
|
143 |
-
|
144 |
-
$sent = wp_mail( $this->get_email_address_array(), $subject, $message, $headers, $file );
|
145 |
-
|
146 |
-
}
|
147 |
-
|
148 |
-
// If we didn't send the email above then send just the notification
|
149 |
-
if ( ! $sent ) {
|
150 |
-
|
151 |
-
$message = sprintf( __( 'BackUpWordPress has completed a backup of your site %1$s.', 'hmbkp' ) . "\n\n" . __( 'Unfortunately the backup file was too large to attach to this email.', 'hmbkp' ) . "\n\n" . __( 'You can download the backup file by clicking the link below:', 'hmbkp' ) . "\n\n" . '%2$s' . "\n\n" . __( "Kind Regards,\nThe Happy BackUpWordPress Backup Emailing Robot", 'hmbkp' ), home_url(), $download );
|
152 |
-
|
153 |
-
$sent = wp_mail( $this->get_email_address_array(), $subject, $message, $headers );
|
154 |
-
|
155 |
-
}
|
156 |
-
|
157 |
-
}
|
158 |
-
|
159 |
-
}
|
160 |
-
|
161 |
-
}
|
162 |
-
|
163 |
-
// Register the service
|
164 |
-
HMBKP_Services::register( __FILE__, 'HMBKP_Email_Service' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/classes/schedule.php
DELETED
@@ -1,771 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Extend HM Backup with scheduling and backup file management
|
5 |
-
*
|
6 |
-
* @extends HM_Backup
|
7 |
-
*/
|
8 |
-
class HMBKP_Scheduled_Backup extends HM_Backup {
|
9 |
-
|
10 |
-
/**
|
11 |
-
* The unique schedule id
|
12 |
-
*
|
13 |
-
* @var string
|
14 |
-
* @access private
|
15 |
-
*/
|
16 |
-
private $id = '';
|
17 |
-
|
18 |
-
/**
|
19 |
-
* The slugified version of the schedule name
|
20 |
-
*
|
21 |
-
* @var string
|
22 |
-
* @access private
|
23 |
-
*/
|
24 |
-
private $slug = '';
|
25 |
-
|
26 |
-
/**
|
27 |
-
* The raw schedule options from the database
|
28 |
-
*
|
29 |
-
* @var array
|
30 |
-
* @access private
|
31 |
-
*/
|
32 |
-
private $options = array();
|
33 |
-
|
34 |
-
/**
|
35 |
-
* The filepath for the .running file which
|
36 |
-
* is used to track whether a backup is currently in
|
37 |
-
* progress
|
38 |
-
*/
|
39 |
-
private $schedule_running_filepath = '';
|
40 |
-
|
41 |
-
/**
|
42 |
-
* The schedule start time
|
43 |
-
*
|
44 |
-
* (default value: current_time( 'timestamp' ))
|
45 |
-
*
|
46 |
-
* @var mixed
|
47 |
-
* @access private
|
48 |
-
*/
|
49 |
-
private $schedule_start_time = 0;
|
50 |
-
|
51 |
-
/**
|
52 |
-
* Setup the schedule object
|
53 |
-
*
|
54 |
-
* Loads the options from the database and populates properties
|
55 |
-
*
|
56 |
-
* @access public
|
57 |
-
* @param string $id
|
58 |
-
*/
|
59 |
-
public function __construct( $id ) {
|
60 |
-
|
61 |
-
// Verify the schedule id
|
62 |
-
if ( ! is_string( $id ) || ! trim( $id ) || ! is_string( $id ) )
|
63 |
-
throw new Exception( 'Argument 1 for ' . __METHOD__ . ' must be a non empty string' );
|
64 |
-
|
65 |
-
// Setup HM Backup
|
66 |
-
parent::__construct();
|
67 |
-
|
68 |
-
// Store id for later
|
69 |
-
$this->id = $id;
|
70 |
-
|
71 |
-
// Load the options
|
72 |
-
$this->options = array_filter( (array) get_option( 'hmbkp_schedule_' . $this->get_id() ) );
|
73 |
-
|
74 |
-
// Some properties can be overridden with defines
|
75 |
-
if ( defined( 'HMBKP_ROOT' ) && HMBKP_ROOT )
|
76 |
-
$this->set_root( HMBKP_ROOT );
|
77 |
-
|
78 |
-
if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH )
|
79 |
-
$this->set_path( HMBKP_PATH );
|
80 |
-
|
81 |
-
if ( defined( 'HMBKP_EXCLUDE' ) && HMBKP_EXCLUDE )
|
82 |
-
parent::set_excludes( HMBKP_EXCLUDE, true );
|
83 |
-
|
84 |
-
if ( defined( 'HMBKP_MYSQLDUMP_PATH' ) )
|
85 |
-
$this->set_mysqldump_command_path( HMBKP_MYSQLDUMP_PATH );
|
86 |
-
|
87 |
-
if ( defined( 'HMBKP_ZIP_PATH' ) )
|
88 |
-
$this->set_zip_command_path( HMBKP_ZIP_PATH );
|
89 |
-
|
90 |
-
if ( defined( 'HMBKP_ZIP_PATH' ) && HMBKP_ZIP_PATH === 'PclZip' && $this->skip_zip_archive = true )
|
91 |
-
$this->set_zip_command_path( false );
|
92 |
-
|
93 |
-
// Set the path - TODO remove external function dependancy
|
94 |
-
$this->set_path( hmbkp_path() );
|
95 |
-
|
96 |
-
// Set the archive filename to site name + schedule slug + date
|
97 |
-
$this->set_archive_filename( implode( '-', array( sanitize_title( str_ireplace( array( 'http://', 'https://', 'www' ), '', home_url() ) ), $this->get_id(), $this->get_type(), date( 'Y-m-d-H-i-s', current_time( 'timestamp' ) ) ) ) . '.zip' );
|
98 |
-
|
99 |
-
// Setup the schedule if it isn't set or TODO if it's changed
|
100 |
-
if ( ( ! $this->get_next_occurrence() && in_array( $this->get_reoccurrence(), array_keys( wp_get_schedules() ) ) ) || ( date( get_option( 'time_format' ), strtotime( HMBKP_SCHEDULE_TIME ) - ( get_option( 'gmt_offset' ) * 3600 ) ) !== date( get_option( 'time_format' ), $this->get_next_occurrence() ) ) )
|
101 |
-
$this->schedule();
|
102 |
-
|
103 |
-
}
|
104 |
-
|
105 |
-
/**
|
106 |
-
* Get the id for this schedule
|
107 |
-
*
|
108 |
-
* @access public
|
109 |
-
*/
|
110 |
-
public function get_id() {
|
111 |
-
return esc_attr( $this->id );
|
112 |
-
}
|
113 |
-
|
114 |
-
/**
|
115 |
-
* Get a slugified version of name
|
116 |
-
*
|
117 |
-
* @access public
|
118 |
-
*/
|
119 |
-
public function get_slug() {
|
120 |
-
|
121 |
-
// We cache slug in $this to save expensive calls to sanitize_title
|
122 |
-
if ( isset( $this->slug ) )
|
123 |
-
return $this->slug;
|
124 |
-
|
125 |
-
return $this->slug = sanitize_title( $this->get_name() );
|
126 |
-
|
127 |
-
}
|
128 |
-
|
129 |
-
/**
|
130 |
-
* Get the name of this backup schedule
|
131 |
-
*
|
132 |
-
* @access public
|
133 |
-
* @return string
|
134 |
-
*/
|
135 |
-
public function get_name() {
|
136 |
-
|
137 |
-
return ucwords( $this->get_type() ) . ' ' . $this->get_reoccurrence();
|
138 |
-
|
139 |
-
}
|
140 |
-
|
141 |
-
/**
|
142 |
-
* Get the type of backup
|
143 |
-
*
|
144 |
-
* @access public
|
145 |
-
* @return string
|
146 |
-
*/
|
147 |
-
public function get_type() {
|
148 |
-
|
149 |
-
if ( empty( $this->options['type'] ) )
|
150 |
-
$this->set_type( 'complete' );
|
151 |
-
|
152 |
-
return $this->options['type'];
|
153 |
-
|
154 |
-
}
|
155 |
-
|
156 |
-
/**
|
157 |
-
* Set the type of backup
|
158 |
-
*
|
159 |
-
* @access public
|
160 |
-
* @param string $type
|
161 |
-
*/
|
162 |
-
public function set_type( $type ) {
|
163 |
-
|
164 |
-
parent::set_type( $type );
|
165 |
-
|
166 |
-
$this->options['type'] = $type;
|
167 |
-
|
168 |
-
$this->clear_filesize_cache();
|
169 |
-
|
170 |
-
}
|
171 |
-
|
172 |
-
/**
|
173 |
-
* Get the exclude rules
|
174 |
-
*
|
175 |
-
* @access public
|
176 |
-
* @return array
|
177 |
-
*/
|
178 |
-
public function get_excludes() {
|
179 |
-
|
180 |
-
if ( ! empty( $this->options['excludes'] ) )
|
181 |
-
parent::set_excludes( $this->options['excludes'] );
|
182 |
-
|
183 |
-
return parent::get_excludes();
|
184 |
-
|
185 |
-
}
|
186 |
-
|
187 |
-
/**
|
188 |
-
* Set the exclude rules
|
189 |
-
*
|
190 |
-
* @access public
|
191 |
-
* @param mixed $excludes A comma separated list or array of exclude rules
|
192 |
-
* @param bool $append Whether to replace or append to existing rules
|
193 |
-
* @return string
|
194 |
-
*/
|
195 |
-
public function set_excludes( $excludes, $append = false ) {
|
196 |
-
|
197 |
-
// Use the validation from HM_Backup::set_excludes
|
198 |
-
parent::set_excludes( $excludes, $append );
|
199 |
-
|
200 |
-
// If these are valid excludes and they are different save them
|
201 |
-
if ( parent::get_excludes() && ( empty( $this->options['excludes'] ) || $this->options['excludes'] !== parent::get_excludes() ) ) {
|
202 |
-
|
203 |
-
$this->options['excludes'] = $append && ! empty( $this->options['excludes'] ) ? array_merge( (array) $this->options['excludes'], parent::get_excludes() ) : parent::get_excludes();;
|
204 |
-
|
205 |
-
parent::set_excludes( $this->options['excludes'] );
|
206 |
-
|
207 |
-
$this->clear_filesize_cache();
|
208 |
-
|
209 |
-
}
|
210 |
-
|
211 |
-
}
|
212 |
-
|
213 |
-
/**
|
214 |
-
* Get the maximum number of backups to keep
|
215 |
-
*
|
216 |
-
* @access public
|
217 |
-
*/
|
218 |
-
public function get_max_backups() {
|
219 |
-
|
220 |
-
if ( empty( $this->options['max_backups'] ) )
|
221 |
-
$this->set_max_backups( 10 );
|
222 |
-
|
223 |
-
return (int) esc_attr( $this->options['max_backups'] );
|
224 |
-
|
225 |
-
}
|
226 |
-
|
227 |
-
/**
|
228 |
-
* Set the maximum number of backups to keep
|
229 |
-
*
|
230 |
-
* @access public
|
231 |
-
* @param int $max
|
232 |
-
*/
|
233 |
-
public function set_max_backups( $max ) {
|
234 |
-
|
235 |
-
if ( empty( $max ) || ! is_int( $max ) )
|
236 |
-
throw new Exception( 'Argument 1 for ' . __METHOD__ . ' must be a valid integer' );
|
237 |
-
|
238 |
-
$this->options['max_backups'] = $max;
|
239 |
-
|
240 |
-
}
|
241 |
-
|
242 |
-
/**
|
243 |
-
* Get the array of services options for this schedule
|
244 |
-
*
|
245 |
-
* @access public
|
246 |
-
* @return array
|
247 |
-
*/
|
248 |
-
public function get_service_options( $service, $option = null ) {
|
249 |
-
|
250 |
-
if ( ! is_null( $option ) && isset( $this->options[$service][$option] ) )
|
251 |
-
return $this->options[$service][$option];
|
252 |
-
|
253 |
-
if ( isset( $this->options[$service] ) )
|
254 |
-
return $this->options[$service];
|
255 |
-
|
256 |
-
return array();
|
257 |
-
|
258 |
-
}
|
259 |
-
|
260 |
-
/**
|
261 |
-
* Set the service options for this schedule
|
262 |
-
*
|
263 |
-
* @access public
|
264 |
-
*/
|
265 |
-
public function set_service_options( $service, Array $options ) {
|
266 |
-
|
267 |
-
$this->options[$service] = $options;
|
268 |
-
|
269 |
-
}
|
270 |
-
|
271 |
-
/**
|
272 |
-
* Calculate the size of the backup
|
273 |
-
*
|
274 |
-
* Doesn't account for
|
275 |
-
* compression
|
276 |
-
*
|
277 |
-
* @access public
|
278 |
-
* @param bool $cached Whether to return from cache
|
279 |
-
* @return string
|
280 |
-
*/
|
281 |
-
public function get_filesize( $cached = true ) {
|
282 |
-
|
283 |
-
if ( ! $cached || ! $filesize = get_transient( 'hmbkp_schedule_' . $this->get_id() . '_filesize' ) ) {
|
284 |
-
|
285 |
-
$filesize = 0;
|
286 |
-
|
287 |
-
// Don't include database if file only
|
288 |
-
if ( $this->get_type() != 'file' ) {
|
289 |
-
|
290 |
-
global $wpdb;
|
291 |
-
|
292 |
-
$res = $wpdb->get_results( 'SHOW TABLE STATUS FROM `' . DB_NAME . '`', ARRAY_A );
|
293 |
-
|
294 |
-
foreach ( $res as $r )
|
295 |
-
$filesize += (float) $r['Data_length'];
|
296 |
-
|
297 |
-
}
|
298 |
-
|
299 |
-
// Don't include files if database only
|
300 |
-
if ( $this->get_type() != 'database' ) {
|
301 |
-
|
302 |
-
// Get rid of any cached filesizes
|
303 |
-
clearstatcache();
|
304 |
-
|
305 |
-
$excludes = $this->exclude_string( 'regex' );
|
306 |
-
|
307 |
-
foreach ( $this->get_files() as $file ) {
|
308 |
-
|
309 |
-
// Skip dot files, they should only exist on versions of PHP between 5.2.11 -> 5.3
|
310 |
-
if ( method_exists( $file, 'isDot' ) && $file->isDot() )
|
311 |
-
continue;
|
312 |
-
|
313 |
-
if ( ! $file->isReadable() )
|
314 |
-
continue;
|
315 |
-
|
316 |
-
// Excludes
|
317 |
-
if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', HM_Backup::conform_dir( $file->getPathname() ) ) ) )
|
318 |
-
continue;
|
319 |
-
|
320 |
-
$filesize += (float) $file->getSize();
|
321 |
-
|
322 |
-
}
|
323 |
-
|
324 |
-
}
|
325 |
-
|
326 |
-
// Cache for a day
|
327 |
-
set_transient( 'hmbkp_schedule_' . $this->get_id() . '_filesize', $filesize, time() + 60 * 60 * 24 );
|
328 |
-
|
329 |
-
}
|
330 |
-
|
331 |
-
return size_format( $filesize );
|
332 |
-
|
333 |
-
}
|
334 |
-
|
335 |
-
/**
|
336 |
-
* Check whether the filesize has already been calculated and cached.
|
337 |
-
*
|
338 |
-
* @access public
|
339 |
-
* @return void
|
340 |
-
*/
|
341 |
-
public function is_filesize_cached() {
|
342 |
-
return (bool) get_transient( 'hmbkp_schedule_' . $this->get_id() . '_filesize' );
|
343 |
-
}
|
344 |
-
|
345 |
-
/**
|
346 |
-
* Clear the cached filesize, forces the filesize to be re-calculated the next
|
347 |
-
* time get_filesize is called
|
348 |
-
*
|
349 |
-
* @access public
|
350 |
-
* @return void
|
351 |
-
*/
|
352 |
-
public function clear_filesize_cache() {
|
353 |
-
delete_transient( 'hmbkp_schedule_' . $this->get_id() . '_filesize' );
|
354 |
-
}
|
355 |
-
|
356 |
-
/**
|
357 |
-
* Get the start time for the schedule
|
358 |
-
*
|
359 |
-
* @access public
|
360 |
-
* @return int timestamp || 0 for manual only schedules
|
361 |
-
*/
|
362 |
-
public function get_schedule_start_time() {
|
363 |
-
|
364 |
-
if ( $this->get_reoccurrence() === 'manually' )
|
365 |
-
return 0;
|
366 |
-
|
367 |
-
if ( ! $this->schedule_start_time ) {
|
368 |
-
|
369 |
-
$date = strtotime( HMBKP_SCHEDULE_TIME );
|
370 |
-
|
371 |
-
// Convert to UTC
|
372 |
-
$date -= get_option( 'gmt_offset' ) * 3600;
|
373 |
-
|
374 |
-
// if the scheduled time already passed today then start at the next interval instead
|
375 |
-
if ( $date <= strtotime( 'now' ) )
|
376 |
-
$date += $this->get_interval();
|
377 |
-
|
378 |
-
$this->set_schedule_start_time( $date );
|
379 |
-
}
|
380 |
-
|
381 |
-
return $this->schedule_start_time;
|
382 |
-
|
383 |
-
}
|
384 |
-
|
385 |
-
/**
|
386 |
-
* Set the schedule start time.
|
387 |
-
*
|
388 |
-
* @access public
|
389 |
-
* @param int $timestamp in UTC
|
390 |
-
* @return void
|
391 |
-
*/
|
392 |
-
public function set_schedule_start_time( $timestamp ) {
|
393 |
-
$this->schedule_start_time = $timestamp;
|
394 |
-
}
|
395 |
-
|
396 |
-
/**
|
397 |
-
* Get the schedule reoccurrence
|
398 |
-
*
|
399 |
-
* @access public
|
400 |
-
*/
|
401 |
-
public function get_reoccurrence() {
|
402 |
-
|
403 |
-
// Default to no reoccurrence
|
404 |
-
if ( empty( $this->options['reoccurrence'] ) )
|
405 |
-
$this->set_reoccurrence( 'manually' );
|
406 |
-
|
407 |
-
return esc_attr( $this->options['reoccurrence'] );
|
408 |
-
|
409 |
-
}
|
410 |
-
|
411 |
-
/**
|
412 |
-
* Set the schedule reoccurrence
|
413 |
-
*
|
414 |
-
* @access public
|
415 |
-
* @param string $reoccurrence
|
416 |
-
*/
|
417 |
-
public function set_reoccurrence( $reoccurrence ) {
|
418 |
-
|
419 |
-
// Check it's valid
|
420 |
-
if ( ! is_string( $reoccurrence ) || ! trim( $reoccurrence ) || ( ! in_array( $reoccurrence, array_keys( wp_get_schedules() ) ) ) && $reoccurrence !== 'manually' )
|
421 |
-
throw new Exception( 'Argument 1 for ' . __METHOD__ . ' must be a valid cron reoccurrence or "manually"' );
|
422 |
-
|
423 |
-
if ( isset( $this->options['reoccurrence'] ) && $this->options['reoccurrence'] === $reoccurrence )
|
424 |
-
return;
|
425 |
-
|
426 |
-
$this->options['reoccurrence'] = $reoccurrence;
|
427 |
-
|
428 |
-
if ( $reoccurrence === 'manually' )
|
429 |
-
$this->unschedule();
|
430 |
-
|
431 |
-
else
|
432 |
-
$this->schedule();
|
433 |
-
|
434 |
-
}
|
435 |
-
|
436 |
-
/**
|
437 |
-
* Get the interval between backups
|
438 |
-
*
|
439 |
-
* @access public
|
440 |
-
* @return int
|
441 |
-
*/
|
442 |
-
public function get_interval() {
|
443 |
-
|
444 |
-
$schedules = wp_get_schedules();
|
445 |
-
|
446 |
-
if ( $this->get_reoccurrence() === 'manually' )
|
447 |
-
return 0;
|
448 |
-
|
449 |
-
return $schedules[$this->get_reoccurrence()]['interval'];
|
450 |
-
|
451 |
-
}
|
452 |
-
|
453 |
-
/**
|
454 |
-
* Get the next occurrence of this scheduled backup
|
455 |
-
*
|
456 |
-
* @access public
|
457 |
-
*/
|
458 |
-
public function get_next_occurrence( $gmt = true ) {
|
459 |
-
|
460 |
-
$time = wp_next_scheduled( 'hmbkp_schedule_hook', array( 'id' => $this->get_id() ) );
|
461 |
-
|
462 |
-
if ( ! $time )
|
463 |
-
$time = 0;
|
464 |
-
|
465 |
-
if ( ! $gmt )
|
466 |
-
$time += get_option( 'gmt_offset' ) * 3600;
|
467 |
-
|
468 |
-
return $time;
|
469 |
-
|
470 |
-
}
|
471 |
-
|
472 |
-
|
473 |
-
/**
|
474 |
-
* Get the path to the backup running file that stores the running backup status
|
475 |
-
*
|
476 |
-
* @access private
|
477 |
-
* @return string
|
478 |
-
*/
|
479 |
-
private function get_schedule_running_path() {
|
480 |
-
return $this->get_path() . '/.schedule-' . $this->get_id() . '-running';
|
481 |
-
}
|
482 |
-
|
483 |
-
/**
|
484 |
-
* Schedule the backup cron
|
485 |
-
*
|
486 |
-
* @access public
|
487 |
-
*/
|
488 |
-
public function schedule() {
|
489 |
-
|
490 |
-
// Clear any existing hooks
|
491 |
-
$this->unschedule();
|
492 |
-
|
493 |
-
wp_schedule_event( $this->get_schedule_start_time(), $this->get_reoccurrence(), 'hmbkp_schedule_hook', array( 'id' => $this->get_id() ) );
|
494 |
-
|
495 |
-
}
|
496 |
-
|
497 |
-
|
498 |
-
/**
|
499 |
-
* Unschedule the backup cron.
|
500 |
-
*
|
501 |
-
* @access public
|
502 |
-
* @return void
|
503 |
-
*/
|
504 |
-
public function unschedule() {
|
505 |
-
wp_clear_scheduled_hook( 'hmbkp_schedule_hook', array( 'id' => $this->get_id() ) );
|
506 |
-
}
|
507 |
-
|
508 |
-
/**
|
509 |
-
* Run the backup
|
510 |
-
*
|
511 |
-
* @access public
|
512 |
-
*/
|
513 |
-
public function run() {
|
514 |
-
|
515 |
-
// Mark the backup as started
|
516 |
-
$this->set_status( __( 'Starting Backup', 'hmbkp' ) );
|
517 |
-
|
518 |
-
$this->backup();
|
519 |
-
|
520 |
-
// Delete the backup running file
|
521 |
-
if ( file_exists( $this->get_schedule_running_path() ) )
|
522 |
-
unlink( $this->get_schedule_running_path() );
|
523 |
-
|
524 |
-
$this->delete_old_backups();
|
525 |
-
|
526 |
-
}
|
527 |
-
|
528 |
-
/**
|
529 |
-
* Get the status of the running backup.
|
530 |
-
*
|
531 |
-
* @access public
|
532 |
-
* @return string
|
533 |
-
*/
|
534 |
-
public function get_status() {
|
535 |
-
|
536 |
-
if ( ! file_exists( $this->get_schedule_running_path() ) )
|
537 |
-
return '';
|
538 |
-
|
539 |
-
return end( explode( '::', file_get_contents( $this->get_schedule_running_path() ) ) );
|
540 |
-
|
541 |
-
}
|
542 |
-
|
543 |
-
/**
|
544 |
-
* Get the filename that the running status is stored in.
|
545 |
-
*
|
546 |
-
* @access public
|
547 |
-
* @return string
|
548 |
-
*/
|
549 |
-
public function get_running_backup_filename() {
|
550 |
-
|
551 |
-
if ( ! file_exists( $this->get_schedule_running_path() ) )
|
552 |
-
return '';
|
553 |
-
|
554 |
-
return reset( explode( '::', file_get_contents( $this->get_schedule_running_path() ) ) );
|
555 |
-
}
|
556 |
-
|
557 |
-
/**
|
558 |
-
* Set the status of the running backup
|
559 |
-
*
|
560 |
-
* @access public
|
561 |
-
* @param string $message
|
562 |
-
* @return void
|
563 |
-
*/
|
564 |
-
protected function set_status( $message ) {
|
565 |
-
|
566 |
-
if ( ! $handle = fopen( $this->get_schedule_running_path(), 'w' ) )
|
567 |
-
return;
|
568 |
-
|
569 |
-
fwrite( $handle, $this->get_archive_filename() . '::' . $message );
|
570 |
-
|
571 |
-
fclose( $handle );
|
572 |
-
|
573 |
-
}
|
574 |
-
|
575 |
-
/**
|
576 |
-
* Hook into the actions fired in HM Backup and set the status
|
577 |
-
*
|
578 |
-
* @return null
|
579 |
-
*/
|
580 |
-
protected function do_action( $action ) {
|
581 |
-
|
582 |
-
switch ( $action ) :
|
583 |
-
|
584 |
-
case 'hmbkp_mysqldump_started' :
|
585 |
-
|
586 |
-
$this->set_status( sprintf( __( 'Dumping Database %s', 'hmbkp' ), '(<code>' . $this->get_mysqldump_method() . '</code>)' ) );
|
587 |
-
|
588 |
-
break;
|
589 |
-
|
590 |
-
case 'hmbkp_mysqldump_verify_started' :
|
591 |
-
|
592 |
-
$this->set_status( sprintf( __( 'Verifying Database Dump %s', 'hmbkp' ), '(<code>' . $this->get_mysqldump_method() . '</code>)' ) );
|
593 |
-
|
594 |
-
break;
|
595 |
-
|
596 |
-
case 'hmbkp_archive_started' :
|
597 |
-
|
598 |
-
$this->set_status( sprintf( __( 'Creating zip archive %s', 'hmbkp' ), '(<code>' . $this->get_archive_method() . '</code>)' ) );
|
599 |
-
|
600 |
-
break;
|
601 |
-
|
602 |
-
case 'hmbkp_archive_verify_started' :
|
603 |
-
|
604 |
-
$this->set_status( sprintf( __( 'Verifying Zip Archive %s', 'hmbkp' ), '(<code>' . $this->get_archive_method() . '</code>)' ) );
|
605 |
-
|
606 |
-
break;
|
607 |
-
|
608 |
-
case 'hmbkp_backup_complete' :
|
609 |
-
|
610 |
-
$this->set_status( __( 'Finishing Backup', 'hmbkp' ) );
|
611 |
-
|
612 |
-
if ( $this->get_errors() ) {
|
613 |
-
|
614 |
-
$file = $this->get_path() . '/.backup_errors';
|
615 |
-
|
616 |
-
if ( file_exists( $file ) )
|
617 |
-
unlink( $file );
|
618 |
-
|
619 |
-
if ( ! $handle = @fopen( $file, 'w' ) )
|
620 |
-
return;
|
621 |
-
|
622 |
-
fwrite( $handle, json_encode( $this->get_errors() ) );
|
623 |
-
|
624 |
-
fclose( $handle );
|
625 |
-
|
626 |
-
}
|
627 |
-
|
628 |
-
if ( $this->get_warnings() ) {
|
629 |
-
|
630 |
-
$file = $this->get_path() . '/.backup_warnings';
|
631 |
-
|
632 |
-
if ( file_exists( $file ) )
|
633 |
-
unlink( $file );
|
634 |
-
|
635 |
-
if ( ! $handle = @fopen( $file, 'w' ) )
|
636 |
-
return;
|
637 |
-
|
638 |
-
fwrite( $handle, json_encode( $this->get_warnings() ) );
|
639 |
-
|
640 |
-
fclose( $handle );
|
641 |
-
|
642 |
-
}
|
643 |
-
|
644 |
-
break;
|
645 |
-
|
646 |
-
endswitch;
|
647 |
-
|
648 |
-
// Pass the actions to all the services
|
649 |
-
foreach ( HMBKP_Services::get_services( $this ) as $service )
|
650 |
-
$service->action( $action );
|
651 |
-
|
652 |
-
// Fire the parent function as well
|
653 |
-
parent::do_action( $action );
|
654 |
-
|
655 |
-
}
|
656 |
-
|
657 |
-
/**
|
658 |
-
* Get the backups created by this schedule
|
659 |
-
*
|
660 |
-
* @todo look into using recursiveDirectoryIterator and recursiveRegexIterator
|
661 |
-
* @access public
|
662 |
-
* @return string[] - file paths of the backups
|
663 |
-
*/
|
664 |
-
public function get_backups() {
|
665 |
-
|
666 |
-
$files = array();
|
667 |
-
|
668 |
-
if ( $handle = @opendir( $this->get_path() ) ) {
|
669 |
-
|
670 |
-
while ( false !== ( $file = readdir( $handle ) ) )
|
671 |
-
if ( pathinfo( $file, PATHINFO_EXTENSION ) === 'zip' && strpos( $file, $this->get_id() ) !== false && $this->get_running_backup_filename() != $file )
|
672 |
-
$files[@filemtime( trailingslashit( $this->get_path() ) . $file )] = trailingslashit( $this->get_path() ) . $file;
|
673 |
-
|
674 |
-
closedir( $handle );
|
675 |
-
|
676 |
-
}
|
677 |
-
|
678 |
-
krsort( $files );
|
679 |
-
|
680 |
-
return $files;
|
681 |
-
|
682 |
-
}
|
683 |
-
|
684 |
-
/**
|
685 |
-
* Delete old backups
|
686 |
-
*
|
687 |
-
* @access private
|
688 |
-
*/
|
689 |
-
public function delete_old_backups() {
|
690 |
-
|
691 |
-
if ( count( $this->get_backups() ) <= $this->get_max_backups() )
|
692 |
-
return;
|
693 |
-
|
694 |
-
array_map( array( $this, 'delete_backup' ), array_slice( $this->get_backups(), $this->get_max_backups() ) );
|
695 |
-
|
696 |
-
}
|
697 |
-
|
698 |
-
/**
|
699 |
-
* Delete a specific back up file created by this schedule
|
700 |
-
*
|
701 |
-
* @access public
|
702 |
-
* @param string $filepath
|
703 |
-
*/
|
704 |
-
public function delete_backup( $filepath ) {
|
705 |
-
|
706 |
-
// Check that it's a valid filepath
|
707 |
-
if ( empty( $filepath ) || ! is_string( $filepath ) )
|
708 |
-
throw new Exception( 'Argument 1 for ' . __METHOD__ . ' must be a non empty string' );
|
709 |
-
|
710 |
-
// Make sure it exists
|
711 |
-
if ( ! file_exists( $filepath ) )
|
712 |
-
throw new Exception( $filepath . ' doesn\'t exist' );
|
713 |
-
|
714 |
-
// Make sure it was created by this schedule
|
715 |
-
if ( strpos( $filepath, $this->get_id() ) === false )
|
716 |
-
throw new Exception( 'That backup wasn\'t created by this schedule' );
|
717 |
-
|
718 |
-
unlink( $filepath );
|
719 |
-
|
720 |
-
}
|
721 |
-
|
722 |
-
/**
|
723 |
-
* Delete all back up files created by this schedule
|
724 |
-
*
|
725 |
-
* @access public
|
726 |
-
*/
|
727 |
-
public function delete_backups() {
|
728 |
-
|
729 |
-
array_map( array( $this, 'delete_backup' ), $this->get_backups() );
|
730 |
-
|
731 |
-
}
|
732 |
-
|
733 |
-
/**
|
734 |
-
* Save the schedules options.
|
735 |
-
*
|
736 |
-
* @access public
|
737 |
-
*/
|
738 |
-
public function save() {
|
739 |
-
|
740 |
-
// Only save them if they have changed
|
741 |
-
if ( $this->options !== get_option( 'hmbkp_schedule_' . $this->get_id() ) )
|
742 |
-
update_option( 'hmbkp_schedule_' . $this->get_id(), $this->options );
|
743 |
-
|
744 |
-
}
|
745 |
-
|
746 |
-
/**
|
747 |
-
* Cancel this schedule
|
748 |
-
*
|
749 |
-
* Cancels the cron job, removes the schedules options
|
750 |
-
* and optionally deletes all backups crated by
|
751 |
-
* this schedule.
|
752 |
-
*
|
753 |
-
* @access public
|
754 |
-
*/
|
755 |
-
public function cancel() {
|
756 |
-
|
757 |
-
// Delete the schedule options
|
758 |
-
delete_option( 'hmbkp_schedule_' . $this->get_id() );
|
759 |
-
|
760 |
-
// Clear any existing schedules
|
761 |
-
$this->unschedule();
|
762 |
-
|
763 |
-
// Clear the filesize transient
|
764 |
-
$this->clear_filesize_cache();
|
765 |
-
|
766 |
-
// Delete it's backups
|
767 |
-
$this->delete_backups();
|
768 |
-
|
769 |
-
}
|
770 |
-
|
771 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/classes/schedules.php
DELETED
@@ -1,70 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* A simple class for loading schedules
|
5 |
-
*/
|
6 |
-
class HMBKP_Schedules {
|
7 |
-
|
8 |
-
/**
|
9 |
-
* An array of schedules
|
10 |
-
*
|
11 |
-
* @var mixed
|
12 |
-
* @access private
|
13 |
-
*/
|
14 |
-
private $schedules;
|
15 |
-
|
16 |
-
/**
|
17 |
-
* Load the schedules from wp_options and store in $this->schedules
|
18 |
-
*
|
19 |
-
* @access public
|
20 |
-
*/
|
21 |
-
public function __construct() {
|
22 |
-
|
23 |
-
global $wpdb;
|
24 |
-
|
25 |
-
// Load all schedule options from the database
|
26 |
-
$schedules = $wpdb->get_col( "SELECT option_name from $wpdb->options WHERE option_name LIKE 'hmbkp\_schedule\_%'" );
|
27 |
-
|
28 |
-
// Instantiate each one as a HMBKP_Scheduled_Backup
|
29 |
-
$this->schedules = array_map( array( $this, 'instantiate' ), array_filter( (array) $schedules ) );
|
30 |
-
|
31 |
-
}
|
32 |
-
|
33 |
-
/**
|
34 |
-
* Get an array of schedules
|
35 |
-
*
|
36 |
-
* @access public
|
37 |
-
* @return array
|
38 |
-
*/
|
39 |
-
public function get_schedules() {
|
40 |
-
return $this->schedules;
|
41 |
-
}
|
42 |
-
|
43 |
-
/**
|
44 |
-
* Get a schedule by ID
|
45 |
-
*
|
46 |
-
* @return HMBKP_Scheduled_Backup
|
47 |
-
*/
|
48 |
-
public function get_schedule( $id ) {
|
49 |
-
|
50 |
-
foreach ( $this->schedules as $schedule )
|
51 |
-
if ( $schedule->get_id() == $id )
|
52 |
-
return $schedule;
|
53 |
-
|
54 |
-
return null;
|
55 |
-
}
|
56 |
-
|
57 |
-
/**
|
58 |
-
* Instantiate the individual scheduled backup objects
|
59 |
-
*
|
60 |
-
* @access private
|
61 |
-
* @param string $id
|
62 |
-
* @return array An array of HMBKP_Scheduled_Backup objects
|
63 |
-
*/
|
64 |
-
private function instantiate( $id ) {
|
65 |
-
|
66 |
-
return new HMBKP_Scheduled_Backup( str_replace( 'hmbkp_schedule_', '', $id ) );
|
67 |
-
|
68 |
-
}
|
69 |
-
|
70 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/classes/services.php
DELETED
@@ -1,233 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* An abstract service class, individual services should
|
5 |
-
* extend this class
|
6 |
-
*/
|
7 |
-
abstract class HMBKP_Service {
|
8 |
-
|
9 |
-
/**
|
10 |
-
* The instance HMBKP_Backup_Schedule that this service is
|
11 |
-
* is currently working with
|
12 |
-
*/
|
13 |
-
protected $schedule;
|
14 |
-
|
15 |
-
/**
|
16 |
-
* The form to output as part of the schedule settings
|
17 |
-
*
|
18 |
-
* If you don't want a whole form return ''; here and use @field instead
|
19 |
-
*/
|
20 |
-
abstract protected function form();
|
21 |
-
|
22 |
-
/**
|
23 |
-
* The field to output as part of the schedule settings
|
24 |
-
*
|
25 |
-
* If you don't want a field return ''; here and use @field instead
|
26 |
-
*/
|
27 |
-
abstract protected function field();
|
28 |
-
|
29 |
-
/**
|
30 |
-
* Validate and sanitize data before it's saved.
|
31 |
-
*
|
32 |
-
* @param array &$new_data An array or data from $_GET, passed by reference so it can be modified,
|
33 |
-
* @param array $old_data The old data thats going to be overwritten
|
34 |
-
* @return array $error Array of validation errors e.g. return array( 'email' => 'not valid' );
|
35 |
-
*/
|
36 |
-
abstract protected function update( &$new_data, $old_data );
|
37 |
-
|
38 |
-
/**
|
39 |
-
* The string to be output as part of the schedule sentence
|
40 |
-
*
|
41 |
-
* @return string
|
42 |
-
*/
|
43 |
-
abstract protected function display();
|
44 |
-
|
45 |
-
/**
|
46 |
-
* Receives actions from the backup
|
47 |
-
*
|
48 |
-
* This is where the service should do it's thing
|
49 |
-
*
|
50 |
-
* @see HM_Backup::do_action for a list of the actions
|
51 |
-
*/
|
52 |
-
abstract protected function action( $action );
|
53 |
-
|
54 |
-
/**
|
55 |
-
* Utility for getting a formated html input name attribute
|
56 |
-
*
|
57 |
-
* @param string $name The name of the field
|
58 |
-
* @return string The formated name
|
59 |
-
*/
|
60 |
-
protected function get_field_name( $name ) {
|
61 |
-
return esc_attr( get_class( $this ) . '[' . $name . ']' );
|
62 |
-
}
|
63 |
-
|
64 |
-
/**
|
65 |
-
* Get the value of a field
|
66 |
-
* @param string $name The name of the field
|
67 |
-
* @return string The field value
|
68 |
-
*/
|
69 |
-
protected function get_field_value( $name, $esc = 'esc_attr' ) {
|
70 |
-
|
71 |
-
if ( $this->schedule->get_service_options( get_class( $this ), $name ) )
|
72 |
-
return $esc( $this->schedule->get_service_options( get_class( $this ), $name ) );
|
73 |
-
|
74 |
-
return '';
|
75 |
-
|
76 |
-
}
|
77 |
-
|
78 |
-
/**
|
79 |
-
* Save the settings for this service
|
80 |
-
*
|
81 |
-
* @return null|array returns null on success, array of errors on failure
|
82 |
-
*/
|
83 |
-
public function save() {
|
84 |
-
|
85 |
-
$classname = get_class( $this );
|
86 |
-
|
87 |
-
$old_data = $this->schedule->get_service_options( $classname );
|
88 |
-
|
89 |
-
$new_data = isset( $_GET[$classname] ) ? $_GET[$classname] : $old_data;
|
90 |
-
|
91 |
-
$errors = $this->update( $new_data, $old_data );
|
92 |
-
|
93 |
-
if ( $errors && $errors = array_flip( $errors ) ) {
|
94 |
-
|
95 |
-
foreach( $errors as $error => &$field )
|
96 |
-
$field = get_class( $this ) . '[' . $field . ']';
|
97 |
-
|
98 |
-
return array_flip( $errors );
|
99 |
-
|
100 |
-
}
|
101 |
-
|
102 |
-
$this->schedule->set_service_options( $classname, $new_data );
|
103 |
-
|
104 |
-
return array();
|
105 |
-
|
106 |
-
}
|
107 |
-
|
108 |
-
/**
|
109 |
-
* Set the current schedule object
|
110 |
-
*
|
111 |
-
* @param HMBKP_Scheduled_Backup $schedule An instantiated schedule object
|
112 |
-
*/
|
113 |
-
public function set_schedule( HMBKP_Scheduled_Backup $schedule ) {
|
114 |
-
$this->schedule = $schedule;
|
115 |
-
}
|
116 |
-
|
117 |
-
}
|
118 |
-
|
119 |
-
/**
|
120 |
-
* A singleton to handle the registering, unregistering
|
121 |
-
* and storage of services
|
122 |
-
*/
|
123 |
-
class HMBKP_Services {
|
124 |
-
|
125 |
-
/**
|
126 |
-
* Store the current instance
|
127 |
-
*
|
128 |
-
* @access private
|
129 |
-
* @var object HMBKP_Services
|
130 |
-
* @static
|
131 |
-
*/
|
132 |
-
private static $instance;
|
133 |
-
|
134 |
-
/**
|
135 |
-
* The array of services
|
136 |
-
*
|
137 |
-
* Should be of the format array( __FILE__ => __CLASS__ );
|
138 |
-
*
|
139 |
-
* @access private
|
140 |
-
* @var array
|
141 |
-
* @static
|
142 |
-
*/
|
143 |
-
private $services = array();
|
144 |
-
|
145 |
-
/**
|
146 |
-
* The current schedule object
|
147 |
-
*
|
148 |
-
* @access private
|
149 |
-
* @var object HMBKP_Scheduled_Backup
|
150 |
-
*/
|
151 |
-
private $schedule;
|
152 |
-
|
153 |
-
/**
|
154 |
-
* Get the current instance
|
155 |
-
*
|
156 |
-
* @access public
|
157 |
-
* @static
|
158 |
-
*/
|
159 |
-
public static function instance() {
|
160 |
-
|
161 |
-
if ( ! isset( self::$instance ) )
|
162 |
-
self::$instance = new HMBKP_Services;
|
163 |
-
|
164 |
-
return self::$instance;
|
165 |
-
|
166 |
-
}
|
167 |
-
|
168 |
-
/**
|
169 |
-
* Get the array of registered services
|
170 |
-
*
|
171 |
-
* @access public
|
172 |
-
*/
|
173 |
-
public function get_services( HMBKP_Scheduled_Backup $schedule = null ) {
|
174 |
-
|
175 |
-
if ( is_null( $schedule ) )
|
176 |
-
return self::instance()->services;
|
177 |
-
|
178 |
-
self::instance()->schedule = $schedule;
|
179 |
-
|
180 |
-
return array_map( array( self::instance(), 'instantiate' ), self::instance()->services );
|
181 |
-
|
182 |
-
}
|
183 |
-
|
184 |
-
/**
|
185 |
-
* Register a new service
|
186 |
-
*
|
187 |
-
* @access public
|
188 |
-
*/
|
189 |
-
public function register( $filepath, $classname ) {
|
190 |
-
|
191 |
-
if ( ! file_exists( $filepath ) )
|
192 |
-
throw new Exception( 'Argument 1 for ' . __METHOD__ . ' must be a valid filepath' );
|
193 |
-
|
194 |
-
self::instance()->services[$filepath] = $classname;
|
195 |
-
|
196 |
-
}
|
197 |
-
|
198 |
-
/**
|
199 |
-
* Unregister an existing service
|
200 |
-
*
|
201 |
-
* @access public
|
202 |
-
*/
|
203 |
-
public function unregister( $filepath ) {
|
204 |
-
|
205 |
-
if ( ! isset( self::instance()->services[$filepath] ) )
|
206 |
-
throw new Exception( 'Argument 1 for ' . __METHOD__ . ' must be a registered service' );
|
207 |
-
|
208 |
-
unset( self::instance()->services[$filepath] );
|
209 |
-
|
210 |
-
}
|
211 |
-
|
212 |
-
/**
|
213 |
-
* Instantiate the individual service classes
|
214 |
-
*
|
215 |
-
* @access private
|
216 |
-
* @param string $class
|
217 |
-
* @return array An array of instantiated classes
|
218 |
-
*/
|
219 |
-
private function instantiate( $class ) {
|
220 |
-
|
221 |
-
if ( ! class_exists( $class ) )
|
222 |
-
throw new Exception( 'Argument 1 for ' . __METHOD__ . ' must be a valid class' );
|
223 |
-
|
224 |
-
$$class = new $class;
|
225 |
-
|
226 |
-
if ( self::instance()->schedule )
|
227 |
-
$$class->set_schedule( self::instance()->schedule );
|
228 |
-
|
229 |
-
return $$class;
|
230 |
-
|
231 |
-
}
|
232 |
-
|
233 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/classes/wp-cli.php
DELETED
@@ -1,93 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Implement backup command
|
5 |
-
*
|
6 |
-
* @todo fix
|
7 |
-
* @package wp-cli
|
8 |
-
* @subpackage commands/third-party
|
9 |
-
*/
|
10 |
-
class BackUpCommand extends WP_CLI_Command {
|
11 |
-
|
12 |
-
public function __construct( $args, $assoc_args ) {
|
13 |
-
|
14 |
-
// Make sure it's possible to do a backup
|
15 |
-
if ( HM_Backup::is_safe_mode_active() )
|
16 |
-
WP_CLI::error( sprintf( __( 'BackUpWordPress may not work when php is running with %s on', 'hmbkp' ), 'safe_mode' ) );
|
17 |
-
|
18 |
-
add_action( 'hmbkp_mysqldump_started', function() {
|
19 |
-
WP_CLI::line( __( 'Backup: Dumping database...', 'hmbkp' ) );
|
20 |
-
} );
|
21 |
-
|
22 |
-
add_action( 'hmbkp_archive_started', function() {
|
23 |
-
WP_CLI::line( __( 'Backup: Zipping everything up...', 'hmbkp' ) );
|
24 |
-
} );
|
25 |
-
|
26 |
-
// Clean up any mess left by a previous backup
|
27 |
-
hmbkp_cleanup();
|
28 |
-
|
29 |
-
$hm_backup = new HM_Backup();
|
30 |
-
|
31 |
-
if ( ! empty( $assoc_args['path'] ) )
|
32 |
-
$hm_backup->set_path( $assoc_args['path'] );
|
33 |
-
|
34 |
-
if ( ! empty( $assoc_args['root'] ) )
|
35 |
-
$hm_backup->set_root( $assoc_args['root'] );
|
36 |
-
|
37 |
-
if ( ( ! is_dir( $hm_backup->get_path() ) && ( ! is_writable( dirname( $hm_backup->get_path() ) ) || ! mkdir( $hm_backup->get_path() ) ) ) || ! is_writable( $hm_backup->get_path() ) ) {
|
38 |
-
WP_CLI::error( __( 'Invalid backup path', 'hmbkp' ) );
|
39 |
-
return false;
|
40 |
-
}
|
41 |
-
|
42 |
-
if ( ! is_dir( $hm_backup->get_root() ) || ! is_readable( $hm_backup->get_root() ) ) {
|
43 |
-
WP_CLI::error( __( 'Invalid root path', 'hmbkp' ) );
|
44 |
-
return false;
|
45 |
-
}
|
46 |
-
|
47 |
-
if ( ! empty( $assoc_args['files_only'] ) )
|
48 |
-
$hm_backup->set_type( 'file' );
|
49 |
-
|
50 |
-
if ( ! empty( $assoc_args['database_only'] ) )
|
51 |
-
$hm_backup->set_type( 'database' );
|
52 |
-
|
53 |
-
if ( isset( $assoc_args['mysqldump_command_path'] ) )
|
54 |
-
$hm_backup->set_mysqldump_command_path( $assoc_args['mysqldump_command_path'] );
|
55 |
-
|
56 |
-
if ( isset( $assoc_args['zip_command_path'] ) )
|
57 |
-
$hm_backup->set_zip_command_path( $assoc_args['zip_command_path'] );
|
58 |
-
|
59 |
-
if ( ! empty( $assoc_args['excludes'] ) )
|
60 |
-
$hm_backup->set_excludes( $assoc_args['excludes'] );
|
61 |
-
|
62 |
-
$hm_backup->backup();
|
63 |
-
|
64 |
-
// Delete any old backup files
|
65 |
-
//hmbkp_delete_old_backups();
|
66 |
-
|
67 |
-
if ( file_exists( $hm_backup->get_archive_filepath() ) )
|
68 |
-
WP_CLI::success( __( 'Backup Complete: ', 'hmbkp' ) . $hm_backup->get_archive_filepath() );
|
69 |
-
|
70 |
-
else
|
71 |
-
WP_CLI::error( __( 'Backup Failed', 'hmbkp' ) );
|
72 |
-
|
73 |
-
}
|
74 |
-
|
75 |
-
static function help() {
|
76 |
-
|
77 |
-
WP_CLI::line( <<<EOB
|
78 |
-
usage: wp backup [--files_only] [--database_only] [--path<dir>] [--root<dir>] [--zip_command_path=<path>] [--mysqldump_command_path=<path>]
|
79 |
-
|
80 |
-
--files_only Backup files only, default to off
|
81 |
-
--database_only Backup database only, defaults to off
|
82 |
-
--path dir that the backup should be save in, defaults to wp-content/backups/
|
83 |
-
--root dir that should be backed up, defaults to site root.
|
84 |
-
--zip_command_path path to your zip binary, standard locations are automatically used
|
85 |
-
--mysqldump_command_path path to your mysqldump binary, standard locations are automatically used
|
86 |
-
|
87 |
-
EOB
|
88 |
-
);
|
89 |
-
|
90 |
-
}
|
91 |
-
|
92 |
-
}
|
93 |
-
WP_CLI::addCommand( 'backup', 'BackUpCommand' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/functions/core.php
DELETED
@@ -1,442 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Setup the plugin defaults on activation
|
5 |
-
*/
|
6 |
-
function hmbkp_activate() {
|
7 |
-
|
8 |
-
hmbkp_deactivate();
|
9 |
-
|
10 |
-
}
|
11 |
-
|
12 |
-
/**
|
13 |
-
* Cleanup on plugin deactivation
|
14 |
-
*
|
15 |
-
* Removes options and clears all cron schedules
|
16 |
-
*/
|
17 |
-
function hmbkp_deactivate() {
|
18 |
-
|
19 |
-
// Options to delete
|
20 |
-
$options = array(
|
21 |
-
'hmbkp_zip_path',
|
22 |
-
'hmbkp_mysqldump_path',
|
23 |
-
'hmbkp_path',
|
24 |
-
'hmbkp_running',
|
25 |
-
'hmbkp_status',
|
26 |
-
'hmbkp_complete',
|
27 |
-
'hmbkp_email_error'
|
28 |
-
);
|
29 |
-
|
30 |
-
foreach ( $options as $option )
|
31 |
-
delete_option( $option );
|
32 |
-
|
33 |
-
delete_transient( 'hmbkp_running' );
|
34 |
-
delete_transient( 'hmbkp_estimated_filesize' );
|
35 |
-
|
36 |
-
// Clear hmbkp crons
|
37 |
-
foreach( get_option( 'cron' ) as $cron )
|
38 |
-
foreach( (array) $cron as $key => $value )
|
39 |
-
if ( strpos( $key, 'hmbkp' ) !== false )
|
40 |
-
wp_clear_scheduled_hook( $key );
|
41 |
-
|
42 |
-
hmbkp_cleanup();
|
43 |
-
|
44 |
-
}
|
45 |
-
|
46 |
-
/**
|
47 |
-
* Handles anything that needs to be
|
48 |
-
* done when the plugin is updated
|
49 |
-
*/
|
50 |
-
function hmbkp_update() {
|
51 |
-
|
52 |
-
// Update from backUpWordPress 0.4.5
|
53 |
-
if ( get_option( 'bkpwp_max_backups' ) ) {
|
54 |
-
|
55 |
-
// Carry over the custom path
|
56 |
-
if ( $legacy_path = get_option( 'bkpwppath' ) )
|
57 |
-
update_option( 'hmbkp_path', $legacy_path );
|
58 |
-
|
59 |
-
// Options to remove
|
60 |
-
$legacy_options = array(
|
61 |
-
'bkpwp_archive_types',
|
62 |
-
'bkpwp_automail_from',
|
63 |
-
'bkpwp_domain',
|
64 |
-
'bkpwp_domain_path',
|
65 |
-
'bkpwp_easy_mode',
|
66 |
-
'bkpwp_excludelists',
|
67 |
-
'bkpwp_install_user',
|
68 |
-
'bkpwp_listmax_backups',
|
69 |
-
'bkpwp_max_backups',
|
70 |
-
'bkpwp_presets',
|
71 |
-
'bkpwp_reccurrences',
|
72 |
-
'bkpwp_schedules',
|
73 |
-
'bkpwp_calculation',
|
74 |
-
'bkpwppath',
|
75 |
-
'bkpwp_status_config',
|
76 |
-
'bkpwp_status'
|
77 |
-
);
|
78 |
-
|
79 |
-
foreach ( $legacy_options as $option )
|
80 |
-
delete_option( $option );
|
81 |
-
|
82 |
-
global $wp_roles;
|
83 |
-
|
84 |
-
$wp_roles->remove_cap( 'administrator','manage_backups' );
|
85 |
-
$wp_roles->remove_cap( 'administrator','download_backups' );
|
86 |
-
|
87 |
-
wp_clear_scheduled_hook( 'bkpwp_schedule_bkpwp_hook' );
|
88 |
-
|
89 |
-
}
|
90 |
-
|
91 |
-
// Version 1 to 2
|
92 |
-
if ( get_option( 'hmbkp_plugin_version' ) && version_compare( '2.0' , get_option( 'hmbkp_plugin_version' ), '>' ) ) {
|
93 |
-
|
94 |
-
/**
|
95 |
-
* Setup a backwards compatible schedule
|
96 |
-
*/
|
97 |
-
$legacy_schedule = new HMBKP_Scheduled_Backup( 'backup' );
|
98 |
-
|
99 |
-
// Backup type
|
100 |
-
if ( ( defined( 'HMBKP_FILES_ONLY' ) && HMBKP_FILES_ONLY ) || get_option( 'hmbkp_files_only' ) )
|
101 |
-
$legacy_schedule->set_type( 'file' );
|
102 |
-
|
103 |
-
elseif ( ( defined( 'HMBKP_DATABASE_ONLY' ) && HMBKP_DATABASE_ONLY ) || get_option( 'hmbkp_database_only' ) )
|
104 |
-
$legacy_schedule->set_type( 'database' );
|
105 |
-
|
106 |
-
else
|
107 |
-
$legacy_schedule->set_type( 'complete' );
|
108 |
-
|
109 |
-
// Daily schedule time
|
110 |
-
if ( defined( 'HMBKP_DAILY_SCHEDULE_TIME' ) && HMBKP_DAILY_SCHEDULE_TIME )
|
111 |
-
$legacy_schedule->set_schedule_start_time( strtotime( HMBKP_DAILY_SCHEDULE_TIME ) );
|
112 |
-
|
113 |
-
// Backup schedule
|
114 |
-
$legacy_schedule->set_reoccurrence( str_replace( 'hmbkp_', '', get_option( 'hmbkp_schedule_frequency', 'daily' ) ) );
|
115 |
-
|
116 |
-
// Automatic backups disabled?
|
117 |
-
if ( ( defined( 'HMBKP_DISABLE_AUTOMATIC_BACKUP' ) && HMBKP_DISABLE_AUTOMATIC_BACKUP ) || get_option( 'hmbkp_disable_automatic_backup' ) )
|
118 |
-
$legacy_schedule->set_reoccurrence( 'manually' );
|
119 |
-
|
120 |
-
// Max backups
|
121 |
-
if ( defined( 'HMBKP_MAX_BACKUPS' ) && is_numeric( HMBKP_MAX_BACKUPS ) )
|
122 |
-
$legacy_schedule->set_max_backups( (int) HMBKP_MAX_BACKUPS );
|
123 |
-
|
124 |
-
else
|
125 |
-
$legacy_schedule->set_max_backups( (int) get_option( 'hmbkp_max_backups', 10 ) );
|
126 |
-
|
127 |
-
// Excludes
|
128 |
-
if ( get_option( 'hmbkp_excludes' ) )
|
129 |
-
$legacy_schedule->set_excludes( get_option( 'hmbkp_excludes' ) );
|
130 |
-
|
131 |
-
// Backup email
|
132 |
-
if ( defined( 'HMBKP_EMAIL' ) && is_email( HMBKP_EMAIL ) )
|
133 |
-
$legacy_schedule->set_service_options( 'HMBKP_Email_Service', array( 'email' => HMBKP_EMAIL ) );
|
134 |
-
|
135 |
-
elseif ( is_email( get_option( 'hmbkp_email_address' ) ) )
|
136 |
-
$legacy_schedule->set_service_options( 'HMBKP_Email_Service', array( 'email' => get_option( 'hmbkp_email_address' ) ) );
|
137 |
-
|
138 |
-
// Set the archive filename to what it used to be
|
139 |
-
$legacy_schedule->set_archive_filename( implode( '-', array( get_bloginfo( 'name' ), 'backup', date( 'Y-m-d-H-i-s', current_time( 'timestamp' ) ) ) ) . '.zip' );
|
140 |
-
|
141 |
-
$legacy_schedule->save();
|
142 |
-
|
143 |
-
// Remove the legacy options
|
144 |
-
foreach ( array( 'hmbkp_database_only', 'hmbkp_files_only', 'hmbkp_max_backups', 'hmbkp_email_address', 'hmbkp_email', 'hmbkp_schedule_frequency', 'hmbkp_disable_automatic_backup' ) as $option_name )
|
145 |
-
delete_option( $option_name );
|
146 |
-
|
147 |
-
|
148 |
-
}
|
149 |
-
|
150 |
-
// Every update
|
151 |
-
if ( get_option( 'hmbkp_plugin_version' ) && version_compare( HMBKP_VERSION, get_option( 'hmbkp_plugin_version' ), '>' ) ) {
|
152 |
-
|
153 |
-
hmbkp_deactivate();
|
154 |
-
|
155 |
-
// Force .htaccess to be re-written
|
156 |
-
if ( file_exists( hmbkp_path() . '/.htaccess' ) )
|
157 |
-
unlink( hmbkp_path() . '/.htaccess' );
|
158 |
-
|
159 |
-
// Force index.html to be re-written
|
160 |
-
if ( file_exists( hmbkp_path() . '/index.html' ) )
|
161 |
-
unlink( hmbkp_path() . '/index.html' );
|
162 |
-
|
163 |
-
}
|
164 |
-
|
165 |
-
// Update the stored version
|
166 |
-
if ( get_option( 'hmbkp_plugin_version' ) !== HMBKP_VERSION )
|
167 |
-
update_option( 'hmbkp_plugin_version', HMBKP_VERSION );
|
168 |
-
|
169 |
-
}
|
170 |
-
|
171 |
-
/**
|
172 |
-
* Setup the default backup schedules
|
173 |
-
*/
|
174 |
-
function hmbkp_setup_default_schedules() {
|
175 |
-
|
176 |
-
$schedules = new HMBKP_Schedules;
|
177 |
-
|
178 |
-
if ( $schedules->get_schedules() )
|
179 |
-
return;
|
180 |
-
|
181 |
-
/**
|
182 |
-
* Schedule a database backup daily and store backups
|
183 |
-
* for the last 2 weeks
|
184 |
-
*/
|
185 |
-
$database_daily = new HMBKP_Scheduled_Backup( 'default-1' );
|
186 |
-
$database_daily->set_type( 'database' );
|
187 |
-
$database_daily->set_reoccurrence( 'daily' );
|
188 |
-
$database_daily->set_max_backups( 14 );
|
189 |
-
$database_daily->save();
|
190 |
-
|
191 |
-
/**
|
192 |
-
* Schedule a complete backup to run weekly and store backups for
|
193 |
-
* the last 3 months
|
194 |
-
*/
|
195 |
-
$complete_weekly = new HMBKP_Scheduled_Backup( 'default-2' );
|
196 |
-
$complete_weekly->set_type( 'complete' );
|
197 |
-
$complete_weekly->set_reoccurrence( 'weekly' );
|
198 |
-
$complete_weekly->set_max_backups( 12 );
|
199 |
-
$complete_weekly->save();
|
200 |
-
|
201 |
-
function hmbkp_default_schedules_setup_warning() {
|
202 |
-
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has setup your default schedules.', 'hmbkp' ) . '</strong> ' . __( 'By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules.', 'hmbkp' ) . '</p></div>';
|
203 |
-
}
|
204 |
-
add_action( 'admin_notices', 'hmbkp_default_schedules_setup_warning' );
|
205 |
-
|
206 |
-
}
|
207 |
-
add_action( 'admin_init', 'hmbkp_setup_default_schedules' );
|
208 |
-
|
209 |
-
/**
|
210 |
-
* Add weekly, fortnightly and monthly as a cron schedule choices
|
211 |
-
*
|
212 |
-
* @param array $reccurrences
|
213 |
-
* @return array $reccurrences
|
214 |
-
*/
|
215 |
-
function hmbkp_more_reccurences( $reccurrences ) {
|
216 |
-
|
217 |
-
return array_merge( $reccurrences, array(
|
218 |
-
'weekly' => array( 'interval' => 604800, 'display' => 'Once Weekly' ),
|
219 |
-
'fortnightly' => array( 'interval' => 1209600, 'display' => 'Once Fortnightly' ),
|
220 |
-
'monthly' => array( 'interval' => 2629743.83 , 'display' => 'Once Monthly' )
|
221 |
-
) );
|
222 |
-
}
|
223 |
-
add_filter( 'cron_schedules', 'hmbkp_more_reccurences' );
|
224 |
-
|
225 |
-
/**
|
226 |
-
* Recursively delete a directory including
|
227 |
-
* all the files and sub-directories.
|
228 |
-
*
|
229 |
-
* @param string $dir
|
230 |
-
*/
|
231 |
-
function hmbkp_rmdirtree( $dir ) {
|
232 |
-
|
233 |
-
if ( is_file( $dir ) )
|
234 |
-
@unlink( $dir );
|
235 |
-
|
236 |
-
if ( ! is_dir( $dir ) )
|
237 |
-
return false;
|
238 |
-
|
239 |
-
$files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $dir ), RecursiveIteratorIterator::CHILD_FIRST, RecursiveIteratorIterator::CATCH_GET_CHILD );
|
240 |
-
|
241 |
-
foreach ( $files as $file ) {
|
242 |
-
|
243 |
-
if ( $file->isDir() )
|
244 |
-
@rmdir( $file->getPathname() );
|
245 |
-
|
246 |
-
else
|
247 |
-
@unlink( $file->getPathname() );
|
248 |
-
|
249 |
-
}
|
250 |
-
|
251 |
-
@rmdir( $dir );
|
252 |
-
|
253 |
-
}
|
254 |
-
|
255 |
-
/**
|
256 |
-
* Get the path to the backups directory
|
257 |
-
*
|
258 |
-
* Will try to create it if it doesn't exist
|
259 |
-
* and will fallback to default if a custom dir
|
260 |
-
* isn't writable.
|
261 |
-
*/
|
262 |
-
function hmbkp_path() {
|
263 |
-
|
264 |
-
global $is_apache;
|
265 |
-
|
266 |
-
$path = get_option( 'hmbkp_path' );
|
267 |
-
|
268 |
-
// Allow the backups path to be defined
|
269 |
-
if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH )
|
270 |
-
$path = HMBKP_PATH;
|
271 |
-
|
272 |
-
// If the dir doesn't exist or isn't writable then use the default path instead instead
|
273 |
-
if ( ( ! $path || ( is_dir( $path ) && ! is_writable( $path ) ) || ( ! is_dir( $path ) && ! is_writable( dirname( $path ) ) ) ) && get_option( 'hmbkp_path' ) !== get_option( 'hmbkp_default_path' ) )
|
274 |
-
$path = hmbkp_path_default();
|
275 |
-
|
276 |
-
// Create the backups directory if it doesn't exist
|
277 |
-
if ( ! is_dir( $path ) && is_writable( dirname( $path ) ) )
|
278 |
-
mkdir( $path, 0755 );
|
279 |
-
|
280 |
-
// If the path has changed then cache it
|
281 |
-
if ( get_option( 'hmbkp_path' ) !== $path )
|
282 |
-
update_option( 'hmbkp_path', $path );
|
283 |
-
|
284 |
-
// Protect against directory browsing by including a index.html file
|
285 |
-
$index = $path . '/index.html';
|
286 |
-
|
287 |
-
if ( ! file_exists( $index ) && is_writable( $path ) )
|
288 |
-
file_put_contents( $index, '' );
|
289 |
-
|
290 |
-
$htaccess = $path . '/.htaccess';
|
291 |
-
|
292 |
-
// Protect the directory with a .htaccess file on Apache servers
|
293 |
-
if ( $is_apache && function_exists( 'insert_with_markers' ) && ! file_exists( $htaccess ) && is_writable( $path ) ) {
|
294 |
-
|
295 |
-
$contents[] = '# ' . sprintf( __( 'This %s file ensures that other people cannot download your backup files.', 'hmbkp' ), '.htaccess' );
|
296 |
-
$contents[] = '';
|
297 |
-
$contents[] = '<IfModule mod_rewrite.c>';
|
298 |
-
$contents[] = 'RewriteEngine On';
|
299 |
-
$contents[] = 'RewriteCond %{QUERY_STRING} !key=' . HMBKP_SECURE_KEY;
|
300 |
-
$contents[] = 'RewriteRule (.*) - [F]';
|
301 |
-
$contents[] = '</IfModule>';
|
302 |
-
$contents[] = '';
|
303 |
-
|
304 |
-
insert_with_markers( $htaccess, 'BackUpWordPress', $contents );
|
305 |
-
|
306 |
-
}
|
307 |
-
|
308 |
-
return HM_Backup::conform_dir( $path );
|
309 |
-
|
310 |
-
}
|
311 |
-
|
312 |
-
/**
|
313 |
-
* Return the default backup path
|
314 |
-
*
|
315 |
-
* @return string path
|
316 |
-
*/
|
317 |
-
function hmbkp_path_default() {
|
318 |
-
|
319 |
-
$path = get_option( 'hmbkp_default_path' );
|
320 |
-
|
321 |
-
if ( empty( $path ) ) {
|
322 |
-
|
323 |
-
$path = HM_Backup::conform_dir( trailingslashit( WP_CONTENT_DIR ) . substr( md5( time() ), 0, 10 ) . '-backups' );
|
324 |
-
|
325 |
-
update_option( 'hmbkp_default_path', $path );
|
326 |
-
|
327 |
-
}
|
328 |
-
|
329 |
-
$upload_dir = wp_upload_dir();
|
330 |
-
|
331 |
-
// If the backups dir can't be created in WP_CONTENT_DIR then fallback to uploads
|
332 |
-
if ( ( ( ! is_dir( $path ) && ! is_writable( dirname( $path ) ) ) || ( is_dir( $path ) && ! is_writable( $path ) ) ) && strpos( $path, $upload_dir['basedir'] ) === false ) {
|
333 |
-
|
334 |
-
hmbkp_path_move( $path, $path = HM_Backup::conform_dir( trailingslashit( $upload_dir['basedir'] ) . substr( md5( time() ), 0, 10 ) . '-backups' ) );
|
335 |
-
|
336 |
-
update_option( 'hmbkp_default_path', $path );
|
337 |
-
|
338 |
-
}
|
339 |
-
|
340 |
-
return $path;
|
341 |
-
}
|
342 |
-
|
343 |
-
/**
|
344 |
-
* Move the backup directory and all existing backup files to a new
|
345 |
-
* location
|
346 |
-
*
|
347 |
-
* @param string $from path to move the backups dir from
|
348 |
-
* @param string $to path to move the backups dir to
|
349 |
-
* @return void
|
350 |
-
*/
|
351 |
-
function hmbkp_path_move( $from, $to ) {
|
352 |
-
|
353 |
-
if ( ! untrailingslashit( $from ) || ! untrailingslashit( $to ) )
|
354 |
-
return;
|
355 |
-
|
356 |
-
// Create the custom backups directory if it doesn't exist
|
357 |
-
if ( is_writable( dirname( $to ) ) && ! is_dir( $to ) )
|
358 |
-
mkdir( $to, 0755 );
|
359 |
-
|
360 |
-
if ( ! is_dir( $to ) || ! is_writable( $to ) )
|
361 |
-
return false;
|
362 |
-
|
363 |
-
update_option( 'hmbkp_path', $to );
|
364 |
-
|
365 |
-
hmbkp_cleanup();
|
366 |
-
|
367 |
-
if ( ! is_dir( $from ) )
|
368 |
-
return false;
|
369 |
-
|
370 |
-
if ( $handle = opendir( $from ) ) :
|
371 |
-
|
372 |
-
while ( false !== ( $file = readdir( $handle ) ) )
|
373 |
-
if ( $file !== '.' && $file !== '..' )
|
374 |
-
if ( ! @rename( trailingslashit( $from ) . $file, trailingslashit( $to ) . $file ) )
|
375 |
-
copy( trailingslashit( $from ) . $file, trailingslashit( $to ) . $file );
|
376 |
-
|
377 |
-
closedir( $handle );
|
378 |
-
|
379 |
-
endif;
|
380 |
-
|
381 |
-
hmbkp_rmdirtree( $from );
|
382 |
-
|
383 |
-
}
|
384 |
-
|
385 |
-
/**
|
386 |
-
* Check if a backup is possible with regards to file
|
387 |
-
* permissions etc.
|
388 |
-
*
|
389 |
-
* @return bool
|
390 |
-
*/
|
391 |
-
function hmbkp_possible() {
|
392 |
-
|
393 |
-
if ( ! is_writable( hmbkp_path() ) || ! is_dir( hmbkp_path() ) )
|
394 |
-
return false;
|
395 |
-
|
396 |
-
return true;
|
397 |
-
}
|
398 |
-
|
399 |
-
/**
|
400 |
-
* Remove any non backup.zip files from the backups dir.
|
401 |
-
*
|
402 |
-
* @return void
|
403 |
-
*/
|
404 |
-
function hmbkp_cleanup() {
|
405 |
-
|
406 |
-
$hmbkp_path = hmbkp_path();
|
407 |
-
|
408 |
-
if ( ! is_dir( $hmbkp_path ) )
|
409 |
-
return;
|
410 |
-
|
411 |
-
if ( $handle = opendir( $hmbkp_path ) ) :
|
412 |
-
|
413 |
-
while ( false !== ( $file = readdir( $handle ) ) )
|
414 |
-
if ( ! in_array( $file, array( '.', '..', 'index.html' ) ) && pathinfo( $file, PATHINFO_EXTENSION ) !== 'zip' )
|
415 |
-
hmbkp_rmdirtree( trailingslashit( $hmbkp_path ) . $file );
|
416 |
-
|
417 |
-
closedir( $handle );
|
418 |
-
|
419 |
-
endif;
|
420 |
-
|
421 |
-
}
|
422 |
-
|
423 |
-
/**
|
424 |
-
* Handles changes in the defined Constants
|
425 |
-
* that users can define to control advanced
|
426 |
-
* settings
|
427 |
-
*/
|
428 |
-
function hmbkp_constant_changes() {
|
429 |
-
|
430 |
-
// If a custom backup path has been set or changed
|
431 |
-
if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH && HM_Backup::conform_dir( HMBKP_PATH ) !== ( $from = HM_Backup::conform_dir( get_option( 'hmbkp_path' ) ) ) )
|
432 |
-
hmbkp_path_move( $from, HMBKP_PATH );
|
433 |
-
|
434 |
-
// If a custom backup path has been removed
|
435 |
-
if ( ( ( defined( 'HMBKP_PATH' ) && ! HMBKP_PATH ) || ! defined( 'HMBKP_PATH' ) && hmbkp_path_default() !== ( $from = HM_Backup::conform_dir( get_option( 'hmbkp_path' ) ) ) ) )
|
436 |
-
hmbkp_path_move( $from, hmbkp_path_default() );
|
437 |
-
|
438 |
-
// If the custom path has changed and the new directory isn't writable
|
439 |
-
if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH && ! is_writable( HMBKP_PATH ) && get_option( 'hmbkp_path' ) === HMBKP_PATH && is_dir( HMBKP_PATH ) )
|
440 |
-
hmbkp_path_move( HMBKP_PATH, hmbkp_path_default() );
|
441 |
-
|
442 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/functions/interface.php
DELETED
@@ -1,296 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Displays a row in the manage backups table
|
5 |
-
*
|
6 |
-
* @param string $file
|
7 |
-
*/
|
8 |
-
function hmbkp_get_backup_row( $file, HMBKP_Scheduled_Backup $schedule ) {
|
9 |
-
|
10 |
-
$encoded_file = urlencode( base64_encode( $file ) );
|
11 |
-
$offset = get_option( 'gmt_offset' ) * 3600; ?>
|
12 |
-
|
13 |
-
<tr class="hmbkp_manage_backups_row<?php if ( file_exists( hmbkp_path() . '/.backup_complete' ) ) : ?> completed<?php unlink( hmbkp_path() . '/.backup_complete' ); endif; ?>">
|
14 |
-
|
15 |
-
<th scope="row">
|
16 |
-
<?php echo esc_attr( date_i18n( get_option( 'date_format' ) . ' - ' . get_option( 'time_format' ), @filemtime( $file ) + $offset ) ); ?>
|
17 |
-
</th>
|
18 |
-
|
19 |
-
<td class="code">
|
20 |
-
<?php echo esc_attr( size_format( @filesize( $file ) ) ); ?>
|
21 |
-
</td>
|
22 |
-
|
23 |
-
<td><?php echo esc_attr( hmbkp_human_get_type( $file, $schedule ) ); ?></td>
|
24 |
-
|
25 |
-
<td>
|
26 |
-
|
27 |
-
<a href="<?php echo wp_nonce_url( admin_url( 'tools.php?page=' . HMBKP_PLUGIN_SLUG . '&hmbkp_download_backup=' . $encoded_file . '&hmbkp_schedule_id=' . $schedule->get_id() ), 'hmbkp-download_backup' ); ?>"><?php _e( 'Download', 'hmbkp' ); ?></a> |
|
28 |
-
<a href="<?php echo wp_nonce_url( admin_url( 'tools.php?page=' . HMBKP_PLUGIN_SLUG . '&hmbkp_delete_backup=' . $encoded_file . '&hmbkp_schedule_id=' . $schedule->get_id() ), 'hmbkp-delete_backup' ); ?>" class="delete-action"><?php _e( 'Delete', 'hmbkp' ); ?></a>
|
29 |
-
|
30 |
-
</td>
|
31 |
-
|
32 |
-
</tr>
|
33 |
-
|
34 |
-
<?php }
|
35 |
-
|
36 |
-
/**
|
37 |
-
* Displays admin notices for various error / warning
|
38 |
-
* conditions
|
39 |
-
*
|
40 |
-
* @return void
|
41 |
-
*/
|
42 |
-
function hmbkp_admin_notices() {
|
43 |
-
|
44 |
-
// If the backups directory doesn't exist and can't be automatically created
|
45 |
-
if ( ! is_dir( hmbkp_path() ) ) :
|
46 |
-
|
47 |
-
function hmbkp_path_exists_warning() {
|
48 |
-
$php_user = exec( 'whoami' );
|
49 |
-
$php_group = reset( explode( ' ', exec( 'groups' ) ) );
|
50 |
-
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress is almost ready.', 'hmbkp' ) . '</strong> ' . sprintf( __( 'The backups directory can\'t be created because your %1$s directory isn\'t writable, run %2$s or %3$s or create the folder yourself.', 'hmbkp' ), '<code>wp-content</code>', '<code>chown ' . $php_user . ':' . $php_group . ' ' . dirname( hmbkp_path() ) . '</code>', '<code>chmod 777 ' . dirname( hmbkp_path() ) . '</code>' ) . '</p></div>';
|
51 |
-
}
|
52 |
-
add_action( 'admin_notices', 'hmbkp_path_exists_warning' );
|
53 |
-
|
54 |
-
endif;
|
55 |
-
|
56 |
-
// If the backups directory exists but isn't writable
|
57 |
-
if ( is_dir( hmbkp_path() ) && ! is_writable( hmbkp_path() ) ) :
|
58 |
-
|
59 |
-
function hmbkp_writable_path_warning() {
|
60 |
-
$php_user = exec( 'whoami' );
|
61 |
-
$php_group = reset( explode( ' ', exec( 'groups' ) ) );
|
62 |
-
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress is almost ready.', 'hmbkp' ) . '</strong> ' . sprintf( __( 'Your backups directory isn\'t writable, run %1$s or %2$s or set the permissions yourself.', 'hmbkp' ), '<code>chown -R ' . esc_attr( $php_user ) . ':' . esc_attr( $php_group ) . ' ' . esc_attr( hmbkp_path() ) . '</code>', '<code>chmod -R 777 ' . esc_attr( hmbkp_path() ) . '</code>' ) . '</p></div>';
|
63 |
-
}
|
64 |
-
add_action( 'admin_notices', 'hmbkp_writable_path_warning' );
|
65 |
-
|
66 |
-
endif;
|
67 |
-
|
68 |
-
// If safe mode is active
|
69 |
-
if ( HM_Backup::is_safe_mode_active() ) :
|
70 |
-
|
71 |
-
function hmbkp_safe_mode_warning() {
|
72 |
-
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'hmbkp' ) . '</strong> ' . sprintf( __( '%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on.', 'hmbkp' ), '<code>PHP</code>', sprintf( '<a href="%1$s">%2$s</a>', __( 'http://php.net/manual/en/features.safe-mode.php', 'hmbkp' ), __( 'Safe Mode', 'hmbkp' ) ), '<code>' . __( 'Safe Mode', 'hmbkp' ) . '</code>' ) . '</p></div>';
|
73 |
-
}
|
74 |
-
add_action( 'admin_notices', 'hmbkp_safe_mode_warning' );
|
75 |
-
|
76 |
-
endif;
|
77 |
-
|
78 |
-
// If a custom backups directory is defined and it doesn't exist and can't be created
|
79 |
-
if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH && ! is_dir( HMBKP_PATH ) ) :
|
80 |
-
|
81 |
-
function hmbkp_custom_path_exists_warning() {
|
82 |
-
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'hmbkp' ) . '</strong> ' . sprintf( __( 'Your custom backups directory %1$s doesn\'t exist and can\'t be created, your backups will be saved to %2$s instead.', 'hmbkp' ), '<code>' . esc_attr( HMBKP_PATH ) . '</code>', '<code>' . esc_attr( hmbkp_path() ) . '</code>' ) . '</p></div>';
|
83 |
-
}
|
84 |
-
add_action( 'admin_notices', 'hmbkp_custom_path_exists_warning' );
|
85 |
-
|
86 |
-
endif;
|
87 |
-
|
88 |
-
// If a custom backups directory is defined and exists but isn't writable
|
89 |
-
if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH && is_dir( HMBKP_PATH ) && ! is_writable( HMBKP_PATH ) ) :
|
90 |
-
|
91 |
-
function hmbkp_custom_path_writable_notice() {
|
92 |
-
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'hmbkp' ) . '</strong> ' . sprintf( __( 'Your custom backups directory %1$s isn\'t writable, new backups will be saved to %2$s instead.', 'hmbkp' ), '<code>' . esc_attr( HMBKP_PATH ) . '</code>', '<code>' . esc_attr( hmbkp_path() ) . '</code>' ) . '</p></div>';
|
93 |
-
}
|
94 |
-
add_action( 'admin_notices', 'hmbkp_custom_path_writable_notice' );
|
95 |
-
|
96 |
-
endif;
|
97 |
-
|
98 |
-
// If there are any errors reported in the backup
|
99 |
-
if ( hmbkp_backup_errors_message() ) :
|
100 |
-
|
101 |
-
function hmbkp_backup_errors_notice() {
|
102 |
-
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress detected issues with your last backup.', 'hmbkp' ) . '</strong><a href="' . add_query_arg( 'action', 'hmbkp_dismiss_error' ) . '" style="float: right;" class="button">Dismiss</a></p>' . hmbkp_backup_errors_message() . '</div>';
|
103 |
-
}
|
104 |
-
add_action( 'admin_notices', 'hmbkp_backup_errors_notice' );
|
105 |
-
|
106 |
-
endif;
|
107 |
-
|
108 |
-
if ( ! empty( $_GET['reason'] ) ) :
|
109 |
-
|
110 |
-
function hmbkp_backup_failed_notice() {
|
111 |
-
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress failed to perform the backup.', 'hmbkp' ) . '</strong> ' . __( 'You have likely hit a memory limit.', 'hmbkp' ) . '<a href="' . add_query_arg( 'action', 'hmbkp_dismiss_error' ) . '" style="float: right;" class="button">Dismiss</a></p></div>';
|
112 |
-
}
|
113 |
-
//add_action( 'admin_notices', 'hmbkp_backup_failed_notice' );
|
114 |
-
|
115 |
-
endif;
|
116 |
-
|
117 |
-
}
|
118 |
-
add_action( 'admin_head', 'hmbkp_admin_notices' );
|
119 |
-
|
120 |
-
/**
|
121 |
-
* Hook in an change the plugin description when BackUpWordPress is activated
|
122 |
-
*
|
123 |
-
* @param array $plugins
|
124 |
-
* @return $plugins
|
125 |
-
*/
|
126 |
-
function hmbkp_plugin_row( $plugins ) {
|
127 |
-
|
128 |
-
if ( isset( $plugins[HMBKP_PLUGIN_SLUG . '/plugin.php'] ) )
|
129 |
-
$plugins[HMBKP_PLUGIN_SLUG . '/plugin.php']['Description'] = str_replace( 'Once activated you\'ll find me under <strong>Tools → Backups</strong>', 'Find me under <strong><a href="' . admin_url( 'tools.php?page=' . HMBKP_PLUGIN_SLUG ) . '">Tools → Backups</a></strong>', $plugins[HMBKP_PLUGIN_SLUG . '/plugin.php']['Description'] );
|
130 |
-
|
131 |
-
return $plugins;
|
132 |
-
|
133 |
-
}
|
134 |
-
add_filter( 'all_plugins', 'hmbkp_plugin_row', 10 );
|
135 |
-
|
136 |
-
/**
|
137 |
-
* Parse the json string of errors and
|
138 |
-
* output as a human readable message
|
139 |
-
*
|
140 |
-
* @access public
|
141 |
-
* @return null
|
142 |
-
*/
|
143 |
-
function hmbkp_backup_errors_message() {
|
144 |
-
|
145 |
-
$message = '';
|
146 |
-
|
147 |
-
foreach ( (array) json_decode( hmbkp_backup_errors() ) as $key => $errors )
|
148 |
-
foreach ( $errors as $error )
|
149 |
-
$message .= '<p><strong>' . $key . '</strong>: <code>' . implode( ':', (array) $error ) . '</code></p>';
|
150 |
-
|
151 |
-
return $message;
|
152 |
-
|
153 |
-
}
|
154 |
-
|
155 |
-
/**
|
156 |
-
* Display a html list of files
|
157 |
-
*
|
158 |
-
* @param HMBKP_Scheduled_Backup $schedule
|
159 |
-
* @param mixed $excludes (default: null)
|
160 |
-
* @param string $file_method (default: 'get_included_files')
|
161 |
-
* @return void
|
162 |
-
*/
|
163 |
-
function hmbkp_file_list( HMBKP_Scheduled_Backup $schedule, $excludes = null, $file_method = 'get_included_files' ) {
|
164 |
-
|
165 |
-
if ( ! is_null( $excludes ) )
|
166 |
-
$schedule->set_excludes( $excludes );
|
167 |
-
|
168 |
-
$exclude_string = $schedule->exclude_string( 'regex' ); ?>
|
169 |
-
|
170 |
-
<ul class="hmbkp_file_list code">
|
171 |
-
|
172 |
-
<?php foreach( $schedule->get_files() as $file ) :
|
173 |
-
|
174 |
-
if ( ! is_null( $excludes ) && strpos( $file, str_ireplace( $schedule->get_root(), '', $schedule->get_path() ) ) !== false )
|
175 |
-
continue;
|
176 |
-
|
177 |
-
// Skip dot files, they should only exist on versions of PHP between 5.2.11 -> 5.3
|
178 |
-
if ( method_exists( $file, 'isDot' ) && $file->isDot() )
|
179 |
-
continue;
|
180 |
-
|
181 |
-
// Show only unreadable files
|
182 |
-
if ( $file_method === 'get_unreadable_files' && $file->isReadable() )
|
183 |
-
continue;
|
184 |
-
|
185 |
-
// Skip unreadable files
|
186 |
-
elseif ( $file_method !== 'get_unreadable_files' && ! $file->isReadable() )
|
187 |
-
continue;
|
188 |
-
|
189 |
-
// Show only included files
|
190 |
-
if ( $file_method === 'get_included_files' )
|
191 |
-
if ( $exclude_string && preg_match( '(' . $exclude_string . ')', str_ireplace( trailingslashit( $schedule->get_root() ), '', HM_Backup::conform_dir( $file->getPathname() ) ) ) )
|
192 |
-
continue;
|
193 |
-
|
194 |
-
// Show only excluded files
|
195 |
-
if ( $file_method === 'get_excluded_files' )
|
196 |
-
if ( ! $exclude_string || ! preg_match( '(' . $exclude_string . ')', str_ireplace( trailingslashit( $schedule->get_root() ), '', HM_Backup::conform_dir( $file->getPathname() ) ) ) )
|
197 |
-
continue;
|
198 |
-
|
199 |
-
if ( $file->isDir() ) { ?>
|
200 |
-
|
201 |
-
<li title="<?php echo esc_attr( HM_Backup::conform_dir( trailingslashit( $file->getPathName() ) ) ); ?>"><?php echo esc_html( ltrim( trailingslashit( str_ireplace( HM_Backup::conform_dir( trailingslashit( $schedule->get_root() ) ), '', HM_Backup::conform_dir( $file->getPathName() ) ) ), '/' ) ); ?></li>
|
202 |
-
|
203 |
-
<?php } else { ?>
|
204 |
-
|
205 |
-
<li title="<?php echo esc_attr( HM_Backup::conform_dir( $file->getPathName() ) ); ?>"><?php echo esc_html( ltrim( str_ireplace( HM_Backup::conform_dir( trailingslashit( $schedule->get_root() ) ), '', HM_Backup::conform_dir( $file->getPathName() ) ), '/' ) ); ?></li>
|
206 |
-
|
207 |
-
<?php }
|
208 |
-
|
209 |
-
endforeach; ?>
|
210 |
-
|
211 |
-
</ul>
|
212 |
-
|
213 |
-
<?php }
|
214 |
-
|
215 |
-
|
216 |
-
/**
|
217 |
-
* Get the human readable backup type in.
|
218 |
-
*
|
219 |
-
* @access public
|
220 |
-
* @param string $type
|
221 |
-
* @param HMBKP_Scheduled_Backup $schedule (default: null)
|
222 |
-
* @return string
|
223 |
-
*/
|
224 |
-
function hmbkp_human_get_type( $type, HMBKP_Scheduled_Backup $schedule = null ) {
|
225 |
-
|
226 |
-
if ( strpos( $type, 'complete' ) !== false )
|
227 |
-
return __( 'Database and Files', 'hmbkp' );
|
228 |
-
|
229 |
-
if ( strpos( $type, 'file' ) !== false )
|
230 |
-
return __( 'Files', 'hmbkp' );
|
231 |
-
|
232 |
-
if ( strpos( $type, 'database' ) !== false )
|
233 |
-
return __( 'Database', 'hmbkp' );
|
234 |
-
|
235 |
-
if ( ! is_null( $schedule ) )
|
236 |
-
return hmbkp_human_get_type( $schedule->get_type() );
|
237 |
-
|
238 |
-
return __( 'Legacy', 'hmbkp' );
|
239 |
-
|
240 |
-
}
|
241 |
-
|
242 |
-
|
243 |
-
/**
|
244 |
-
* Display the row of actions for a schedule
|
245 |
-
*
|
246 |
-
* @access public
|
247 |
-
* @param HMBKP_Scheduled_Backup $schedule
|
248 |
-
* @return void
|
249 |
-
*/
|
250 |
-
function hmbkp_schedule_actions( HMBKP_Scheduled_Backup $schedule ) { ?>
|
251 |
-
|
252 |
-
<span class="hmbkp-status"><?php echo $schedule->get_status() ? $schedule->get_status() : __( 'Starting Backup', 'hmbkp' ); ?> <a href="<?php echo add_query_arg( array( 'action' => 'hmbkp_cancel', 'hmbkp_schedule_id' => $schedule->get_id() ), HMBKP_ADMIN_URL ); ?>"><?php _e( 'cancel', 'hmbkp' ); ?></a></span>
|
253 |
-
|
254 |
-
<div class="hmbkp-schedule-actions row-actions">
|
255 |
-
|
256 |
-
<a class="fancybox" href="<?php echo add_query_arg( array( 'action' => 'hmbkp_edit_schedule_load', 'hmbkp_schedule_id' => $schedule->get_id() ), admin_url( 'admin-ajax.php' ) ); ?>"><?php _e( 'Settings', 'hmbkp' ); ?></a> |
|
257 |
-
|
258 |
-
<?php if ( $schedule->get_type() !== 'database' ) { ?>
|
259 |
-
<a class="fancybox" href="<?php echo add_query_arg( array( 'action' => 'hmbkp_edit_schedule_excludes_load', 'hmbkp_schedule_id' => $schedule->get_id() ), admin_url( 'admin-ajax.php' ) ); ?>"><?php _e( 'Excludes', 'hmbkp' ); ?></a> |
|
260 |
-
<?php } ?>
|
261 |
-
|
262 |
-
<a class="hmbkp-run" href="<?php echo add_query_arg( array( 'action' => 'hmbkp_run_schedule', 'hmbkp_schedule_id' => $schedule->get_id() ), admin_url( 'admin-ajax.php' ) ); ?>"><?php _e( 'Run now', 'hmbkp' ); ?></a> |
|
263 |
-
|
264 |
-
<a class="delete-action" href="<?php echo wp_nonce_url( add_query_arg( array( 'action' => 'hmbkp_delete_schedule', 'hmbkp_schedule_id' => $schedule->get_id() ), HMBKP_ADMIN_URL ), 'hmbkp-delete_schedule' ); ?>"><?php _e( 'Delete', 'hmbkp' ); ?></a>
|
265 |
-
|
266 |
-
</div>
|
267 |
-
|
268 |
-
<?php }
|
269 |
-
|
270 |
-
/**
|
271 |
-
* Load the backup errors file
|
272 |
-
*
|
273 |
-
* @return string
|
274 |
-
*/
|
275 |
-
function hmbkp_backup_errors() {
|
276 |
-
|
277 |
-
if ( ! file_exists( hmbkp_path() . '/.backup_errors' ) )
|
278 |
-
return '';
|
279 |
-
|
280 |
-
return file_get_contents( hmbkp_path() . '/.backup_errors' );
|
281 |
-
|
282 |
-
}
|
283 |
-
|
284 |
-
/**
|
285 |
-
* Load the backup warnings file
|
286 |
-
*
|
287 |
-
* @return string
|
288 |
-
*/
|
289 |
-
function hmbkp_backup_warnings() {
|
290 |
-
|
291 |
-
if ( ! file_exists( hmbkp_path() . '/.backup_warnings' ) )
|
292 |
-
return '';
|
293 |
-
|
294 |
-
return file_get_contents( hmbkp_path() . '/.backup_warnings' );
|
295 |
-
|
296 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/icon.png
DELETED
Binary file
|
backupwordpress/languages/hmbkp-de_DE.mo
DELETED
Binary file
|
backupwordpress/languages/hmbkp-de_DE.po
DELETED
@@ -1,614 +0,0 @@
|
|
1 |
-
# Translation of 2.x in German
|
2 |
-
# This file is distributed under the same license as the 2.x package.
|
3 |
-
msgid ""
|
4 |
-
msgstr ""
|
5 |
-
"PO-Revision-Date: 2012-11-22 15:38:29+0000\n"
|
6 |
-
"MIME-Version: 1.0\n"
|
7 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
-
"Content-Transfer-Encoding: 8bit\n"
|
9 |
-
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
10 |
-
"X-Generator: GlotPress/0.1\n"
|
11 |
-
"Project-Id-Version: 2.x\n"
|
12 |
-
|
13 |
-
#: admin/actions.php:419
|
14 |
-
msgid "Email to Support"
|
15 |
-
msgstr ""
|
16 |
-
|
17 |
-
#: admin/page.php:17
|
18 |
-
msgid "If your finding BackUpWordPress useful, please %s."
|
19 |
-
msgstr ""
|
20 |
-
|
21 |
-
#: admin/schedule-form-excludes.php:13
|
22 |
-
msgid "New Exclude Rule[s]"
|
23 |
-
msgstr ""
|
24 |
-
|
25 |
-
#: admin/actions.php:410
|
26 |
-
msgid "Your BackUp Failed"
|
27 |
-
msgstr ""
|
28 |
-
|
29 |
-
#: admin/actions.php:412
|
30 |
-
msgid "Here's the response from the server:"
|
31 |
-
msgstr ""
|
32 |
-
|
33 |
-
#: admin/page.php:19
|
34 |
-
msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page."
|
35 |
-
msgstr ""
|
36 |
-
|
37 |
-
#: admin/page.php:17
|
38 |
-
msgid "rate it on the plugin directory"
|
39 |
-
msgstr ""
|
40 |
-
|
41 |
-
#: classes/schedule.php:512 functions/interface.php:252
|
42 |
-
msgid "Starting Backup"
|
43 |
-
msgstr ""
|
44 |
-
|
45 |
-
#: classes/schedule.php:582
|
46 |
-
msgid "Dumping Database %s"
|
47 |
-
msgstr ""
|
48 |
-
|
49 |
-
#: classes/schedule.php:588
|
50 |
-
msgid "Verifying Database Dump %s"
|
51 |
-
msgstr ""
|
52 |
-
|
53 |
-
#: classes/schedule.php:594
|
54 |
-
msgid "Creating zip archive %s"
|
55 |
-
msgstr ""
|
56 |
-
|
57 |
-
#: classes/schedule.php:600
|
58 |
-
msgid "Verifying Zip Archive %s"
|
59 |
-
msgstr ""
|
60 |
-
|
61 |
-
#: classes/schedule.php:606
|
62 |
-
msgid "Finishing Backup"
|
63 |
-
msgstr ""
|
64 |
-
|
65 |
-
#: classes/wp-cli.php:16
|
66 |
-
msgid "BackUpWordPress may not work when php is running with %s on"
|
67 |
-
msgstr ""
|
68 |
-
|
69 |
-
#: functions/interface.php:72
|
70 |
-
msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on."
|
71 |
-
msgstr ""
|
72 |
-
|
73 |
-
#: admin/constants.php:29
|
74 |
-
msgid "The time that your schedules should run. Defaults to %s."
|
75 |
-
msgstr "Die Dauer, über die deine geplanten Aufgaben laufen sollen. Standard: %s."
|
76 |
-
|
77 |
-
#: plugin.php:142
|
78 |
-
msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted."
|
79 |
-
msgstr "Bist du sicher, dass dieser Plan gelöscht werden soll? Alle zugehörigen Backups werden mit diesem Schritt auch gelöscht."
|
80 |
-
|
81 |
-
#: plugin.php:142 plugin.php:143 plugin.php:144 plugin.php:145
|
82 |
-
msgid "'Cancel' to go back, 'OK' to delete."
|
83 |
-
msgstr "'Abbrechen' zum Zurückkehren, 'OK' zum Löschen."
|
84 |
-
|
85 |
-
#: plugin.php:143
|
86 |
-
msgid "Are you sure you want to delete this backup?"
|
87 |
-
msgstr "Bist du sicher, dass du dieses Backup löschen möchtest?"
|
88 |
-
|
89 |
-
#: plugin.php:144
|
90 |
-
msgid "Are you sure you want to remove this exclude rule?"
|
91 |
-
msgstr "Bist du sicher, dass du diese Ausschlussregel entfernen möchtest?"
|
92 |
-
|
93 |
-
#: plugin.php:145
|
94 |
-
msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?"
|
95 |
-
msgstr "Das Verringern der Anzahl der Backups, die auf diesem Server vorgehalten werden, bewirkt, dass einige existierende Backups gelöscht werden. Bist du sicher, dass du dies möchtest?"
|
96 |
-
|
97 |
-
#: admin/actions.php:291
|
98 |
-
msgid "Max backups can't be empty"
|
99 |
-
msgstr "Die maximale Anzahl Backups kann nicht leer sein."
|
100 |
-
|
101 |
-
#: admin/actions.php:297
|
102 |
-
msgid "Max backups must be greater than 0"
|
103 |
-
msgstr "Die maximale Anzahl Backups muss größer als 0 sein."
|
104 |
-
|
105 |
-
#: admin/actions.php:396
|
106 |
-
msgid "Exclude"
|
107 |
-
msgstr "Ausschließen"
|
108 |
-
|
109 |
-
#: admin/schedule-form-excludes.php:44
|
110 |
-
msgid "default"
|
111 |
-
msgstr "standard"
|
112 |
-
|
113 |
-
#: admin/schedule-form-excludes.php:48
|
114 |
-
msgid "defined"
|
115 |
-
msgstr "festgelegt"
|
116 |
-
|
117 |
-
#: admin/schedule-form.php:27
|
118 |
-
msgid "Manual Only"
|
119 |
-
msgstr "Nur manuell"
|
120 |
-
|
121 |
-
#: admin/schedule-form.php:45
|
122 |
-
msgid "The number of previous backups to store on the server. past this limit older backups will be deleted automatically."
|
123 |
-
msgstr "Die Anzahl der Backups, die auf diesem Server vorgehalten werden. Bei Überschreitung des Limits werden ältere Backups automatisch gelöscht."
|
124 |
-
|
125 |
-
#: admin/schedule.php:4
|
126 |
-
msgid "this shouldn't take long…"
|
127 |
-
msgstr "das sollte nicht lange dauern…"
|
128 |
-
|
129 |
-
#: admin/schedule.php:4
|
130 |
-
msgid "calculating the size of your site…"
|
131 |
-
msgstr "Wir berechnen die Größe deiner Seite…"
|
132 |
-
|
133 |
-
#: admin/schedule.php:12
|
134 |
-
msgid "The next backup will be on %1$s at %2$s"
|
135 |
-
msgstr "Das nächste Backup wird ausgeführt am %1$s um %2$s."
|
136 |
-
|
137 |
-
#: admin/schedule.php:37
|
138 |
-
msgid "every 12 hours at %1$s & %2$s"
|
139 |
-
msgstr "alle 12 Stunden um %1$s & %2$s"
|
140 |
-
|
141 |
-
#: admin/schedule.php:43
|
142 |
-
msgid "weekly on %1$s at %2$s"
|
143 |
-
msgstr "wöchentlich am %1$s um %2$s"
|
144 |
-
|
145 |
-
#: admin/schedule.php:49
|
146 |
-
msgid "fortnightly on %1$s at %2$s"
|
147 |
-
msgstr "zweiwöchentlich am %1$s um %2$s"
|
148 |
-
|
149 |
-
#: admin/schedule.php:56
|
150 |
-
msgid "on the %1$s of each month at %2$s"
|
151 |
-
msgstr "am %1$s. jedes Monats um %2$s"
|
152 |
-
|
153 |
-
#: admin/schedule.php:62
|
154 |
-
msgid "manually"
|
155 |
-
msgstr "manuell"
|
156 |
-
|
157 |
-
#: admin/schedule.php:68
|
158 |
-
msgid "this server"
|
159 |
-
msgstr "dieser Server"
|
160 |
-
|
161 |
-
#: admin/schedule.php:75
|
162 |
-
msgid "store the only the last backup on %s"
|
163 |
-
msgstr "Halte nur das letzte Backup auf %s vor."
|
164 |
-
|
165 |
-
#: admin/schedule.php:81
|
166 |
-
msgid "don't store any backups on %s"
|
167 |
-
msgstr "Speichere keine Backups auf %s"
|
168 |
-
|
169 |
-
#: admin/schedule.php:87
|
170 |
-
msgid "store only the last %1$s backups on %2$s"
|
171 |
-
msgstr "Halte nur die letzten %1$s Backups auf %2$s vor."
|
172 |
-
|
173 |
-
#: admin/schedule.php:96
|
174 |
-
msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s"
|
175 |
-
msgstr "Erstelle ein Backup meiner %1$s %2$s %3$s, %4$s. %5$s"
|
176 |
-
|
177 |
-
#: classes/email.php:23
|
178 |
-
msgid "Receive a notification email when a backup completes, if the backup is small enough (< 10mb) then it will be attached to the email. Separate multiple email address's with a comma."
|
179 |
-
msgstr "Erhalte eine E-Mail, wenn ein Backup fertiggestellt wurde. Ist das Backup nicht zu groß (< 10 MB), wird es an die E-Mail angehängt. Einzelne E-Mail-Adressen können durch Kommata getrennt angegeben werden."
|
180 |
-
|
181 |
-
#: classes/email.php:129
|
182 |
-
msgid "BackUpWordPress was unable to backup your site %1$s."
|
183 |
-
msgstr "BackUpWordPress konnte deine Seite %1$s nicht sichern."
|
184 |
-
|
185 |
-
#: classes/email.php:129
|
186 |
-
msgid "Here are the errors that we're encountered:"
|
187 |
-
msgstr "Hier sind die Fehler, auf die wir gestoßen sind:"
|
188 |
-
|
189 |
-
#: classes/email.php:129
|
190 |
-
msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look"
|
191 |
-
msgstr "Wenn dir die Fehlermeldung oben wie ein Marsmensch vorkommt, dann leite diese E-Mail weiter an %3$s und wir schauen und das an."
|
192 |
-
|
193 |
-
#: classes/email.php:129
|
194 |
-
msgid ""
|
195 |
-
"Kind Regards,\n"
|
196 |
-
"The Apologetic BackUpWordPress Backup Emailing Robot"
|
197 |
-
msgstr ""
|
198 |
-
"Mit freundlichen Grüßen\n"
|
199 |
-
"Der Untröstliche BackUpWordpress Backup-E-Mail-Roboter "
|
200 |
-
|
201 |
-
#: classes/email.php:142 classes/email.php:151
|
202 |
-
msgid "BackUpWordPress has completed a backup of your site %1$s."
|
203 |
-
msgstr "BackUpWordPress hat ein Backup deiner Seite %1$s fertiggestellt."
|
204 |
-
|
205 |
-
#: classes/email.php:142
|
206 |
-
msgid "The backup file should be attached to this email."
|
207 |
-
msgstr "Die Backup-Datei sollte dieser E-Mail angehängt sein."
|
208 |
-
|
209 |
-
#: classes/email.php:142 classes/email.php:151
|
210 |
-
msgid "You can download the backup file by clicking the link below:"
|
211 |
-
msgstr "Du kannst die Backup-Datei herunterladen, indem du auf den folgenden Link klickst:"
|
212 |
-
|
213 |
-
#: classes/email.php:142 classes/email.php:151
|
214 |
-
msgid ""
|
215 |
-
"Kind Regards,\n"
|
216 |
-
"The Happy BackUpWordPress Backup Emailing Robot"
|
217 |
-
msgstr ""
|
218 |
-
"Mit freundlichen Grüßen\n"
|
219 |
-
"Der Glückliche BackUpWordPress Backup-E-Mail-Roboter"
|
220 |
-
|
221 |
-
#: classes/email.php:151
|
222 |
-
msgid "Unfortunately the backup file was too large to attach to this email."
|
223 |
-
msgstr "Unglücklicherweise war die Backup-Datei zu groß, um sie dieser E-Mail anzuhängen."
|
224 |
-
|
225 |
-
#: classes/wp-cli.php:19
|
226 |
-
msgid "Backup: Dumping database..."
|
227 |
-
msgstr "Fertige Backup an: Sichere Datenbank..."
|
228 |
-
|
229 |
-
#: classes/wp-cli.php:23
|
230 |
-
msgid "Backup: Zipping everything up..."
|
231 |
-
msgstr "Fertige Backup an: Packe alles zusammen..."
|
232 |
-
|
233 |
-
#: classes/wp-cli.php:38
|
234 |
-
msgid "Invalid backup path"
|
235 |
-
msgstr "Ungültiges Backupverzeichnis"
|
236 |
-
|
237 |
-
#: classes/wp-cli.php:43
|
238 |
-
msgid "Invalid root path"
|
239 |
-
msgstr "Ungültiges Rootverzeichnis"
|
240 |
-
|
241 |
-
#: classes/wp-cli.php:68
|
242 |
-
msgid "Backup Complete: "
|
243 |
-
msgstr "Backup fertiggestellt:"
|
244 |
-
|
245 |
-
#: classes/wp-cli.php:71
|
246 |
-
msgid "Backup Failed"
|
247 |
-
msgstr "Backup fehlgeschlagen."
|
248 |
-
|
249 |
-
#: functions/core.php:202
|
250 |
-
msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules."
|
251 |
-
msgstr "Standardmäßig führt BackUpWordPress ein tägliches Backup deiner Datenbank und ein wöchentliches Backup deiner Datenbank & Dateien durch. Du kannst diesen Aufgabenplan selbstverständlich anpassen."
|
252 |
-
|
253 |
-
#: functions/interface.php:111
|
254 |
-
msgid "BackUpWordPress failed to perform the backup."
|
255 |
-
msgstr "BackUpWordPress ist am Ausführen des Backups gescheitert."
|
256 |
-
|
257 |
-
#: functions/interface.php:111
|
258 |
-
msgid "You have likely hit a memory limit."
|
259 |
-
msgstr "Du hast wahrscheinlich ein Speicherlimit überschritten."
|
260 |
-
|
261 |
-
#: functions/interface.php:238
|
262 |
-
msgid "Legacy"
|
263 |
-
msgstr ""
|
264 |
-
|
265 |
-
#: hm-backup/hm-backup.php:906
|
266 |
-
msgid "The mysqldump file was not created"
|
267 |
-
msgstr "Die MySQL-Abbilddatei konnte nicht erstellt werden."
|
268 |
-
|
269 |
-
#: functions/interface.php:62
|
270 |
-
msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself."
|
271 |
-
msgstr "Dein Backup-Verzeichnis ist nicht schreibbar. Führe %1$s oder %2$s aus oder setze die Berechtigungen selbst."
|
272 |
-
|
273 |
-
#: functions/interface.php:50
|
274 |
-
msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself."
|
275 |
-
msgstr "Das Backup-Verzeichnis kann nicht erstellt werden, weil dein %1$s-Verzeichnis nicht schreibbar ist. Führe %2$s oder %3$s aus oder erstelle das Verzeichnis selbst."
|
276 |
-
|
277 |
-
#: functions/core.php:202
|
278 |
-
msgid "BackUpWordPress has setup your default schedules."
|
279 |
-
msgstr "BackUpWordPress hat deine Standard-Pläne eingerichtet."
|
280 |
-
|
281 |
-
#: classes/email.php:127
|
282 |
-
msgid "Backup of %s Failed"
|
283 |
-
msgstr "Backup von %s fehlgeschlagen"
|
284 |
-
|
285 |
-
#: classes/email.php:50
|
286 |
-
msgid "Send an email notification to %s"
|
287 |
-
msgstr "Sende E-Mail-Benachrichtigungen an %s"
|
288 |
-
|
289 |
-
#: classes/email.php:72
|
290 |
-
msgid "%s isn't a valid email"
|
291 |
-
msgstr "%s ist keine gültige E-Mail-Adresse"
|
292 |
-
|
293 |
-
#: admin/schedule.php:4
|
294 |
-
msgid "Backups will be compressed and should be smaller than this."
|
295 |
-
msgstr "Die Backups werden komprimiert und sollten kleiner sein."
|
296 |
-
|
297 |
-
#: classes/email.php:19
|
298 |
-
msgid "Email notification"
|
299 |
-
msgstr "E-Mail-Benachrichtigung"
|
300 |
-
|
301 |
-
#: admin/schedule.php:19
|
302 |
-
msgid "hourly on the hour"
|
303 |
-
msgstr "stündlich zur vollen Stunde"
|
304 |
-
|
305 |
-
#: admin/schedule.php:25
|
306 |
-
msgid "daily at %s"
|
307 |
-
msgstr "täglich um %s"
|
308 |
-
|
309 |
-
#: admin/schedule-form.php:41
|
310 |
-
msgid "Number of backups to store on this server"
|
311 |
-
msgstr "Anzahl der Backups, die auf dem Server gespeichert bleiben"
|
312 |
-
|
313 |
-
#: admin/schedule-form.php:7
|
314 |
-
msgid "Schedule Settings"
|
315 |
-
msgstr "Plan-Einstellungen"
|
316 |
-
|
317 |
-
#: admin/actions.php:418 admin/schedule-form-excludes.php:119
|
318 |
-
msgid "Close"
|
319 |
-
msgstr "Schließen"
|
320 |
-
|
321 |
-
#: admin/menu.php:69
|
322 |
-
msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s."
|
323 |
-
msgstr "Diese Informationen sind für Version %1$s. Sieh dir die %2$s-Datei für Hilfe speziell für Version %3$s an."
|
324 |
-
|
325 |
-
#: admin/constants.php:26
|
326 |
-
msgid "The root directory that is backed up. Defaults to %s."
|
327 |
-
msgstr "Das Wurzelverzeichnis, das gesichert wird. Standard: %s"
|
328 |
-
|
329 |
-
#: admin/constants.php:23
|
330 |
-
msgid "The capability to use when calling %1$s. Defaults to %2$s."
|
331 |
-
msgstr "Die Rolle, die beim Aufrufen von %1$s benutzt wird. Standard: %2$s"
|
332 |
-
|
333 |
-
#: admin/constants.php:14
|
334 |
-
msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available."
|
335 |
-
msgstr "Der Pfad zur ausführbaren %1$s-Datei. Wird genutzt, um deine %2$s und %3$s als ZIP-Archiv zu komprimieren, wenn verfügbar."
|
336 |
-
|
337 |
-
#: plugin.php:71
|
338 |
-
msgid "BackUpWordPress requires WordPress version %s or greater."
|
339 |
-
msgstr "BackUpWordPress benötigt WordPress Version %s oder größer."
|
340 |
-
|
341 |
-
#: plugin.php:141 admin/actions.php:396
|
342 |
-
msgid "Cancel"
|
343 |
-
msgstr "Abbrechen"
|
344 |
-
|
345 |
-
#: admin/constants.php:11
|
346 |
-
msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available."
|
347 |
-
msgstr "Der Pfad zur ausführbaren %1$s-Datei. Wird für den %2$s-Teil des Backups genutzt, wenn verfügbar."
|
348 |
-
|
349 |
-
#: admin/constants.php:8 admin/constants.php:11 admin/constants.php:14
|
350 |
-
#: admin/constants.php:17 admin/constants.php:20 admin/constants.php:23
|
351 |
-
#: admin/constants.php:26 admin/constants.php:29
|
352 |
-
msgid "e.g."
|
353 |
-
msgstr "z.B."
|
354 |
-
|
355 |
-
#: admin/constants.php:3
|
356 |
-
msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted."
|
357 |
-
msgstr "Du kannst jede der folgenden %2$s in deinem %3$s %1$sn, um erweiterte Einstellungen vorzunehmen. %4$s. Definierte %5$s werden hervorgehoben."
|
358 |
-
|
359 |
-
#: admin/actions.php:192 admin/actions.php:195
|
360 |
-
msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details."
|
361 |
-
msgstr "%1$s gibt eine %2$s-Antwort zurück. Das könnte bedeuten, dass deine Cron-Jobs nicht richtig aufgerufen werden. BackUpWordPress benutzt wp-cron, um geplante Backups auszuführen. Sieh dir das %3$s an für mehr Details."
|
362 |
-
|
363 |
-
#: functions/interface.php:72
|
364 |
-
msgid "http://php.net/manual/en/features.safe-mode.php"
|
365 |
-
msgstr "http://php.net/manual/de/features.safe-mode.php"
|
366 |
-
|
367 |
-
#: functions/interface.php:72
|
368 |
-
msgid "Safe Mode"
|
369 |
-
msgstr "Safe Mode"
|
370 |
-
|
371 |
-
#: functions/interface.php:82
|
372 |
-
msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead."
|
373 |
-
msgstr "Dein angepasstes Backup-Verzeichnis %1$s existiert nicht und kann nicht erstellt werden, neue Backups werden stattdessen nach %2$s gespeichert."
|
374 |
-
|
375 |
-
#: functions/interface.php:92
|
376 |
-
msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead."
|
377 |
-
msgstr "Dein angepasstes Backup-Verzeichnis %1$s ist nicht schreibbar, neue Backups werden stattdessen nach %2$s gespeichert."
|
378 |
-
|
379 |
-
#: functions/interface.php:252
|
380 |
-
msgid "cancel"
|
381 |
-
msgstr "abbrechen"
|
382 |
-
|
383 |
-
#: functions/interface.php:256
|
384 |
-
msgid "Settings"
|
385 |
-
msgstr "Einstellungen"
|
386 |
-
|
387 |
-
#: functions/interface.php:259
|
388 |
-
msgid "Excludes"
|
389 |
-
msgstr "Ausnahmen"
|
390 |
-
|
391 |
-
#: functions/interface.php:27
|
392 |
-
msgid "Download"
|
393 |
-
msgstr "Download"
|
394 |
-
|
395 |
-
#: functions/interface.php:50 functions/interface.php:62
|
396 |
-
msgid "BackUpWordPress is almost ready."
|
397 |
-
msgstr "BackUpWordPress ist fast fertig."
|
398 |
-
|
399 |
-
#: functions/interface.php:102
|
400 |
-
msgid "BackUpWordPress detected issues with your last backup."
|
401 |
-
msgstr "BackUpWordPress hat Probleme bei deinem letzten Backup bemerkt."
|
402 |
-
|
403 |
-
#: functions/interface.php:227
|
404 |
-
msgid "Database and Files"
|
405 |
-
msgstr "Datenbank und Dateien"
|
406 |
-
|
407 |
-
#: functions/interface.php:233
|
408 |
-
msgid "Database"
|
409 |
-
msgstr "Datenbank"
|
410 |
-
|
411 |
-
#: hm-backup/hm-backup.php:931
|
412 |
-
msgid "The backup file was not created"
|
413 |
-
msgstr "Die Backup-Datei wurde nicht angelegt"
|
414 |
-
|
415 |
-
#: hm-backup/hm-backup.php:951
|
416 |
-
msgid "The following files are unreadable and couldn't be backed up: "
|
417 |
-
msgstr "Die folgenden Dateien sind nicht lesbar und konnten nicht gesichert werden:"
|
418 |
-
|
419 |
-
#: admin/actions.php:192 admin/actions.php:195 functions/interface.php:72
|
420 |
-
#: functions/interface.php:82 functions/interface.php:92
|
421 |
-
msgid "BackUpWordPress has detected a problem."
|
422 |
-
msgstr "BackUpWordPress hat ein Problem entdeckt."
|
423 |
-
|
424 |
-
#: admin/actions.php:265
|
425 |
-
msgid "Backup type cannot be empty"
|
426 |
-
msgstr "Backup-Typ kann nicht leer sein"
|
427 |
-
|
428 |
-
#: admin/actions.php:268
|
429 |
-
msgid "Invalid backup type"
|
430 |
-
msgstr "Ungültiger Backup-Typ"
|
431 |
-
|
432 |
-
#: admin/actions.php:278
|
433 |
-
msgid "Schedule cannot be empty"
|
434 |
-
msgstr "Aufgaben können nicht leer sein"
|
435 |
-
|
436 |
-
#: admin/actions.php:281
|
437 |
-
msgid "Invalid schedule"
|
438 |
-
msgstr "Ungültige Aufgaben"
|
439 |
-
|
440 |
-
#: admin/actions.php:294
|
441 |
-
msgid "Max backups must be a number"
|
442 |
-
msgstr "Maximale Anzahl der Backups muss eine Zahl sein"
|
443 |
-
|
444 |
-
#: admin/actions.php:392
|
445 |
-
msgid "%s didn't match any files."
|
446 |
-
msgstr "%s passt auf keine Dateien."
|
447 |
-
|
448 |
-
#: admin/backups.php:13
|
449 |
-
msgid "add schedule"
|
450 |
-
msgstr "Aufgabe hinzufügen"
|
451 |
-
|
452 |
-
#: admin/backups.php:37
|
453 |
-
msgid "Size"
|
454 |
-
msgstr "Größe"
|
455 |
-
|
456 |
-
#: admin/backups.php:38
|
457 |
-
msgid "Type"
|
458 |
-
msgstr "Typ"
|
459 |
-
|
460 |
-
#: admin/backups.php:39
|
461 |
-
msgid "Actions"
|
462 |
-
msgstr "Aktionen"
|
463 |
-
|
464 |
-
#: admin/backups.php:62
|
465 |
-
msgid "This is where your backups will appear once you have one."
|
466 |
-
msgstr "Hier erscheinen deine Backups, sobald du welche hast."
|
467 |
-
|
468 |
-
#: admin/constants.php:3
|
469 |
-
msgid "The Codex can help"
|
470 |
-
msgstr "Der Codex kann helfen"
|
471 |
-
|
472 |
-
#: admin/constants.php:8
|
473 |
-
msgid "The path to folder you would like to store your backup files in, defaults to %s."
|
474 |
-
msgstr "Der Pfad zum Verzeichnis, in dem du die Backups speichern möchtest. Standard: %s"
|
475 |
-
|
476 |
-
#: admin/constants.php:11 admin/constants.php:14
|
477 |
-
msgid "database"
|
478 |
-
msgstr "Datenbank"
|
479 |
-
|
480 |
-
#: admin/constants.php:14
|
481 |
-
msgid "files"
|
482 |
-
msgstr "Dateien"
|
483 |
-
|
484 |
-
#: admin/constants.php:17
|
485 |
-
msgid "Attempt to email a copy of your backups. Value should be email address to send backups to. Defaults to %s."
|
486 |
-
msgstr "Versuche, eine Kopie des Backups per E-Mail zu senden. Der Wert sollte eine E-Mail-Adresse sein. Standard: %s"
|
487 |
-
|
488 |
-
#: admin/constants.php:20
|
489 |
-
msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded."
|
490 |
-
msgstr "Kommagetrennte Liste von Dateien oder Verzeichnissen, die ausgeschlossen werden sollen (das Backup-Verzeichnis ist automatisch ausgeschlossen)."
|
491 |
-
|
492 |
-
#: admin/menu.php:10 admin/page.php:5
|
493 |
-
msgid "Manage Backups"
|
494 |
-
msgstr "Backups verwalten"
|
495 |
-
|
496 |
-
#: admin/menu.php:10 admin/menu.php:34
|
497 |
-
msgid "Backups"
|
498 |
-
msgstr "Backups"
|
499 |
-
|
500 |
-
#: admin/menu.php:69
|
501 |
-
msgid "You are not using the latest stable version of BackUpWordPress"
|
502 |
-
msgstr "Du benutzt nicht die neueste stabile BackUpWordPress-Version"
|
503 |
-
|
504 |
-
#: admin/menu.php:75
|
505 |
-
msgid "FAQ"
|
506 |
-
msgstr "FAQ"
|
507 |
-
|
508 |
-
#: admin/constants.php:3 admin/menu.php:76
|
509 |
-
msgid "Constants"
|
510 |
-
msgstr "Konstanten"
|
511 |
-
|
512 |
-
#: admin/menu.php:79
|
513 |
-
msgid "For more information:"
|
514 |
-
msgstr "Für mehr Informationen:"
|
515 |
-
|
516 |
-
#: admin/menu.php:81
|
517 |
-
msgid "Support Forums"
|
518 |
-
msgstr "Support-Foren"
|
519 |
-
|
520 |
-
#: admin/menu.php:82
|
521 |
-
msgid "Help with translation"
|
522 |
-
msgstr "Beim Übersetzen helfen"
|
523 |
-
|
524 |
-
#: admin/page.php:13
|
525 |
-
msgid "You need to fix the issues detailed above before BackUpWordPress can start."
|
526 |
-
msgstr "Du musst die Probleme, die oben beschrieben werden, beheben, bevor BackUpWordPress starten kann."
|
527 |
-
|
528 |
-
#: admin/schedule-form-excludes.php:19
|
529 |
-
msgid "Preview"
|
530 |
-
msgstr "Vorschau"
|
531 |
-
|
532 |
-
#: admin/schedule-form-excludes.php:29
|
533 |
-
msgid "Exclude Rules"
|
534 |
-
msgstr "Ausnahmeregeln"
|
535 |
-
|
536 |
-
#: admin/schedule-form-excludes.php:52
|
537 |
-
msgid "Remove"
|
538 |
-
msgstr "Entfernen"
|
539 |
-
|
540 |
-
#: admin/schedule-form-excludes.php:71
|
541 |
-
msgid "Excluded"
|
542 |
-
msgstr "Ausnehmen"
|
543 |
-
|
544 |
-
#: admin/schedule-form-excludes.php:75
|
545 |
-
msgid "Included"
|
546 |
-
msgstr "Einschließen"
|
547 |
-
|
548 |
-
#: admin/schedule-form-excludes.php:79
|
549 |
-
msgid "Unreadable"
|
550 |
-
msgstr "Nicht lesbar"
|
551 |
-
|
552 |
-
#: admin/schedule-form-excludes.php:107
|
553 |
-
msgid "Unreadable files can't be backed up"
|
554 |
-
msgstr "Nicht lesbare Dateien können nicht gesichert werden"
|
555 |
-
|
556 |
-
#: admin/schedule-form-excludes.php:113
|
557 |
-
msgid "Your site is %s. Backups will be compressed and so will be smaller."
|
558 |
-
msgstr "Deine Seite ist %s groß. Die Backups werden komprimiert und sollten kleiner sein."
|
559 |
-
|
560 |
-
#: admin/schedule-form.php:11
|
561 |
-
msgid "Backup"
|
562 |
-
msgstr "Backup"
|
563 |
-
|
564 |
-
#: admin/schedule-form.php:14
|
565 |
-
msgid "Both Database & files"
|
566 |
-
msgstr "Datenbank & Dateien"
|
567 |
-
|
568 |
-
#: admin/schedule-form.php:15
|
569 |
-
msgid "Files only"
|
570 |
-
msgstr "Dateien"
|
571 |
-
|
572 |
-
#: admin/schedule-form.php:16
|
573 |
-
msgid "Database only"
|
574 |
-
msgstr "Datenbank"
|
575 |
-
|
576 |
-
#: functions/interface.php:230
|
577 |
-
msgid "Files"
|
578 |
-
msgstr "Dateien"
|
579 |
-
|
580 |
-
#: admin/schedule-form-excludes.php:7
|
581 |
-
msgid "Manage Excludes"
|
582 |
-
msgstr "Ausnahmen verwalten"
|
583 |
-
|
584 |
-
#: admin/schedule-form.php:23
|
585 |
-
msgid "Schedule"
|
586 |
-
msgstr "Plan"
|
587 |
-
|
588 |
-
#: plugin.php:140 admin/schedule-form.php:54
|
589 |
-
msgid "Update"
|
590 |
-
msgstr "Update"
|
591 |
-
|
592 |
-
#: admin/schedule.php:19
|
593 |
-
msgid "hourly at %s minutes past the hour"
|
594 |
-
msgstr "stündlich, %s Minuten nach der vollen Stunde"
|
595 |
-
|
596 |
-
#: functions/interface.php:262
|
597 |
-
msgid "Run now"
|
598 |
-
msgstr "Jetzt ausführen"
|
599 |
-
|
600 |
-
#: functions/interface.php:28 functions/interface.php:264
|
601 |
-
msgid "Delete"
|
602 |
-
msgstr "Löschen"
|
603 |
-
|
604 |
-
#: plugin.php:60
|
605 |
-
msgid "BackUpWordPress requires PHP version 5.2.4 or greater."
|
606 |
-
msgstr "BackUpWordPress benötigt PHP Version 5.2.4 oder höher."
|
607 |
-
|
608 |
-
#: classes/email.php:137
|
609 |
-
msgid "Backup of %s"
|
610 |
-
msgstr "Backup von %s"
|
611 |
-
|
612 |
-
#: functions/core.php:293
|
613 |
-
msgid "This %s file ensures that other people cannot download your backup files."
|
614 |
-
msgstr "Diese %s-Datei garantiert, dass andere Leute nicht deine Backup-Dateien herunterladen können."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/languages/hmbkp-he_IL.mo
DELETED
Binary file
|
backupwordpress/languages/hmbkp-he_IL.po
DELETED
@@ -1,610 +0,0 @@
|
|
1 |
-
# Translation of 2.x in Hebrew
|
2 |
-
# This file is distributed under the same license as the 2.x package.
|
3 |
-
msgid ""
|
4 |
-
msgstr ""
|
5 |
-
"PO-Revision-Date: 2012-11-22 15:38:51+0000\n"
|
6 |
-
"MIME-Version: 1.0\n"
|
7 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
-
"Content-Transfer-Encoding: 8bit\n"
|
9 |
-
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
10 |
-
"X-Generator: GlotPress/0.1\n"
|
11 |
-
"Project-Id-Version: 2.x\n"
|
12 |
-
|
13 |
-
#: admin/actions.php:419
|
14 |
-
msgid "Email to Support"
|
15 |
-
msgstr ""
|
16 |
-
|
17 |
-
#: admin/page.php:17
|
18 |
-
msgid "If your finding BackUpWordPress useful, please %s."
|
19 |
-
msgstr ""
|
20 |
-
|
21 |
-
#: admin/schedule-form-excludes.php:13
|
22 |
-
msgid "New Exclude Rule[s]"
|
23 |
-
msgstr ""
|
24 |
-
|
25 |
-
#: admin/actions.php:410
|
26 |
-
msgid "Your BackUp Failed"
|
27 |
-
msgstr ""
|
28 |
-
|
29 |
-
#: admin/actions.php:412
|
30 |
-
msgid "Here's the response from the server:"
|
31 |
-
msgstr ""
|
32 |
-
|
33 |
-
#: admin/page.php:19
|
34 |
-
msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page."
|
35 |
-
msgstr ""
|
36 |
-
|
37 |
-
#: admin/page.php:17
|
38 |
-
msgid "rate it on the plugin directory"
|
39 |
-
msgstr ""
|
40 |
-
|
41 |
-
#: classes/schedule.php:512 functions/interface.php:252
|
42 |
-
msgid "Starting Backup"
|
43 |
-
msgstr ""
|
44 |
-
|
45 |
-
#: classes/schedule.php:582
|
46 |
-
msgid "Dumping Database %s"
|
47 |
-
msgstr ""
|
48 |
-
|
49 |
-
#: classes/schedule.php:588
|
50 |
-
msgid "Verifying Database Dump %s"
|
51 |
-
msgstr ""
|
52 |
-
|
53 |
-
#: classes/schedule.php:594
|
54 |
-
msgid "Creating zip archive %s"
|
55 |
-
msgstr ""
|
56 |
-
|
57 |
-
#: classes/schedule.php:600
|
58 |
-
msgid "Verifying Zip Archive %s"
|
59 |
-
msgstr ""
|
60 |
-
|
61 |
-
#: classes/schedule.php:606
|
62 |
-
msgid "Finishing Backup"
|
63 |
-
msgstr ""
|
64 |
-
|
65 |
-
#: classes/wp-cli.php:16
|
66 |
-
msgid "BackUpWordPress may not work when php is running with %s on"
|
67 |
-
msgstr ""
|
68 |
-
|
69 |
-
#: functions/interface.php:72
|
70 |
-
msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on."
|
71 |
-
msgstr ""
|
72 |
-
|
73 |
-
#: admin/constants.php:29
|
74 |
-
msgid "The time that your schedules should run. Defaults to %s."
|
75 |
-
msgstr ""
|
76 |
-
|
77 |
-
#: plugin.php:142
|
78 |
-
msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted."
|
79 |
-
msgstr ""
|
80 |
-
|
81 |
-
#: plugin.php:142 plugin.php:143 plugin.php:144 plugin.php:145
|
82 |
-
msgid "'Cancel' to go back, 'OK' to delete."
|
83 |
-
msgstr ""
|
84 |
-
|
85 |
-
#: plugin.php:143
|
86 |
-
msgid "Are you sure you want to delete this backup?"
|
87 |
-
msgstr ""
|
88 |
-
|
89 |
-
#: plugin.php:144
|
90 |
-
msgid "Are you sure you want to remove this exclude rule?"
|
91 |
-
msgstr ""
|
92 |
-
|
93 |
-
#: plugin.php:145
|
94 |
-
msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?"
|
95 |
-
msgstr ""
|
96 |
-
|
97 |
-
#: admin/actions.php:291
|
98 |
-
msgid "Max backups can't be empty"
|
99 |
-
msgstr ""
|
100 |
-
|
101 |
-
#: admin/actions.php:297
|
102 |
-
msgid "Max backups must be greater than 0"
|
103 |
-
msgstr ""
|
104 |
-
|
105 |
-
#: admin/actions.php:396
|
106 |
-
msgid "Exclude"
|
107 |
-
msgstr ""
|
108 |
-
|
109 |
-
#: admin/schedule-form-excludes.php:44
|
110 |
-
msgid "default"
|
111 |
-
msgstr ""
|
112 |
-
|
113 |
-
#: admin/schedule-form-excludes.php:48
|
114 |
-
msgid "defined"
|
115 |
-
msgstr ""
|
116 |
-
|
117 |
-
#: admin/schedule-form.php:27
|
118 |
-
msgid "Manual Only"
|
119 |
-
msgstr ""
|
120 |
-
|
121 |
-
#: admin/schedule-form.php:45
|
122 |
-
msgid "The number of previous backups to store on the server. past this limit older backups will be deleted automatically."
|
123 |
-
msgstr ""
|
124 |
-
|
125 |
-
#: admin/schedule.php:4
|
126 |
-
msgid "this shouldn't take long…"
|
127 |
-
msgstr ""
|
128 |
-
|
129 |
-
#: admin/schedule.php:4
|
130 |
-
msgid "calculating the size of your site…"
|
131 |
-
msgstr ""
|
132 |
-
|
133 |
-
#: admin/schedule.php:12
|
134 |
-
msgid "The next backup will be on %1$s at %2$s"
|
135 |
-
msgstr ""
|
136 |
-
|
137 |
-
#: admin/schedule.php:37
|
138 |
-
msgid "every 12 hours at %1$s & %2$s"
|
139 |
-
msgstr ""
|
140 |
-
|
141 |
-
#: admin/schedule.php:43
|
142 |
-
msgid "weekly on %1$s at %2$s"
|
143 |
-
msgstr ""
|
144 |
-
|
145 |
-
#: admin/schedule.php:49
|
146 |
-
msgid "fortnightly on %1$s at %2$s"
|
147 |
-
msgstr ""
|
148 |
-
|
149 |
-
#: admin/schedule.php:56
|
150 |
-
msgid "on the %1$s of each month at %2$s"
|
151 |
-
msgstr ""
|
152 |
-
|
153 |
-
#: admin/schedule.php:62
|
154 |
-
msgid "manually"
|
155 |
-
msgstr ""
|
156 |
-
|
157 |
-
#: admin/schedule.php:68
|
158 |
-
msgid "this server"
|
159 |
-
msgstr ""
|
160 |
-
|
161 |
-
#: admin/schedule.php:75
|
162 |
-
msgid "store the only the last backup on %s"
|
163 |
-
msgstr ""
|
164 |
-
|
165 |
-
#: admin/schedule.php:81
|
166 |
-
msgid "don't store any backups on %s"
|
167 |
-
msgstr ""
|
168 |
-
|
169 |
-
#: admin/schedule.php:87
|
170 |
-
msgid "store only the last %1$s backups on %2$s"
|
171 |
-
msgstr ""
|
172 |
-
|
173 |
-
#: admin/schedule.php:96
|
174 |
-
msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s"
|
175 |
-
msgstr ""
|
176 |
-
|
177 |
-
#: classes/email.php:23
|
178 |
-
msgid "Receive a notification email when a backup completes, if the backup is small enough (< 10mb) then it will be attached to the email. Separate multiple email address's with a comma."
|
179 |
-
msgstr ""
|
180 |
-
|
181 |
-
#: classes/email.php:129
|
182 |
-
msgid "BackUpWordPress was unable to backup your site %1$s."
|
183 |
-
msgstr ""
|
184 |
-
|
185 |
-
#: classes/email.php:129
|
186 |
-
msgid "Here are the errors that we're encountered:"
|
187 |
-
msgstr ""
|
188 |
-
|
189 |
-
#: classes/email.php:129
|
190 |
-
msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look"
|
191 |
-
msgstr ""
|
192 |
-
|
193 |
-
#: classes/email.php:129
|
194 |
-
msgid ""
|
195 |
-
"Kind Regards,\n"
|
196 |
-
"The Apologetic BackUpWordPress Backup Emailing Robot"
|
197 |
-
msgstr ""
|
198 |
-
|
199 |
-
#: classes/email.php:142 classes/email.php:151
|
200 |
-
msgid "BackUpWordPress has completed a backup of your site %1$s."
|
201 |
-
msgstr ""
|
202 |
-
|
203 |
-
#: classes/email.php:142
|
204 |
-
msgid "The backup file should be attached to this email."
|
205 |
-
msgstr ""
|
206 |
-
|
207 |
-
#: classes/email.php:142 classes/email.php:151
|
208 |
-
msgid "You can download the backup file by clicking the link below:"
|
209 |
-
msgstr ""
|
210 |
-
|
211 |
-
#: classes/email.php:142 classes/email.php:151
|
212 |
-
msgid ""
|
213 |
-
"Kind Regards,\n"
|
214 |
-
"The Happy BackUpWordPress Backup Emailing Robot"
|
215 |
-
msgstr ""
|
216 |
-
|
217 |
-
#: classes/email.php:151
|
218 |
-
msgid "Unfortunately the backup file was too large to attach to this email."
|
219 |
-
msgstr ""
|
220 |
-
|
221 |
-
#: classes/wp-cli.php:19
|
222 |
-
msgid "Backup: Dumping database..."
|
223 |
-
msgstr ""
|
224 |
-
|
225 |
-
#: classes/wp-cli.php:23
|
226 |
-
msgid "Backup: Zipping everything up..."
|
227 |
-
msgstr ""
|
228 |
-
|
229 |
-
#: classes/wp-cli.php:38
|
230 |
-
msgid "Invalid backup path"
|
231 |
-
msgstr ""
|
232 |
-
|
233 |
-
#: classes/wp-cli.php:43
|
234 |
-
msgid "Invalid root path"
|
235 |
-
msgstr ""
|
236 |
-
|
237 |
-
#: classes/wp-cli.php:68
|
238 |
-
msgid "Backup Complete: "
|
239 |
-
msgstr ""
|
240 |
-
|
241 |
-
#: classes/wp-cli.php:71
|
242 |
-
msgid "Backup Failed"
|
243 |
-
msgstr ""
|
244 |
-
|
245 |
-
#: functions/core.php:202
|
246 |
-
msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules."
|
247 |
-
msgstr ""
|
248 |
-
|
249 |
-
#: functions/interface.php:111
|
250 |
-
msgid "BackUpWordPress failed to perform the backup."
|
251 |
-
msgstr ""
|
252 |
-
|
253 |
-
#: functions/interface.php:111
|
254 |
-
msgid "You have likely hit a memory limit."
|
255 |
-
msgstr ""
|
256 |
-
|
257 |
-
#: functions/interface.php:238
|
258 |
-
msgid "Legacy"
|
259 |
-
msgstr ""
|
260 |
-
|
261 |
-
#: hm-backup/hm-backup.php:906
|
262 |
-
msgid "The mysqldump file was not created"
|
263 |
-
msgstr ""
|
264 |
-
|
265 |
-
#: functions/interface.php:62
|
266 |
-
msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself."
|
267 |
-
msgstr ""
|
268 |
-
|
269 |
-
#: functions/interface.php:50
|
270 |
-
msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself."
|
271 |
-
msgstr ""
|
272 |
-
|
273 |
-
#: functions/core.php:202
|
274 |
-
msgid "BackUpWordPress has setup your default schedules."
|
275 |
-
msgstr "BackUpWordPress הגדיר את תזמוני ברירת-המחדל שלך."
|
276 |
-
|
277 |
-
#: classes/email.php:127
|
278 |
-
msgid "Backup of %s Failed"
|
279 |
-
msgstr "גיבוי של %s נכשל"
|
280 |
-
|
281 |
-
#: classes/email.php:50
|
282 |
-
msgid "Send an email notification to %s"
|
283 |
-
msgstr "שלח התראה בדוא\"ל אל %s"
|
284 |
-
|
285 |
-
#: classes/email.php:72
|
286 |
-
msgid "%s isn't a valid email"
|
287 |
-
msgstr "%s אינו דוא\"ל חוקי"
|
288 |
-
|
289 |
-
#: admin/schedule.php:4
|
290 |
-
msgid "Backups will be compressed and should be smaller than this."
|
291 |
-
msgstr "גיבויים ידחסו וצריכים להיות קטנים יותר מזה."
|
292 |
-
|
293 |
-
#: classes/email.php:19
|
294 |
-
msgid "Email notification"
|
295 |
-
msgstr "התראה בדוא\"ל"
|
296 |
-
|
297 |
-
#: admin/schedule.php:19
|
298 |
-
msgid "hourly on the hour"
|
299 |
-
msgstr "פעם בשעה על השעה"
|
300 |
-
|
301 |
-
#: admin/schedule.php:25
|
302 |
-
msgid "daily at %s"
|
303 |
-
msgstr "פעם ביום ב-%s"
|
304 |
-
|
305 |
-
#: admin/schedule-form.php:41
|
306 |
-
msgid "Number of backups to store on this server"
|
307 |
-
msgstr "מספר גיבויים לאחסון על שרת זה"
|
308 |
-
|
309 |
-
#: admin/schedule-form.php:7
|
310 |
-
msgid "Schedule Settings"
|
311 |
-
msgstr "הגדרות תזמון"
|
312 |
-
|
313 |
-
#: admin/actions.php:418 admin/schedule-form-excludes.php:119
|
314 |
-
msgid "Close"
|
315 |
-
msgstr "סגור"
|
316 |
-
|
317 |
-
#: admin/menu.php:69
|
318 |
-
msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s."
|
319 |
-
msgstr "המידע שלהלן הוא לגרסה %1$s. צפה בקובץ %2$s לעזרה ספציפית לגרסה %3$s."
|
320 |
-
|
321 |
-
#: admin/constants.php:26
|
322 |
-
msgid "The root directory that is backed up. Defaults to %s."
|
323 |
-
msgstr "הספריה הראשית שמגובית. ברירת-מחדל היא %s."
|
324 |
-
|
325 |
-
#: admin/constants.php:23
|
326 |
-
msgid "The capability to use when calling %1$s. Defaults to %2$s."
|
327 |
-
msgstr ""
|
328 |
-
|
329 |
-
#: admin/constants.php:14
|
330 |
-
msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available."
|
331 |
-
msgstr ""
|
332 |
-
|
333 |
-
#: plugin.php:71
|
334 |
-
msgid "BackUpWordPress requires WordPress version %s or greater."
|
335 |
-
msgstr "BackUpWordPress דורש וורדפרס גרסה %s או יותר."
|
336 |
-
|
337 |
-
#: plugin.php:141 admin/actions.php:396
|
338 |
-
msgid "Cancel"
|
339 |
-
msgstr "ביטול"
|
340 |
-
|
341 |
-
#: admin/constants.php:11
|
342 |
-
msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available."
|
343 |
-
msgstr ""
|
344 |
-
|
345 |
-
#: admin/constants.php:8 admin/constants.php:11 admin/constants.php:14
|
346 |
-
#: admin/constants.php:17 admin/constants.php:20 admin/constants.php:23
|
347 |
-
#: admin/constants.php:26 admin/constants.php:29
|
348 |
-
msgid "e.g."
|
349 |
-
msgstr "למשל"
|
350 |
-
|
351 |
-
#: admin/constants.php:3
|
352 |
-
msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted."
|
353 |
-
msgstr ""
|
354 |
-
|
355 |
-
#: admin/actions.php:192 admin/actions.php:195
|
356 |
-
msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details."
|
357 |
-
msgstr ""
|
358 |
-
|
359 |
-
#: functions/interface.php:72
|
360 |
-
msgid "http://php.net/manual/en/features.safe-mode.php"
|
361 |
-
msgstr ""
|
362 |
-
|
363 |
-
#: functions/interface.php:72
|
364 |
-
msgid "Safe Mode"
|
365 |
-
msgstr "מצב בטוח"
|
366 |
-
|
367 |
-
#: functions/interface.php:82
|
368 |
-
msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead."
|
369 |
-
msgstr "ספריית הגיבויים המותאמת אישית שלך %1$s לא קיימת ולא יכולה להיוצר, הגיבויים שלך ישמרו ב-%2$s במקום."
|
370 |
-
|
371 |
-
#: functions/interface.php:92
|
372 |
-
msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead."
|
373 |
-
msgstr "ספריית הגיבויים המותאמת אישית שלך %1$s לא ניתנת לכתיבה, גיבויים חדשים ישמרו ב-%2$s במקום."
|
374 |
-
|
375 |
-
#: functions/interface.php:252
|
376 |
-
msgid "cancel"
|
377 |
-
msgstr "ביטול"
|
378 |
-
|
379 |
-
#: functions/interface.php:256
|
380 |
-
msgid "Settings"
|
381 |
-
msgstr "הגדרות"
|
382 |
-
|
383 |
-
#: functions/interface.php:259
|
384 |
-
msgid "Excludes"
|
385 |
-
msgstr "לא כלולים"
|
386 |
-
|
387 |
-
#: functions/interface.php:27
|
388 |
-
msgid "Download"
|
389 |
-
msgstr "הורד"
|
390 |
-
|
391 |
-
#: functions/interface.php:50 functions/interface.php:62
|
392 |
-
msgid "BackUpWordPress is almost ready."
|
393 |
-
msgstr "BackUpWordPress כמעט מוכן."
|
394 |
-
|
395 |
-
#: functions/interface.php:102
|
396 |
-
msgid "BackUpWordPress detected issues with your last backup."
|
397 |
-
msgstr "BackUpWordPress זיהה בעיות עם הגיבוי האחרון שלך."
|
398 |
-
|
399 |
-
#: functions/interface.php:227
|
400 |
-
msgid "Database and Files"
|
401 |
-
msgstr "מסד נתונים וקבצים"
|
402 |
-
|
403 |
-
#: functions/interface.php:233
|
404 |
-
msgid "Database"
|
405 |
-
msgstr "מסד נתונים"
|
406 |
-
|
407 |
-
#: hm-backup/hm-backup.php:931
|
408 |
-
msgid "The backup file was not created"
|
409 |
-
msgstr "קובץ הגיבוי לא נוצר"
|
410 |
-
|
411 |
-
#: hm-backup/hm-backup.php:951
|
412 |
-
msgid "The following files are unreadable and couldn't be backed up: "
|
413 |
-
msgstr "הקבצים הבאים אינם קריאים ולא היה ניתן לגבות אותם:"
|
414 |
-
|
415 |
-
#: admin/actions.php:192 admin/actions.php:195 functions/interface.php:72
|
416 |
-
#: functions/interface.php:82 functions/interface.php:92
|
417 |
-
msgid "BackUpWordPress has detected a problem."
|
418 |
-
msgstr "BackUpWordPress זיהה בעיה."
|
419 |
-
|
420 |
-
#: admin/actions.php:265
|
421 |
-
msgid "Backup type cannot be empty"
|
422 |
-
msgstr "סוג הגיבוי אינו יכול להיות ריק"
|
423 |
-
|
424 |
-
#: admin/actions.php:268
|
425 |
-
msgid "Invalid backup type"
|
426 |
-
msgstr "סוג גיבוי לא חוקי"
|
427 |
-
|
428 |
-
#: admin/actions.php:278
|
429 |
-
msgid "Schedule cannot be empty"
|
430 |
-
msgstr "תזמון אינו יכול להיות ריק"
|
431 |
-
|
432 |
-
#: admin/actions.php:281
|
433 |
-
msgid "Invalid schedule"
|
434 |
-
msgstr "תזמון לא חוקי"
|
435 |
-
|
436 |
-
#: admin/actions.php:294
|
437 |
-
msgid "Max backups must be a number"
|
438 |
-
msgstr "מספר גיבויים מקסימלי חייב להיות מספר"
|
439 |
-
|
440 |
-
#: admin/actions.php:392
|
441 |
-
msgid "%s didn't match any files."
|
442 |
-
msgstr "%s לא תאם אף קובץ."
|
443 |
-
|
444 |
-
#: admin/backups.php:13
|
445 |
-
msgid "add schedule"
|
446 |
-
msgstr "הוסף תזמון"
|
447 |
-
|
448 |
-
#: admin/backups.php:37
|
449 |
-
msgid "Size"
|
450 |
-
msgstr "גודל"
|
451 |
-
|
452 |
-
#: admin/backups.php:38
|
453 |
-
msgid "Type"
|
454 |
-
msgstr "סוג"
|
455 |
-
|
456 |
-
#: admin/backups.php:39
|
457 |
-
msgid "Actions"
|
458 |
-
msgstr "פעולות"
|
459 |
-
|
460 |
-
#: admin/backups.php:62
|
461 |
-
msgid "This is where your backups will appear once you have one."
|
462 |
-
msgstr "זהו המקום בו הגיבויים שלך יופיעו ברגע שיהיה לך אחד."
|
463 |
-
|
464 |
-
#: admin/constants.php:3
|
465 |
-
msgid "The Codex can help"
|
466 |
-
msgstr "הקודקס יכול לעזור"
|
467 |
-
|
468 |
-
#: admin/constants.php:8
|
469 |
-
msgid "The path to folder you would like to store your backup files in, defaults to %s."
|
470 |
-
msgstr "הנתיב לתיקיה שבה תרצה לאחסן את קבצי הגיבוי שלך, ברירת-מחדל היא %s."
|
471 |
-
|
472 |
-
#: admin/constants.php:11 admin/constants.php:14
|
473 |
-
msgid "database"
|
474 |
-
msgstr "מסד נתונים"
|
475 |
-
|
476 |
-
#: admin/constants.php:14
|
477 |
-
msgid "files"
|
478 |
-
msgstr "קבצים"
|
479 |
-
|
480 |
-
#: admin/constants.php:17
|
481 |
-
msgid "Attempt to email a copy of your backups. Value should be email address to send backups to. Defaults to %s."
|
482 |
-
msgstr "נסה לשלוח העתק של הגיבויים שלך בדוא\"ל. ערך צריך להיות כתובת דוא\"ל אליה ישלחו גיבויים. ברירת-מחדל היא %s."
|
483 |
-
|
484 |
-
#: admin/constants.php:20
|
485 |
-
msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded."
|
486 |
-
msgstr ""
|
487 |
-
|
488 |
-
#: admin/menu.php:10 admin/page.php:5
|
489 |
-
msgid "Manage Backups"
|
490 |
-
msgstr "ניהול גיבויים"
|
491 |
-
|
492 |
-
#: admin/menu.php:10 admin/menu.php:34
|
493 |
-
msgid "Backups"
|
494 |
-
msgstr "גיבויים"
|
495 |
-
|
496 |
-
#: admin/menu.php:69
|
497 |
-
msgid "You are not using the latest stable version of BackUpWordPress"
|
498 |
-
msgstr "אינך משתמש בגרסה האחרונה היציבה של BackUpWordPress"
|
499 |
-
|
500 |
-
#: admin/menu.php:75
|
501 |
-
msgid "FAQ"
|
502 |
-
msgstr "שאלות נפוצות"
|
503 |
-
|
504 |
-
#: admin/constants.php:3 admin/menu.php:76
|
505 |
-
msgid "Constants"
|
506 |
-
msgstr ""
|
507 |
-
|
508 |
-
#: admin/menu.php:79
|
509 |
-
msgid "For more information:"
|
510 |
-
msgstr "למידע נוסף:"
|
511 |
-
|
512 |
-
#: admin/menu.php:81
|
513 |
-
msgid "Support Forums"
|
514 |
-
msgstr "פורומי תמיכה"
|
515 |
-
|
516 |
-
#: admin/menu.php:82
|
517 |
-
msgid "Help with translation"
|
518 |
-
msgstr "עזרה עם תרגום"
|
519 |
-
|
520 |
-
#: admin/page.php:13
|
521 |
-
msgid "You need to fix the issues detailed above before BackUpWordPress can start."
|
522 |
-
msgstr "עליך לתקן את הבעיות המפורטות לעיל לפני ש-BackUpWordPress יוכל להתחיל."
|
523 |
-
|
524 |
-
#: admin/schedule-form-excludes.php:19
|
525 |
-
msgid "Preview"
|
526 |
-
msgstr "הצג"
|
527 |
-
|
528 |
-
#: admin/schedule-form-excludes.php:29
|
529 |
-
msgid "Exclude Rules"
|
530 |
-
msgstr ""
|
531 |
-
|
532 |
-
#: admin/schedule-form-excludes.php:52
|
533 |
-
msgid "Remove"
|
534 |
-
msgstr "הסר"
|
535 |
-
|
536 |
-
#: admin/schedule-form-excludes.php:71
|
537 |
-
msgid "Excluded"
|
538 |
-
msgstr "לא כלול"
|
539 |
-
|
540 |
-
#: admin/schedule-form-excludes.php:75
|
541 |
-
msgid "Included"
|
542 |
-
msgstr "כלול"
|
543 |
-
|
544 |
-
#: admin/schedule-form-excludes.php:79
|
545 |
-
msgid "Unreadable"
|
546 |
-
msgstr "לא קריא"
|
547 |
-
|
548 |
-
#: admin/schedule-form-excludes.php:107
|
549 |
-
msgid "Unreadable files can't be backed up"
|
550 |
-
msgstr "קבצים לא קריאים אינם יכולים להיות מגובים"
|
551 |
-
|
552 |
-
#: admin/schedule-form-excludes.php:113
|
553 |
-
msgid "Your site is %s. Backups will be compressed and so will be smaller."
|
554 |
-
msgstr "האתר שלך הוא %s. גיבויים ידחסו ולכן יהיו קטנים יותר."
|
555 |
-
|
556 |
-
#: admin/schedule-form.php:11
|
557 |
-
msgid "Backup"
|
558 |
-
msgstr "גיבוי"
|
559 |
-
|
560 |
-
#: admin/schedule-form.php:14
|
561 |
-
msgid "Both Database & files"
|
562 |
-
msgstr "גם מסד נתונים וגם קבצים"
|
563 |
-
|
564 |
-
#: admin/schedule-form.php:15
|
565 |
-
msgid "Files only"
|
566 |
-
msgstr "קבצים בלבד"
|
567 |
-
|
568 |
-
#: admin/schedule-form.php:16
|
569 |
-
msgid "Database only"
|
570 |
-
msgstr "מסד נתונים בלבד"
|
571 |
-
|
572 |
-
#: functions/interface.php:230
|
573 |
-
msgid "Files"
|
574 |
-
msgstr "קבצים"
|
575 |
-
|
576 |
-
#: admin/schedule-form-excludes.php:7
|
577 |
-
msgid "Manage Excludes"
|
578 |
-
msgstr ""
|
579 |
-
|
580 |
-
#: admin/schedule-form.php:23
|
581 |
-
msgid "Schedule"
|
582 |
-
msgstr "תזמון"
|
583 |
-
|
584 |
-
#: plugin.php:140 admin/schedule-form.php:54
|
585 |
-
msgid "Update"
|
586 |
-
msgstr "עדכן"
|
587 |
-
|
588 |
-
#: admin/schedule.php:19
|
589 |
-
msgid "hourly at %s minutes past the hour"
|
590 |
-
msgstr "פעם בשעה %s דקות לאחר תחילת השעה"
|
591 |
-
|
592 |
-
#: functions/interface.php:262
|
593 |
-
msgid "Run now"
|
594 |
-
msgstr "גבה עכשיו"
|
595 |
-
|
596 |
-
#: functions/interface.php:28 functions/interface.php:264
|
597 |
-
msgid "Delete"
|
598 |
-
msgstr "מחק"
|
599 |
-
|
600 |
-
#: plugin.php:60
|
601 |
-
msgid "BackUpWordPress requires PHP version 5.2.4 or greater."
|
602 |
-
msgstr "BackUpWordPress דורש PHP גרסה 5.2.4 או יותר."
|
603 |
-
|
604 |
-
#: classes/email.php:137
|
605 |
-
msgid "Backup of %s"
|
606 |
-
msgstr "גיבוי של %s"
|
607 |
-
|
608 |
-
#: functions/core.php:293
|
609 |
-
msgid "This %s file ensures that other people cannot download your backup files."
|
610 |
-
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/languages/hmbkp-it_IT.mo
DELETED
Binary file
|
backupwordpress/languages/hmbkp-it_IT.po
DELETED
@@ -1,612 +0,0 @@
|
|
1 |
-
# Translation of 2.x in Italian
|
2 |
-
# This file is distributed under the same license as the 2.x package.
|
3 |
-
msgid ""
|
4 |
-
msgstr ""
|
5 |
-
"PO-Revision-Date: 2012-11-22 15:38:46+0000\n"
|
6 |
-
"MIME-Version: 1.0\n"
|
7 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
-
"Content-Transfer-Encoding: 8bit\n"
|
9 |
-
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
10 |
-
"X-Generator: GlotPress/0.1\n"
|
11 |
-
"Project-Id-Version: 2.x\n"
|
12 |
-
|
13 |
-
#: admin/actions.php:419
|
14 |
-
msgid "Email to Support"
|
15 |
-
msgstr ""
|
16 |
-
|
17 |
-
#: admin/page.php:17
|
18 |
-
msgid "If your finding BackUpWordPress useful, please %s."
|
19 |
-
msgstr ""
|
20 |
-
|
21 |
-
#: admin/schedule-form-excludes.php:13
|
22 |
-
msgid "New Exclude Rule[s]"
|
23 |
-
msgstr ""
|
24 |
-
|
25 |
-
#: admin/actions.php:410
|
26 |
-
msgid "Your BackUp Failed"
|
27 |
-
msgstr ""
|
28 |
-
|
29 |
-
#: admin/actions.php:412
|
30 |
-
msgid "Here's the response from the server:"
|
31 |
-
msgstr ""
|
32 |
-
|
33 |
-
#: admin/page.php:19
|
34 |
-
msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page."
|
35 |
-
msgstr ""
|
36 |
-
|
37 |
-
#: admin/page.php:17
|
38 |
-
msgid "rate it on the plugin directory"
|
39 |
-
msgstr ""
|
40 |
-
|
41 |
-
#: classes/schedule.php:512 functions/interface.php:252
|
42 |
-
msgid "Starting Backup"
|
43 |
-
msgstr ""
|
44 |
-
|
45 |
-
#: classes/schedule.php:582
|
46 |
-
msgid "Dumping Database %s"
|
47 |
-
msgstr ""
|
48 |
-
|
49 |
-
#: classes/schedule.php:588
|
50 |
-
msgid "Verifying Database Dump %s"
|
51 |
-
msgstr ""
|
52 |
-
|
53 |
-
#: classes/schedule.php:594
|
54 |
-
msgid "Creating zip archive %s"
|
55 |
-
msgstr ""
|
56 |
-
|
57 |
-
#: classes/schedule.php:600
|
58 |
-
msgid "Verifying Zip Archive %s"
|
59 |
-
msgstr ""
|
60 |
-
|
61 |
-
#: classes/schedule.php:606
|
62 |
-
msgid "Finishing Backup"
|
63 |
-
msgstr ""
|
64 |
-
|
65 |
-
#: classes/wp-cli.php:16
|
66 |
-
msgid "BackUpWordPress may not work when php is running with %s on"
|
67 |
-
msgstr ""
|
68 |
-
|
69 |
-
#: functions/interface.php:72
|
70 |
-
msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on."
|
71 |
-
msgstr ""
|
72 |
-
|
73 |
-
#: admin/constants.php:29
|
74 |
-
msgid "The time that your schedules should run. Defaults to %s."
|
75 |
-
msgstr "Quando si deve avviare la tua pianificazione. Il valore predefinito è %s."
|
76 |
-
|
77 |
-
#: plugin.php:142
|
78 |
-
msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted."
|
79 |
-
msgstr "Sei sicuro di voler cancellare questa pianificazione? Tutti i backup verranno eliminati."
|
80 |
-
|
81 |
-
#: plugin.php:142 plugin.php:143 plugin.php:144 plugin.php:145
|
82 |
-
msgid "'Cancel' to go back, 'OK' to delete."
|
83 |
-
msgstr "\"Annulla\" per tornare indietro, \"OK\" per cancellare."
|
84 |
-
|
85 |
-
#: plugin.php:143
|
86 |
-
msgid "Are you sure you want to delete this backup?"
|
87 |
-
msgstr "Sei sicuro di voler cancellare questo backup?"
|
88 |
-
|
89 |
-
#: plugin.php:144
|
90 |
-
msgid "Are you sure you want to remove this exclude rule?"
|
91 |
-
msgstr "Sei sicuro di voler rimuovere questa regola di esclusione?"
|
92 |
-
|
93 |
-
#: plugin.php:145
|
94 |
-
msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?"
|
95 |
-
msgstr "La riduzione del numero di backup che sono memorizzati sul server causerà la cancellazione di alcuni dei vostri backup esistenti, sei sicuro?"
|
96 |
-
|
97 |
-
#: admin/actions.php:291
|
98 |
-
msgid "Max backups can't be empty"
|
99 |
-
msgstr "I backup massimi non devono essere vuoti"
|
100 |
-
|
101 |
-
#: admin/actions.php:297
|
102 |
-
msgid "Max backups must be greater than 0"
|
103 |
-
msgstr "I backup massimi devono essere maggiori di 0"
|
104 |
-
|
105 |
-
#: admin/actions.php:396
|
106 |
-
msgid "Exclude"
|
107 |
-
msgstr "Escludere"
|
108 |
-
|
109 |
-
#: admin/schedule-form-excludes.php:44
|
110 |
-
msgid "default"
|
111 |
-
msgstr "default"
|
112 |
-
|
113 |
-
#: admin/schedule-form-excludes.php:48
|
114 |
-
msgid "defined"
|
115 |
-
msgstr "definito"
|
116 |
-
|
117 |
-
#: admin/schedule-form.php:27
|
118 |
-
msgid "Manual Only"
|
119 |
-
msgstr "Solo manuale"
|
120 |
-
|
121 |
-
#: admin/schedule-form.php:45
|
122 |
-
msgid "The number of previous backups to store on the server. past this limit older backups will be deleted automatically."
|
123 |
-
msgstr "Il numero di backup precedenti da memorizzare sul server. Oltre questo limite i backup precedenti verranno automaticamente eliminati."
|
124 |
-
|
125 |
-
#: admin/schedule.php:4
|
126 |
-
msgid "this shouldn't take long…"
|
127 |
-
msgstr "questo non dovrebbe impiegare troppo tempo"
|
128 |
-
|
129 |
-
#: admin/schedule.php:4
|
130 |
-
msgid "calculating the size of your site…"
|
131 |
-
msgstr "calcolando le dimensioni del sito"
|
132 |
-
|
133 |
-
#: admin/schedule.php:12
|
134 |
-
msgid "The next backup will be on %1$s at %2$s"
|
135 |
-
msgstr "Il prossimo backup sarà da %1$s a %2$s"
|
136 |
-
|
137 |
-
#: admin/schedule.php:37
|
138 |
-
msgid "every 12 hours at %1$s & %2$s"
|
139 |
-
msgstr "ogni 12 ore dalle %1$s & %2$s"
|
140 |
-
|
141 |
-
#: admin/schedule.php:43
|
142 |
-
msgid "weekly on %1$s at %2$s"
|
143 |
-
msgstr "ogni settimana da %1$s a %2$s"
|
144 |
-
|
145 |
-
#: admin/schedule.php:49
|
146 |
-
msgid "fortnightly on %1$s at %2$s"
|
147 |
-
msgstr "ogni 15 giorni da %1$s a %2$s"
|
148 |
-
|
149 |
-
#: admin/schedule.php:56
|
150 |
-
msgid "on the %1$s of each month at %2$s"
|
151 |
-
msgstr "da %1$s di ogni mese a %2$s"
|
152 |
-
|
153 |
-
#: admin/schedule.php:62
|
154 |
-
msgid "manually"
|
155 |
-
msgstr "manualmente"
|
156 |
-
|
157 |
-
#: admin/schedule.php:68
|
158 |
-
msgid "this server"
|
159 |
-
msgstr "questo server"
|
160 |
-
|
161 |
-
#: admin/schedule.php:75
|
162 |
-
msgid "store the only the last backup on %s"
|
163 |
-
msgstr "memorizzare solamente l'ultimo backup su %s"
|
164 |
-
|
165 |
-
#: admin/schedule.php:81
|
166 |
-
msgid "don't store any backups on %s"
|
167 |
-
msgstr "non memorizzare alcun backup su %s"
|
168 |
-
|
169 |
-
#: admin/schedule.php:87
|
170 |
-
msgid "store only the last %1$s backups on %2$s"
|
171 |
-
msgstr "memorizza solo gli ultimi %1$s backup su %2$s"
|
172 |
-
|
173 |
-
#: admin/schedule.php:96
|
174 |
-
msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s"
|
175 |
-
msgstr "Memorizza %1$s %2$s %3$s, %4$s. %5$s"
|
176 |
-
|
177 |
-
#: classes/email.php:23
|
178 |
-
msgid "Receive a notification email when a backup completes, if the backup is small enough (< 10mb) then it will be attached to the email. Separate multiple email address's with a comma."
|
179 |
-
msgstr "Ricevi una email di notifica quando un backup è pronto, se il backup è abbastanza piccolo (< 10mb) sarà allegato alla email. Separa più indirizzi e-mail con una virgola."
|
180 |
-
|
181 |
-
#: classes/email.php:129
|
182 |
-
msgid "BackUpWordPress was unable to backup your site %1$s."
|
183 |
-
msgstr "BackUpWordPress non è riuscito a memorizzare il tuo sito %1$s."
|
184 |
-
|
185 |
-
#: classes/email.php:129
|
186 |
-
msgid "Here are the errors that we're encountered:"
|
187 |
-
msgstr "Qui ci sono gli errori riscontrati:"
|
188 |
-
|
189 |
-
#: classes/email.php:129
|
190 |
-
msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look"
|
191 |
-
msgstr "Se gli errori di cui sopra hanno un aspetto marziano, inoltra questa email a %3$s e gli daremo un'occhiata."
|
192 |
-
|
193 |
-
#: classes/email.php:129
|
194 |
-
msgid ""
|
195 |
-
"Kind Regards,\n"
|
196 |
-
"The Apologetic BackUpWordPress Backup Emailing Robot"
|
197 |
-
msgstr ""
|
198 |
-
"Cordiali saluti, \n"
|
199 |
-
"L'apologetico BackUpWordPress Backup Robot Emailing"
|
200 |
-
|
201 |
-
#: classes/email.php:142 classes/email.php:151
|
202 |
-
msgid "BackUpWordPress has completed a backup of your site %1$s."
|
203 |
-
msgstr "BackUpWordPress ha completato un backup del tuo sito %1$s."
|
204 |
-
|
205 |
-
#: classes/email.php:142
|
206 |
-
msgid "The backup file should be attached to this email."
|
207 |
-
msgstr "Il file di backup deve essere allegato a questa email."
|
208 |
-
|
209 |
-
#: classes/email.php:142 classes/email.php:151
|
210 |
-
msgid "You can download the backup file by clicking the link below:"
|
211 |
-
msgstr "È possibile scaricare il file di backup cliccando sul link sottostante:"
|
212 |
-
|
213 |
-
#: classes/email.php:142 classes/email.php:151
|
214 |
-
msgid ""
|
215 |
-
"Kind Regards,\n"
|
216 |
-
"The Happy BackUpWordPress Backup Emailing Robot"
|
217 |
-
msgstr "Cordiali saluti, Il felice BackUpWordPress Backup Robot Emailing"
|
218 |
-
|
219 |
-
#: classes/email.php:151
|
220 |
-
msgid "Unfortunately the backup file was too large to attach to this email."
|
221 |
-
msgstr "Purtroppo il file di backup è troppo grande da allegare a questa email."
|
222 |
-
|
223 |
-
#: classes/wp-cli.php:19
|
224 |
-
msgid "Backup: Dumping database..."
|
225 |
-
msgstr "Backup: Dumping database..."
|
226 |
-
|
227 |
-
#: classes/wp-cli.php:23
|
228 |
-
msgid "Backup: Zipping everything up..."
|
229 |
-
msgstr "Backup: zippando..."
|
230 |
-
|
231 |
-
#: classes/wp-cli.php:38
|
232 |
-
msgid "Invalid backup path"
|
233 |
-
msgstr "Cartella backup non valida"
|
234 |
-
|
235 |
-
#: classes/wp-cli.php:43
|
236 |
-
msgid "Invalid root path"
|
237 |
-
msgstr "Percorso non valido"
|
238 |
-
|
239 |
-
#: classes/wp-cli.php:68
|
240 |
-
msgid "Backup Complete: "
|
241 |
-
msgstr "Backup completo:"
|
242 |
-
|
243 |
-
#: classes/wp-cli.php:71
|
244 |
-
msgid "Backup Failed"
|
245 |
-
msgstr "Backup fallito"
|
246 |
-
|
247 |
-
#: functions/core.php:202
|
248 |
-
msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules."
|
249 |
-
msgstr "Per impostazione predefinita BackUpWordPress esegue un backup giornaliero del database e un backup settimanale del database e dei file. È possibile modificare queste pianificazioni."
|
250 |
-
|
251 |
-
#: functions/interface.php:111
|
252 |
-
msgid "BackUpWordPress failed to perform the backup."
|
253 |
-
msgstr "BackUpWordPress non è riuscito ad eseguire il backup."
|
254 |
-
|
255 |
-
#: functions/interface.php:111
|
256 |
-
msgid "You have likely hit a memory limit."
|
257 |
-
msgstr "Probabilmente è stato raggiunto il limite di memoria."
|
258 |
-
|
259 |
-
#: functions/interface.php:238
|
260 |
-
msgid "Legacy"
|
261 |
-
msgstr "Legacy"
|
262 |
-
|
263 |
-
#: hm-backup/hm-backup.php:906
|
264 |
-
msgid "The mysqldump file was not created"
|
265 |
-
msgstr "Il file mysqldump non è stato creato"
|
266 |
-
|
267 |
-
#: functions/interface.php:62
|
268 |
-
msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself."
|
269 |
-
msgstr "La tua directory di backup non è scrivibile, esegui %1$s o %2$s o imposta le autorizzazioni."
|
270 |
-
|
271 |
-
#: functions/interface.php:50
|
272 |
-
msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself."
|
273 |
-
msgstr "La directory di backup non può essere creato perché la directory %1$s non èscrivibile, esegui %2$s o %3$s o crea la cartella."
|
274 |
-
|
275 |
-
#: functions/core.php:202
|
276 |
-
msgid "BackUpWordPress has setup your default schedules."
|
277 |
-
msgstr "BackUpWordPress ha impostato le pianificazioni predefinite."
|
278 |
-
|
279 |
-
#: classes/email.php:127
|
280 |
-
msgid "Backup of %s Failed"
|
281 |
-
msgstr "Backup di %s fallito"
|
282 |
-
|
283 |
-
#: classes/email.php:50
|
284 |
-
msgid "Send an email notification to %s"
|
285 |
-
msgstr "Invia una notifica email a %s "
|
286 |
-
|
287 |
-
#: classes/email.php:72
|
288 |
-
msgid "%s isn't a valid email"
|
289 |
-
msgstr "%s non è un'email valida"
|
290 |
-
|
291 |
-
#: admin/schedule.php:4
|
292 |
-
msgid "Backups will be compressed and should be smaller than this."
|
293 |
-
msgstr "Il backup sarà compresso e dovrebbe essere più piccolo di questo."
|
294 |
-
|
295 |
-
#: classes/email.php:19
|
296 |
-
msgid "Email notification"
|
297 |
-
msgstr "Notificazione email"
|
298 |
-
|
299 |
-
#: admin/schedule.php:19
|
300 |
-
msgid "hourly on the hour"
|
301 |
-
msgstr "ogni ora"
|
302 |
-
|
303 |
-
#: admin/schedule.php:25
|
304 |
-
msgid "daily at %s"
|
305 |
-
msgstr "ogni giorno alle %s"
|
306 |
-
|
307 |
-
#: admin/schedule-form.php:41
|
308 |
-
msgid "Number of backups to store on this server"
|
309 |
-
msgstr "Numero di backup da memorizzare su questo server"
|
310 |
-
|
311 |
-
#: admin/schedule-form.php:7
|
312 |
-
msgid "Schedule Settings"
|
313 |
-
msgstr "Impostazioni di pianificazione"
|
314 |
-
|
315 |
-
#: admin/actions.php:418 admin/schedule-form-excludes.php:119
|
316 |
-
msgid "Close"
|
317 |
-
msgstr "Chiudi"
|
318 |
-
|
319 |
-
#: admin/menu.php:69
|
320 |
-
msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s."
|
321 |
-
msgstr "Le seguenti informazioni sono per la versione %1$s. Visualizza il file %2$s per aiuto specifico della versione %3$s."
|
322 |
-
|
323 |
-
#: admin/constants.php:26
|
324 |
-
msgid "The root directory that is backed up. Defaults to %s."
|
325 |
-
msgstr "La directory principale che è stata memorizzata. Default %s."
|
326 |
-
|
327 |
-
#: admin/constants.php:23
|
328 |
-
msgid "The capability to use when calling %1$s. Defaults to %2$s."
|
329 |
-
msgstr "La capacità di utilizzare quando si chiama %1$s. Default %2$s."
|
330 |
-
|
331 |
-
#: admin/constants.php:14
|
332 |
-
msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available."
|
333 |
-
msgstr "Il percorso del tuo %1$s eseguibile. Sarà utilizzato per comprimere i tuoi %2$s e %3$s se disponibile."
|
334 |
-
|
335 |
-
#: plugin.php:71
|
336 |
-
msgid "BackUpWordPress requires WordPress version %s or greater."
|
337 |
-
msgstr "BackUpWordPress richiede WordPress versione %s o superiore."
|
338 |
-
|
339 |
-
#: plugin.php:141 admin/actions.php:396
|
340 |
-
msgid "Cancel"
|
341 |
-
msgstr "Cancella"
|
342 |
-
|
343 |
-
#: admin/constants.php:11
|
344 |
-
msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available."
|
345 |
-
msgstr "Il percorso del tuo %1$s eseguibile. Sarà utilizzato per la %2$s parte del backup, se disponibile."
|
346 |
-
|
347 |
-
#: admin/constants.php:8 admin/constants.php:11 admin/constants.php:14
|
348 |
-
#: admin/constants.php:17 admin/constants.php:20 admin/constants.php:23
|
349 |
-
#: admin/constants.php:26 admin/constants.php:29
|
350 |
-
msgid "e.g."
|
351 |
-
msgstr "ad esempio"
|
352 |
-
|
353 |
-
#: admin/constants.php:3
|
354 |
-
msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted."
|
355 |
-
msgstr "Tu puoi %1$s uno dei seguenti %2$s nel tuo %3$s per controllare le impostazioni avanzate. %4$s. Definito %5$s sarà evidenziata."
|
356 |
-
|
357 |
-
#: admin/actions.php:192 admin/actions.php:195
|
358 |
-
msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details."
|
359 |
-
msgstr "%1$s restituisce una %2$s risposta che potrebbe significare che cron jobs non si è avviato in modo corretto. BackUpWordPress si basa su wp-cron per eseguire i backup pianificati. Vedere il %3$s per maggiori dettagli."
|
360 |
-
|
361 |
-
#: functions/interface.php:72
|
362 |
-
msgid "http://php.net/manual/en/features.safe-mode.php"
|
363 |
-
msgstr "http://php.net/manual/en/features.safe-mode.php"
|
364 |
-
|
365 |
-
#: functions/interface.php:72
|
366 |
-
msgid "Safe Mode"
|
367 |
-
msgstr "Modalità provvisoria"
|
368 |
-
|
369 |
-
#: functions/interface.php:82
|
370 |
-
msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead."
|
371 |
-
msgstr "La tua directory personalizzata di backup %1$s non esiste e non può essere creata, i tuoi backup verranno salvati in % 2$s"
|
372 |
-
|
373 |
-
#: functions/interface.php:92
|
374 |
-
msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead."
|
375 |
-
msgstr "La tua directory personalizzata di backup %1$s non è scrivibile, i nuovi backup verranno salvati in % 2$s"
|
376 |
-
|
377 |
-
#: functions/interface.php:252
|
378 |
-
msgid "cancel"
|
379 |
-
msgstr "cancella"
|
380 |
-
|
381 |
-
#: functions/interface.php:256
|
382 |
-
msgid "Settings"
|
383 |
-
msgstr "Impostazioni"
|
384 |
-
|
385 |
-
#: functions/interface.php:259
|
386 |
-
msgid "Excludes"
|
387 |
-
msgstr "Esclusioni"
|
388 |
-
|
389 |
-
#: functions/interface.php:27
|
390 |
-
msgid "Download"
|
391 |
-
msgstr "Scarica"
|
392 |
-
|
393 |
-
#: functions/interface.php:50 functions/interface.php:62
|
394 |
-
msgid "BackUpWordPress is almost ready."
|
395 |
-
msgstr "BackUpWordPress è quasi pronto"
|
396 |
-
|
397 |
-
#: functions/interface.php:102
|
398 |
-
msgid "BackUpWordPress detected issues with your last backup."
|
399 |
-
msgstr "BackUpWordPress ha rilevato problemi con l'ultimo backup."
|
400 |
-
|
401 |
-
#: functions/interface.php:227
|
402 |
-
msgid "Database and Files"
|
403 |
-
msgstr "Database e files"
|
404 |
-
|
405 |
-
#: functions/interface.php:233
|
406 |
-
msgid "Database"
|
407 |
-
msgstr "Database"
|
408 |
-
|
409 |
-
#: hm-backup/hm-backup.php:931
|
410 |
-
msgid "The backup file was not created"
|
411 |
-
msgstr "Il backup non è stato creato"
|
412 |
-
|
413 |
-
#: hm-backup/hm-backup.php:951
|
414 |
-
msgid "The following files are unreadable and couldn't be backed up: "
|
415 |
-
msgstr "I seguenti file sono illeggibili e non possono essere memorizzati::"
|
416 |
-
|
417 |
-
#: admin/actions.php:192 admin/actions.php:195 functions/interface.php:72
|
418 |
-
#: functions/interface.php:82 functions/interface.php:92
|
419 |
-
msgid "BackUpWordPress has detected a problem."
|
420 |
-
msgstr "BackUpWordPress ha rilevato un problema."
|
421 |
-
|
422 |
-
#: admin/actions.php:265
|
423 |
-
msgid "Backup type cannot be empty"
|
424 |
-
msgstr "Il tipo di backup non può essere vuoto"
|
425 |
-
|
426 |
-
#: admin/actions.php:268
|
427 |
-
msgid "Invalid backup type"
|
428 |
-
msgstr "Tipo di backup non valido"
|
429 |
-
|
430 |
-
#: admin/actions.php:278
|
431 |
-
msgid "Schedule cannot be empty"
|
432 |
-
msgstr "La pianificazione non può essere vuota"
|
433 |
-
|
434 |
-
#: admin/actions.php:281
|
435 |
-
msgid "Invalid schedule"
|
436 |
-
msgstr "Pianificazione non valida"
|
437 |
-
|
438 |
-
#: admin/actions.php:294
|
439 |
-
msgid "Max backups must be a number"
|
440 |
-
msgstr "Max backup deve essere un numero"
|
441 |
-
|
442 |
-
#: admin/actions.php:392
|
443 |
-
msgid "%s didn't match any files."
|
444 |
-
msgstr "%s non corrisponde ad alcun file."
|
445 |
-
|
446 |
-
#: admin/backups.php:13
|
447 |
-
msgid "add schedule"
|
448 |
-
msgstr "aggiungi pianificazione"
|
449 |
-
|
450 |
-
#: admin/backups.php:37
|
451 |
-
msgid "Size"
|
452 |
-
msgstr "Dimensione"
|
453 |
-
|
454 |
-
#: admin/backups.php:38
|
455 |
-
msgid "Type"
|
456 |
-
msgstr "Tipo"
|
457 |
-
|
458 |
-
#: admin/backups.php:39
|
459 |
-
msgid "Actions"
|
460 |
-
msgstr "Azioni"
|
461 |
-
|
462 |
-
#: admin/backups.php:62
|
463 |
-
msgid "This is where your backups will appear once you have one."
|
464 |
-
msgstr "Questo è dove il backup apparirà una volta che ne hai uno."
|
465 |
-
|
466 |
-
#: admin/constants.php:3
|
467 |
-
msgid "The Codex can help"
|
468 |
-
msgstr "Il Codex può aìiutare"
|
469 |
-
|
470 |
-
#: admin/constants.php:8
|
471 |
-
msgid "The path to folder you would like to store your backup files in, defaults to %s."
|
472 |
-
msgstr "Il percorso alla cartella dove vuoi memorizzare i file di backup, il valore predefinito è %s."
|
473 |
-
|
474 |
-
#: admin/constants.php:11 admin/constants.php:14
|
475 |
-
msgid "database"
|
476 |
-
msgstr ""
|
477 |
-
|
478 |
-
#: admin/constants.php:14
|
479 |
-
msgid "files"
|
480 |
-
msgstr ""
|
481 |
-
|
482 |
-
#: admin/constants.php:17
|
483 |
-
msgid "Attempt to email a copy of your backups. Value should be email address to send backups to. Defaults to %s."
|
484 |
-
msgstr ""
|
485 |
-
|
486 |
-
#: admin/constants.php:20
|
487 |
-
msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded."
|
488 |
-
msgstr ""
|
489 |
-
|
490 |
-
#: admin/menu.php:10 admin/page.php:5
|
491 |
-
msgid "Manage Backups"
|
492 |
-
msgstr ""
|
493 |
-
|
494 |
-
#: admin/menu.php:10 admin/menu.php:34
|
495 |
-
msgid "Backups"
|
496 |
-
msgstr ""
|
497 |
-
|
498 |
-
#: admin/menu.php:69
|
499 |
-
msgid "You are not using the latest stable version of BackUpWordPress"
|
500 |
-
msgstr ""
|
501 |
-
|
502 |
-
#: admin/menu.php:75
|
503 |
-
msgid "FAQ"
|
504 |
-
msgstr ""
|
505 |
-
|
506 |
-
#: admin/constants.php:3 admin/menu.php:76
|
507 |
-
msgid "Constants"
|
508 |
-
msgstr ""
|
509 |
-
|
510 |
-
#: admin/menu.php:79
|
511 |
-
msgid "For more information:"
|
512 |
-
msgstr ""
|
513 |
-
|
514 |
-
#: admin/menu.php:81
|
515 |
-
msgid "Support Forums"
|
516 |
-
msgstr ""
|
517 |
-
|
518 |
-
#: admin/menu.php:82
|
519 |
-
msgid "Help with translation"
|
520 |
-
msgstr ""
|
521 |
-
|
522 |
-
#: admin/page.php:13
|
523 |
-
msgid "You need to fix the issues detailed above before BackUpWordPress can start."
|
524 |
-
msgstr ""
|
525 |
-
|
526 |
-
#: admin/schedule-form-excludes.php:19
|
527 |
-
msgid "Preview"
|
528 |
-
msgstr ""
|
529 |
-
|
530 |
-
#: admin/schedule-form-excludes.php:29
|
531 |
-
msgid "Exclude Rules"
|
532 |
-
msgstr ""
|
533 |
-
|
534 |
-
#: admin/schedule-form-excludes.php:52
|
535 |
-
msgid "Remove"
|
536 |
-
msgstr ""
|
537 |
-
|
538 |
-
#: admin/schedule-form-excludes.php:71
|
539 |
-
msgid "Excluded"
|
540 |
-
msgstr ""
|
541 |
-
|
542 |
-
#: admin/schedule-form-excludes.php:75
|
543 |
-
msgid "Included"
|
544 |
-
msgstr ""
|
545 |
-
|
546 |
-
#: admin/schedule-form-excludes.php:79
|
547 |
-
msgid "Unreadable"
|
548 |
-
msgstr ""
|
549 |
-
|
550 |
-
#: admin/schedule-form-excludes.php:107
|
551 |
-
msgid "Unreadable files can't be backed up"
|
552 |
-
msgstr ""
|
553 |
-
|
554 |
-
#: admin/schedule-form-excludes.php:113
|
555 |
-
msgid "Your site is %s. Backups will be compressed and so will be smaller."
|
556 |
-
msgstr ""
|
557 |
-
|
558 |
-
#: admin/schedule-form.php:11
|
559 |
-
msgid "Backup"
|
560 |
-
msgstr ""
|
561 |
-
|
562 |
-
#: admin/schedule-form.php:14
|
563 |
-
msgid "Both Database & files"
|
564 |
-
msgstr ""
|
565 |
-
|
566 |
-
#: admin/schedule-form.php:15
|
567 |
-
msgid "Files only"
|
568 |
-
msgstr ""
|
569 |
-
|
570 |
-
#: admin/schedule-form.php:16
|
571 |
-
msgid "Database only"
|
572 |
-
msgstr ""
|
573 |
-
|
574 |
-
#: functions/interface.php:230
|
575 |
-
msgid "Files"
|
576 |
-
msgstr ""
|
577 |
-
|
578 |
-
#: admin/schedule-form-excludes.php:7
|
579 |
-
msgid "Manage Excludes"
|
580 |
-
msgstr ""
|
581 |
-
|
582 |
-
#: admin/schedule-form.php:23
|
583 |
-
msgid "Schedule"
|
584 |
-
msgstr ""
|
585 |
-
|
586 |
-
#: plugin.php:140 admin/schedule-form.php:54
|
587 |
-
msgid "Update"
|
588 |
-
msgstr ""
|
589 |
-
|
590 |
-
#: admin/schedule.php:19
|
591 |
-
msgid "hourly at %s minutes past the hour"
|
592 |
-
msgstr ""
|
593 |
-
|
594 |
-
#: functions/interface.php:262
|
595 |
-
msgid "Run now"
|
596 |
-
msgstr ""
|
597 |
-
|
598 |
-
#: functions/interface.php:28 functions/interface.php:264
|
599 |
-
msgid "Delete"
|
600 |
-
msgstr ""
|
601 |
-
|
602 |
-
#: plugin.php:60
|
603 |
-
msgid "BackUpWordPress requires PHP version 5.2.4 or greater."
|
604 |
-
msgstr ""
|
605 |
-
|
606 |
-
#: classes/email.php:137
|
607 |
-
msgid "Backup of %s"
|
608 |
-
msgstr ""
|
609 |
-
|
610 |
-
#: functions/core.php:293
|
611 |
-
msgid "This %s file ensures that other people cannot download your backup files."
|
612 |
-
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/languages/hmbkp-nl_NL.mo
DELETED
Binary file
|
backupwordpress/languages/hmbkp-nl_NL.po
DELETED
@@ -1,610 +0,0 @@
|
|
1 |
-
# Translation of 2.x in Dutch
|
2 |
-
# This file is distributed under the same license as the 2.x package.
|
3 |
-
msgid ""
|
4 |
-
msgstr ""
|
5 |
-
"PO-Revision-Date: 2012-11-22 15:38:55+0000\n"
|
6 |
-
"MIME-Version: 1.0\n"
|
7 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
-
"Content-Transfer-Encoding: 8bit\n"
|
9 |
-
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
10 |
-
"X-Generator: GlotPress/0.1\n"
|
11 |
-
"Project-Id-Version: 2.x\n"
|
12 |
-
|
13 |
-
#: admin/actions.php:419
|
14 |
-
msgid "Email to Support"
|
15 |
-
msgstr ""
|
16 |
-
|
17 |
-
#: admin/page.php:17
|
18 |
-
msgid "If your finding BackUpWordPress useful, please %s."
|
19 |
-
msgstr ""
|
20 |
-
|
21 |
-
#: admin/schedule-form-excludes.php:13
|
22 |
-
msgid "New Exclude Rule[s]"
|
23 |
-
msgstr ""
|
24 |
-
|
25 |
-
#: admin/actions.php:410
|
26 |
-
msgid "Your BackUp Failed"
|
27 |
-
msgstr ""
|
28 |
-
|
29 |
-
#: admin/actions.php:412
|
30 |
-
msgid "Here's the response from the server:"
|
31 |
-
msgstr ""
|
32 |
-
|
33 |
-
#: admin/page.php:19
|
34 |
-
msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page."
|
35 |
-
msgstr ""
|
36 |
-
|
37 |
-
#: admin/page.php:17
|
38 |
-
msgid "rate it on the plugin directory"
|
39 |
-
msgstr ""
|
40 |
-
|
41 |
-
#: classes/schedule.php:512 functions/interface.php:252
|
42 |
-
msgid "Starting Backup"
|
43 |
-
msgstr ""
|
44 |
-
|
45 |
-
#: classes/schedule.php:582
|
46 |
-
msgid "Dumping Database %s"
|
47 |
-
msgstr ""
|
48 |
-
|
49 |
-
#: classes/schedule.php:588
|
50 |
-
msgid "Verifying Database Dump %s"
|
51 |
-
msgstr ""
|
52 |
-
|
53 |
-
#: classes/schedule.php:594
|
54 |
-
msgid "Creating zip archive %s"
|
55 |
-
msgstr ""
|
56 |
-
|
57 |
-
#: classes/schedule.php:600
|
58 |
-
msgid "Verifying Zip Archive %s"
|
59 |
-
msgstr ""
|
60 |
-
|
61 |
-
#: classes/schedule.php:606
|
62 |
-
msgid "Finishing Backup"
|
63 |
-
msgstr ""
|
64 |
-
|
65 |
-
#: classes/wp-cli.php:16
|
66 |
-
msgid "BackUpWordPress may not work when php is running with %s on"
|
67 |
-
msgstr ""
|
68 |
-
|
69 |
-
#: functions/interface.php:72
|
70 |
-
msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on."
|
71 |
-
msgstr ""
|
72 |
-
|
73 |
-
#: admin/constants.php:29
|
74 |
-
msgid "The time that your schedules should run. Defaults to %s."
|
75 |
-
msgstr "De tijd waarop je schema zou moeten draaien, Standaard is dat %s"
|
76 |
-
|
77 |
-
#: plugin.php:142
|
78 |
-
msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted."
|
79 |
-
msgstr "Weet je zeker dat je dit schema wilt verwijderen? Alle backups van dit schema zullen ook worden verwijderd."
|
80 |
-
|
81 |
-
#: plugin.php:142 plugin.php:143 plugin.php:144 plugin.php:145
|
82 |
-
msgid "'Cancel' to go back, 'OK' to delete."
|
83 |
-
msgstr "'Cancel\"om terug te gaan, 'OK' om te verwijderen."
|
84 |
-
|
85 |
-
#: plugin.php:143
|
86 |
-
msgid "Are you sure you want to delete this backup?"
|
87 |
-
msgstr "Weet je zeker dat je deze backup wilt verwijderen?"
|
88 |
-
|
89 |
-
#: plugin.php:144
|
90 |
-
msgid "Are you sure you want to remove this exclude rule?"
|
91 |
-
msgstr "Weet je zeker dat je deze uitzonderingsregel wilt verwijderen?"
|
92 |
-
|
93 |
-
#: plugin.php:145
|
94 |
-
msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?"
|
95 |
-
msgstr ""
|
96 |
-
|
97 |
-
#: admin/actions.php:291
|
98 |
-
msgid "Max backups can't be empty"
|
99 |
-
msgstr ""
|
100 |
-
|
101 |
-
#: admin/actions.php:297
|
102 |
-
msgid "Max backups must be greater than 0"
|
103 |
-
msgstr ""
|
104 |
-
|
105 |
-
#: admin/actions.php:396
|
106 |
-
msgid "Exclude"
|
107 |
-
msgstr ""
|
108 |
-
|
109 |
-
#: admin/schedule-form-excludes.php:44
|
110 |
-
msgid "default"
|
111 |
-
msgstr ""
|
112 |
-
|
113 |
-
#: admin/schedule-form-excludes.php:48
|
114 |
-
msgid "defined"
|
115 |
-
msgstr ""
|
116 |
-
|
117 |
-
#: admin/schedule-form.php:27
|
118 |
-
msgid "Manual Only"
|
119 |
-
msgstr ""
|
120 |
-
|
121 |
-
#: admin/schedule-form.php:45
|
122 |
-
msgid "The number of previous backups to store on the server. past this limit older backups will be deleted automatically."
|
123 |
-
msgstr ""
|
124 |
-
|
125 |
-
#: admin/schedule.php:4
|
126 |
-
msgid "this shouldn't take long…"
|
127 |
-
msgstr ""
|
128 |
-
|
129 |
-
#: admin/schedule.php:4
|
130 |
-
msgid "calculating the size of your site…"
|
131 |
-
msgstr ""
|
132 |
-
|
133 |
-
#: admin/schedule.php:12
|
134 |
-
msgid "The next backup will be on %1$s at %2$s"
|
135 |
-
msgstr ""
|
136 |
-
|
137 |
-
#: admin/schedule.php:37
|
138 |
-
msgid "every 12 hours at %1$s & %2$s"
|
139 |
-
msgstr ""
|
140 |
-
|
141 |
-
#: admin/schedule.php:43
|
142 |
-
msgid "weekly on %1$s at %2$s"
|
143 |
-
msgstr ""
|
144 |
-
|
145 |
-
#: admin/schedule.php:49
|
146 |
-
msgid "fortnightly on %1$s at %2$s"
|
147 |
-
msgstr ""
|
148 |
-
|
149 |
-
#: admin/schedule.php:56
|
150 |
-
msgid "on the %1$s of each month at %2$s"
|
151 |
-
msgstr ""
|
152 |
-
|
153 |
-
#: admin/schedule.php:62
|
154 |
-
msgid "manually"
|
155 |
-
msgstr ""
|
156 |
-
|
157 |
-
#: admin/schedule.php:68
|
158 |
-
msgid "this server"
|
159 |
-
msgstr ""
|
160 |
-
|
161 |
-
#: admin/schedule.php:75
|
162 |
-
msgid "store the only the last backup on %s"
|
163 |
-
msgstr ""
|
164 |
-
|
165 |
-
#: admin/schedule.php:81
|
166 |
-
msgid "don't store any backups on %s"
|
167 |
-
msgstr ""
|
168 |
-
|
169 |
-
#: admin/schedule.php:87
|
170 |
-
msgid "store only the last %1$s backups on %2$s"
|
171 |
-
msgstr ""
|
172 |
-
|
173 |
-
#: admin/schedule.php:96
|
174 |
-
msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s"
|
175 |
-
msgstr ""
|
176 |
-
|
177 |
-
#: classes/email.php:23
|
178 |
-
msgid "Receive a notification email when a backup completes, if the backup is small enough (< 10mb) then it will be attached to the email. Separate multiple email address's with a comma."
|
179 |
-
msgstr ""
|
180 |
-
|
181 |
-
#: classes/email.php:129
|
182 |
-
msgid "BackUpWordPress was unable to backup your site %1$s."
|
183 |
-
msgstr ""
|
184 |
-
|
185 |
-
#: classes/email.php:129
|
186 |
-
msgid "Here are the errors that we're encountered:"
|
187 |
-
msgstr ""
|
188 |
-
|
189 |
-
#: classes/email.php:129
|
190 |
-
msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look"
|
191 |
-
msgstr ""
|
192 |
-
|
193 |
-
#: classes/email.php:129
|
194 |
-
msgid ""
|
195 |
-
"Kind Regards,\n"
|
196 |
-
"The Apologetic BackUpWordPress Backup Emailing Robot"
|
197 |
-
msgstr ""
|
198 |
-
|
199 |
-
#: classes/email.php:142 classes/email.php:151
|
200 |
-
msgid "BackUpWordPress has completed a backup of your site %1$s."
|
201 |
-
msgstr ""
|
202 |
-
|
203 |
-
#: classes/email.php:142
|
204 |
-
msgid "The backup file should be attached to this email."
|
205 |
-
msgstr ""
|
206 |
-
|
207 |
-
#: classes/email.php:142 classes/email.php:151
|
208 |
-
msgid "You can download the backup file by clicking the link below:"
|
209 |
-
msgstr ""
|
210 |
-
|
211 |
-
#: classes/email.php:142 classes/email.php:151
|
212 |
-
msgid ""
|
213 |
-
"Kind Regards,\n"
|
214 |
-
"The Happy BackUpWordPress Backup Emailing Robot"
|
215 |
-
msgstr ""
|
216 |
-
|
217 |
-
#: classes/email.php:151
|
218 |
-
msgid "Unfortunately the backup file was too large to attach to this email."
|
219 |
-
msgstr ""
|
220 |
-
|
221 |
-
#: classes/wp-cli.php:19
|
222 |
-
msgid "Backup: Dumping database..."
|
223 |
-
msgstr ""
|
224 |
-
|
225 |
-
#: classes/wp-cli.php:23
|
226 |
-
msgid "Backup: Zipping everything up..."
|
227 |
-
msgstr ""
|
228 |
-
|
229 |
-
#: classes/wp-cli.php:38
|
230 |
-
msgid "Invalid backup path"
|
231 |
-
msgstr ""
|
232 |
-
|
233 |
-
#: classes/wp-cli.php:43
|
234 |
-
msgid "Invalid root path"
|
235 |
-
msgstr ""
|
236 |
-
|
237 |
-
#: classes/wp-cli.php:68
|
238 |
-
msgid "Backup Complete: "
|
239 |
-
msgstr ""
|
240 |
-
|
241 |
-
#: classes/wp-cli.php:71
|
242 |
-
msgid "Backup Failed"
|
243 |
-
msgstr ""
|
244 |
-
|
245 |
-
#: functions/core.php:202
|
246 |
-
msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules."
|
247 |
-
msgstr ""
|
248 |
-
|
249 |
-
#: functions/interface.php:111
|
250 |
-
msgid "BackUpWordPress failed to perform the backup."
|
251 |
-
msgstr ""
|
252 |
-
|
253 |
-
#: functions/interface.php:111
|
254 |
-
msgid "You have likely hit a memory limit."
|
255 |
-
msgstr ""
|
256 |
-
|
257 |
-
#: functions/interface.php:238
|
258 |
-
msgid "Legacy"
|
259 |
-
msgstr ""
|
260 |
-
|
261 |
-
#: hm-backup/hm-backup.php:906
|
262 |
-
msgid "The mysqldump file was not created"
|
263 |
-
msgstr ""
|
264 |
-
|
265 |
-
#: functions/interface.php:62
|
266 |
-
msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself."
|
267 |
-
msgstr ""
|
268 |
-
|
269 |
-
#: functions/interface.php:50
|
270 |
-
msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself."
|
271 |
-
msgstr ""
|
272 |
-
|
273 |
-
#: functions/core.php:202
|
274 |
-
msgid "BackUpWordPress has setup your default schedules."
|
275 |
-
msgstr ""
|
276 |
-
|
277 |
-
#: classes/email.php:127
|
278 |
-
msgid "Backup of %s Failed"
|
279 |
-
msgstr ""
|
280 |
-
|
281 |
-
#: classes/email.php:50
|
282 |
-
msgid "Send an email notification to %s"
|
283 |
-
msgstr ""
|
284 |
-
|
285 |
-
#: classes/email.php:72
|
286 |
-
msgid "%s isn't a valid email"
|
287 |
-
msgstr ""
|
288 |
-
|
289 |
-
#: admin/schedule.php:4
|
290 |
-
msgid "Backups will be compressed and should be smaller than this."
|
291 |
-
msgstr ""
|
292 |
-
|
293 |
-
#: classes/email.php:19
|
294 |
-
msgid "Email notification"
|
295 |
-
msgstr ""
|
296 |
-
|
297 |
-
#: admin/schedule.php:19
|
298 |
-
msgid "hourly on the hour"
|
299 |
-
msgstr ""
|
300 |
-
|
301 |
-
#: admin/schedule.php:25
|
302 |
-
msgid "daily at %s"
|
303 |
-
msgstr ""
|
304 |
-
|
305 |
-
#: admin/schedule-form.php:41
|
306 |
-
msgid "Number of backups to store on this server"
|
307 |
-
msgstr ""
|
308 |
-
|
309 |
-
#: admin/schedule-form.php:7
|
310 |
-
msgid "Schedule Settings"
|
311 |
-
msgstr ""
|
312 |
-
|
313 |
-
#: admin/actions.php:418 admin/schedule-form-excludes.php:119
|
314 |
-
msgid "Close"
|
315 |
-
msgstr ""
|
316 |
-
|
317 |
-
#: admin/menu.php:69
|
318 |
-
msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s."
|
319 |
-
msgstr ""
|
320 |
-
|
321 |
-
#: admin/constants.php:26
|
322 |
-
msgid "The root directory that is backed up. Defaults to %s."
|
323 |
-
msgstr ""
|
324 |
-
|
325 |
-
#: admin/constants.php:23
|
326 |
-
msgid "The capability to use when calling %1$s. Defaults to %2$s."
|
327 |
-
msgstr ""
|
328 |
-
|
329 |
-
#: admin/constants.php:14
|
330 |
-
msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available."
|
331 |
-
msgstr ""
|
332 |
-
|
333 |
-
#: plugin.php:71
|
334 |
-
msgid "BackUpWordPress requires WordPress version %s or greater."
|
335 |
-
msgstr ""
|
336 |
-
|
337 |
-
#: plugin.php:141 admin/actions.php:396
|
338 |
-
msgid "Cancel"
|
339 |
-
msgstr ""
|
340 |
-
|
341 |
-
#: admin/constants.php:11
|
342 |
-
msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available."
|
343 |
-
msgstr ""
|
344 |
-
|
345 |
-
#: admin/constants.php:8 admin/constants.php:11 admin/constants.php:14
|
346 |
-
#: admin/constants.php:17 admin/constants.php:20 admin/constants.php:23
|
347 |
-
#: admin/constants.php:26 admin/constants.php:29
|
348 |
-
msgid "e.g."
|
349 |
-
msgstr "bijv."
|
350 |
-
|
351 |
-
#: admin/constants.php:3
|
352 |
-
msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted."
|
353 |
-
msgstr ""
|
354 |
-
|
355 |
-
#: admin/actions.php:192 admin/actions.php:195
|
356 |
-
msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details."
|
357 |
-
msgstr ""
|
358 |
-
|
359 |
-
#: functions/interface.php:72
|
360 |
-
msgid "http://php.net/manual/en/features.safe-mode.php"
|
361 |
-
msgstr ""
|
362 |
-
|
363 |
-
#: functions/interface.php:72
|
364 |
-
msgid "Safe Mode"
|
365 |
-
msgstr ""
|
366 |
-
|
367 |
-
#: functions/interface.php:82
|
368 |
-
msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead."
|
369 |
-
msgstr ""
|
370 |
-
|
371 |
-
#: functions/interface.php:92
|
372 |
-
msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead."
|
373 |
-
msgstr ""
|
374 |
-
|
375 |
-
#: functions/interface.php:252
|
376 |
-
msgid "cancel"
|
377 |
-
msgstr "Annuleren"
|
378 |
-
|
379 |
-
#: functions/interface.php:256
|
380 |
-
msgid "Settings"
|
381 |
-
msgstr "Instellingen"
|
382 |
-
|
383 |
-
#: functions/interface.php:259
|
384 |
-
msgid "Excludes"
|
385 |
-
msgstr "Exclusief"
|
386 |
-
|
387 |
-
#: functions/interface.php:27
|
388 |
-
msgid "Download"
|
389 |
-
msgstr "Download"
|
390 |
-
|
391 |
-
#: functions/interface.php:50 functions/interface.php:62
|
392 |
-
msgid "BackUpWordPress is almost ready."
|
393 |
-
msgstr "BackUpWordPress is bijna klaar."
|
394 |
-
|
395 |
-
#: functions/interface.php:102
|
396 |
-
msgid "BackUpWordPress detected issues with your last backup."
|
397 |
-
msgstr "BackUpWordPress heeft problemen ondervonden met je laatste back-up."
|
398 |
-
|
399 |
-
#: functions/interface.php:227
|
400 |
-
msgid "Database and Files"
|
401 |
-
msgstr ""
|
402 |
-
|
403 |
-
#: functions/interface.php:233
|
404 |
-
msgid "Database"
|
405 |
-
msgstr ""
|
406 |
-
|
407 |
-
#: hm-backup/hm-backup.php:931
|
408 |
-
msgid "The backup file was not created"
|
409 |
-
msgstr "Het back-up bestand is niet gemaakt"
|
410 |
-
|
411 |
-
#: hm-backup/hm-backup.php:951
|
412 |
-
msgid "The following files are unreadable and couldn't be backed up: "
|
413 |
-
msgstr "De volgende bestanden zijn onleesbaar en konden niet in een back-up worden opgenomen:"
|
414 |
-
|
415 |
-
#: admin/actions.php:192 admin/actions.php:195 functions/interface.php:72
|
416 |
-
#: functions/interface.php:82 functions/interface.php:92
|
417 |
-
msgid "BackUpWordPress has detected a problem."
|
418 |
-
msgstr "BackUpWordPress heeft een probleem ondervonden."
|
419 |
-
|
420 |
-
#: admin/actions.php:265
|
421 |
-
msgid "Backup type cannot be empty"
|
422 |
-
msgstr ""
|
423 |
-
|
424 |
-
#: admin/actions.php:268
|
425 |
-
msgid "Invalid backup type"
|
426 |
-
msgstr ""
|
427 |
-
|
428 |
-
#: admin/actions.php:278
|
429 |
-
msgid "Schedule cannot be empty"
|
430 |
-
msgstr ""
|
431 |
-
|
432 |
-
#: admin/actions.php:281
|
433 |
-
msgid "Invalid schedule"
|
434 |
-
msgstr ""
|
435 |
-
|
436 |
-
#: admin/actions.php:294
|
437 |
-
msgid "Max backups must be a number"
|
438 |
-
msgstr ""
|
439 |
-
|
440 |
-
#: admin/actions.php:392
|
441 |
-
msgid "%s didn't match any files."
|
442 |
-
msgstr ""
|
443 |
-
|
444 |
-
#: admin/backups.php:13
|
445 |
-
msgid "add schedule"
|
446 |
-
msgstr ""
|
447 |
-
|
448 |
-
#: admin/backups.php:37
|
449 |
-
msgid "Size"
|
450 |
-
msgstr "Grootte"
|
451 |
-
|
452 |
-
#: admin/backups.php:38
|
453 |
-
msgid "Type"
|
454 |
-
msgstr ""
|
455 |
-
|
456 |
-
#: admin/backups.php:39
|
457 |
-
msgid "Actions"
|
458 |
-
msgstr "Acties"
|
459 |
-
|
460 |
-
#: admin/backups.php:62
|
461 |
-
msgid "This is where your backups will appear once you have one."
|
462 |
-
msgstr ""
|
463 |
-
|
464 |
-
#: admin/constants.php:3
|
465 |
-
msgid "The Codex can help"
|
466 |
-
msgstr "De Codex kan hulp bieden."
|
467 |
-
|
468 |
-
#: admin/constants.php:8
|
469 |
-
msgid "The path to folder you would like to store your backup files in, defaults to %s."
|
470 |
-
msgstr "Het pad naar de map waar je de back up bestanden wilt bewaren, standaard naar %s."
|
471 |
-
|
472 |
-
#: admin/constants.php:11 admin/constants.php:14
|
473 |
-
msgid "database"
|
474 |
-
msgstr "database"
|
475 |
-
|
476 |
-
#: admin/constants.php:14
|
477 |
-
msgid "files"
|
478 |
-
msgstr "bestanden"
|
479 |
-
|
480 |
-
#: admin/constants.php:17
|
481 |
-
msgid "Attempt to email a copy of your backups. Value should be email address to send backups to. Defaults to %s."
|
482 |
-
msgstr "Poging om een kopie van uw back-ups e-mailen. Waarde moet het e-mailadres om back-ups naar toe te sturen zijn. Standaard naar %s."
|
483 |
-
|
484 |
-
#: admin/constants.php:20
|
485 |
-
msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded."
|
486 |
-
msgstr "Een door komma's gescheiden lijst van bestanden of mappen die uitgesloten worden, de backup(s) map is automatisch uitgesloten."
|
487 |
-
|
488 |
-
#: admin/menu.php:10 admin/page.php:5
|
489 |
-
msgid "Manage Backups"
|
490 |
-
msgstr "Beheer back ups"
|
491 |
-
|
492 |
-
#: admin/menu.php:10 admin/menu.php:34
|
493 |
-
msgid "Backups"
|
494 |
-
msgstr "Back ups"
|
495 |
-
|
496 |
-
#: admin/menu.php:69
|
497 |
-
msgid "You are not using the latest stable version of BackUpWordPress"
|
498 |
-
msgstr "Je gebruikt niet de laatste stabiele versie van BackUpWordPress"
|
499 |
-
|
500 |
-
#: admin/menu.php:75
|
501 |
-
msgid "FAQ"
|
502 |
-
msgstr "Veel gestelde vragen"
|
503 |
-
|
504 |
-
#: admin/constants.php:3 admin/menu.php:76
|
505 |
-
msgid "Constants"
|
506 |
-
msgstr "Constanten"
|
507 |
-
|
508 |
-
#: admin/menu.php:79
|
509 |
-
msgid "For more information:"
|
510 |
-
msgstr "Voor meer informatie:"
|
511 |
-
|
512 |
-
#: admin/menu.php:81
|
513 |
-
msgid "Support Forums"
|
514 |
-
msgstr "Ondersteunings forums"
|
515 |
-
|
516 |
-
#: admin/menu.php:82
|
517 |
-
msgid "Help with translation"
|
518 |
-
msgstr "Vertaal hulp"
|
519 |
-
|
520 |
-
#: admin/page.php:13
|
521 |
-
msgid "You need to fix the issues detailed above before BackUpWordPress can start."
|
522 |
-
msgstr "Je moet de hierboven beschreven problemen oplossen voordat BackUpWordPress kan beginnen."
|
523 |
-
|
524 |
-
#: admin/schedule-form-excludes.php:19
|
525 |
-
msgid "Preview"
|
526 |
-
msgstr ""
|
527 |
-
|
528 |
-
#: admin/schedule-form-excludes.php:29
|
529 |
-
msgid "Exclude Rules"
|
530 |
-
msgstr ""
|
531 |
-
|
532 |
-
#: admin/schedule-form-excludes.php:52
|
533 |
-
msgid "Remove"
|
534 |
-
msgstr ""
|
535 |
-
|
536 |
-
#: admin/schedule-form-excludes.php:71
|
537 |
-
msgid "Excluded"
|
538 |
-
msgstr ""
|
539 |
-
|
540 |
-
#: admin/schedule-form-excludes.php:75
|
541 |
-
msgid "Included"
|
542 |
-
msgstr ""
|
543 |
-
|
544 |
-
#: admin/schedule-form-excludes.php:79
|
545 |
-
msgid "Unreadable"
|
546 |
-
msgstr ""
|
547 |
-
|
548 |
-
#: admin/schedule-form-excludes.php:107
|
549 |
-
msgid "Unreadable files can't be backed up"
|
550 |
-
msgstr ""
|
551 |
-
|
552 |
-
#: admin/schedule-form-excludes.php:113
|
553 |
-
msgid "Your site is %s. Backups will be compressed and so will be smaller."
|
554 |
-
msgstr ""
|
555 |
-
|
556 |
-
#: admin/schedule-form.php:11
|
557 |
-
msgid "Backup"
|
558 |
-
msgstr ""
|
559 |
-
|
560 |
-
#: admin/schedule-form.php:14
|
561 |
-
msgid "Both Database & files"
|
562 |
-
msgstr ""
|
563 |
-
|
564 |
-
#: admin/schedule-form.php:15
|
565 |
-
msgid "Files only"
|
566 |
-
msgstr ""
|
567 |
-
|
568 |
-
#: admin/schedule-form.php:16
|
569 |
-
msgid "Database only"
|
570 |
-
msgstr ""
|
571 |
-
|
572 |
-
#: functions/interface.php:230
|
573 |
-
msgid "Files"
|
574 |
-
msgstr ""
|
575 |
-
|
576 |
-
#: admin/schedule-form-excludes.php:7
|
577 |
-
msgid "Manage Excludes"
|
578 |
-
msgstr ""
|
579 |
-
|
580 |
-
#: admin/schedule-form.php:23
|
581 |
-
msgid "Schedule"
|
582 |
-
msgstr ""
|
583 |
-
|
584 |
-
#: plugin.php:140 admin/schedule-form.php:54
|
585 |
-
msgid "Update"
|
586 |
-
msgstr ""
|
587 |
-
|
588 |
-
#: admin/schedule.php:19
|
589 |
-
msgid "hourly at %s minutes past the hour"
|
590 |
-
msgstr ""
|
591 |
-
|
592 |
-
#: functions/interface.php:262
|
593 |
-
msgid "Run now"
|
594 |
-
msgstr ""
|
595 |
-
|
596 |
-
#: functions/interface.php:28 functions/interface.php:264
|
597 |
-
msgid "Delete"
|
598 |
-
msgstr "Verwijderen"
|
599 |
-
|
600 |
-
#: plugin.php:60
|
601 |
-
msgid "BackUpWordPress requires PHP version 5.2.4 or greater."
|
602 |
-
msgstr "BackUpWordPress vereist PHP versie 5.2.4 of hoger."
|
603 |
-
|
604 |
-
#: classes/email.php:137
|
605 |
-
msgid "Backup of %s"
|
606 |
-
msgstr "Back up van %s"
|
607 |
-
|
608 |
-
#: functions/core.php:293
|
609 |
-
msgid "This %s file ensures that other people cannot download your backup files."
|
610 |
-
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/languages/hmbkp-pt_BR.mo
DELETED
Binary file
|
backupwordpress/languages/hmbkp-pt_BR.po
DELETED
@@ -1,614 +0,0 @@
|
|
1 |
-
# Translation of 2.x in Portuguese (Brazil)
|
2 |
-
# This file is distributed under the same license as the 2.x package.
|
3 |
-
msgid ""
|
4 |
-
msgstr ""
|
5 |
-
"PO-Revision-Date: 2012-11-22 15:38:44+0000\n"
|
6 |
-
"MIME-Version: 1.0\n"
|
7 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
-
"Content-Transfer-Encoding: 8bit\n"
|
9 |
-
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
10 |
-
"X-Generator: GlotPress/0.1\n"
|
11 |
-
"Project-Id-Version: 2.x\n"
|
12 |
-
|
13 |
-
#: admin/actions.php:419
|
14 |
-
msgid "Email to Support"
|
15 |
-
msgstr ""
|
16 |
-
|
17 |
-
#: admin/page.php:17
|
18 |
-
msgid "If your finding BackUpWordPress useful, please %s."
|
19 |
-
msgstr ""
|
20 |
-
|
21 |
-
#: admin/schedule-form-excludes.php:13
|
22 |
-
msgid "New Exclude Rule[s]"
|
23 |
-
msgstr ""
|
24 |
-
|
25 |
-
#: admin/actions.php:410
|
26 |
-
msgid "Your BackUp Failed"
|
27 |
-
msgstr ""
|
28 |
-
|
29 |
-
#: admin/actions.php:412
|
30 |
-
msgid "Here's the response from the server:"
|
31 |
-
msgstr ""
|
32 |
-
|
33 |
-
#: admin/page.php:19
|
34 |
-
msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page."
|
35 |
-
msgstr ""
|
36 |
-
|
37 |
-
#: admin/page.php:17
|
38 |
-
msgid "rate it on the plugin directory"
|
39 |
-
msgstr ""
|
40 |
-
|
41 |
-
#: classes/schedule.php:512 functions/interface.php:252
|
42 |
-
msgid "Starting Backup"
|
43 |
-
msgstr ""
|
44 |
-
|
45 |
-
#: classes/schedule.php:582
|
46 |
-
msgid "Dumping Database %s"
|
47 |
-
msgstr ""
|
48 |
-
|
49 |
-
#: classes/schedule.php:588
|
50 |
-
msgid "Verifying Database Dump %s"
|
51 |
-
msgstr ""
|
52 |
-
|
53 |
-
#: classes/schedule.php:594
|
54 |
-
msgid "Creating zip archive %s"
|
55 |
-
msgstr ""
|
56 |
-
|
57 |
-
#: classes/schedule.php:600
|
58 |
-
msgid "Verifying Zip Archive %s"
|
59 |
-
msgstr ""
|
60 |
-
|
61 |
-
#: classes/schedule.php:606
|
62 |
-
msgid "Finishing Backup"
|
63 |
-
msgstr ""
|
64 |
-
|
65 |
-
#: classes/wp-cli.php:16
|
66 |
-
msgid "BackUpWordPress may not work when php is running with %s on"
|
67 |
-
msgstr ""
|
68 |
-
|
69 |
-
#: functions/interface.php:72
|
70 |
-
msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on."
|
71 |
-
msgstr ""
|
72 |
-
|
73 |
-
#: admin/constants.php:29
|
74 |
-
msgid "The time that your schedules should run. Defaults to %s."
|
75 |
-
msgstr "O horário em que seus agendamentos devem ser executados. O padrão é %s."
|
76 |
-
|
77 |
-
#: plugin.php:142
|
78 |
-
msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted."
|
79 |
-
msgstr "Você tem certeza de que quer apagar este agendamento? Todos os backups já realizados nesta programação também serão excluídos."
|
80 |
-
|
81 |
-
#: plugin.php:142 plugin.php:143 plugin.php:144 plugin.php:145
|
82 |
-
msgid "'Cancel' to go back, 'OK' to delete."
|
83 |
-
msgstr "'Cancelar' para voltar, 'OK' para apagar."
|
84 |
-
|
85 |
-
#: plugin.php:143
|
86 |
-
msgid "Are you sure you want to delete this backup?"
|
87 |
-
msgstr "Você tem certeza que quer apagar este backup?"
|
88 |
-
|
89 |
-
#: plugin.php:144
|
90 |
-
msgid "Are you sure you want to remove this exclude rule?"
|
91 |
-
msgstr "Você tem certeza de que deseja remover esta regra de exclusão?"
|
92 |
-
|
93 |
-
#: plugin.php:145
|
94 |
-
msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?"
|
95 |
-
msgstr "Reduzindo o número de backups que serão armazenados neste servidor causará a eliminação de alguns backups já existentes. Você tem certeza que é isso que você quer?"
|
96 |
-
|
97 |
-
#: admin/actions.php:291
|
98 |
-
msgid "Max backups can't be empty"
|
99 |
-
msgstr "A quant. de backups não pode ficar vazia"
|
100 |
-
|
101 |
-
#: admin/actions.php:297
|
102 |
-
msgid "Max backups must be greater than 0"
|
103 |
-
msgstr "A quant. de backups precisa ser maior que 0"
|
104 |
-
|
105 |
-
#: admin/actions.php:396
|
106 |
-
msgid "Exclude"
|
107 |
-
msgstr "Excluir"
|
108 |
-
|
109 |
-
#: admin/schedule-form-excludes.php:44
|
110 |
-
msgid "default"
|
111 |
-
msgstr "padrão"
|
112 |
-
|
113 |
-
#: admin/schedule-form-excludes.php:48
|
114 |
-
msgid "defined"
|
115 |
-
msgstr "definido"
|
116 |
-
|
117 |
-
#: admin/schedule-form.php:27
|
118 |
-
msgid "Manual Only"
|
119 |
-
msgstr "Apenas Manualmente"
|
120 |
-
|
121 |
-
#: admin/schedule-form.php:45
|
122 |
-
msgid "The number of previous backups to store on the server. past this limit older backups will be deleted automatically."
|
123 |
-
msgstr "O número de versões de backup que serão armazenadas no servidor. Passado este limite, os backups mais antigos serão automaticamente excluídos."
|
124 |
-
|
125 |
-
#: admin/schedule.php:4
|
126 |
-
msgid "this shouldn't take long…"
|
127 |
-
msgstr "isso não deve demorar muito…"
|
128 |
-
|
129 |
-
#: admin/schedule.php:4
|
130 |
-
msgid "calculating the size of your site…"
|
131 |
-
msgstr "calculando o tamanho de seu site…"
|
132 |
-
|
133 |
-
#: admin/schedule.php:12
|
134 |
-
msgid "The next backup will be on %1$s at %2$s"
|
135 |
-
msgstr "O próximo backup será em %1$s às %2$s"
|
136 |
-
|
137 |
-
#: admin/schedule.php:37
|
138 |
-
msgid "every 12 hours at %1$s & %2$s"
|
139 |
-
msgstr "a cada 12 horas às %1$s & %2$s"
|
140 |
-
|
141 |
-
#: admin/schedule.php:43
|
142 |
-
msgid "weekly on %1$s at %2$s"
|
143 |
-
msgstr "semanalmente no(a) %1$s às %2$s"
|
144 |
-
|
145 |
-
#: admin/schedule.php:49
|
146 |
-
msgid "fortnightly on %1$s at %2$s"
|
147 |
-
msgstr "quinzenalmente no(a) %1$s às %2$s"
|
148 |
-
|
149 |
-
#: admin/schedule.php:56
|
150 |
-
msgid "on the %1$s of each month at %2$s"
|
151 |
-
msgstr "no %1$s de cada mês às %2$s"
|
152 |
-
|
153 |
-
#: admin/schedule.php:62
|
154 |
-
msgid "manually"
|
155 |
-
msgstr "manualmente"
|
156 |
-
|
157 |
-
#: admin/schedule.php:68
|
158 |
-
msgid "this server"
|
159 |
-
msgstr "neste servidor"
|
160 |
-
|
161 |
-
#: admin/schedule.php:75
|
162 |
-
msgid "store the only the last backup on %s"
|
163 |
-
msgstr "armazenar apenas o último backup %s"
|
164 |
-
|
165 |
-
#: admin/schedule.php:81
|
166 |
-
msgid "don't store any backups on %s"
|
167 |
-
msgstr "não armazenar nenhum backup em %s"
|
168 |
-
|
169 |
-
#: admin/schedule.php:87
|
170 |
-
msgid "store only the last %1$s backups on %2$s"
|
171 |
-
msgstr "armazenar os últimos %1$s backups %2$s"
|
172 |
-
|
173 |
-
#: admin/schedule.php:96
|
174 |
-
msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s"
|
175 |
-
msgstr "Realizar o backup dos %1$s do %2$s %3$s, %4$s. %5$s"
|
176 |
-
|
177 |
-
#: classes/email.php:23
|
178 |
-
msgid "Receive a notification email when a backup completes, if the backup is small enough (< 10mb) then it will be attached to the email. Separate multiple email address's with a comma."
|
179 |
-
msgstr "Receba um email de notificação quando um backup for concluído. Se o backup for pequeno o suficiente (< 10mb), então ele será anexado ao email. Separe os emails com uma virgula."
|
180 |
-
|
181 |
-
#: classes/email.php:129
|
182 |
-
msgid "BackUpWordPress was unable to backup your site %1$s."
|
183 |
-
msgstr "O BackUpWordPress não foi capaz de realizar o backup do seu site %1$s."
|
184 |
-
|
185 |
-
#: classes/email.php:129
|
186 |
-
msgid "Here are the errors that we're encountered:"
|
187 |
-
msgstr "Aqui estão os erros que foram encontrados:"
|
188 |
-
|
189 |
-
#: classes/email.php:129
|
190 |
-
msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look"
|
191 |
-
msgstr "Se os erros acima parecem tão esquisitos quanto Marcianos, encaminhe este email para %3$s e iremos dar uma olhada"
|
192 |
-
|
193 |
-
#: classes/email.php:129
|
194 |
-
msgid ""
|
195 |
-
"Kind Regards,\n"
|
196 |
-
"The Apologetic BackUpWordPress Backup Emailing Robot"
|
197 |
-
msgstr ""
|
198 |
-
"Atenciosamente, \n"
|
199 |
-
"O Apologético Robô Carteiro do BackUpWordPress"
|
200 |
-
|
201 |
-
#: classes/email.php:142 classes/email.php:151
|
202 |
-
msgid "BackUpWordPress has completed a backup of your site %1$s."
|
203 |
-
msgstr "O BackUpWordPress completou a realização de um backup do seu site %1$s."
|
204 |
-
|
205 |
-
#: classes/email.php:142
|
206 |
-
msgid "The backup file should be attached to this email."
|
207 |
-
msgstr "O arquivo de backup será anexado neste email."
|
208 |
-
|
209 |
-
#: classes/email.php:142 classes/email.php:151
|
210 |
-
msgid "You can download the backup file by clicking the link below:"
|
211 |
-
msgstr "Você pode realizar o download do arquivo de backup clicando no link abaixo:"
|
212 |
-
|
213 |
-
#: classes/email.php:142 classes/email.php:151
|
214 |
-
msgid ""
|
215 |
-
"Kind Regards,\n"
|
216 |
-
"The Happy BackUpWordPress Backup Emailing Robot"
|
217 |
-
msgstr ""
|
218 |
-
"Atenciosamente,\n"
|
219 |
-
"O Feliz Robô Carteiro de Backups do BackUpWordPress"
|
220 |
-
|
221 |
-
#: classes/email.php:151
|
222 |
-
msgid "Unfortunately the backup file was too large to attach to this email."
|
223 |
-
msgstr "Infelizmente o arquivo de backup era muito grande para ser anexado nesta mensagem de email."
|
224 |
-
|
225 |
-
#: classes/wp-cli.php:19
|
226 |
-
msgid "Backup: Dumping database..."
|
227 |
-
msgstr "Backup: Realizando o dumping do banco de dados..."
|
228 |
-
|
229 |
-
#: classes/wp-cli.php:23
|
230 |
-
msgid "Backup: Zipping everything up..."
|
231 |
-
msgstr "Backup: Compactando tudo..."
|
232 |
-
|
233 |
-
#: classes/wp-cli.php:38
|
234 |
-
msgid "Invalid backup path"
|
235 |
-
msgstr "Caminho de backup inválido"
|
236 |
-
|
237 |
-
#: classes/wp-cli.php:43
|
238 |
-
msgid "Invalid root path"
|
239 |
-
msgstr "Caminho do diretório raiz inválido"
|
240 |
-
|
241 |
-
#: classes/wp-cli.php:68
|
242 |
-
msgid "Backup Complete: "
|
243 |
-
msgstr "Backup Concluído: "
|
244 |
-
|
245 |
-
#: classes/wp-cli.php:71
|
246 |
-
msgid "Backup Failed"
|
247 |
-
msgstr "Falha no Backup"
|
248 |
-
|
249 |
-
#: functions/core.php:202
|
250 |
-
msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules."
|
251 |
-
msgstr "Por padrão, o BackUpWordPress realiza um backup diário de seu banco de dados e um backup semanal de seu banco de dados & arquivos. Você pode modificar esses agendamentos."
|
252 |
-
|
253 |
-
#: functions/interface.php:111
|
254 |
-
msgid "BackUpWordPress failed to perform the backup."
|
255 |
-
msgstr "O BackUpWordPress não conseguiu realizar o backup."
|
256 |
-
|
257 |
-
#: functions/interface.php:111
|
258 |
-
msgid "You have likely hit a memory limit."
|
259 |
-
msgstr "Você provavelmente atingiu o limite de memória."
|
260 |
-
|
261 |
-
#: functions/interface.php:238
|
262 |
-
msgid "Legacy"
|
263 |
-
msgstr "Legado"
|
264 |
-
|
265 |
-
#: hm-backup/hm-backup.php:906
|
266 |
-
msgid "The mysqldump file was not created"
|
267 |
-
msgstr "O arquivo mysqldump não foi criado"
|
268 |
-
|
269 |
-
#: functions/interface.php:62
|
270 |
-
msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself."
|
271 |
-
msgstr "Seu diretório de backups não é gravável. Execute o comando %1$s ou %2$s, ou defina as permissões você mesmo."
|
272 |
-
|
273 |
-
#: functions/interface.php:50
|
274 |
-
msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself."
|
275 |
-
msgstr "Não é possível criar o diretório de backups pois sua pasta %1$s não possui permissões para gravação. Execute o comando %2$s ou %3$s ou crie a pasta você mesmo."
|
276 |
-
|
277 |
-
#: functions/core.php:202
|
278 |
-
msgid "BackUpWordPress has setup your default schedules."
|
279 |
-
msgstr "O BackUpWordPress configurou seus agendamentos padrão."
|
280 |
-
|
281 |
-
#: classes/email.php:127
|
282 |
-
msgid "Backup of %s Failed"
|
283 |
-
msgstr "Backup de %s Falhou"
|
284 |
-
|
285 |
-
#: classes/email.php:50
|
286 |
-
msgid "Send an email notification to %s"
|
287 |
-
msgstr "Enviar uma notificação por email para %s"
|
288 |
-
|
289 |
-
#: classes/email.php:72
|
290 |
-
msgid "%s isn't a valid email"
|
291 |
-
msgstr "%s não é um email válido"
|
292 |
-
|
293 |
-
#: admin/schedule.php:4
|
294 |
-
msgid "Backups will be compressed and should be smaller than this."
|
295 |
-
msgstr "Os backups serão compactados e ficarão menores que isso."
|
296 |
-
|
297 |
-
#: classes/email.php:19
|
298 |
-
msgid "Email notification"
|
299 |
-
msgstr "Notificação por email"
|
300 |
-
|
301 |
-
#: admin/schedule.php:19
|
302 |
-
msgid "hourly on the hour"
|
303 |
-
msgstr "de hora em hora"
|
304 |
-
|
305 |
-
#: admin/schedule.php:25
|
306 |
-
msgid "daily at %s"
|
307 |
-
msgstr "diariamente às %s"
|
308 |
-
|
309 |
-
#: admin/schedule-form.php:41
|
310 |
-
msgid "Number of backups to store on this server"
|
311 |
-
msgstr "Número de backups para armazenar"
|
312 |
-
|
313 |
-
#: admin/schedule-form.php:7
|
314 |
-
msgid "Schedule Settings"
|
315 |
-
msgstr "Configurações do Agendamento"
|
316 |
-
|
317 |
-
#: admin/actions.php:418 admin/schedule-form-excludes.php:119
|
318 |
-
msgid "Close"
|
319 |
-
msgstr "Fechar"
|
320 |
-
|
321 |
-
#: admin/menu.php:69
|
322 |
-
msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s."
|
323 |
-
msgstr "A informação abaixo é referente à versão %1$s. Consulte o arquivo %2$s para instruções específicas da versão %3$s."
|
324 |
-
|
325 |
-
#: admin/constants.php:26
|
326 |
-
msgid "The root directory that is backed up. Defaults to %s."
|
327 |
-
msgstr "O diretório raiz onde será realizado o backup. O padrão é %s."
|
328 |
-
|
329 |
-
#: admin/constants.php:23
|
330 |
-
msgid "The capability to use when calling %1$s. Defaults to %2$s."
|
331 |
-
msgstr "A capacidade que o usuário deve ter ao solicitar %1$s. O padrão é %2$s."
|
332 |
-
|
333 |
-
#: admin/constants.php:14
|
334 |
-
msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available."
|
335 |
-
msgstr "O caminho para executar a função %1$s. Será usado para compactar seus %2$s e %3$s, se disponível."
|
336 |
-
|
337 |
-
#: plugin.php:71
|
338 |
-
msgid "BackUpWordPress requires WordPress version %s or greater."
|
339 |
-
msgstr "O BackUpWordPress requer o WordPress versão %s ou superior."
|
340 |
-
|
341 |
-
#: plugin.php:141 admin/actions.php:396
|
342 |
-
msgid "Cancel"
|
343 |
-
msgstr "Cancelar"
|
344 |
-
|
345 |
-
#: admin/constants.php:11
|
346 |
-
msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available."
|
347 |
-
msgstr "O caminho para executar o comando %1$s. Será usado para parte do backup do seu %2$s, se disponível."
|
348 |
-
|
349 |
-
#: admin/constants.php:8 admin/constants.php:11 admin/constants.php:14
|
350 |
-
#: admin/constants.php:17 admin/constants.php:20 admin/constants.php:23
|
351 |
-
#: admin/constants.php:26 admin/constants.php:29
|
352 |
-
msgid "e.g."
|
353 |
-
msgstr "ex:"
|
354 |
-
|
355 |
-
#: admin/constants.php:3
|
356 |
-
msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted."
|
357 |
-
msgstr "Você pode %1$s qualquer uma das seguintes %2$s em seu arquivo %3$s para controlar certas definições avançadas. %4$s. As %5$s que estiverem personalizadas aparecerão abaixo destacadas."
|
358 |
-
|
359 |
-
#: admin/actions.php:192 admin/actions.php:195
|
360 |
-
msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details."
|
361 |
-
msgstr "%1$s está retornando a resposta %2$s que pode indicar que as tarefas agendadas não estão sendo executadas corretamente. O BackUpWordPress depende do wp-cron para realizar os seus backups agendados. Veja o %3$s para mais detalhes."
|
362 |
-
|
363 |
-
#: functions/interface.php:72
|
364 |
-
msgid "http://php.net/manual/en/features.safe-mode.php"
|
365 |
-
msgstr "http://php.net/manual/pt_BR/features.safe-mode.php"
|
366 |
-
|
367 |
-
#: functions/interface.php:72
|
368 |
-
msgid "Safe Mode"
|
369 |
-
msgstr "Safe Mode (Modo Seguro)"
|
370 |
-
|
371 |
-
#: functions/interface.php:82
|
372 |
-
msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead."
|
373 |
-
msgstr "Seu diretório de backups personalizado %1$s não existe e também não pode ser criado. Ao invés disso seus backups serão salvos em %2$s."
|
374 |
-
|
375 |
-
#: functions/interface.php:92
|
376 |
-
msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead."
|
377 |
-
msgstr "Seu diretório personalizado para backups %1$s não possui permissões para gravação, e ao invés disso, novos backups serão salvos em %2$s."
|
378 |
-
|
379 |
-
#: functions/interface.php:252
|
380 |
-
msgid "cancel"
|
381 |
-
msgstr "cancelar"
|
382 |
-
|
383 |
-
#: functions/interface.php:256
|
384 |
-
msgid "Settings"
|
385 |
-
msgstr "Configurações"
|
386 |
-
|
387 |
-
#: functions/interface.php:259
|
388 |
-
msgid "Excludes"
|
389 |
-
msgstr "Exclusões"
|
390 |
-
|
391 |
-
#: functions/interface.php:27
|
392 |
-
msgid "Download"
|
393 |
-
msgstr "Download"
|
394 |
-
|
395 |
-
#: functions/interface.php:50 functions/interface.php:62
|
396 |
-
msgid "BackUpWordPress is almost ready."
|
397 |
-
msgstr "O BackUpWordPress está quase pronto."
|
398 |
-
|
399 |
-
#: functions/interface.php:102
|
400 |
-
msgid "BackUpWordPress detected issues with your last backup."
|
401 |
-
msgstr "O BackUpWordPress detectou problemas com o seu último backup."
|
402 |
-
|
403 |
-
#: functions/interface.php:227
|
404 |
-
msgid "Database and Files"
|
405 |
-
msgstr "Banco de Dados e Arquivos"
|
406 |
-
|
407 |
-
#: functions/interface.php:233
|
408 |
-
msgid "Database"
|
409 |
-
msgstr "Banco de dados"
|
410 |
-
|
411 |
-
#: hm-backup/hm-backup.php:931
|
412 |
-
msgid "The backup file was not created"
|
413 |
-
msgstr "O arquivo de backup não foi criado"
|
414 |
-
|
415 |
-
#: hm-backup/hm-backup.php:951
|
416 |
-
msgid "The following files are unreadable and couldn't be backed up: "
|
417 |
-
msgstr "Os seguintes arquivos não puderam ser lidos e por isso não foram copiados no backup:"
|
418 |
-
|
419 |
-
#: admin/actions.php:192 admin/actions.php:195 functions/interface.php:72
|
420 |
-
#: functions/interface.php:82 functions/interface.php:92
|
421 |
-
msgid "BackUpWordPress has detected a problem."
|
422 |
-
msgstr "O BackUpWordPress detectou um problema."
|
423 |
-
|
424 |
-
#: admin/actions.php:265
|
425 |
-
msgid "Backup type cannot be empty"
|
426 |
-
msgstr "O tipo de backup não pode ficar vazio"
|
427 |
-
|
428 |
-
#: admin/actions.php:268
|
429 |
-
msgid "Invalid backup type"
|
430 |
-
msgstr "Tipo de backup inválido"
|
431 |
-
|
432 |
-
#: admin/actions.php:278
|
433 |
-
msgid "Schedule cannot be empty"
|
434 |
-
msgstr "O intervalo não pode ficar vazio"
|
435 |
-
|
436 |
-
#: admin/actions.php:281
|
437 |
-
msgid "Invalid schedule"
|
438 |
-
msgstr "Agendamento inválido"
|
439 |
-
|
440 |
-
#: admin/actions.php:294
|
441 |
-
msgid "Max backups must be a number"
|
442 |
-
msgstr "A quant. de backups precisa ser um número"
|
443 |
-
|
444 |
-
#: admin/actions.php:392
|
445 |
-
msgid "%s didn't match any files."
|
446 |
-
msgstr "%s não resulta em arquivo algum."
|
447 |
-
|
448 |
-
#: admin/backups.php:13
|
449 |
-
msgid "add schedule"
|
450 |
-
msgstr "agendar novo backup"
|
451 |
-
|
452 |
-
#: admin/backups.php:37
|
453 |
-
msgid "Size"
|
454 |
-
msgstr "Tamanho"
|
455 |
-
|
456 |
-
#: admin/backups.php:38
|
457 |
-
msgid "Type"
|
458 |
-
msgstr "Tipo"
|
459 |
-
|
460 |
-
#: admin/backups.php:39
|
461 |
-
msgid "Actions"
|
462 |
-
msgstr "Ações"
|
463 |
-
|
464 |
-
#: admin/backups.php:62
|
465 |
-
msgid "This is where your backups will appear once you have one."
|
466 |
-
msgstr "Quando você tiver um backup, ele irá aparecer neste espaço."
|
467 |
-
|
468 |
-
#: admin/constants.php:3
|
469 |
-
msgid "The Codex can help"
|
470 |
-
msgstr "O Codex pode ajudar"
|
471 |
-
|
472 |
-
#: admin/constants.php:8
|
473 |
-
msgid "The path to folder you would like to store your backup files in, defaults to %s."
|
474 |
-
msgstr "O caminho do diretório que você gostaria de armazenar os arquivos de backup. O padrão é %s."
|
475 |
-
|
476 |
-
#: admin/constants.php:11 admin/constants.php:14
|
477 |
-
msgid "database"
|
478 |
-
msgstr "banco de dados"
|
479 |
-
|
480 |
-
#: admin/constants.php:14
|
481 |
-
msgid "files"
|
482 |
-
msgstr "arquivos"
|
483 |
-
|
484 |
-
#: admin/constants.php:17
|
485 |
-
msgid "Attempt to email a copy of your backups. Value should be email address to send backups to. Defaults to %s."
|
486 |
-
msgstr "Opção de enviar uma cópia de seus backups por email. O valor precisar ser um endereço de email que receberá os envios. O padrão é %s."
|
487 |
-
|
488 |
-
#: admin/constants.php:20
|
489 |
-
msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded."
|
490 |
-
msgstr "Lista de arquivos ou diretórios (separados por vírgula) que devem ser excluídos do backup. O diretório de backups é automaticamente excluído."
|
491 |
-
|
492 |
-
#: admin/menu.php:10 admin/page.php:5
|
493 |
-
msgid "Manage Backups"
|
494 |
-
msgstr "Gerenciar Backups"
|
495 |
-
|
496 |
-
#: admin/menu.php:10 admin/menu.php:34
|
497 |
-
msgid "Backups"
|
498 |
-
msgstr "Backups"
|
499 |
-
|
500 |
-
#: admin/menu.php:69
|
501 |
-
msgid "You are not using the latest stable version of BackUpWordPress"
|
502 |
-
msgstr "Você não está usando a última versão estável do BackUpWordPress"
|
503 |
-
|
504 |
-
#: admin/menu.php:75
|
505 |
-
msgid "FAQ"
|
506 |
-
msgstr "FAQ"
|
507 |
-
|
508 |
-
#: admin/constants.php:3 admin/menu.php:76
|
509 |
-
msgid "Constants"
|
510 |
-
msgstr "Constantes"
|
511 |
-
|
512 |
-
#: admin/menu.php:79
|
513 |
-
msgid "For more information:"
|
514 |
-
msgstr "Para mais informações:"
|
515 |
-
|
516 |
-
#: admin/menu.php:81
|
517 |
-
msgid "Support Forums"
|
518 |
-
msgstr "Fóruns de suporte"
|
519 |
-
|
520 |
-
#: admin/menu.php:82
|
521 |
-
msgid "Help with translation"
|
522 |
-
msgstr "Ajude a traduzir"
|
523 |
-
|
524 |
-
#: admin/page.php:13
|
525 |
-
msgid "You need to fix the issues detailed above before BackUpWordPress can start."
|
526 |
-
msgstr "Você precisa corrigir os erros indicados acima antes que o BackUpWordPress possa ser iniciado."
|
527 |
-
|
528 |
-
#: admin/schedule-form-excludes.php:19
|
529 |
-
msgid "Preview"
|
530 |
-
msgstr "Visualizar"
|
531 |
-
|
532 |
-
#: admin/schedule-form-excludes.php:29
|
533 |
-
msgid "Exclude Rules"
|
534 |
-
msgstr "Regras de exclusão"
|
535 |
-
|
536 |
-
#: admin/schedule-form-excludes.php:52
|
537 |
-
msgid "Remove"
|
538 |
-
msgstr "Excluir"
|
539 |
-
|
540 |
-
#: admin/schedule-form-excludes.php:71
|
541 |
-
msgid "Excluded"
|
542 |
-
msgstr "Excluído"
|
543 |
-
|
544 |
-
#: admin/schedule-form-excludes.php:75
|
545 |
-
msgid "Included"
|
546 |
-
msgstr "Incluído"
|
547 |
-
|
548 |
-
#: admin/schedule-form-excludes.php:79
|
549 |
-
msgid "Unreadable"
|
550 |
-
msgstr "Ilegível"
|
551 |
-
|
552 |
-
#: admin/schedule-form-excludes.php:107
|
553 |
-
msgid "Unreadable files can't be backed up"
|
554 |
-
msgstr "Não é possível realizar o backup de arquivos ilegíveis"
|
555 |
-
|
556 |
-
#: admin/schedule-form-excludes.php:113
|
557 |
-
msgid "Your site is %s. Backups will be compressed and so will be smaller."
|
558 |
-
msgstr "Seu site tem %s. Os backups serão compactados e ficarão menores."
|
559 |
-
|
560 |
-
#: admin/schedule-form.php:11
|
561 |
-
msgid "Backup"
|
562 |
-
msgstr "Backup"
|
563 |
-
|
564 |
-
#: admin/schedule-form.php:14
|
565 |
-
msgid "Both Database & files"
|
566 |
-
msgstr "Banco de dados & arquivos"
|
567 |
-
|
568 |
-
#: admin/schedule-form.php:15
|
569 |
-
msgid "Files only"
|
570 |
-
msgstr "Apenas arquivos"
|
571 |
-
|
572 |
-
#: admin/schedule-form.php:16
|
573 |
-
msgid "Database only"
|
574 |
-
msgstr "Apenas banco de dados"
|
575 |
-
|
576 |
-
#: functions/interface.php:230
|
577 |
-
msgid "Files"
|
578 |
-
msgstr "Arquivos"
|
579 |
-
|
580 |
-
#: admin/schedule-form-excludes.php:7
|
581 |
-
msgid "Manage Excludes"
|
582 |
-
msgstr "Gerenciar Exclusões"
|
583 |
-
|
584 |
-
#: admin/schedule-form.php:23
|
585 |
-
msgid "Schedule"
|
586 |
-
msgstr "Intervalo"
|
587 |
-
|
588 |
-
#: plugin.php:140 admin/schedule-form.php:54
|
589 |
-
msgid "Update"
|
590 |
-
msgstr ""
|
591 |
-
|
592 |
-
#: admin/schedule.php:19
|
593 |
-
msgid "hourly at %s minutes past the hour"
|
594 |
-
msgstr "de hora em hora, passado %s minutos de cada hora"
|
595 |
-
|
596 |
-
#: functions/interface.php:262
|
597 |
-
msgid "Run now"
|
598 |
-
msgstr "Executar agora"
|
599 |
-
|
600 |
-
#: functions/interface.php:28 functions/interface.php:264
|
601 |
-
msgid "Delete"
|
602 |
-
msgstr "Excluir"
|
603 |
-
|
604 |
-
#: plugin.php:60
|
605 |
-
msgid "BackUpWordPress requires PHP version 5.2.4 or greater."
|
606 |
-
msgstr "O BackUpWordPress requer o PHP versão 5.2.4 ou superior."
|
607 |
-
|
608 |
-
#: classes/email.php:137
|
609 |
-
msgid "Backup of %s"
|
610 |
-
msgstr "Backup de %s"
|
611 |
-
|
612 |
-
#: functions/core.php:293
|
613 |
-
msgid "This %s file ensures that other people cannot download your backup files."
|
614 |
-
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/languages/hmbkp-zh_CN.mo
DELETED
Binary file
|
backupwordpress/languages/hmbkp-zh_CN.po
DELETED
@@ -1,610 +0,0 @@
|
|
1 |
-
# Translation of 2.x in Chinese (China)
|
2 |
-
# This file is distributed under the same license as the 2.x package.
|
3 |
-
msgid ""
|
4 |
-
msgstr ""
|
5 |
-
"PO-Revision-Date: 2012-11-22 15:38:53+0000\n"
|
6 |
-
"MIME-Version: 1.0\n"
|
7 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
-
"Content-Transfer-Encoding: 8bit\n"
|
9 |
-
"Plural-Forms: nplurals=1; plural=0;\n"
|
10 |
-
"X-Generator: GlotPress/0.1\n"
|
11 |
-
"Project-Id-Version: 2.x\n"
|
12 |
-
|
13 |
-
#: admin/actions.php:419
|
14 |
-
msgid "Email to Support"
|
15 |
-
msgstr ""
|
16 |
-
|
17 |
-
#: admin/page.php:17
|
18 |
-
msgid "If your finding BackUpWordPress useful, please %s."
|
19 |
-
msgstr ""
|
20 |
-
|
21 |
-
#: admin/schedule-form-excludes.php:13
|
22 |
-
msgid "New Exclude Rule[s]"
|
23 |
-
msgstr ""
|
24 |
-
|
25 |
-
#: admin/actions.php:410
|
26 |
-
msgid "Your BackUp Failed"
|
27 |
-
msgstr ""
|
28 |
-
|
29 |
-
#: admin/actions.php:412
|
30 |
-
msgid "Here's the response from the server:"
|
31 |
-
msgstr ""
|
32 |
-
|
33 |
-
#: admin/page.php:19
|
34 |
-
msgid "If you need help getting things working then check the FAQ by clicking on help in the top right hand corner of this page."
|
35 |
-
msgstr ""
|
36 |
-
|
37 |
-
#: admin/page.php:17
|
38 |
-
msgid "rate it on the plugin directory"
|
39 |
-
msgstr ""
|
40 |
-
|
41 |
-
#: classes/schedule.php:512 functions/interface.php:252
|
42 |
-
msgid "Starting Backup"
|
43 |
-
msgstr ""
|
44 |
-
|
45 |
-
#: classes/schedule.php:582
|
46 |
-
msgid "Dumping Database %s"
|
47 |
-
msgstr ""
|
48 |
-
|
49 |
-
#: classes/schedule.php:588
|
50 |
-
msgid "Verifying Database Dump %s"
|
51 |
-
msgstr ""
|
52 |
-
|
53 |
-
#: classes/schedule.php:594
|
54 |
-
msgid "Creating zip archive %s"
|
55 |
-
msgstr ""
|
56 |
-
|
57 |
-
#: classes/schedule.php:600
|
58 |
-
msgid "Verifying Zip Archive %s"
|
59 |
-
msgstr ""
|
60 |
-
|
61 |
-
#: classes/schedule.php:606
|
62 |
-
msgid "Finishing Backup"
|
63 |
-
msgstr ""
|
64 |
-
|
65 |
-
#: classes/wp-cli.php:16
|
66 |
-
msgid "BackUpWordPress may not work when php is running with %s on"
|
67 |
-
msgstr ""
|
68 |
-
|
69 |
-
#: functions/interface.php:72
|
70 |
-
msgid "%1$s is running in %2$s, please contact your host and ask them to disable it. BackUpWordPress may not work correctly whilst %3$s is on."
|
71 |
-
msgstr ""
|
72 |
-
|
73 |
-
#: admin/constants.php:29
|
74 |
-
msgid "The time that your schedules should run. Defaults to %s."
|
75 |
-
msgstr ""
|
76 |
-
|
77 |
-
#: plugin.php:142
|
78 |
-
msgid "Are you sure you want to delete this schedule? All of it's backups will also be deleted."
|
79 |
-
msgstr ""
|
80 |
-
|
81 |
-
#: plugin.php:142 plugin.php:143 plugin.php:144 plugin.php:145
|
82 |
-
msgid "'Cancel' to go back, 'OK' to delete."
|
83 |
-
msgstr ""
|
84 |
-
|
85 |
-
#: plugin.php:143
|
86 |
-
msgid "Are you sure you want to delete this backup?"
|
87 |
-
msgstr ""
|
88 |
-
|
89 |
-
#: plugin.php:144
|
90 |
-
msgid "Are you sure you want to remove this exclude rule?"
|
91 |
-
msgstr ""
|
92 |
-
|
93 |
-
#: plugin.php:145
|
94 |
-
msgid "Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that's what you want?"
|
95 |
-
msgstr ""
|
96 |
-
|
97 |
-
#: admin/actions.php:291
|
98 |
-
msgid "Max backups can't be empty"
|
99 |
-
msgstr ""
|
100 |
-
|
101 |
-
#: admin/actions.php:297
|
102 |
-
msgid "Max backups must be greater than 0"
|
103 |
-
msgstr ""
|
104 |
-
|
105 |
-
#: admin/actions.php:396
|
106 |
-
msgid "Exclude"
|
107 |
-
msgstr ""
|
108 |
-
|
109 |
-
#: admin/schedule-form-excludes.php:44
|
110 |
-
msgid "default"
|
111 |
-
msgstr ""
|
112 |
-
|
113 |
-
#: admin/schedule-form-excludes.php:48
|
114 |
-
msgid "defined"
|
115 |
-
msgstr ""
|
116 |
-
|
117 |
-
#: admin/schedule-form.php:27
|
118 |
-
msgid "Manual Only"
|
119 |
-
msgstr ""
|
120 |
-
|
121 |
-
#: admin/schedule-form.php:45
|
122 |
-
msgid "The number of previous backups to store on the server. past this limit older backups will be deleted automatically."
|
123 |
-
msgstr ""
|
124 |
-
|
125 |
-
#: admin/schedule.php:4
|
126 |
-
msgid "this shouldn't take long…"
|
127 |
-
msgstr ""
|
128 |
-
|
129 |
-
#: admin/schedule.php:4
|
130 |
-
msgid "calculating the size of your site…"
|
131 |
-
msgstr ""
|
132 |
-
|
133 |
-
#: admin/schedule.php:12
|
134 |
-
msgid "The next backup will be on %1$s at %2$s"
|
135 |
-
msgstr ""
|
136 |
-
|
137 |
-
#: admin/schedule.php:37
|
138 |
-
msgid "every 12 hours at %1$s & %2$s"
|
139 |
-
msgstr ""
|
140 |
-
|
141 |
-
#: admin/schedule.php:43
|
142 |
-
msgid "weekly on %1$s at %2$s"
|
143 |
-
msgstr ""
|
144 |
-
|
145 |
-
#: admin/schedule.php:49
|
146 |
-
msgid "fortnightly on %1$s at %2$s"
|
147 |
-
msgstr ""
|
148 |
-
|
149 |
-
#: admin/schedule.php:56
|
150 |
-
msgid "on the %1$s of each month at %2$s"
|
151 |
-
msgstr ""
|
152 |
-
|
153 |
-
#: admin/schedule.php:62
|
154 |
-
msgid "manually"
|
155 |
-
msgstr ""
|
156 |
-
|
157 |
-
#: admin/schedule.php:68
|
158 |
-
msgid "this server"
|
159 |
-
msgstr ""
|
160 |
-
|
161 |
-
#: admin/schedule.php:75
|
162 |
-
msgid "store the only the last backup on %s"
|
163 |
-
msgstr ""
|
164 |
-
|
165 |
-
#: admin/schedule.php:81
|
166 |
-
msgid "don't store any backups on %s"
|
167 |
-
msgstr ""
|
168 |
-
|
169 |
-
#: admin/schedule.php:87
|
170 |
-
msgid "store only the last %1$s backups on %2$s"
|
171 |
-
msgstr ""
|
172 |
-
|
173 |
-
#: admin/schedule.php:96
|
174 |
-
msgid "Backup my %1$s %2$s %3$s, %4$s. %5$s"
|
175 |
-
msgstr ""
|
176 |
-
|
177 |
-
#: classes/email.php:23
|
178 |
-
msgid "Receive a notification email when a backup completes, if the backup is small enough (< 10mb) then it will be attached to the email. Separate multiple email address's with a comma."
|
179 |
-
msgstr ""
|
180 |
-
|
181 |
-
#: classes/email.php:129
|
182 |
-
msgid "BackUpWordPress was unable to backup your site %1$s."
|
183 |
-
msgstr ""
|
184 |
-
|
185 |
-
#: classes/email.php:129
|
186 |
-
msgid "Here are the errors that we're encountered:"
|
187 |
-
msgstr ""
|
188 |
-
|
189 |
-
#: classes/email.php:129
|
190 |
-
msgid "If the errors above look like Martian, forward this email to %3$s and we'll take a look"
|
191 |
-
msgstr ""
|
192 |
-
|
193 |
-
#: classes/email.php:129
|
194 |
-
msgid ""
|
195 |
-
"Kind Regards,\n"
|
196 |
-
"The Apologetic BackUpWordPress Backup Emailing Robot"
|
197 |
-
msgstr ""
|
198 |
-
|
199 |
-
#: classes/email.php:142 classes/email.php:151
|
200 |
-
msgid "BackUpWordPress has completed a backup of your site %1$s."
|
201 |
-
msgstr ""
|
202 |
-
|
203 |
-
#: classes/email.php:142
|
204 |
-
msgid "The backup file should be attached to this email."
|
205 |
-
msgstr ""
|
206 |
-
|
207 |
-
#: classes/email.php:142 classes/email.php:151
|
208 |
-
msgid "You can download the backup file by clicking the link below:"
|
209 |
-
msgstr ""
|
210 |
-
|
211 |
-
#: classes/email.php:142 classes/email.php:151
|
212 |
-
msgid ""
|
213 |
-
"Kind Regards,\n"
|
214 |
-
"The Happy BackUpWordPress Backup Emailing Robot"
|
215 |
-
msgstr ""
|
216 |
-
|
217 |
-
#: classes/email.php:151
|
218 |
-
msgid "Unfortunately the backup file was too large to attach to this email."
|
219 |
-
msgstr ""
|
220 |
-
|
221 |
-
#: classes/wp-cli.php:19
|
222 |
-
msgid "Backup: Dumping database..."
|
223 |
-
msgstr ""
|
224 |
-
|
225 |
-
#: classes/wp-cli.php:23
|
226 |
-
msgid "Backup: Zipping everything up..."
|
227 |
-
msgstr ""
|
228 |
-
|
229 |
-
#: classes/wp-cli.php:38
|
230 |
-
msgid "Invalid backup path"
|
231 |
-
msgstr ""
|
232 |
-
|
233 |
-
#: classes/wp-cli.php:43
|
234 |
-
msgid "Invalid root path"
|
235 |
-
msgstr ""
|
236 |
-
|
237 |
-
#: classes/wp-cli.php:68
|
238 |
-
msgid "Backup Complete: "
|
239 |
-
msgstr ""
|
240 |
-
|
241 |
-
#: classes/wp-cli.php:71
|
242 |
-
msgid "Backup Failed"
|
243 |
-
msgstr ""
|
244 |
-
|
245 |
-
#: functions/core.php:202
|
246 |
-
msgid "By default BackUpWordPress performs a daily backup of your database and a weekly backup of your database & files. You can modify these schedules."
|
247 |
-
msgstr ""
|
248 |
-
|
249 |
-
#: functions/interface.php:111
|
250 |
-
msgid "BackUpWordPress failed to perform the backup."
|
251 |
-
msgstr ""
|
252 |
-
|
253 |
-
#: functions/interface.php:111
|
254 |
-
msgid "You have likely hit a memory limit."
|
255 |
-
msgstr ""
|
256 |
-
|
257 |
-
#: functions/interface.php:238
|
258 |
-
msgid "Legacy"
|
259 |
-
msgstr ""
|
260 |
-
|
261 |
-
#: hm-backup/hm-backup.php:906
|
262 |
-
msgid "The mysqldump file was not created"
|
263 |
-
msgstr ""
|
264 |
-
|
265 |
-
#: functions/interface.php:62
|
266 |
-
msgid "Your backups directory isn't writable, run %1$s or %2$s or set the permissions yourself."
|
267 |
-
msgstr "你的备份目录无法写入,运行 %1$s 或 %2$s 或者自行设置权限。"
|
268 |
-
|
269 |
-
#: functions/interface.php:50
|
270 |
-
msgid "The backups directory can't be created because your %1$s directory isn't writable, run %2$s or %3$s or create the folder yourself."
|
271 |
-
msgstr "因为目录 %1$s 无法写入导致不能创建备份目录, 运行 %2$s 或 %3$s 或 自行创建目录。"
|
272 |
-
|
273 |
-
#: functions/core.php:202
|
274 |
-
msgid "BackUpWordPress has setup your default schedules."
|
275 |
-
msgstr "BackUpWordPress 已经配置了你的默认安排。"
|
276 |
-
|
277 |
-
#: classes/email.php:127
|
278 |
-
msgid "Backup of %s Failed"
|
279 |
-
msgstr "%s 的备份失败"
|
280 |
-
|
281 |
-
#: classes/email.php:50
|
282 |
-
msgid "Send an email notification to %s"
|
283 |
-
msgstr "给%s发送电子邮件通知"
|
284 |
-
|
285 |
-
#: classes/email.php:72
|
286 |
-
msgid "%s isn't a valid email"
|
287 |
-
msgstr "%s 不是有效的电子邮件地址"
|
288 |
-
|
289 |
-
#: admin/schedule.php:4
|
290 |
-
msgid "Backups will be compressed and should be smaller than this."
|
291 |
-
msgstr "备份会被压缩所以应该会比这个数值要小。"
|
292 |
-
|
293 |
-
#: classes/email.php:19
|
294 |
-
msgid "Email notification"
|
295 |
-
msgstr "电子邮件通知"
|
296 |
-
|
297 |
-
#: admin/schedule.php:19
|
298 |
-
msgid "hourly on the hour"
|
299 |
-
msgstr ""
|
300 |
-
|
301 |
-
#: admin/schedule.php:25
|
302 |
-
msgid "daily at %s"
|
303 |
-
msgstr "在每天的 %s"
|
304 |
-
|
305 |
-
#: admin/schedule-form.php:41
|
306 |
-
msgid "Number of backups to store on this server"
|
307 |
-
msgstr "存储在服务器上的备份数目"
|
308 |
-
|
309 |
-
#: admin/schedule-form.php:7
|
310 |
-
msgid "Schedule Settings"
|
311 |
-
msgstr "日程安排"
|
312 |
-
|
313 |
-
#: admin/actions.php:418 admin/schedule-form-excludes.php:119
|
314 |
-
msgid "Close"
|
315 |
-
msgstr "关闭"
|
316 |
-
|
317 |
-
#: admin/menu.php:69
|
318 |
-
msgid "The information below is for version %1$s. View the %2$s file for help specific to version %3$s."
|
319 |
-
msgstr "以下信息适用于%1$s版本。查看%2$s 文件以获取%3$s版本的帮助信息。"
|
320 |
-
|
321 |
-
#: admin/constants.php:26
|
322 |
-
msgid "The root directory that is backed up. Defaults to %s."
|
323 |
-
msgstr "根目录已经备份。默认备份到 %s 。"
|
324 |
-
|
325 |
-
#: admin/constants.php:23
|
326 |
-
msgid "The capability to use when calling %1$s. Defaults to %2$s."
|
327 |
-
msgstr ""
|
328 |
-
|
329 |
-
#: admin/constants.php:14
|
330 |
-
msgid "The path to your %1$s executable. Will be used to zip up your %2$s and %3$s if available."
|
331 |
-
msgstr ""
|
332 |
-
|
333 |
-
#: plugin.php:71
|
334 |
-
msgid "BackUpWordPress requires WordPress version %s or greater."
|
335 |
-
msgstr "BackUpWordPress 需要Wordpress的版本至少为%s。"
|
336 |
-
|
337 |
-
#: plugin.php:141 admin/actions.php:396
|
338 |
-
msgid "Cancel"
|
339 |
-
msgstr "取消"
|
340 |
-
|
341 |
-
#: admin/constants.php:11
|
342 |
-
msgid "The path to your %1$s executable. Will be used for the %2$s part of the back up if available."
|
343 |
-
msgstr ""
|
344 |
-
|
345 |
-
#: admin/constants.php:8 admin/constants.php:11 admin/constants.php:14
|
346 |
-
#: admin/constants.php:17 admin/constants.php:20 admin/constants.php:23
|
347 |
-
#: admin/constants.php:26 admin/constants.php:29
|
348 |
-
msgid "e.g."
|
349 |
-
msgstr "例如:"
|
350 |
-
|
351 |
-
#: admin/constants.php:3
|
352 |
-
msgid "You can %1$s any of the following %2$s in your %3$s to control advanced settings. %4$s. Defined %5$s will be highlighted."
|
353 |
-
msgstr ""
|
354 |
-
|
355 |
-
#: admin/actions.php:192 admin/actions.php:195
|
356 |
-
msgid "%1$s is returning a %2$s response which could mean cron jobs aren't getting fired properly. BackUpWordPress relies on wp-cron to run scheduled back ups. See the %3$s for more details."
|
357 |
-
msgstr ""
|
358 |
-
|
359 |
-
#: functions/interface.php:72
|
360 |
-
msgid "http://php.net/manual/en/features.safe-mode.php"
|
361 |
-
msgstr "http://php.net/manual/en/features.safe-mode.php"
|
362 |
-
|
363 |
-
#: functions/interface.php:72
|
364 |
-
msgid "Safe Mode"
|
365 |
-
msgstr "安全模式"
|
366 |
-
|
367 |
-
#: functions/interface.php:82
|
368 |
-
msgid "Your custom backups directory %1$s doesn't exist and can't be created, your backups will be saved to %2$s instead."
|
369 |
-
msgstr ""
|
370 |
-
|
371 |
-
#: functions/interface.php:92
|
372 |
-
msgid "Your custom backups directory %1$s isn't writable, new backups will be saved to %2$s instead."
|
373 |
-
msgstr "您设定的备份目录 %1$s 无法写入,新的备份文件将会被存储到 %2$s 。"
|
374 |
-
|
375 |
-
#: functions/interface.php:252
|
376 |
-
msgid "cancel"
|
377 |
-
msgstr "取消"
|
378 |
-
|
379 |
-
#: functions/interface.php:256
|
380 |
-
msgid "Settings"
|
381 |
-
msgstr "设置"
|
382 |
-
|
383 |
-
#: functions/interface.php:259
|
384 |
-
msgid "Excludes"
|
385 |
-
msgstr "排除"
|
386 |
-
|
387 |
-
#: functions/interface.php:27
|
388 |
-
msgid "Download"
|
389 |
-
msgstr "下载"
|
390 |
-
|
391 |
-
#: functions/interface.php:50 functions/interface.php:62
|
392 |
-
msgid "BackUpWordPress is almost ready."
|
393 |
-
msgstr "BackUpWordPress 已经准备好。"
|
394 |
-
|
395 |
-
#: functions/interface.php:102
|
396 |
-
msgid "BackUpWordPress detected issues with your last backup."
|
397 |
-
msgstr "BackUpWordPress 检测到上一个备份存在错误。"
|
398 |
-
|
399 |
-
#: functions/interface.php:227
|
400 |
-
msgid "Database and Files"
|
401 |
-
msgstr "数据库和文件"
|
402 |
-
|
403 |
-
#: functions/interface.php:233
|
404 |
-
msgid "Database"
|
405 |
-
msgstr "数据库"
|
406 |
-
|
407 |
-
#: hm-backup/hm-backup.php:931
|
408 |
-
msgid "The backup file was not created"
|
409 |
-
msgstr "备份文件没有被创建"
|
410 |
-
|
411 |
-
#: hm-backup/hm-backup.php:951
|
412 |
-
msgid "The following files are unreadable and couldn't be backed up: "
|
413 |
-
msgstr "下列文件不可读,故无法备份:"
|
414 |
-
|
415 |
-
#: admin/actions.php:192 admin/actions.php:195 functions/interface.php:72
|
416 |
-
#: functions/interface.php:82 functions/interface.php:92
|
417 |
-
msgid "BackUpWordPress has detected a problem."
|
418 |
-
msgstr "BackUpWordPress 检测到一个问题。"
|
419 |
-
|
420 |
-
#: admin/actions.php:265
|
421 |
-
msgid "Backup type cannot be empty"
|
422 |
-
msgstr "备份类型不能为空"
|
423 |
-
|
424 |
-
#: admin/actions.php:268
|
425 |
-
msgid "Invalid backup type"
|
426 |
-
msgstr "无效的备份类型。"
|
427 |
-
|
428 |
-
#: admin/actions.php:278
|
429 |
-
msgid "Schedule cannot be empty"
|
430 |
-
msgstr "计划不能为空"
|
431 |
-
|
432 |
-
#: admin/actions.php:281
|
433 |
-
msgid "Invalid schedule"
|
434 |
-
msgstr "无效的计划"
|
435 |
-
|
436 |
-
#: admin/actions.php:294
|
437 |
-
msgid "Max backups must be a number"
|
438 |
-
msgstr "最大备份数必须是数字"
|
439 |
-
|
440 |
-
#: admin/actions.php:392
|
441 |
-
msgid "%s didn't match any files."
|
442 |
-
msgstr ""
|
443 |
-
|
444 |
-
#: admin/backups.php:13
|
445 |
-
msgid "add schedule"
|
446 |
-
msgstr "添加计划"
|
447 |
-
|
448 |
-
#: admin/backups.php:37
|
449 |
-
msgid "Size"
|
450 |
-
msgstr "大小"
|
451 |
-
|
452 |
-
#: admin/backups.php:38
|
453 |
-
msgid "Type"
|
454 |
-
msgstr "类型"
|
455 |
-
|
456 |
-
#: admin/backups.php:39
|
457 |
-
msgid "Actions"
|
458 |
-
msgstr "行动"
|
459 |
-
|
460 |
-
#: admin/backups.php:62
|
461 |
-
msgid "This is where your backups will appear once you have one."
|
462 |
-
msgstr "这里是您的备份文件会出现的地方。"
|
463 |
-
|
464 |
-
#: admin/constants.php:3
|
465 |
-
msgid "The Codex can help"
|
466 |
-
msgstr ""
|
467 |
-
|
468 |
-
#: admin/constants.php:8
|
469 |
-
msgid "The path to folder you would like to store your backup files in, defaults to %s."
|
470 |
-
msgstr "您想要存储备份文件的目录,默认是%s。"
|
471 |
-
|
472 |
-
#: admin/constants.php:11 admin/constants.php:14
|
473 |
-
msgid "database"
|
474 |
-
msgstr "数据库"
|
475 |
-
|
476 |
-
#: admin/constants.php:14
|
477 |
-
msgid "files"
|
478 |
-
msgstr "文件"
|
479 |
-
|
480 |
-
#: admin/constants.php:17
|
481 |
-
msgid "Attempt to email a copy of your backups. Value should be email address to send backups to. Defaults to %s."
|
482 |
-
msgstr ""
|
483 |
-
|
484 |
-
#: admin/constants.php:20
|
485 |
-
msgid "Comma separated list of files or directories to exclude, the backups directory is automatically excluded."
|
486 |
-
msgstr ""
|
487 |
-
|
488 |
-
#: admin/menu.php:10 admin/page.php:5
|
489 |
-
msgid "Manage Backups"
|
490 |
-
msgstr "管理备份"
|
491 |
-
|
492 |
-
#: admin/menu.php:10 admin/menu.php:34
|
493 |
-
msgid "Backups"
|
494 |
-
msgstr "备份"
|
495 |
-
|
496 |
-
#: admin/menu.php:69
|
497 |
-
msgid "You are not using the latest stable version of BackUpWordPress"
|
498 |
-
msgstr "您使用的不是BackUpWordPress的最新稳定版本"
|
499 |
-
|
500 |
-
#: admin/menu.php:75
|
501 |
-
msgid "FAQ"
|
502 |
-
msgstr "常见问题"
|
503 |
-
|
504 |
-
#: admin/constants.php:3 admin/menu.php:76
|
505 |
-
msgid "Constants"
|
506 |
-
msgstr "常量"
|
507 |
-
|
508 |
-
#: admin/menu.php:79
|
509 |
-
msgid "For more information:"
|
510 |
-
msgstr "获取更多信息:"
|
511 |
-
|
512 |
-
#: admin/menu.php:81
|
513 |
-
msgid "Support Forums"
|
514 |
-
msgstr "支持论坛"
|
515 |
-
|
516 |
-
#: admin/menu.php:82
|
517 |
-
msgid "Help with translation"
|
518 |
-
msgstr "帮助进行翻译"
|
519 |
-
|
520 |
-
#: admin/page.php:13
|
521 |
-
msgid "You need to fix the issues detailed above before BackUpWordPress can start."
|
522 |
-
msgstr ""
|
523 |
-
|
524 |
-
#: admin/schedule-form-excludes.php:19
|
525 |
-
msgid "Preview"
|
526 |
-
msgstr "预览"
|
527 |
-
|
528 |
-
#: admin/schedule-form-excludes.php:29
|
529 |
-
msgid "Exclude Rules"
|
530 |
-
msgstr "排除规则"
|
531 |
-
|
532 |
-
#: admin/schedule-form-excludes.php:52
|
533 |
-
msgid "Remove"
|
534 |
-
msgstr "移除"
|
535 |
-
|
536 |
-
#: admin/schedule-form-excludes.php:71
|
537 |
-
msgid "Excluded"
|
538 |
-
msgstr "已被排除的"
|
539 |
-
|
540 |
-
#: admin/schedule-form-excludes.php:75
|
541 |
-
msgid "Included"
|
542 |
-
msgstr "已包括"
|
543 |
-
|
544 |
-
#: admin/schedule-form-excludes.php:79
|
545 |
-
msgid "Unreadable"
|
546 |
-
msgstr "无法读取的"
|
547 |
-
|
548 |
-
#: admin/schedule-form-excludes.php:107
|
549 |
-
msgid "Unreadable files can't be backed up"
|
550 |
-
msgstr "无法读取的文件不会被备份"
|
551 |
-
|
552 |
-
#: admin/schedule-form-excludes.php:113
|
553 |
-
msgid "Your site is %s. Backups will be compressed and so will be smaller."
|
554 |
-
msgstr "您的站点大小为 %s. 压缩文件的大小会比这个值要小。"
|
555 |
-
|
556 |
-
#: admin/schedule-form.php:11
|
557 |
-
msgid "Backup"
|
558 |
-
msgstr "备份"
|
559 |
-
|
560 |
-
#: admin/schedule-form.php:14
|
561 |
-
msgid "Both Database & files"
|
562 |
-
msgstr ""
|
563 |
-
|
564 |
-
#: admin/schedule-form.php:15
|
565 |
-
msgid "Files only"
|
566 |
-
msgstr "仅文件"
|
567 |
-
|
568 |
-
#: admin/schedule-form.php:16
|
569 |
-
msgid "Database only"
|
570 |
-
msgstr "仅数据库"
|
571 |
-
|
572 |
-
#: functions/interface.php:230
|
573 |
-
msgid "Files"
|
574 |
-
msgstr "文件"
|
575 |
-
|
576 |
-
#: admin/schedule-form-excludes.php:7
|
577 |
-
msgid "Manage Excludes"
|
578 |
-
msgstr ""
|
579 |
-
|
580 |
-
#: admin/schedule-form.php:23
|
581 |
-
msgid "Schedule"
|
582 |
-
msgstr "计划"
|
583 |
-
|
584 |
-
#: plugin.php:140 admin/schedule-form.php:54
|
585 |
-
msgid "Update"
|
586 |
-
msgstr "更新"
|
587 |
-
|
588 |
-
#: admin/schedule.php:19
|
589 |
-
msgid "hourly at %s minutes past the hour"
|
590 |
-
msgstr ""
|
591 |
-
|
592 |
-
#: functions/interface.php:262
|
593 |
-
msgid "Run now"
|
594 |
-
msgstr "现在备份"
|
595 |
-
|
596 |
-
#: functions/interface.php:28 functions/interface.php:264
|
597 |
-
msgid "Delete"
|
598 |
-
msgstr "删除"
|
599 |
-
|
600 |
-
#: plugin.php:60
|
601 |
-
msgid "BackUpWordPress requires PHP version 5.2.4 or greater."
|
602 |
-
msgstr "BackUpWordPress 需要 PHP 的版本至少为5.2.4。"
|
603 |
-
|
604 |
-
#: classes/email.php:137
|
605 |
-
msgid "Backup of %s"
|
606 |
-
msgstr ""
|
607 |
-
|
608 |
-
#: functions/core.php:293
|
609 |
-
msgid "This %s file ensures that other people cannot download your backup files."
|
610 |
-
msgstr "这个 %s 文件确保其他人不能下载您的备份文件"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/plugin.php
DELETED
@@ -1,162 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/* Copyright 2011 Human Made Limited (email : support@hmn.md)
|
4 |
-
|
5 |
-
This program is free software; you can redistribute it and/or modify
|
6 |
-
it under the terms of the GNU General Public License as published by
|
7 |
-
the Free Software Foundation; either version 2 of the License, or
|
8 |
-
(at your option) any later version.
|
9 |
-
|
10 |
-
This program is distributed in the hope that it will be useful,
|
11 |
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
-
GNU General Public License for more details.
|
14 |
-
|
15 |
-
You should have received a copy of the GNU General Public License
|
16 |
-
along with this program; if not, write to the Free Software
|
17 |
-
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
18 |
-
*/
|
19 |
-
|
20 |
-
if ( ! defined( 'HMBKP_PLUGIN_SLUG' ) )
|
21 |
-
define( 'HMBKP_PLUGIN_SLUG', 'backupwordpress' );
|
22 |
-
|
23 |
-
if ( ! defined( 'HMBKP_PLUGIN_PATH' ) )
|
24 |
-
define( 'HMBKP_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
|
25 |
-
|
26 |
-
if ( ! defined( 'HMBKP_PLUGIN_URL' ) )
|
27 |
-
define( 'HMBKP_PLUGIN_URL', plugins_url( HMBKP_PLUGIN_SLUG ) );
|
28 |
-
|
29 |
-
if ( ! defined( 'HMBKP_ADMIN_URL' ) )
|
30 |
-
define( 'HMBKP_ADMIN_URL', add_query_arg( 'page', HMBKP_PLUGIN_SLUG, admin_url( 'tools.php' ) ) );
|
31 |
-
|
32 |
-
define( 'HMBKP_SECURE_KEY', md5( ABSPATH . time() ) );
|
33 |
-
|
34 |
-
if ( ! defined( 'HMBKP_REQUIRED_WP_VERSION' ) )
|
35 |
-
define( 'HMBKP_REQUIRED_WP_VERSION', '3.3.3' );
|
36 |
-
|
37 |
-
// Max memory limit isn't defined in old versions of WordPress
|
38 |
-
if ( ! defined( 'WP_MAX_MEMORY_LIMIT' ) )
|
39 |
-
define( 'WP_MAX_MEMORY_LIMIT', '256M' );
|
40 |
-
|
41 |
-
if ( ! defined( 'HMBKP_SCHEDULE_TIME' ) )
|
42 |
-
define( 'HMBKP_SCHEDULE_TIME', '11pm' );
|
43 |
-
|
44 |
-
// Don't activate on anything less than PHP 5.2.4
|
45 |
-
if ( version_compare( phpversion(), '5.2.4', '<' ) ) {
|
46 |
-
|
47 |
-
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
48 |
-
deactivate_plugins( __FILE__ );
|
49 |
-
|
50 |
-
if ( isset( $_GET['action'] ) && ( $_GET['action'] == 'activate' || $_GET['action'] == 'error_scrape' ) )
|
51 |
-
die( __( 'BackUpWordPress requires PHP version 5.2.4 or greater.', 'hmbkp' ) );
|
52 |
-
|
53 |
-
}
|
54 |
-
|
55 |
-
// Don't activate on old versions of WordPress
|
56 |
-
if ( version_compare( get_bloginfo( 'version' ), HMBKP_REQUIRED_WP_VERSION, '<' ) ) {
|
57 |
-
|
58 |
-
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
59 |
-
deactivate_plugins( __FILE__ );
|
60 |
-
|
61 |
-
if ( isset( $_GET['action'] ) && ( $_GET['action'] == 'activate' || $_GET['action'] == 'error_scrape' ) )
|
62 |
-
die( sprintf( __( 'BackUpWordPress requires WordPress version %s or greater.', 'hmbkp' ), HMBKP_REQUIRED_WP_VERSION ) );
|
63 |
-
|
64 |
-
}
|
65 |
-
|
66 |
-
// Load the admin menu
|
67 |
-
require_once( HMBKP_PLUGIN_PATH . '/admin/menu.php' );
|
68 |
-
require_once( HMBKP_PLUGIN_PATH . '/admin/actions.php' );
|
69 |
-
|
70 |
-
// Load hm-backup
|
71 |
-
if ( ! class_exists( 'HM_Backup' ) )
|
72 |
-
require_once( HMBKP_PLUGIN_PATH . '/hm-backup/hm-backup.php' );
|
73 |
-
|
74 |
-
// Load the schedules
|
75 |
-
require_once( HMBKP_PLUGIN_PATH . '/classes/schedule.php' );
|
76 |
-
require_once( HMBKP_PLUGIN_PATH . '/classes/schedules.php' );
|
77 |
-
|
78 |
-
// Load the core functions
|
79 |
-
require_once( HMBKP_PLUGIN_PATH . '/functions/core.php' );
|
80 |
-
require_once( HMBKP_PLUGIN_PATH . '/functions/interface.php' );
|
81 |
-
|
82 |
-
// Load Services
|
83 |
-
require_once( HMBKP_PLUGIN_PATH . '/classes/services.php' );
|
84 |
-
|
85 |
-
// Load the email service
|
86 |
-
require_once( HMBKP_PLUGIN_PATH . '/classes/email.php' );
|
87 |
-
|
88 |
-
// Load the wp cli command
|
89 |
-
if ( defined( 'WP_CLI' ) && WP_CLI )
|
90 |
-
include( HMBKP_PLUGIN_PATH . '/classes/wp-cli.php' );
|
91 |
-
|
92 |
-
// Handle any advanced option changes
|
93 |
-
hmbkp_constant_changes();
|
94 |
-
|
95 |
-
// Set the tmp directory to the backup path
|
96 |
-
if ( ! defined( 'PCLZIP_TEMPORARY_DIR' ) )
|
97 |
-
define( 'PCLZIP_TEMPORARY_DIR', trailingslashit( hmbkp_path() ) );
|
98 |
-
|
99 |
-
// Hook in the activation and deactivation actions
|
100 |
-
add_action( 'activate_' . HMBKP_PLUGIN_SLUG . '/plugin.php', 'hmbkp_activate' );
|
101 |
-
add_action( 'deactivate_' . HMBKP_PLUGIN_SLUG . '/plugin.php', 'hmbkp_deactivate' );
|
102 |
-
|
103 |
-
if ( ! function_exists( 'hmbkp_init' ) ) :
|
104 |
-
|
105 |
-
/**
|
106 |
-
* Plugin setup
|
107 |
-
*
|
108 |
-
* @return null
|
109 |
-
*/
|
110 |
-
function hmbkp_init() {
|
111 |
-
|
112 |
-
// define the plugin version
|
113 |
-
define( 'HMBKP_VERSION', '2.1.3' );
|
114 |
-
|
115 |
-
// Load translations
|
116 |
-
load_plugin_textdomain( 'hmbkp', false, HMBKP_PLUGIN_SLUG . '/languages/' );
|
117 |
-
|
118 |
-
// Fire the update action
|
119 |
-
if ( HMBKP_VERSION != get_option( 'hmbkp_plugin_version' ) )
|
120 |
-
hmbkp_update();
|
121 |
-
|
122 |
-
// Load admin css and js
|
123 |
-
if ( isset( $_GET['page'] ) && $_GET['page'] == HMBKP_PLUGIN_SLUG ) {
|
124 |
-
|
125 |
-
wp_enqueue_script( 'hmbkp-fancybox', HMBKP_PLUGIN_URL . '/assets/fancyBox/source/jquery.fancybox.js', array( 'jquery' ), sanitize_title( HMBKP_VERSION ) );
|
126 |
-
wp_enqueue_script( 'hmbkp', HMBKP_PLUGIN_URL . '/assets/hmbkp.js', array( 'jquery-ui-tabs', 'jquery-ui-widget', 'hmbkp-fancybox' ), sanitize_title( HMBKP_VERSION ) );
|
127 |
-
|
128 |
-
wp_localize_script( 'hmbkp', 'objectL10n', array(
|
129 |
-
'update' => __( 'Update', 'hmbkp' ),
|
130 |
-
'cancel' => __( 'Cancel', 'hmbkp' ),
|
131 |
-
'delete_schedule' => __( 'Are you sure you want to delete this schedule? All of it\'s backups will also be deleted.' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'hmbkp' ) . "\n",
|
132 |
-
'delete_backup' => __( 'Are you sure you want to delete this backup?', 'hmbkp' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'hmbkp' ) . "\n",
|
133 |
-
'remove_exclude_rule' => __( 'Are you sure you want to remove this exclude rule?', 'hmbkp' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'hmbkp' ) . "\n",
|
134 |
-
'remove_old_backups' => __( 'Reducing the number of backups that are stored on this server will cause some of your existing backups to be deleted, are you sure that\'s what you want?', 'hmbkp' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'hmbkp' ) . "\n"
|
135 |
-
) );
|
136 |
-
|
137 |
-
wp_enqueue_style( 'hmbkp_fancybox', HMBKP_PLUGIN_URL . '/assets/fancyBox/source/jquery.fancybox.css', false, HMBKP_VERSION );
|
138 |
-
wp_enqueue_style( 'hmbkp', HMBKP_PLUGIN_URL . '/assets/hmbkp.css', false, HMBKP_VERSION );
|
139 |
-
|
140 |
-
}
|
141 |
-
|
142 |
-
}
|
143 |
-
add_action( 'admin_init', 'hmbkp_init' );
|
144 |
-
|
145 |
-
/**
|
146 |
-
* Function to run when the schedule cron fires
|
147 |
-
* @param array $args
|
148 |
-
*/
|
149 |
-
function hmbkp_schedule_hook_run( $schedule_id ) {
|
150 |
-
|
151 |
-
$schedules = new HMBKP_Schedules();
|
152 |
-
$schedule = $schedules->get_schedule( $schedule_id );
|
153 |
-
|
154 |
-
if ( ! $schedule )
|
155 |
-
return;
|
156 |
-
|
157 |
-
$schedule->run();
|
158 |
-
|
159 |
-
}
|
160 |
-
add_action( 'hmbkp_schedule_hook', 'hmbkp_schedule_hook_run' );
|
161 |
-
|
162 |
-
endif;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
backupwordpress/readme.txt
DELETED
@@ -1,456 +0,0 @@
|
|
1 |
-
=== BackUpWordPress ===
|
2 |
-
Contributors: humanmade, joehoyle, mattheu, tcrsavage, willmot, cuvelier
|
3 |
-
Tags: back up, backup, backups, database, zip, db, files, archive, wp-cli, humanmade
|
4 |
-
Requires at least: 3.3.3
|
5 |
-
Tested up to: 3.5
|
6 |
-
Stable tag: 2.1.3
|
7 |
-
|
8 |
-
Simple automated back ups of your WordPress powered website.
|
9 |
-
|
10 |
-
== Description ==
|
11 |
-
|
12 |
-
BackUpWordPress will back up your entire site including your database and all your files on a schedule that suits you.
|
13 |
-
|
14 |
-
= Features =
|
15 |
-
|
16 |
-
* Manage multiple schedules.
|
17 |
-
* Super simple to use, no setup required.
|
18 |
-
* Uses `zip` and `mysqldump` for faster back ups if they are available.
|
19 |
-
* Works in low memory, "shared host" environments.
|
20 |
-
* Option to have each backup file emailed to you.
|
21 |
-
* Works on Linux & Windows Server.
|
22 |
-
* Exclude files and folders from your back ups.
|
23 |
-
* Good support should you need help.
|
24 |
-
* Translations for Spanish, German, Chinese, Romanian, Russian, Serbian, Lithuanian, Italian, Czech, Dutch, French, Basque.
|
25 |
-
|
26 |
-
= Help develop this plugin =
|
27 |
-
|
28 |
-
The BackUpWordPress plugin is hosted GitHub, if you want to help out with development or testing then head over to https://github.com/humanmade/backupwordpress/.
|
29 |
-
|
30 |
-
= Translations =
|
31 |
-
|
32 |
-
We'd also love help translating the plugin into more languages, if you can help then please contact support@hmn.md or visit http://translate.hmn.md/.
|
33 |
-
|
34 |
-
== Installation ==
|
35 |
-
|
36 |
-
1. Install BackUpWordPress either via the WordPress.org plugin directory, or by uploading the files to your server.
|
37 |
-
2. Activate the plugin.
|
38 |
-
3. Sit back and relax safe in the knowledge that your whole site will be backed up every day.
|
39 |
-
|
40 |
-
The plugin will try to use the `mysqldump` and `zip` commands via shell if they are available, using these will greatly improve the time it takes to back up your site.
|
41 |
-
|
42 |
-
== Frequently Asked Questions ==
|
43 |
-
|
44 |
-
**Where does BackUpWordPress store the backup files?**
|
45 |
-
|
46 |
-
Backups are stored on your server in `/wp-content/backups`, you can change the directory.
|
47 |
-
|
48 |
-
**Important:** By default BackUpWordPress backs up everything in your site root as well as your database, this includes any non WordPress folders that happen to be in your site root. This does means that your backup directory can get quite large.
|
49 |
-
|
50 |
-
**How do I restore my site from a backup?**
|
51 |
-
|
52 |
-
You need to download the latest backup file either by clicking download on the backups page or via `FTP`. `Unzip` the files and upload all the files to your server overwriting your site. You can then import the database using your hosts database management tool (likely `phpMyAdmin`).
|
53 |
-
|
54 |
-
See this post for more details http://hmn.md/backupwordpress-how-to-restore-from-backup-files/.
|
55 |
-
|
56 |
-
**Does BackUpWordPress back up the backups directory?**
|
57 |
-
|
58 |
-
No.
|
59 |
-
|
60 |
-
**I'm not receiving my backups by email**
|
61 |
-
|
62 |
-
Most servers have a filesize limit on email attachments, it's generally about 10mb. If your backup file is over that limit it won't be sent attached to the email, instead you should receive an email with a link to download the backup, if you aren't even receiving that then you likely have a mail issue on your server that you'll need to contact your host about.
|
63 |
-
|
64 |
-
**How many backups are stored by default?**
|
65 |
-
|
66 |
-
BackUpWordPress stores the last 10 backups by default.
|
67 |
-
|
68 |
-
**How long should a backup take?**
|
69 |
-
|
70 |
-
Unless your site is very large (many gigabytes) it should only take a few minutes to perform a back up, if your back up has been running for longer than an hour it's safe to assume that something has gone wrong, try de-activating and re-activating the plugin, if it keeps happening, contact support.
|
71 |
-
|
72 |
-
**What do I do if I get the wp-cron error message**
|
73 |
-
|
74 |
-
The issue is that your `wp-cron.php` is not returning a `200` response when hit with a http request originating from your own server, it could be several things, most of the time it's an issue with the server / site and not with BackUpWordPress.
|
75 |
-
|
76 |
-
Some things you can test are.
|
77 |
-
|
78 |
-
* Are scheduled posts working? (They use wp-cron too).
|
79 |
-
* Are you hosted on Heart Internet? (wp-cron is known not to work with them).
|
80 |
-
* If you click manual backup does it work?
|
81 |
-
* Try adding `define( 'ALTERNATE_WP_CRON', true ); to your `wp-config.php`, do automatic backups work?
|
82 |
-
* Is your site private (I.E. is it behind some kind of authentication, maintenance plugin, .htaccess) if so wp-cron won't work until you remove it, if you are and you temporarily remove the authentication, do backups start working?
|
83 |
-
|
84 |
-
If you have tried all these then feel free to contact support.
|
85 |
-
|
86 |
-
**How to get BackUpWordPress working in Heart Internet**
|
87 |
-
|
88 |
-
The script to be entered into the Heart Internet cPanel is: `/usr/bin/php5 /home/sites/yourdomain.com/public_html/wp-cron.php` (note the space between php5 and the location of the file). The file `wp-cron.php` `chmod` must be set to `711`.
|
89 |
-
|
90 |
-
**Further Support & Feedback**
|
91 |
-
|
92 |
-
General support questions should be posted in the <a href="http://wordpress.org/tags/backupwordpress?forum_id=10">WordPress support forums, tagged with backupwordpress.</a>
|
93 |
-
|
94 |
-
For development issues, feature requests or anybody wishing to help out with development checkout <a href="https://github.com/humanmade/backupwordpress/">BackUpWordPress on GitHub.</a>
|
95 |
-
|
96 |
-
You can also tweet <a href="http://twitter.com/humanmadeltd">@humanmadeltd</a> or email support@hmn.md for further help/support.
|
97 |
-
|
98 |
-
== Screenshots ==
|
99 |
-
|
100 |
-
1. Manage multiple schedules.
|
101 |
-
2. Choose your schedule, backup type, number of backups to keep and whether to recieve a notification email.
|
102 |
-
3. Easily manage exclude rules and see exactly which files are included and excluded from your backup.
|
103 |
-
|
104 |
-
== Changelog ==
|
105 |
-
|
106 |
-
#### 2.1.4
|
107 |
-
|
108 |
-
* Don't repeatedly try to create the backups directory in the `uploads` if `uploads` isn't writable.
|
109 |
-
* Show the correct path in the warning message when the backups path can't be created.
|
110 |
-
|
111 |
-
#### 2.1.3
|
112 |
-
|
113 |
-
* Fix a regression in `2.1.2` that broke previewing and adding new exclude rules.
|
114 |
-
|
115 |
-
#### 2.1.2
|
116 |
-
|
117 |
-
* Fix an issue that could stop the settings panel from closing on save on servers which return `'0'` for ajax requests.
|
118 |
-
* Fix an issue that could cause the backup root to be set to `/` on sites with `site_url` and `home` set to different domains.
|
119 |
-
* The mysqldump fallback function will now be used if `mysqldump` produces an empty file.
|
120 |
-
* Fix a possible PHP `NOTICE` on Apache servers.
|
121 |
-
|
122 |
-
#### 2.1.1
|
123 |
-
|
124 |
-
* Fix a possible fatal error when a backup schedule is instantiated outside of wp-admin.
|
125 |
-
* Don't use functions from misc.php as loading it too early can cause fatal errors.
|
126 |
-
* Don't hardcode an English string in the JS, use the translated string instead.
|
127 |
-
* Properly skip dot files, should fix fatal errors on systems with `open_basedir` restrictions.
|
128 |
-
* Don't call `apache_mod_loaded` as it caused wierd DNS issue on some sites, use `global $is_apache` instead.
|
129 |
-
* Fix a possible double full stop at the end of the schedule sentence.
|
130 |
-
* Minor code cleanup.
|
131 |
-
|
132 |
-
#### 2.1
|
133 |
-
|
134 |
-
* Stop blocking people with `safe_mode = On` from using the plugin, instead just show a warning.
|
135 |
-
* Fix possible fatal error when setting schedule to monthly.
|
136 |
-
* Fix issues with download backup not working on some shared hosts.
|
137 |
-
* Fix issuses with download backup not working on sites with strange characters in the site name.
|
138 |
-
* Fix a bug could cause the update actions to fire on initial activation.
|
139 |
-
* Improved reliability when changing backup paths, now with Unit Tests.
|
140 |
-
* Generate the lists of excluded, included and unreadable files in a more memory efficient way, no more fatal errors on sites with lots of files.
|
141 |
-
* Bring back .htaccess protection of the backups directory on `Apache` servers with `mod_rewrite` enabled.
|
142 |
-
* Prepend a random string to the backups directory to make it harder to brute force guess.
|
143 |
-
* Fall back to storing the backups directoy in `uploads` if `WP_CONTENT_DIR` isn't writable.
|
144 |
-
* Attempt to catch `E_ERROR` level errors (Fatal errors) that happen during the backup process and offer to email them to support.
|
145 |
-
* Provide more granular status messages during the backup process.
|
146 |
-
* Show a spinner next to the schedule link when a backup is running on a schedule which you are not currently viewing.
|
147 |
-
* Improve the feedback when removing an exclude rule.
|
148 |
-
* Fix an issue that could cause an exclude rule to be marked as default when it in-fact isn't, thus not letting it be deleted.
|
149 |
-
* Add a line encouraging people to rate the plugin if they like it.
|
150 |
-
* Change the support line to point to the FAQ before recommending they contact support.
|
151 |
-
* Fix the link to the "How to Restore" post in the FAQ.
|
152 |
-
* Some string changes for translators, 18 changed strings.
|
153 |
-
|
154 |
-
|
155 |
-
#### 2.0.6
|
156 |
-
|
157 |
-
* Fix possible warning on plugin activation if the sites cron option is empty.
|
158 |
-
* Don't show the version warning in the help for Constants as that comes from the current version.
|
159 |
-
|
160 |
-
#### 2.0.5
|
161 |
-
|
162 |
-
* Re-setup the cron schedules if they get deleted somehow.
|
163 |
-
* Delete all BackUpWordPress cron entries when the plugin is deactivated.
|
164 |
-
* Introduce the `HMBKP_SCHEDULE_TIME` constant to allow control over the time schedules run.
|
165 |
-
* Make sure the schedule times and times of previous backups are shown in local time.
|
166 |
-
* Fix a bug that could cause the legacy backup schedule to be created on every update, not just when going from 1.x to 2.x.
|
167 |
-
* Improve the usefulness of the `wp-cron.php` response code check.
|
168 |
-
* Use the built in `site_format` function for human readable filesizes instead of defining our own function.
|
169 |
-
|
170 |
-
|
171 |
-
#### 2.0.4
|
172 |
-
|
173 |
-
* Revert the change to the way the plugin url and path were calculated as it caused regressions on some systems.
|
174 |
-
|
175 |
-
#### 2.0.3
|
176 |
-
|
177 |
-
* Fix issues with scheduled backups not firing in some cases.
|
178 |
-
* Better compatibility when the WP Remote plugin is active alongside BackUpWordPress.
|
179 |
-
* Catch and display more WP Cron errors.
|
180 |
-
* BackUpWordPress now fails to activate on WordPress 3.3.2 and below.
|
181 |
-
* Other minor fixes and improvements.
|
182 |
-
|
183 |
-
#### 2.0.2
|
184 |
-
|
185 |
-
* Only send backup failed emails if the backup actually failed.
|
186 |
-
* Turn off the generic "memory limit probably hit" message as it was showing for too many people.
|
187 |
-
* Fix a possible notice when the backup running filename is blank.
|
188 |
-
* Include the `wp_error` response in the cron check.
|
189 |
-
|
190 |
-
#### 2.0.1
|
191 |
-
|
192 |
-
* Fix fatal error on PHP 5.2.
|
193 |
-
|
194 |
-
#### 2.0
|
195 |
-
|
196 |
-
* Ability to have multiple schedules with separate settings & excludes per schedule.
|
197 |
-
* Ability to manage exclude rules and see exactly which files are included and excluded.
|
198 |
-
* Fix an issue with sites with an `open_basedir` restriction.
|
199 |
-
* Backups should now be much more reliable in low memory environments.
|
200 |
-
* Lots of other minor improvements and bug fixes.
|
201 |
-
|
202 |
-
#### 1.6.9
|
203 |
-
|
204 |
-
* Updated and improved translations across the board - props @elektronikLexikon.
|
205 |
-
* German translation - props @elektronikLexikon.
|
206 |
-
* New Basque translation - props Unai ZC.
|
207 |
-
* New Dutch translation - Anno De Vries.
|
208 |
-
* New Italian translation.
|
209 |
-
* Better support for when WordPress is installed in a sub directory - props @mattheu
|
210 |
-
|
211 |
-
|
212 |
-
#### 1.6.8
|
213 |
-
|
214 |
-
* French translation props Christophe - http://catarina.fr.
|
215 |
-
* Updated Spanish Translation props DD666 - https://github.com/radinamatic.
|
216 |
-
* Serbian translation props StefanRistic - https://github.com/StefanRistic.
|
217 |
-
* Lithuanian translation props Vincent G - http://www.Host1Free.com.
|
218 |
-
* Romanian translation.
|
219 |
-
* Fix conflict with WP Remote.
|
220 |
-
* Fix a minor issue where invalid email address's were still stored.
|
221 |
-
* The root path that is backed up can now be controlled by defining `HMBKP_ROOT`.
|
222 |
-
|
223 |
-
#### 1.6.7
|
224 |
-
|
225 |
-
* Fix issue with backups being listed in reverse chronological order.
|
226 |
-
* Fix issue with newest backup being deleted when you hit your max backups limit.
|
227 |
-
* It's now possible to have backups sent to multiple email address's by entering them as a comma separated list.
|
228 |
-
* Fix a bug which broke the ability to override the `mysqldump` path with `HMBKP_MYSQLDUMP_PATH`.
|
229 |
-
* Use `echo` rather than `pwd` when testing `shell_exec` as it's supported cross platform.
|
230 |
-
* Updated Spanish translation.
|
231 |
-
* Fix a minor spelling mistake.
|
232 |
-
* Speed up the manage backups page by caching the FAQ data for 24 hours.
|
233 |
-
|
234 |
-
#### 1.6.6
|
235 |
-
|
236 |
-
* Fix backup path issue with case sensitive filesystems.
|
237 |
-
|
238 |
-
#### 1.6.5
|
239 |
-
|
240 |
-
* Fix an issue with emailing backups that could cause the backup file to not be attached.
|
241 |
-
* Fix an issue that could cause the backup to be marked as running for ever if emailing the backup `FATAL` error'd.
|
242 |
-
* Never show the running backup in the list of backups.
|
243 |
-
* Show an error backup email failed to send.
|
244 |
-
* Fix possible notice when deleting a backup file which doesn't exist.
|
245 |
-
* Fix possible notice on older versions of `PHP` which don't define `E_DEPRECATED`.
|
246 |
-
* Make `HMBKP_SECURE_KEY` override-able.
|
247 |
-
* BackUpWordPress should now work when `ABSPATH` is `/`.
|
248 |
-
|
249 |
-
#### 1.6.4
|
250 |
-
|
251 |
-
* Don't show warning message as they cause to much panic.
|
252 |
-
* Move previous methods errors to warnings in fallback methods.
|
253 |
-
* Wrap `.htaccess` rewrite rules in if `mod_rewrite` check.
|
254 |
-
* Add link to new restore help article to FAQ.
|
255 |
-
* Fix issue that could cause "not using latest stable version" message to show when you were in-fact using the latest version.
|
256 |
-
* Bug fix in `zip command` check that could cause an incorrect `zip` path to be used.
|
257 |
-
* Detect and pass `MySQL` port to `mysqldump`.
|
258 |
-
|
259 |
-
#### 1.6.3
|
260 |
-
|
261 |
-
* Don't fail archive verification for errors in previous archive methods.
|
262 |
-
* Improved detection of the `zip` and `mysqldump` commands.
|
263 |
-
* Fix issues when `ABSPATH` is `/`.
|
264 |
-
* Remove reliance on `SECURE_AUTH_KEY` as it's often not defined.
|
265 |
-
* Use `warning()` not `error()` for issues reported by `zip`, `ZipArchive` & `PclZip`.
|
266 |
-
* Fix download zip on Windows when `ABSPATH` contains a trailing forward slash.
|
267 |
-
* Send backup email after backup completes so that fatal errors in email code don't stop the backup from completing.
|
268 |
-
* Add missing / to `PCLZIP_TEMPORARY_DIR` define.
|
269 |
-
* Catch and display errors during `mysqldump`.
|
270 |
-
|
271 |
-
#### 1.6.2
|
272 |
-
|
273 |
-
* Track `PHP` errors as backup warnings not errors.
|
274 |
-
* Only show warning message for `PHP` errors in BackUpWordPress files.
|
275 |
-
* Ability to dismiss the error / warning messages.
|
276 |
-
* Disable use of `PclZip` for full archive checking for now as it causes memory issues on some large sites.
|
277 |
-
* Don't delete "number of backups" setting on update.
|
278 |
-
* Better handling of multibyte characters in archive and database dump filenames.
|
279 |
-
* Mark backup as running and increase callback timeout to `500` when firing backup via ajax.
|
280 |
-
* Don't send backup email if backup failed.
|
281 |
-
* Filter out duplicate exclude rules.
|
282 |
-
|
283 |
-
#### 1.6.1
|
284 |
-
|
285 |
-
* Fix fatal error on PHP =< 5.3
|
286 |
-
|
287 |
-
#### 1.6
|
288 |
-
|
289 |
-
* Fixes issue with backups dir being included in backups on some Windows Servers.
|
290 |
-
* Consistent handling of symlinks across all archive methods (they are followed).
|
291 |
-
* Use .htaccess rewrite cond authentication to allow for secure http downloads of backup files.
|
292 |
-
* Track errors and warnings that happen during backup and expose them through admin.
|
293 |
-
* Fire manual backups using ajax instead of wp-cron, `HMBKP_DISABLE_MANUAL_BACKUP_CRON` is no longer needed and has been removed.
|
294 |
-
* Ability to cancel a running backup.
|
295 |
-
* Zip files are now integrity checked after every backup.
|
296 |
-
* More robust handling of failed / corrupt zips, backup process now fallsback through the various zip methods until one works.
|
297 |
-
* Use `mysql_query` instead of the depreciated `mysql_list_tables`.
|
298 |
-
|
299 |
-
#### 1.5.2
|
300 |
-
|
301 |
-
* Better handling of unreadable files in ZipArchive and the backup size calculation.
|
302 |
-
* Support for wp-cli, usage: `wp backup [--files_only] [--database_only] [--path<dir>] [--root<dir>] [--zip_command_path=<path>] [--mysqldump_command_path=<path>]`
|
303 |
-
|
304 |
-
#### 1.5.1
|
305 |
-
|
306 |
-
* Better detection of `zip` command.
|
307 |
-
* Don't delete user settings on update / deactivate.
|
308 |
-
* Use `ZipArchive` if `zip` is not available, still falls back to `PclZip` if neither `zip` nor `ZipArchive` are installed.
|
309 |
-
* Better exclude rule parsing, fixes lots of edge cases, excludes now pass all 52 unit tests.
|
310 |
-
* Improved the speed of the backup size calculation.
|
311 |
-
|
312 |
-
#### 1.5
|
313 |
-
|
314 |
-
* Re-written core backup engine should be more robust especially in edge case scenarios.
|
315 |
-
* 48 unit tests for the core backup engine, yay for unit tests.
|
316 |
-
* Remove some extraneous status information from the admin interface.
|
317 |
-
* Rename Advanced Options to Settings
|
318 |
-
* New `Constant` `HMBKP_CAPABILITY` to allow the default `add_menu_page` capability to be changed.
|
319 |
-
* Suppress possible filemtime warnings in some edge cases.
|
320 |
-
* 3.3 compatability.
|
321 |
-
* Set proper charset of MySQL backup, props valericus.
|
322 |
-
* Fix some inconsistencies between the estimated backup size and actual backup size when excluding files.
|
323 |
-
|
324 |
-
#### 1.4.1
|
325 |
-
|
326 |
-
* 1.4 was incorrectly marked as beta.
|
327 |
-
|
328 |
-
#### 1.4
|
329 |
-
|
330 |
-
* Most options can now be set on the backups page, all options can still be set by defining them as `Constants`.
|
331 |
-
* Russian translation, props valericus.
|
332 |
-
* All dates are now translatable.
|
333 |
-
* Fixed some strings which weren't translatable.
|
334 |
-
* New Constant `HMBKP_DISABLE_MANUAL_BACKUP_CRON` which enable you to disable the use of `wp_cron` for manual backups.
|
335 |
-
* Manual backups now work if `DISABLE_WP_CRON` is defined as `true`.
|
336 |
-
|
337 |
-
#### 1.3.2
|
338 |
-
|
339 |
-
* Spanish translation
|
340 |
-
* Bump PHP version check to 5.2.4
|
341 |
-
* Fallback to PHP mysqldump if shell_exec fails for any reason.
|
342 |
-
* Silently ignore unreadable files / folders
|
343 |
-
* Make sure binary data is properly exported when doing a mysqldump
|
344 |
-
* Use 303 instead of 302 when redirecting in the admin.
|
345 |
-
* Don't `set_time_limit` inside a loop
|
346 |
-
* Use WordPress 3.2 style buttons
|
347 |
-
* Don't pass an empty password to mysqldump
|
348 |
-
|
349 |
-
#### 1.3.1
|
350 |
-
|
351 |
-
* Check for PHP version. Deactivate plugin if running on PHP version 4.
|
352 |
-
|
353 |
-
#### 1.3
|
354 |
-
|
355 |
-
* Re-written back up engine, no longer copies everything to a tmp folder before zipping which should improve speed and reliability.
|
356 |
-
* Support for excluding files and folders, define `HMBKP_EXCLUDE` with a comma separated list of files and folders to exclude, supports wildcards `*`, path fragments and absolute paths.
|
357 |
-
* Full support for moving the backups directory, if you define a new backups directory then your existing backups will be moved to it.
|
358 |
-
* Work around issues caused by low MySQL `wait_timeout` setting.
|
359 |
-
* Add FAQ to readme.txt.
|
360 |
-
* Pull FAQ into the contextual help tab on the backups page.
|
361 |
-
* Block activation on old versions of WordPress.
|
362 |
-
* Stop guessing compressed backup file size, instead just show size of site uncompressed.
|
363 |
-
* Fix bug in `safe_mode` detection which could cause `Off` to act like `On`.
|
364 |
-
* Better name for the database dump file.
|
365 |
-
* Better name for the backup files.
|
366 |
-
* Improve styling for advanced options.
|
367 |
-
* Show examples for all advanced options.
|
368 |
-
* Language improvements.
|
369 |
-
* Layout tweaks.
|
370 |
-
|
371 |
-
#### 1.2
|
372 |
-
|
373 |
-
* Show live backup status in the back up now button when a back up is running.
|
374 |
-
* Show free disk space after total used by backups.
|
375 |
-
* Several langauge changes.
|
376 |
-
* Work around the 1 cron every 60 seconds limit.
|
377 |
-
* Store backup status in a 2 hour transient as a last ditch attempt to work around the "stuck on backup running" issue.
|
378 |
-
* Show a warning and disable backups when PHP is in Safe Mode, may try to work round issues and re-enable in the future.
|
379 |
-
* Highlight defined `Constants`.
|
380 |
-
* Show defaults for all `Constants`.
|
381 |
-
* Show a warning if both `HMBKP_FILES_ONLY` and `HMBKP_DATABASE_ONLY` are defined at the same time.
|
382 |
-
* Make sure options added in 1.1.4 are cleared on de-activate.
|
383 |
-
* Support `mysqldump on` Windows if it's available.
|
384 |
-
* New option to have each backup emailed to you on completion. Props @matheu for the contribution.
|
385 |
-
* Improved windows server support.
|
386 |
-
|
387 |
-
#### 1.1.4
|
388 |
-
|
389 |
-
* Fix a rare issue where database backups could fail when using the mysqldump PHP fallback if `mysql.max_links` is set to 2 or less.
|
390 |
-
* Don't suppress `mysql_connect` errors in the mysqldump PHP fallback.
|
391 |
-
* One time highlight of the most recent completed backup when viewing the manage backups page after a successful backup.
|
392 |
-
* Fix a spelling error in the `shell_exec` disabled message.
|
393 |
-
* Store the BackUpWordPress version as a `Constant` rather than a `Variable`.
|
394 |
-
* Don't `(float)` the BackUpWordPress version number, fixes issues with minor versions numbers being truncated.
|
395 |
-
* Minor PHPDoc improvements.
|
396 |
-
|
397 |
-
#### 1.1.3
|
398 |
-
|
399 |
-
* Attempt to re-connect if database connection hits a timeout while a backup is running, should fix issues with the "Back Up Now" button continuing to spin even though the backup is completed.
|
400 |
-
* When using `PCLZIP` as the zip fallback don't store the files with absolute paths. Should fix issues unzipping the file archives using "Compressed (zipped) Folders" on Windows XP.
|
401 |
-
|
402 |
-
#### 1.1.2
|
403 |
-
|
404 |
-
* Fix a bug that stopped `HMBKP_DISABLE_AUTOMATIC_BACKUP` from working.
|
405 |
-
|
406 |
-
#### 1.1.1
|
407 |
-
|
408 |
-
* Fix a possible `max_execution_timeout` fatal error when attempting to calculate the path to `mysqldump`.
|
409 |
-
* Clear the running backup status and reset the calculated filesize on update.
|
410 |
-
* Show a link to the manage backups page in the plugin description.
|
411 |
-
* Other general fixes.
|
412 |
-
|
413 |
-
#### 1.1
|
414 |
-
|
415 |
-
* Remove the logging facility as it provided little benefit and complicated the code, your existing logs will be deleted on update.
|
416 |
-
* Expose the various `Constants` that can be defined to change advanced settings.
|
417 |
-
* Added the ability to disable the automatic backups completely `define( 'HMBKP_DISABLE_AUTOMATIC_BACKUP', true );`.
|
418 |
-
* Added the ability to switch to file only or database only backups `define( 'HMBKP_FILES_ONLY', true );` Or `define( 'HMBKP_DATABASE_ONLY', true );`.
|
419 |
-
* Added the ability to define how many old backups should be kept `define( 'HMBKP_MAX_BACKUPS', 20 );`
|
420 |
-
* Added the ability to define the time that the daily backup should run `define( 'HMBKP_DAILY_SCHEDULE_TIME', '16:30' );`
|
421 |
-
* Tweaks to the backups page layout.
|
422 |
-
* General bug fixes and improvements.
|
423 |
-
|
424 |
-
#### 1.0.5
|
425 |
-
|
426 |
-
* Don't ajax load estimated backup size if it's already been calculated.
|
427 |
-
* Fix time in backup complete log message.
|
428 |
-
* Don't mark backup as running until cron has been called, will fix issues with backup showing as running even if cron never fired.
|
429 |
-
* Show number of backups saved message.
|
430 |
-
* Add a link to the backups page to the plugin action links.
|
431 |
-
|
432 |
-
#### 1.0.4
|
433 |
-
|
434 |
-
Don't throw PHP Warnings when `shell_exec` is disabled
|
435 |
-
|
436 |
-
#### 1.0.3
|
437 |
-
|
438 |
-
Minor bug fix release.
|
439 |
-
|
440 |
-
* Suppress `filesize()` warnings when calculating backup size.
|
441 |
-
* Plugin should now work when symlinked.
|
442 |
-
* Remove all options on deactivate, you should now be able to deactivate then activate to fix issues with settings etc. becoming corrupt.
|
443 |
-
* Call setup_defaults for users who update from backupwordpress 0.4.5 so they get new settings.
|
444 |
-
* Don't ajax ping running backup status quite so often.
|
445 |
-
|
446 |
-
#### 1.0.1 & 1.0.2
|
447 |
-
|
448 |
-
Fix some silly 1.0 bugs
|
449 |
-
|
450 |
-
#### 1.0
|
451 |
-
|
452 |
-
1.0 represents a total rewrite & rethink of the BackUpWordPress plugin with a focus on making it "Just Work". The management and development of the plugin has been taken over by [Human Made Limited](http://hmn.md) the chaps behind [WP Remote](https://wpremote.com)
|
453 |
-
|
454 |
-
#### Previous
|
455 |
-
|
456 |
-
Version 0.4.5 and previous were developed by [wpdprx](http://profiles.wordpress.org/users/wpdprx/)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
plugin.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
/*
|
4 |
Plugin Name: WP Remote
|
5 |
Description: Manage your WordPress site with <a href="https://wpremote.com/">WP Remote</a>. <strong>Deactivate to clear your API Key.</strong>
|
6 |
-
Version: 2.
|
7 |
Author: Human Made Limited
|
8 |
Author URI: http://hmn.md/
|
9 |
*/
|
@@ -48,41 +48,8 @@ require_once( WPRP_PLUGIN_PATH . '/wprp.compatability.php' );
|
|
48 |
// Backups require 3.1
|
49 |
if ( version_compare( get_bloginfo( 'version' ), '3.1', '>=' ) ) {
|
50 |
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
$plugin_file = dirname( plugin_dir_path( HMBKP_PLUGIN_PATH ) ) . 'plugin.php';
|
55 |
-
|
56 |
-
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
57 |
-
deactivate_plugins( array( 'backupwordpress/plugin.php' ), true );
|
58 |
-
|
59 |
-
function wprp_backupwordpress_deactivated_notice() {
|
60 |
-
|
61 |
-
echo '<div class="updated fade"><p><strong>The BackUpWordPress Plugin has been de-activated</strong> The WP Remote Plugin includes BackUpWordPress.</p></div>';
|
62 |
-
|
63 |
-
}
|
64 |
-
add_action( 'admin_notices', 'wprp_backupwordpress_deactivated_notice' );
|
65 |
-
|
66 |
-
} else {
|
67 |
-
|
68 |
-
define( 'HMBKP_PLUGIN_PATH', trailingslashit( WPRP_PLUGIN_PATH ) . 'backupwordpress' );
|
69 |
-
define( 'HMBKP_PLUGIN_URL', trailingslashit( plugins_url( WPRP_PLUGIN_SLUG ) ) . 'backupwordpress' );
|
70 |
-
|
71 |
-
require( WPRP_PLUGIN_PATH . '/backupwordpress/plugin.php' );
|
72 |
-
|
73 |
-
// Set the correct path for the BackUpWordPress language files.
|
74 |
-
load_plugin_textdomain( 'hmbkp', false, '/wpremote/' . HMBKP_PLUGIN_SLUG . '/languages/' );
|
75 |
-
|
76 |
-
require_once( WPRP_PLUGIN_PATH . '/wprp.backups.php' );
|
77 |
-
|
78 |
-
}
|
79 |
-
|
80 |
-
// unhook default schedules from being created
|
81 |
-
remove_action( 'admin_init', 'hmbkp_setup_default_schedules' );
|
82 |
-
remove_filter( 'all_plugins', 'hmbkp_plugin_row', 10 );
|
83 |
-
remove_filter( 'plugin_action_links', 'hmbkp_plugin_action_link', 10, 2 );
|
84 |
-
remove_action( 'admin_head', 'hmbkp_admin_notices' );
|
85 |
-
|
86 |
|
87 |
}
|
88 |
|
@@ -211,8 +178,19 @@ function wprp_update() {
|
|
211 |
|
212 |
$old_wpremote_dir = trailingslashit( $uploads_dir['basedir'] ) . '_wpremote_backups';
|
213 |
|
214 |
-
if ( file_exists( $old_wpremote_dir )
|
215 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
216 |
|
217 |
// Update the version stored in the db
|
218 |
if ( get_option( 'wprp_plugin_version' ) !== WPRP_VERSION )
|
@@ -290,13 +268,4 @@ function _wpr_set_filesystem_credentials( $credentials ) {
|
|
290 |
|
291 |
return $_credentials;
|
292 |
}
|
293 |
-
add_filter( 'request_filesystem_credentials', '_wpr_set_filesystem_credentials' );
|
294 |
-
|
295 |
-
// we need the calculate filesize to work on no priv too
|
296 |
-
add_action( 'wp_ajax_nopriv_wprp_calculate_backup_size', 'wprp_ajax_calculate_backup_size' );
|
297 |
-
|
298 |
-
function wprp_ajax_calculate_backup_size() {
|
299 |
-
require_once( WPRP_PLUGIN_PATH . '/wprp.backups.php' );
|
300 |
-
WPRP_Backups::getInstance()->calculateEstimatedSize();
|
301 |
-
exit;
|
302 |
-
}
|
3 |
/*
|
4 |
Plugin Name: WP Remote
|
5 |
Description: Manage your WordPress site with <a href="https://wpremote.com/">WP Remote</a>. <strong>Deactivate to clear your API Key.</strong>
|
6 |
+
Version: 2.5
|
7 |
Author: Human Made Limited
|
8 |
Author URI: http://hmn.md/
|
9 |
*/
|
48 |
// Backups require 3.1
|
49 |
if ( version_compare( get_bloginfo( 'version' ), '3.1', '>=' ) ) {
|
50 |
|
51 |
+
require_once( WPRP_PLUGIN_PATH . '/wprp.hm.backup.php' );
|
52 |
+
require_once( WPRP_PLUGIN_PATH . '/wprp.backups.php' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
|
54 |
}
|
55 |
|
178 |
|
179 |
$old_wpremote_dir = trailingslashit( $uploads_dir['basedir'] ) . '_wpremote_backups';
|
180 |
|
181 |
+
if ( file_exists( $old_wpremote_dir ) )
|
182 |
+
WPRP_Backups::rmdir_recursive( $old_wpremote_dir );
|
183 |
+
|
184 |
+
// If BackUpWordPress isn't installed then lets just delete the whole backups directory
|
185 |
+
if ( ! defined( 'HMBKP_PLUGIN_PATH' ) && $path = get_option( 'hmbkp_path' ) ) {
|
186 |
+
|
187 |
+
WPRP_Backups::rmdir_recursive( $path );
|
188 |
+
|
189 |
+
delete_option( 'hmbkp_path' );
|
190 |
+
delete_option( 'hmbkp_default_path' );
|
191 |
+
delete_option( 'hmbkp_plugin_version' );
|
192 |
+
|
193 |
+
}
|
194 |
|
195 |
// Update the version stored in the db
|
196 |
if ( get_option( 'wprp_plugin_version' ) !== WPRP_VERSION )
|
268 |
|
269 |
return $_credentials;
|
270 |
}
|
271 |
+
add_filter( 'request_filesystem_credentials', '_wpr_set_filesystem_credentials' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: humanmade, joehoyle, mattheu, tcrsavage, willmot
|
|
3 |
Tags: wpremote, remote administration, multiple wordpress
|
4 |
Requires at least: 2.9
|
5 |
Tested up to: 3.5
|
6 |
-
Stable tag: 2.
|
7 |
|
8 |
WP Remote is a free web app that enables you to easily manage all of your WordPress powered sites from one place.
|
9 |
|
@@ -31,7 +31,13 @@ You can email us at support@wpremote.com for support.
|
|
31 |
|
32 |
== Changelog ==
|
33 |
|
34 |
-
#### 2.
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
|
36 |
* Upgrade bundled BackUpWordPress to 2.1.3.
|
37 |
* Fix an issue with Download Site on Apache servers.
|
3 |
Tags: wpremote, remote administration, multiple wordpress
|
4 |
Requires at least: 2.9
|
5 |
Tested up to: 3.5
|
6 |
+
Stable tag: 2.5
|
7 |
|
8 |
WP Remote is a free web app that enables you to easily manage all of your WordPress powered sites from one place.
|
9 |
|
31 |
|
32 |
== Changelog ==
|
33 |
|
34 |
+
#### 2.5
|
35 |
+
|
36 |
+
* Remove BackUpWordPress, backups are now handled by the `HM Backup` class.
|
37 |
+
* BackUpWordPress can now be used alongside WP Remote without issues.
|
38 |
+
* Exclude `.git` and `.svn` folders from backups automatically.
|
39 |
+
|
40 |
+
#### 2.4.12 & 2.4.13
|
41 |
|
42 |
* Upgrade bundled BackUpWordPress to 2.1.3.
|
43 |
* Fix an issue with Download Site on Apache servers.
|
wprp.admin.php
CHANGED
@@ -78,28 +78,4 @@ function wprp_deactivate() {
|
|
78 |
}
|
79 |
// Plugin activation and deactivation
|
80 |
add_action( 'activate_' . WPRP_PLUGIN_SLUG . '/plugin.php', 'wprp_deactivate' );
|
81 |
-
add_action( 'deactivate_' . WPRP_PLUGIN_SLUG . '/plugin.php', 'wprp_deactivate' );
|
82 |
-
|
83 |
-
/**
|
84 |
-
* Remove the BackUpWordPress menu from the Tools menu
|
85 |
-
*
|
86 |
-
*/
|
87 |
-
function wprp_remove_backupwordpress_from_admin_menu() {
|
88 |
-
|
89 |
-
global $submenu;
|
90 |
-
|
91 |
-
// Only remove BackUpWordPress if there aren't any schedules
|
92 |
-
$additional_schedules = false;
|
93 |
-
|
94 |
-
$schedules = new HMBKP_Schedules;
|
95 |
-
|
96 |
-
$schedules = $schedules->get_schedules();
|
97 |
-
|
98 |
-
foreach ( $schedules as $schedule )
|
99 |
-
if ( strpos( $schedule->get_id(), 'wpremote' ) === false )
|
100 |
-
$additional_schedules = true;
|
101 |
-
|
102 |
-
if ( ! $additional_schedules && isset( $submenu['tools.php'][16] ) && $submenu['tools.php'][16][2] === 'backupwordpress' )
|
103 |
-
unset( $submenu['tools.php'][16] );
|
104 |
-
}
|
105 |
-
add_action( 'admin_menu', 'wprp_remove_backupwordpress_from_admin_menu', 11 );
|
78 |
}
|
79 |
// Plugin activation and deactivation
|
80 |
add_action( 'activate_' . WPRP_PLUGIN_SLUG . '/plugin.php', 'wprp_deactivate' );
|
81 |
+
add_action( 'deactivate_' . WPRP_PLUGIN_SLUG . '/plugin.php', 'wprp_deactivate' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
wprp.api.php
CHANGED
@@ -2,20 +2,26 @@
|
|
2 |
|
3 |
// Check the API Key
|
4 |
if ( ! get_option( 'wpr_api_key' ) ) {
|
|
|
5 |
echo json_encode( 'blank-api-key' );
|
6 |
exit;
|
|
|
7 |
} elseif ( ! isset( $_GET['wpr_api_key'] ) || urldecode( $_GET['wpr_api_key'] ) !== get_option( 'wpr_api_key' ) || ! isset( $_GET['actions'] ) ) {
|
|
|
8 |
echo json_encode( 'bad-api-key' );
|
9 |
exit;
|
|
|
10 |
}
|
11 |
|
12 |
-
$actions = explode( ',', $_GET['actions'] );
|
13 |
$actions = array_flip( $actions );
|
14 |
|
15 |
// Disable error_reporting so they don't break the json request
|
16 |
-
|
|
|
17 |
|
18 |
// Log in as admin
|
|
|
19 |
wp_set_current_user( 1 );
|
20 |
|
21 |
foreach( $actions as $action => $value ) {
|
@@ -41,13 +47,13 @@ foreach( $actions as $action => $value ) {
|
|
41 |
|
42 |
$actions[$action] = array();
|
43 |
|
44 |
-
if ( extension_loaded('ftp') || extension_loaded('sockets') || function_exists('fsockopen') )
|
45 |
$actions[$action][] = 'ftp';
|
46 |
|
47 |
-
if ( extension_loaded('ftp') )
|
48 |
$actions[$action][] = 'ftps';
|
49 |
|
50 |
-
if ( extension_loaded('ssh2') && function_exists('stream_get_contents') )
|
51 |
$actions[$action][] = 'ssh';
|
52 |
|
53 |
break;
|
@@ -74,13 +80,13 @@ foreach( $actions as $action => $value ) {
|
|
74 |
|
75 |
case 'upgrade_plugin' :
|
76 |
|
77 |
-
$actions[$action] = _wprp_upgrade_plugin( (string) $_GET['plugin'] );
|
78 |
|
79 |
break;
|
80 |
|
81 |
case 'activate_plugin' :
|
82 |
|
83 |
-
$actions[$action] = _wprp_activate_plugin( (string) $_GET['plugin'] );
|
84 |
|
85 |
break;
|
86 |
|
@@ -92,7 +98,7 @@ foreach( $actions as $action => $value ) {
|
|
92 |
|
93 |
case 'upgrade_theme' :
|
94 |
|
95 |
-
$actions[$action] = _wprp_upgrade_theme( (string) $_GET['theme'] );
|
96 |
|
97 |
break;
|
98 |
|
@@ -100,21 +106,17 @@ foreach( $actions as $action => $value ) {
|
|
100 |
case 'delete_backup' :
|
101 |
case 'supports_backups' :
|
102 |
case 'get_backup' :
|
103 |
-
case 'add_backup_schedule' :
|
104 |
-
case 'remove_backup_schedule' :
|
105 |
-
case 'get_backup_schedules' :
|
106 |
$actions[$action] = _wprp_backups_api_call( $action );
|
107 |
|
108 |
break;
|
109 |
|
110 |
-
// get site info
|
111 |
case 'get_site_info' :
|
112 |
|
113 |
$actions[$action] = array(
|
114 |
-
'site_url'
|
115 |
-
'home_url'
|
116 |
-
'admin_url'
|
117 |
-
'backups'
|
118 |
);
|
119 |
|
120 |
break;
|
@@ -130,4 +132,5 @@ foreach( $actions as $action => $value ) {
|
|
130 |
}
|
131 |
|
132 |
echo json_encode( $actions );
|
|
|
133 |
exit;
|
2 |
|
3 |
// Check the API Key
|
4 |
if ( ! get_option( 'wpr_api_key' ) ) {
|
5 |
+
|
6 |
echo json_encode( 'blank-api-key' );
|
7 |
exit;
|
8 |
+
|
9 |
} elseif ( ! isset( $_GET['wpr_api_key'] ) || urldecode( $_GET['wpr_api_key'] ) !== get_option( 'wpr_api_key' ) || ! isset( $_GET['actions'] ) ) {
|
10 |
+
|
11 |
echo json_encode( 'bad-api-key' );
|
12 |
exit;
|
13 |
+
|
14 |
}
|
15 |
|
16 |
+
$actions = explode( ',', sanitize_text_field( $_GET['actions'] ) );
|
17 |
$actions = array_flip( $actions );
|
18 |
|
19 |
// Disable error_reporting so they don't break the json request
|
20 |
+
if ( ! defined( 'WP_DEBUG' ) || ! WP_DEBUG )
|
21 |
+
error_reporting( 0 );
|
22 |
|
23 |
// Log in as admin
|
24 |
+
// TODO what about if admin use doesn't exists?
|
25 |
wp_set_current_user( 1 );
|
26 |
|
27 |
foreach( $actions as $action => $value ) {
|
47 |
|
48 |
$actions[$action] = array();
|
49 |
|
50 |
+
if ( extension_loaded( 'ftp' ) || extension_loaded( 'sockets' ) || function_exists( 'fsockopen' ) )
|
51 |
$actions[$action][] = 'ftp';
|
52 |
|
53 |
+
if ( extension_loaded( 'ftp' ) )
|
54 |
$actions[$action][] = 'ftps';
|
55 |
|
56 |
+
if ( extension_loaded( 'ssh2' ) && function_exists( 'stream_get_contents' ) )
|
57 |
$actions[$action][] = 'ssh';
|
58 |
|
59 |
break;
|
80 |
|
81 |
case 'upgrade_plugin' :
|
82 |
|
83 |
+
$actions[$action] = _wprp_upgrade_plugin( (string) sanitize_text_field( $_GET['plugin'] ) );
|
84 |
|
85 |
break;
|
86 |
|
87 |
case 'activate_plugin' :
|
88 |
|
89 |
+
$actions[$action] = _wprp_activate_plugin( (string) sanitize_text_field( $_GET['plugin'] ) );
|
90 |
|
91 |
break;
|
92 |
|
98 |
|
99 |
case 'upgrade_theme' :
|
100 |
|
101 |
+
$actions[$action] = _wprp_upgrade_theme( (string) sanitize_text_field( $_GET['theme'] ) );
|
102 |
|
103 |
break;
|
104 |
|
106 |
case 'delete_backup' :
|
107 |
case 'supports_backups' :
|
108 |
case 'get_backup' :
|
|
|
|
|
|
|
109 |
$actions[$action] = _wprp_backups_api_call( $action );
|
110 |
|
111 |
break;
|
112 |
|
|
|
113 |
case 'get_site_info' :
|
114 |
|
115 |
$actions[$action] = array(
|
116 |
+
'site_url' => get_site_url(),
|
117 |
+
'home_url' => get_home_url(),
|
118 |
+
'admin_url' => get_admin_url(),
|
119 |
+
'backups' => _wprp_get_backups_info()
|
120 |
);
|
121 |
|
122 |
break;
|
132 |
}
|
133 |
|
134 |
echo json_encode( $actions );
|
135 |
+
|
136 |
exit;
|
wprp.backups.php
CHANGED
@@ -1,36 +1,104 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
|
|
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
private static $instance;
|
6 |
|
7 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
9 |
if ( empty( self::$instance ) )
|
10 |
self::$instance = new WPRP_Backups();
|
11 |
|
12 |
return self::$instance;
|
|
|
13 |
}
|
14 |
|
15 |
/**
|
16 |
-
*
|
|
|
17 |
*
|
18 |
-
* @
|
|
|
|
|
19 |
*/
|
20 |
-
public function
|
21 |
-
|
|
|
|
|
|
|
|
|
|
|
22 |
|
23 |
-
|
24 |
|
25 |
-
$
|
26 |
|
27 |
-
|
|
|
|
|
|
|
|
|
28 |
|
29 |
-
if ( ! file_exists( $filepath ) ) {
|
30 |
-
return new WP_Error( 'backup-failed', implode(', ', $schedule->get_errors() ) );
|
31 |
}
|
32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
return true;
|
|
|
34 |
}
|
35 |
|
36 |
/**
|
@@ -38,29 +106,28 @@ class WPRP_Backups {
|
|
38 |
*
|
39 |
* @return WP_Error|string
|
40 |
*/
|
41 |
-
public function
|
42 |
|
43 |
global $is_apache;
|
44 |
|
45 |
-
$
|
46 |
-
|
47 |
-
if ( $status = $schedule->get_status() )
|
48 |
return new WP_Error( 'error-status', $status );
|
49 |
|
50 |
-
$backup =
|
|
|
51 |
|
52 |
if ( file_exists( $backup ) ) {
|
53 |
|
54 |
// Append the secret key on apache servers
|
55 |
-
if ( $is_apache &&
|
56 |
|
57 |
-
$backup = add_query_arg( 'key',
|
58 |
|
59 |
// Force the .htaccess to be rebuilt
|
60 |
-
if ( file_exists(
|
61 |
-
unlink(
|
62 |
|
63 |
-
|
64 |
|
65 |
}
|
66 |
|
@@ -69,168 +136,354 @@ class WPRP_Backups {
|
|
69 |
}
|
70 |
|
71 |
return new WP_Error( 'backup-failed', 'No backup was found' );
|
|
|
72 |
}
|
73 |
|
74 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
|
76 |
-
$
|
77 |
-
$schedule = $schedules->get_schedule( $schedule );
|
78 |
|
79 |
-
|
|
|
|
|
80 |
|
81 |
-
if ( file_exists( $
|
82 |
-
unlink( $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
83 |
}
|
84 |
|
85 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
|
87 |
-
|
88 |
-
return size_format( $size, null, '%01u %s' );
|
89 |
|
90 |
// we dont know the size yet, fire off a remote request to get it for later
|
91 |
// it can take some time so we have a small timeout then return "Calculating"
|
92 |
-
wp_remote_get(
|
93 |
-
$url = add_query_arg( array( 'action' => 'wprp_calculate_backup_size', 'backup_excludes' => $this->getManualBackupSchedule()->get_excludes() ), admin_url( 'admin-ajax.php' ) ),
|
94 |
-
array( 'timeout' => 0.1, 'sslverify' => false )
|
95 |
-
);
|
96 |
|
97 |
return 'Calculating';
|
98 |
|
99 |
}
|
100 |
|
101 |
-
|
102 |
-
|
103 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
/**
|
106 |
-
*
|
107 |
*
|
108 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
*/
|
110 |
-
|
111 |
|
112 |
-
$
|
113 |
|
114 |
-
|
115 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
$schedule->set_max_backups( 1 );
|
121 |
|
122 |
-
|
123 |
-
|
124 |
|
125 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
126 |
|
127 |
-
$schedule->save();
|
128 |
}
|
129 |
|
130 |
/**
|
131 |
-
*
|
132 |
*
|
133 |
-
* @
|
|
|
134 |
*/
|
135 |
-
|
136 |
-
$schedules = new HMBKP_Schedules();
|
137 |
|
138 |
-
if (
|
139 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
|
141 |
-
|
142 |
}
|
143 |
|
144 |
/**
|
145 |
-
*
|
146 |
*
|
147 |
-
* @
|
|
|
148 |
*/
|
149 |
-
|
150 |
|
151 |
-
|
152 |
-
|
153 |
|
154 |
-
|
155 |
-
$array[] = array( 'id' => $schedule->get_id(), 'next_run_date' => $schedule->get_next_occurrence() );
|
156 |
|
157 |
-
|
|
|
|
|
|
|
|
|
|
|
158 |
}
|
159 |
|
160 |
/**
|
161 |
-
* Get the
|
162 |
-
*
|
|
|
|
|
163 |
*/
|
164 |
-
private function
|
165 |
|
166 |
-
|
167 |
-
|
168 |
-
$schedule->set_max_backups( 1 );
|
169 |
|
170 |
-
|
171 |
-
if ( ! empty( $_REQUEST['backup_excludes'] ) ) {
|
172 |
|
173 |
-
|
174 |
-
$schedule->set_excludes( $excludes, true );
|
175 |
-
}
|
176 |
|
177 |
-
return $schedule;
|
178 |
}
|
179 |
-
}
|
180 |
|
181 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
182 |
|
183 |
/**
|
184 |
-
*
|
185 |
*
|
186 |
-
* @
|
187 |
-
* @param
|
188 |
* @return void
|
189 |
*/
|
190 |
-
|
191 |
|
192 |
-
|
|
|
193 |
|
194 |
-
|
195 |
|
196 |
-
|
197 |
-
$file_url = str_replace( WP_CONTENT_DIR, WP_CONTENT_URL, $file );
|
198 |
-
$api_url = WPR_API_URL . 'backups/upload';
|
199 |
|
200 |
-
|
201 |
|
202 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
203 |
|
204 |
-
|
205 |
-
if ( file_exists( hmbkp_path() . '/.htaccess' ) )
|
206 |
-
unlink( hmbkp_path() . '/.htaccess' );
|
207 |
|
208 |
-
|
|
|
209 |
|
210 |
-
|
|
|
211 |
|
212 |
-
|
213 |
-
'api_key' => get_option( 'wpr_api_key' ),
|
214 |
-
'backup_url'=> $file_url,
|
215 |
-
'domain' => get_bloginfo( 'url' )
|
216 |
-
);
|
217 |
|
218 |
-
|
219 |
-
}
|
220 |
-
}
|
221 |
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
226 |
|
227 |
-
|
|
|
228 |
|
229 |
-
|
230 |
|
231 |
-
public function display() {}
|
232 |
}
|
233 |
-
HMBKP_Services::register( __FILE__, 'WPRP_Backup_Service' );
|
234 |
|
235 |
/**
|
236 |
* Handle the backups API calls
|
@@ -240,48 +493,50 @@ HMBKP_Services::register( __FILE__, 'WPRP_Backup_Service' );
|
|
240 |
*/
|
241 |
function _wprp_backups_api_call( $action ) {
|
242 |
|
243 |
-
switch( $action )
|
244 |
|
245 |
-
// TODO in the future we should do some check here to make sure they do support backups
|
246 |
case 'supports_backups' :
|
247 |
return true;
|
248 |
|
249 |
case 'do_backup' :
|
250 |
-
|
251 |
-
return WPRP_Backups::getInstance()->doBackup();
|
252 |
|
253 |
case 'get_backup' :
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
case 'delete_backup' :
|
|
|
258 |
|
259 |
-
|
260 |
-
|
261 |
-
case 'add_backup_schedule' :
|
262 |
-
return WPRP_Backups::getInstance()->addSchedule( $_GET );
|
263 |
-
|
264 |
-
case 'remove_backup_schedule' :
|
265 |
-
return WPRP_Backups::getInstance()->removeSchedule( $_GET['id'] );
|
266 |
-
|
267 |
-
case 'get_backup_schedules' :
|
268 |
-
return WPRP_Backups::getInstance()->getSchedules();
|
269 |
-
break;
|
270 |
-
|
271 |
-
endswitch;
|
272 |
|
273 |
}
|
274 |
|
275 |
-
|
|
|
|
|
|
|
|
|
276 |
function _wprp_get_backups_info() {
|
277 |
|
278 |
-
$hm_backup = new
|
279 |
|
280 |
-
|
281 |
'mysqldump_path' => $hm_backup->get_mysqldump_command_path(),
|
282 |
'zip_path' => $hm_backup->get_zip_command_path(),
|
283 |
-
'estimated_size' => WPRP_Backups::
|
284 |
);
|
285 |
|
286 |
-
|
287 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
|
3 |
+
/**
|
4 |
+
* WPRP_Backups
|
5 |
+
*
|
6 |
+
* Singleton class for creating backups, all scheduling is handled by WP Remote
|
7 |
+
*/
|
8 |
+
class WPRP_Backups extends WPRP_HM_Backup {
|
9 |
|
10 |
+
/**
|
11 |
+
* Contains the current instance
|
12 |
+
*
|
13 |
+
* @static
|
14 |
+
* @access private
|
15 |
+
*/
|
16 |
private static $instance;
|
17 |
|
18 |
+
/**
|
19 |
+
* Return the current instance of WPRP_Backups
|
20 |
+
*
|
21 |
+
* @static
|
22 |
+
* @access public
|
23 |
+
*/
|
24 |
+
public static function get_instance() {
|
25 |
|
26 |
if ( empty( self::$instance ) )
|
27 |
self::$instance = new WPRP_Backups();
|
28 |
|
29 |
return self::$instance;
|
30 |
+
|
31 |
}
|
32 |
|
33 |
/**
|
34 |
+
* Recursively delete a directory including
|
35 |
+
* all the files and sub-directories.
|
36 |
*
|
37 |
+
* @param string $dir
|
38 |
+
* @static
|
39 |
+
* @access public
|
40 |
*/
|
41 |
+
public static function rmdir_recursive( $dir ) {
|
42 |
+
|
43 |
+
if ( is_file( $dir ) )
|
44 |
+
@unlink( $dir );
|
45 |
+
|
46 |
+
if ( ! is_dir( $dir ) )
|
47 |
+
return false;
|
48 |
|
49 |
+
$files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $dir ), RecursiveIteratorIterator::CHILD_FIRST, RecursiveIteratorIterator::CATCH_GET_CHILD );
|
50 |
|
51 |
+
foreach ( $files as $file ) {
|
52 |
|
53 |
+
if ( $file->isDir() )
|
54 |
+
@rmdir( $file->getPathname() );
|
55 |
+
|
56 |
+
else
|
57 |
+
@unlink( $file->getPathname() );
|
58 |
|
|
|
|
|
59 |
}
|
60 |
|
61 |
+
@rmdir( $dir );
|
62 |
+
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Setup HM Backup
|
67 |
+
*
|
68 |
+
* @access publics
|
69 |
+
* @see HM_Backup
|
70 |
+
*/
|
71 |
+
public function __construct() {
|
72 |
+
|
73 |
+
// Set the backup path
|
74 |
+
$this->set_path( $this->path() );
|
75 |
+
|
76 |
+
// Set the excludes
|
77 |
+
if ( ! empty( $_GET['backup_excludes'] ) )
|
78 |
+
$this->set_excludes( array_map( 'urldecode', $_GET['backup_excludes'] ), true );
|
79 |
+
|
80 |
+
$this->filesize_transient = 'wprp_' . '_' . $this->get_type() . '_' . md5( $this->exclude_string() ) . '_filesize';
|
81 |
+
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Perform a backup of the site
|
86 |
+
*
|
87 |
+
* @return true|WP_Error
|
88 |
+
*/
|
89 |
+
public function do_backup() {
|
90 |
+
|
91 |
+
@ignore_user_abort( true );
|
92 |
+
|
93 |
+
$this->set_status( 'Starting backup...' );
|
94 |
+
|
95 |
+
$this->backup();
|
96 |
+
|
97 |
+
if ( ! file_exists( $this->get_archive_filepath() ) )
|
98 |
+
return new WP_Error( 'backup-failed', implode( ', ', $this->get_errors() ) );
|
99 |
+
|
100 |
return true;
|
101 |
+
|
102 |
}
|
103 |
|
104 |
/**
|
106 |
*
|
107 |
* @return WP_Error|string
|
108 |
*/
|
109 |
+
public function get_backup() {
|
110 |
|
111 |
global $is_apache;
|
112 |
|
113 |
+
if ( $status = $this->get_status() )
|
|
|
|
|
114 |
return new WP_Error( 'error-status', $status );
|
115 |
|
116 |
+
$backup = glob( $this->get_path() . '/*.zip' );
|
117 |
+
$backup = reset( $backup );
|
118 |
|
119 |
if ( file_exists( $backup ) ) {
|
120 |
|
121 |
// Append the secret key on apache servers
|
122 |
+
if ( $is_apache && $this->key() ) {
|
123 |
|
124 |
+
$backup = add_query_arg( 'key', $this->key(), $backup );
|
125 |
|
126 |
// Force the .htaccess to be rebuilt
|
127 |
+
if ( file_exists( $this->get_path() . '/.htaccess' ) )
|
128 |
+
unlink( $this->get_path() . '/.htaccess' );
|
129 |
|
130 |
+
$this->path();
|
131 |
|
132 |
}
|
133 |
|
136 |
}
|
137 |
|
138 |
return new WP_Error( 'backup-failed', 'No backup was found' );
|
139 |
+
|
140 |
}
|
141 |
|
142 |
+
/**
|
143 |
+
* Remove the backups directoy and everything it contains
|
144 |
+
*
|
145 |
+
* @access public
|
146 |
+
* @return void
|
147 |
+
*/
|
148 |
+
public function cleanup() {
|
149 |
|
150 |
+
$zips = glob( $this->get_path() . '/*.zip' );
|
|
|
151 |
|
152 |
+
// Remove any .zip files
|
153 |
+
foreach ( $zips as $zip )
|
154 |
+
unlink( $zip );
|
155 |
|
156 |
+
if ( file_exists( trailingslashit( $this->get_path() ) . 'index.html' ) )
|
157 |
+
unlink( trailingslashit( $this->get_path() ) . 'index.html' );
|
158 |
+
|
159 |
+
if ( file_exists( trailingslashit( $this->get_path() ) . '.htaccess' ) )
|
160 |
+
unlink( trailingslashit( $this->get_path() ) . '.htaccess' );
|
161 |
+
|
162 |
+
rmdir( $this->get_path() );
|
163 |
+
|
164 |
+
delete_option( 'wprp_backup_path' );
|
165 |
+
|
166 |
}
|
167 |
|
168 |
+
/**
|
169 |
+
* Get the estimated size of the sites files and database
|
170 |
+
*
|
171 |
+
* If the size hasn't been calculated yet then it fires an API request
|
172 |
+
* to calculate the size and returns string 'Calculating'
|
173 |
+
*
|
174 |
+
* @access public
|
175 |
+
* @return string $size|Calculating
|
176 |
+
*/
|
177 |
+
public function get_estimate_size() {
|
178 |
+
|
179 |
+
// Check the cache
|
180 |
+
if ( $size = get_transient( $this->filesize_transient ) ) {
|
181 |
+
|
182 |
+
// If we have a number, format it and return
|
183 |
+
if ( is_numeric( $size ) )
|
184 |
+
return size_format( $size, null, '%01u %s' );
|
185 |
+
|
186 |
+
// Otherwise the filesize must still be calculating
|
187 |
+
else
|
188 |
+
return 'Calculating';
|
189 |
|
190 |
+
}
|
|
|
191 |
|
192 |
// we dont know the size yet, fire off a remote request to get it for later
|
193 |
// it can take some time so we have a small timeout then return "Calculating"
|
194 |
+
wp_remote_get( add_query_arg( array( 'action' => 'wprp_calculate_backup_size', 'backup_excludes' => $this->get_excludes() ), admin_url( 'admin-ajax.php' ) ), array( 'timeout' => 0.1, 'sslverify' => false ) );
|
|
|
|
|
|
|
195 |
|
196 |
return 'Calculating';
|
197 |
|
198 |
}
|
199 |
|
200 |
+
/**
|
201 |
+
* Hook into the actions fired in HM Backup and set the status
|
202 |
+
*
|
203 |
+
* @return null
|
204 |
+
*/
|
205 |
+
protected function do_action( $action ) {
|
206 |
+
|
207 |
+
switch ( $action ) :
|
208 |
+
|
209 |
+
case 'hmbkp_mysqldump_started' :
|
210 |
+
|
211 |
+
$this->set_status( sprintf( 'Dumping Database %s', '(<code>' . $this->get_mysqldump_method() . '</code>)' ) );
|
212 |
+
|
213 |
+
break;
|
214 |
+
|
215 |
+
case 'hmbkp_mysqldump_verify_started' :
|
216 |
+
|
217 |
+
$this->set_status( sprintf( 'Verifying Database Dump %s', '(<code>' . $this->get_mysqldump_method() . '</code>)' ) );
|
218 |
+
|
219 |
+
break;
|
220 |
+
|
221 |
+
case 'hmbkp_archive_started' :
|
222 |
+
|
223 |
+
$this->set_status( sprintf( 'Creating zip archive %s', '(<code>' . $this->get_archive_method() . '</code>)' ) );
|
224 |
+
|
225 |
+
break;
|
226 |
+
|
227 |
+
case 'hmbkp_archive_verify_started' :
|
228 |
+
|
229 |
+
$this->set_status( sprintf( 'Verifying Zip Archive %s', '(<code>' . $this->get_archive_method() . '</code>)' ) );
|
230 |
+
|
231 |
+
break;
|
232 |
+
|
233 |
+
case 'hmbkp_backup_complete' :
|
234 |
+
|
235 |
+
if ( file_exists( $this->get_schedule_running_path() ) )
|
236 |
+
unlink( $this->get_schedule_running_path() );
|
237 |
+
|
238 |
+
break;
|
239 |
+
|
240 |
+
case 'hmbkp_error' :
|
241 |
+
|
242 |
+
if ( $this->get_errors() ) {
|
243 |
+
|
244 |
+
$file = $this->get_path() . '/.backup_errors';
|
245 |
+
|
246 |
+
if ( file_exists( $file ) )
|
247 |
+
unlink( $file );
|
248 |
+
|
249 |
+
if ( ! $handle = @fopen( $file, 'w' ) )
|
250 |
+
return;
|
251 |
+
|
252 |
+
fwrite( $handle, json_encode( $this->get_errors() ) );
|
253 |
+
|
254 |
+
fclose( $handle );
|
255 |
+
|
256 |
+
}
|
257 |
+
|
258 |
+
break;
|
259 |
+
|
260 |
+
case 'hmbkp_warning' :
|
261 |
|
262 |
+
if ( $this->get_warnings() ) {
|
263 |
+
|
264 |
+
$file = $this->get_path() . '/.backup_warnings';
|
265 |
+
|
266 |
+
if ( file_exists( $file ) )
|
267 |
+
unlink( $file );
|
268 |
+
|
269 |
+
if ( ! $handle = @fopen( $file, 'w' ) )
|
270 |
+
return;
|
271 |
+
|
272 |
+
fwrite( $handle, json_encode( $this->get_warnings() ) );
|
273 |
+
|
274 |
+
fclose( $handle );
|
275 |
+
|
276 |
+
}
|
277 |
+
|
278 |
+
break;
|
279 |
+
|
280 |
+
endswitch;
|
281 |
+
|
282 |
+
}
|
283 |
+
|
284 |
/**
|
285 |
+
* Get the path to the backups directory
|
286 |
*
|
287 |
+
* Will try to create it if it doesn't exist
|
288 |
+
* and will fallback to default if a custom dir
|
289 |
+
* isn't writable.
|
290 |
+
*
|
291 |
+
* @access private
|
292 |
+
* @see default_path()
|
293 |
+
* @return string $path
|
294 |
*/
|
295 |
+
private function path() {
|
296 |
|
297 |
+
global $is_apache;
|
298 |
|
299 |
+
$path = get_option( 'wprp_backup_path' );
|
300 |
+
|
301 |
+
// If the dir doesn't exist or isn't writable then use the default path instead instead
|
302 |
+
if ( ! $path || ( is_dir( $path ) && ! is_writable( $path ) ) || ( ! is_dir( $path ) && ! is_writable( dirname( $path ) ) ) )
|
303 |
+
$path = $this->path_default();
|
304 |
+
|
305 |
+
// Create the backups directory if it doesn't exist
|
306 |
+
if ( ! is_dir( $path ) && is_writable( dirname( $path ) ) )
|
307 |
+
mkdir( $path, 0755 );
|
308 |
|
309 |
+
// If the path has changed then cache it
|
310 |
+
if ( get_option( 'wprp_backup_path' ) !== $path )
|
311 |
+
update_option( 'wprp_backup_path', $path );
|
|
|
312 |
|
313 |
+
// Protect against directory browsing by including a index.html file
|
314 |
+
$index = $path . '/index.html';
|
315 |
|
316 |
+
if ( ! file_exists( $index ) && is_writable( $path ) )
|
317 |
+
file_put_contents( $index, '' );
|
318 |
+
|
319 |
+
$htaccess = $path . '/.htaccess';
|
320 |
+
|
321 |
+
// Protect the directory with a .htaccess file on Apache servers
|
322 |
+
if ( $is_apache && function_exists( 'insert_with_markers' ) && ! file_exists( $htaccess ) && is_writable( $path ) ) {
|
323 |
+
|
324 |
+
$contents[] = '# ' . sprintf( __( 'This %s file ensures that other people cannot download your backup files.', 'wprp' ), '.htaccess' );
|
325 |
+
$contents[] = '';
|
326 |
+
$contents[] = '<IfModule mod_rewrite.c>';
|
327 |
+
$contents[] = 'RewriteEngine On';
|
328 |
+
$contents[] = 'RewriteCond %{QUERY_STRING} !key=' . WPRP_SECURE_KEY;
|
329 |
+
$contents[] = 'RewriteRule (.*) - [F]';
|
330 |
+
$contents[] = '</IfModule>';
|
331 |
+
$contents[] = '';
|
332 |
+
|
333 |
+
insert_with_markers( $htaccess, 'WP Remote Backup', $contents );
|
334 |
+
|
335 |
+
}
|
336 |
+
|
337 |
+
return parent::conform_dir( $path );
|
338 |
|
|
|
339 |
}
|
340 |
|
341 |
/**
|
342 |
+
* Return the default backup path
|
343 |
*
|
344 |
+
* @access private
|
345 |
+
* @return string $path
|
346 |
*/
|
347 |
+
private function path_default() {
|
|
|
348 |
|
349 |
+
if ( empty( $path ) )
|
350 |
+
$path = parent::conform_dir( trailingslashit( WP_CONTENT_DIR ) . substr( $this->key(), 0, 10 ) . '-backups' );
|
351 |
+
|
352 |
+
$upload_dir = wp_upload_dir();
|
353 |
+
|
354 |
+
// If the backups dir can't be created in WP_CONTENT_DIR then fallback to uploads
|
355 |
+
if ( ( ( ! is_dir( $path ) && ! is_writable( dirname( $path ) ) ) || ( is_dir( $path ) && ! is_writable( $path ) ) ) && strpos( $path, $upload_dir['basedir'] ) === false )
|
356 |
+
$path = parent::conform_dir( trailingslashit( $upload_dir['basedir'] ) . substr( $this->key(), 0, 10 ) . '-backups' );
|
357 |
|
358 |
+
return $path;
|
359 |
}
|
360 |
|
361 |
/**
|
362 |
+
* Calculate and generate the private key
|
363 |
*
|
364 |
+
* @access private
|
365 |
+
* @return string $key
|
366 |
*/
|
367 |
+
private function key() {
|
368 |
|
369 |
+
if ( ! empty( $this->key ) )
|
370 |
+
return $this->key;
|
371 |
|
372 |
+
$key = array( ABSPATH, time() );
|
|
|
373 |
|
374 |
+
foreach ( array( 'AUTH_KEY', 'SECURE_AUTH_KEY', 'LOGGED_IN_KEY', 'NONCE_KEY', 'AUTH_SALT', 'SECURE_AUTH_SALT', 'LOGGED_IN_SALT', 'NONCE_SALT', 'SECRET_KEY' ) as $constant )
|
375 |
+
if ( defined( $constant ) )
|
376 |
+
$key[] = $constant;
|
377 |
+
|
378 |
+
return md5( shuffle( $key ) );
|
379 |
+
|
380 |
}
|
381 |
|
382 |
/**
|
383 |
+
* Get the status of the running backup.
|
384 |
+
*
|
385 |
+
* @access public
|
386 |
+
* @return string
|
387 |
*/
|
388 |
+
private function get_status() {
|
389 |
|
390 |
+
if ( ! file_exists( $this->get_schedule_running_path() ) )
|
391 |
+
return '';
|
|
|
392 |
|
393 |
+
$status = file_get_contents( $this->get_schedule_running_path() );
|
|
|
394 |
|
395 |
+
return $status;
|
|
|
|
|
396 |
|
|
|
397 |
}
|
|
|
398 |
|
399 |
+
/**
|
400 |
+
* Get the path to the backup running file that stores the running backup status
|
401 |
+
*
|
402 |
+
* @access private
|
403 |
+
* @return string
|
404 |
+
*/
|
405 |
+
private function get_schedule_running_path() {
|
406 |
+
return $this->get_path() . '/.backup-running';
|
407 |
+
}
|
408 |
|
409 |
/**
|
410 |
+
* Set the status of the running backup
|
411 |
*
|
412 |
+
* @access public
|
413 |
+
* @param string $message
|
414 |
* @return void
|
415 |
*/
|
416 |
+
private function set_status( $message ) {
|
417 |
|
418 |
+
if ( ! $handle = fopen( $this->get_schedule_running_path(), 'w' ) )
|
419 |
+
return;
|
420 |
|
421 |
+
fwrite( $handle, $message );
|
422 |
|
423 |
+
fclose( $handle );
|
|
|
|
|
424 |
|
425 |
+
}
|
426 |
|
427 |
+
/**
|
428 |
+
* Calculate the size of the backup
|
429 |
+
*
|
430 |
+
* Doesn't account for compression
|
431 |
+
*
|
432 |
+
* @access public
|
433 |
+
* @return string
|
434 |
+
*/
|
435 |
+
public function get_filesize() {
|
436 |
|
437 |
+
$filesize = 0;
|
|
|
|
|
438 |
|
439 |
+
// Only try to calculate once per hour
|
440 |
+
set_transient( $this->filesize_transient, 'Calculating', time() + 60 * 60 );
|
441 |
|
442 |
+
// Don't include database if file only
|
443 |
+
if ( $this->get_type() != 'file' ) {
|
444 |
|
445 |
+
global $wpdb;
|
|
|
|
|
|
|
|
|
446 |
|
447 |
+
$res = $wpdb->get_results( 'SHOW TABLE STATUS FROM `' . DB_NAME . '`', ARRAY_A );
|
|
|
|
|
448 |
|
449 |
+
foreach ( $res as $r )
|
450 |
+
$filesize += (float) $r['Data_length'];
|
451 |
+
|
452 |
+
}
|
453 |
+
|
454 |
+
// Don't include files if database only
|
455 |
+
if ( $this->get_type() != 'database' ) {
|
456 |
+
|
457 |
+
// Get rid of any cached filesizes
|
458 |
+
clearstatcache();
|
459 |
+
|
460 |
+
$excludes = $this->exclude_string( 'regex' );
|
461 |
+
|
462 |
+
foreach ( $this->get_files() as $file ) {
|
463 |
+
|
464 |
+
// Skip dot files, they should only exist on versions of PHP between 5.2.11 -> 5.3
|
465 |
+
if ( method_exists( $file, 'isDot' ) && $file->isDot() )
|
466 |
+
continue;
|
467 |
+
|
468 |
+
if ( ! @realpath( $file->getPathname() ) || ! $file->isReadable() )
|
469 |
+
continue;
|
470 |
+
|
471 |
+
// Excludes
|
472 |
+
if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', parent::conform_dir( $file->getPathname() ) ) ) )
|
473 |
+
continue;
|
474 |
+
|
475 |
+
$filesize += (float) $file->getSize();
|
476 |
+
|
477 |
+
}
|
478 |
+
|
479 |
+
}
|
480 |
|
481 |
+
// Cache for a day
|
482 |
+
set_transient( $this->filesize_transient, $filesize, time() + 60 * 60 * 24 );
|
483 |
|
484 |
+
}
|
485 |
|
|
|
486 |
}
|
|
|
487 |
|
488 |
/**
|
489 |
* Handle the backups API calls
|
493 |
*/
|
494 |
function _wprp_backups_api_call( $action ) {
|
495 |
|
496 |
+
switch( $action ) {
|
497 |
|
|
|
498 |
case 'supports_backups' :
|
499 |
return true;
|
500 |
|
501 |
case 'do_backup' :
|
502 |
+
return WPRP_Backups::get_instance()->do_backup();
|
|
|
503 |
|
504 |
case 'get_backup' :
|
505 |
+
return WPRP_Backups::get_instance()->get_backup();
|
506 |
+
|
|
|
507 |
case 'delete_backup' :
|
508 |
+
return WPRP_Backups::get_instance()->cleanup();
|
509 |
|
510 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
511 |
|
512 |
}
|
513 |
|
514 |
+
/**
|
515 |
+
* Return an array of back meta information
|
516 |
+
*
|
517 |
+
* @return array
|
518 |
+
*/
|
519 |
function _wprp_get_backups_info() {
|
520 |
|
521 |
+
$hm_backup = new WPRP_HM_Backup();
|
522 |
|
523 |
+
return array(
|
524 |
'mysqldump_path' => $hm_backup->get_mysqldump_command_path(),
|
525 |
'zip_path' => $hm_backup->get_zip_command_path(),
|
526 |
+
'estimated_size' => WPRP_Backups::get_instance()->get_estimate_size()
|
527 |
);
|
528 |
|
529 |
+
}
|
530 |
+
|
531 |
+
/**
|
532 |
+
* Calculate the filesize of the site
|
533 |
+
*
|
534 |
+
* The calculated size is stored in a transient
|
535 |
+
*/
|
536 |
+
function wprp_ajax_calculate_backup_size() {
|
537 |
+
|
538 |
+
WPRP_Backups::get_instance()->get_filesize();
|
539 |
+
|
540 |
+
exit;
|
541 |
+
}
|
542 |
+
add_action( 'wp_ajax_nopriv_wprp_calculate_backup_size', 'wprp_ajax_calculate_backup_size' );
|
backupwordpress/hm-backup/hm-backup.php → wprp.hm.backup.php
RENAMED
@@ -5,7 +5,7 @@
|
|
5 |
*
|
6 |
* @version 2.1
|
7 |
*/
|
8 |
-
class
|
9 |
|
10 |
/**
|
11 |
* The path where the backup file should be saved
|
@@ -648,7 +648,9 @@ class HM_Backup {
|
|
648 |
|
649 |
$this->do_action( 'hmbkp_mysqldump_started' );
|
650 |
|
651 |
-
$host =
|
|
|
|
|
652 |
$port = strpos( DB_HOST, ':' ) ? end( explode( ':', DB_HOST ) ) : '';
|
653 |
|
654 |
// Path to the mysqldump executable
|
@@ -683,8 +685,11 @@ class HM_Backup {
|
|
683 |
// Pipe STDERR to STDOUT
|
684 |
$cmd .= ' 2>&1';
|
685 |
|
686 |
-
// Store any returned data in
|
687 |
-
$
|
|
|
|
|
|
|
688 |
|
689 |
$this->verify_mysqldump();
|
690 |
|
@@ -777,15 +782,18 @@ class HM_Backup {
|
|
777 |
|
778 |
// Zip up $this->root with excludes
|
779 |
if ( $this->get_type() !== 'database' && $this->exclude_string( 'zip' ) )
|
780 |
-
$
|
781 |
|
782 |
// Zip up $this->root without excludes
|
783 |
elseif ( $this->get_type() !== 'database' )
|
784 |
-
$
|
785 |
|
786 |
// Add the database dump to the archive
|
787 |
if ( $this->get_type() !== 'file' )
|
788 |
-
$
|
|
|
|
|
|
|
789 |
|
790 |
$this->verify_archive();
|
791 |
|
@@ -800,7 +808,7 @@ class HM_Backup {
|
|
800 |
*/
|
801 |
public function zip_archive() {
|
802 |
|
803 |
-
$this->errors_to_warnings( $this->
|
804 |
$this->archive_method = 'ziparchive';
|
805 |
|
806 |
$this->do_action( 'hmbkp_archive_started' );
|
@@ -823,7 +831,7 @@ class HM_Backup {
|
|
823 |
continue;
|
824 |
|
825 |
// Skip unreadable files
|
826 |
-
if ( ! $file->isReadable() )
|
827 |
continue;
|
828 |
|
829 |
// Excludes
|
@@ -849,10 +857,10 @@ class HM_Backup {
|
|
849 |
$zip->addFile( $this->get_database_dump_filepath(), $this->get_database_dump_filename() );
|
850 |
|
851 |
if ( $zip->status )
|
852 |
-
$this->warning( $this->
|
853 |
|
854 |
if ( $zip->statusSys )
|
855 |
-
$this->warning( $this->
|
856 |
|
857 |
$zip->close();
|
858 |
|
@@ -871,14 +879,14 @@ class HM_Backup {
|
|
871 |
*/
|
872 |
public function pcl_zip() {
|
873 |
|
874 |
-
$this->errors_to_warnings( $this->
|
875 |
$this->archive_method = 'pclzip';
|
876 |
|
877 |
$this->do_action( 'hmbkp_archive_started' );
|
878 |
|
879 |
-
global $
|
880 |
|
881 |
-
$
|
882 |
|
883 |
$this->load_pclzip();
|
884 |
|
@@ -886,15 +894,15 @@ class HM_Backup {
|
|
886 |
|
887 |
// Zip up everything
|
888 |
if ( $this->get_type() !== 'database' )
|
889 |
-
if ( ! $archive->add( $this->get_root(), PCLZIP_OPT_REMOVE_PATH, $this->get_root(), PCLZIP_CB_PRE_ADD, '
|
890 |
-
$this->warning( $this->
|
891 |
|
892 |
// Add the database
|
893 |
if ( $this->get_type() !== 'file' )
|
894 |
if ( ! $archive->add( $this->get_database_dump_filepath(), PCLZIP_OPT_REMOVE_PATH, $this->get_path() ) )
|
895 |
-
$this->warning( $this->
|
896 |
|
897 |
-
unset( $GLOBALS['
|
898 |
|
899 |
$this->verify_archive();
|
900 |
|
@@ -908,14 +916,19 @@ class HM_Backup {
|
|
908 |
if ( ! empty( $this->mysqldump_verified ) )
|
909 |
return true;
|
910 |
|
911 |
-
// mysqldump
|
912 |
-
if (
|
913 |
-
|
|
|
|
|
|
|
|
|
914 |
|
915 |
-
|
916 |
-
|
|
|
917 |
|
918 |
-
return
|
919 |
|
920 |
|
921 |
}
|
@@ -934,9 +947,6 @@ class HM_Backup {
|
|
934 |
if ( ! empty( $this->archive_verified ) )
|
935 |
return true;
|
936 |
|
937 |
-
if ( ! file_exists( $this->get_archive_filepath() ) )
|
938 |
-
$this->error( $this->get_archive_method(), __( 'The backup file was not created', 'hmbkp' ) );
|
939 |
-
|
940 |
// Verify using the zip command if possible
|
941 |
if ( $this->get_zip_command_path() && $this->get_archive_method() === 'zip' ) {
|
942 |
|
@@ -951,13 +961,11 @@ class HM_Backup {
|
|
951 |
if ( $this->get_errors( $this->get_archive_method() ) && file_exists( $this->get_archive_filepath() ) )
|
952 |
unlink( $this->get_archive_filepath() );
|
953 |
|
954 |
-
|
955 |
-
|
956 |
-
|
957 |
-
if ( $this->get_unreadable_file_count() )
|
958 |
-
$this->warning( $this->get_archive_method(), __( 'The following files are unreadable and couldn\'t be backed up: ', 'hmbkp' ) . implode( ', ', $this->get_unreadable_files() ) );
|
959 |
|
960 |
-
return
|
961 |
|
962 |
}
|
963 |
|
@@ -1043,7 +1051,7 @@ class HM_Backup {
|
|
1043 |
continue;
|
1044 |
|
1045 |
// Skip unreadable files
|
1046 |
-
if ( ! $file->isReadable() )
|
1047 |
continue;
|
1048 |
|
1049 |
// Excludes
|
@@ -1080,7 +1088,7 @@ class HM_Backup {
|
|
1080 |
continue;
|
1081 |
|
1082 |
// Skip unreadable files
|
1083 |
-
if ( ! $file->isReadable() )
|
1084 |
continue;
|
1085 |
|
1086 |
// Excludes
|
@@ -1117,7 +1125,7 @@ class HM_Backup {
|
|
1117 |
continue;
|
1118 |
|
1119 |
// Skip unreadable files
|
1120 |
-
if ( ! $file->isReadable() )
|
1121 |
continue;
|
1122 |
|
1123 |
// Excludes
|
@@ -1152,7 +1160,7 @@ class HM_Backup {
|
|
1152 |
continue;
|
1153 |
|
1154 |
// Skip unreadable files
|
1155 |
-
if ( ! $file->isReadable() )
|
1156 |
continue;
|
1157 |
|
1158 |
// Excludes
|
@@ -1184,8 +1192,8 @@ class HM_Backup {
|
|
1184 |
if ( method_exists( $file, 'isDot' ) && $file->isDot() )
|
1185 |
continue;
|
1186 |
|
1187 |
-
|
1188 |
-
|
1189 |
|
1190 |
}
|
1191 |
|
@@ -1212,8 +1220,8 @@ class HM_Backup {
|
|
1212 |
if ( method_exists( $file, 'isDot' ) && $file->isDot() )
|
1213 |
continue;
|
1214 |
|
1215 |
-
|
1216 |
-
|
1217 |
|
1218 |
}
|
1219 |
|
@@ -1610,6 +1618,8 @@ class HM_Backup {
|
|
1610 |
if ( empty( $context ) || empty( $error ) )
|
1611 |
return;
|
1612 |
|
|
|
|
|
1613 |
$this->errors[$context][$_key = md5( implode( ':' , (array) $error ) )] = $error;
|
1614 |
|
1615 |
}
|
@@ -1665,6 +1675,8 @@ class HM_Backup {
|
|
1665 |
if ( empty( $context ) || empty( $warning ) )
|
1666 |
return;
|
1667 |
|
|
|
|
|
1668 |
$this->warnings[$context][$_key = md5( implode( ':' , (array) $warning ) )] = $warning;
|
1669 |
|
1670 |
}
|
@@ -1685,7 +1697,9 @@ class HM_Backup {
|
|
1685 |
|
1686 |
$args = func_get_args();
|
1687 |
|
1688 |
-
|
|
|
|
|
1689 |
|
1690 |
return false;
|
1691 |
|
@@ -1703,16 +1717,16 @@ class HM_Backup {
|
|
1703 |
* @param array &$file
|
1704 |
* @return bool
|
1705 |
*/
|
1706 |
-
function
|
1707 |
|
1708 |
-
global $
|
1709 |
|
1710 |
// Don't try to add unreadable files.
|
1711 |
if ( ! is_readable( $file['filename'] ) || ! file_exists( $file['filename'] ) )
|
1712 |
return false;
|
1713 |
|
1714 |
// Match everything else past the exclude list
|
1715 |
-
elseif ( $
|
1716 |
return false;
|
1717 |
|
1718 |
return true;
|
5 |
*
|
6 |
* @version 2.1
|
7 |
*/
|
8 |
+
class WPRP_HM_Backup {
|
9 |
|
10 |
/**
|
11 |
* The path where the backup file should be saved
|
648 |
|
649 |
$this->do_action( 'hmbkp_mysqldump_started' );
|
650 |
|
651 |
+
$host = explode( ':', DB_HOST );
|
652 |
+
|
653 |
+
$host = reset( $host );
|
654 |
$port = strpos( DB_HOST, ':' ) ? end( explode( ':', DB_HOST ) ) : '';
|
655 |
|
656 |
// Path to the mysqldump executable
|
685 |
// Pipe STDERR to STDOUT
|
686 |
$cmd .= ' 2>&1';
|
687 |
|
688 |
+
// Store any returned data in an error
|
689 |
+
$stderr = shell_exec( $cmd );
|
690 |
+
|
691 |
+
if ( $stderr )
|
692 |
+
$this->error( $this->get_mysqldump_method(), $stderr );
|
693 |
|
694 |
$this->verify_mysqldump();
|
695 |
|
782 |
|
783 |
// Zip up $this->root with excludes
|
784 |
if ( $this->get_type() !== 'database' && $this->exclude_string( 'zip' ) )
|
785 |
+
$stderr = shell_exec( 'cd ' . escapeshellarg( $this->get_root() ) . ' && ' . escapeshellcmd( $this->get_zip_command_path() ) . ' -rq ' . escapeshellarg( $this->get_archive_filepath() ) . ' ./' . ' -x ' . $this->exclude_string( 'zip' ) . ' 2>&1' );
|
786 |
|
787 |
// Zip up $this->root without excludes
|
788 |
elseif ( $this->get_type() !== 'database' )
|
789 |
+
$stderr = shell_exec( 'cd ' . escapeshellarg( $this->get_root() ) . ' && ' . escapeshellcmd( $this->get_zip_command_path() ) . ' -rq ' . escapeshellarg( $this->get_archive_filepath() ) . ' ./' . ' 2>&1' );
|
790 |
|
791 |
// Add the database dump to the archive
|
792 |
if ( $this->get_type() !== 'file' )
|
793 |
+
$stderr = shell_exec( 'cd ' . escapeshellarg( $this->get_path() ) . ' && ' . escapeshellcmd( $this->get_zip_command_path() ) . ' -uq ' . escapeshellarg( $this->get_archive_filepath() ) . ' ' . escapeshellarg( $this->get_database_dump_filename() ) . ' 2>&1' );
|
794 |
+
|
795 |
+
if ( $stderr )
|
796 |
+
$this->warning( $this->get_archive_method(), $stderr );
|
797 |
|
798 |
$this->verify_archive();
|
799 |
|
808 |
*/
|
809 |
public function zip_archive() {
|
810 |
|
811 |
+
$this->errors_to_warnings( $this->get_archive_method() );
|
812 |
$this->archive_method = 'ziparchive';
|
813 |
|
814 |
$this->do_action( 'hmbkp_archive_started' );
|
831 |
continue;
|
832 |
|
833 |
// Skip unreadable files
|
834 |
+
if ( ! @realpath( $file->getPathname() ) || ! $file->isReadable() )
|
835 |
continue;
|
836 |
|
837 |
// Excludes
|
857 |
$zip->addFile( $this->get_database_dump_filepath(), $this->get_database_dump_filename() );
|
858 |
|
859 |
if ( $zip->status )
|
860 |
+
$this->warning( $this->get_archive_method(), $zip->status );
|
861 |
|
862 |
if ( $zip->statusSys )
|
863 |
+
$this->warning( $this->get_archive_method(), $zip->statusSys );
|
864 |
|
865 |
$zip->close();
|
866 |
|
879 |
*/
|
880 |
public function pcl_zip() {
|
881 |
|
882 |
+
$this->errors_to_warnings( $this->get_archive_method() );
|
883 |
$this->archive_method = 'pclzip';
|
884 |
|
885 |
$this->do_action( 'hmbkp_archive_started' );
|
886 |
|
887 |
+
global $_wprp_hmbkp_exclude_string;
|
888 |
|
889 |
+
$_wprp_hmbkp_exclude_string = $this->exclude_string( 'regex' );
|
890 |
|
891 |
$this->load_pclzip();
|
892 |
|
894 |
|
895 |
// Zip up everything
|
896 |
if ( $this->get_type() !== 'database' )
|
897 |
+
if ( ! $archive->add( $this->get_root(), PCLZIP_OPT_REMOVE_PATH, $this->get_root(), PCLZIP_CB_PRE_ADD, 'wprp_hmbkp_pclzip_callback' ) )
|
898 |
+
$this->warning( $this->get_archive_method(), $archive->errorInfo( true ) );
|
899 |
|
900 |
// Add the database
|
901 |
if ( $this->get_type() !== 'file' )
|
902 |
if ( ! $archive->add( $this->get_database_dump_filepath(), PCLZIP_OPT_REMOVE_PATH, $this->get_path() ) )
|
903 |
+
$this->warning( $this->get_archive_method(), $archive->errorInfo( true ) );
|
904 |
|
905 |
+
unset( $GLOBALS['_wprp_hmbkp_exclude_string'] );
|
906 |
|
907 |
$this->verify_archive();
|
908 |
|
916 |
if ( ! empty( $this->mysqldump_verified ) )
|
917 |
return true;
|
918 |
|
919 |
+
// If there are mysqldump errors delete the database dump file as mysqldump will still have written one
|
920 |
+
if ( $this->get_errors( $this->get_mysqldump_method() ) && file_exists( $this->get_database_dump_filepath() ) )
|
921 |
+
unlink( $this->get_database_dump_filepath() );
|
922 |
+
|
923 |
+
// If we have an empty file delete it
|
924 |
+
if ( @filesize( $this->get_database_dump_filepath() ) === 0 )
|
925 |
+
unlink( $this->get_database_dump_filepath() );
|
926 |
|
927 |
+
// If the file still exists then it must be good
|
928 |
+
if ( file_exists( $this->get_database_dump_filepath() ) )
|
929 |
+
return $this->mysqldump_verified = true;
|
930 |
|
931 |
+
return false;
|
932 |
|
933 |
|
934 |
}
|
947 |
if ( ! empty( $this->archive_verified ) )
|
948 |
return true;
|
949 |
|
|
|
|
|
|
|
950 |
// Verify using the zip command if possible
|
951 |
if ( $this->get_zip_command_path() && $this->get_archive_method() === 'zip' ) {
|
952 |
|
961 |
if ( $this->get_errors( $this->get_archive_method() ) && file_exists( $this->get_archive_filepath() ) )
|
962 |
unlink( $this->get_archive_filepath() );
|
963 |
|
964 |
+
// If the archive file still exists assume it's good
|
965 |
+
if ( file_exists( $this->get_archive_filepath() ) )
|
966 |
+
return $this->archive_verified = true;
|
|
|
|
|
967 |
|
968 |
+
return false;
|
969 |
|
970 |
}
|
971 |
|
1051 |
continue;
|
1052 |
|
1053 |
// Skip unreadable files
|
1054 |
+
if ( ! @realpath( $file->getPathname() ) || ! $file->isReadable() )
|
1055 |
continue;
|
1056 |
|
1057 |
// Excludes
|
1088 |
continue;
|
1089 |
|
1090 |
// Skip unreadable files
|
1091 |
+
if ( ! @realpath( $file->getPathname() ) || ! $file->isReadable() )
|
1092 |
continue;
|
1093 |
|
1094 |
// Excludes
|
1125 |
continue;
|
1126 |
|
1127 |
// Skip unreadable files
|
1128 |
+
if ( ! @realpath( $file->getPathname() ) || ! $file->isReadable() )
|
1129 |
continue;
|
1130 |
|
1131 |
// Excludes
|
1160 |
continue;
|
1161 |
|
1162 |
// Skip unreadable files
|
1163 |
+
if ( ! @realpath( $file->getPathname() ) || ! $file->isReadable() )
|
1164 |
continue;
|
1165 |
|
1166 |
// Excludes
|
1192 |
if ( method_exists( $file, 'isDot' ) && $file->isDot() )
|
1193 |
continue;
|
1194 |
|
1195 |
+
if ( ! @realpath( $file->getPathname() ) || ! $file->isReadable() )
|
1196 |
+
$this->unreadable_files[] = $file;
|
1197 |
|
1198 |
}
|
1199 |
|
1220 |
if ( method_exists( $file, 'isDot' ) && $file->isDot() )
|
1221 |
continue;
|
1222 |
|
1223 |
+
if ( ! @realpath( $file->getPathname() ) || ! $file->isReadable() )
|
1224 |
+
$this->get_unreadable_file_count++;
|
1225 |
|
1226 |
}
|
1227 |
|
1618 |
if ( empty( $context ) || empty( $error ) )
|
1619 |
return;
|
1620 |
|
1621 |
+
$this->do_action( 'hmbkp_error' );
|
1622 |
+
|
1623 |
$this->errors[$context][$_key = md5( implode( ':' , (array) $error ) )] = $error;
|
1624 |
|
1625 |
}
|
1675 |
if ( empty( $context ) || empty( $warning ) )
|
1676 |
return;
|
1677 |
|
1678 |
+
$this->do_action( 'hmbkp_warning' );
|
1679 |
+
|
1680 |
$this->warnings[$context][$_key = md5( implode( ':' , (array) $warning ) )] = $warning;
|
1681 |
|
1682 |
}
|
1697 |
|
1698 |
$args = func_get_args();
|
1699 |
|
1700 |
+
array_shift( $args );
|
1701 |
+
|
1702 |
+
$this->warning( 'php', implode( ', ', array_splice( $args, 0, 3 ) ) );
|
1703 |
|
1704 |
return false;
|
1705 |
|
1717 |
* @param array &$file
|
1718 |
* @return bool
|
1719 |
*/
|
1720 |
+
function wprp_hmbkp_pclzip_callback( $event, &$file ) {
|
1721 |
|
1722 |
+
global $_wprp_hmbkp_exclude_string;
|
1723 |
|
1724 |
// Don't try to add unreadable files.
|
1725 |
if ( ! is_readable( $file['filename'] ) || ! file_exists( $file['filename'] ) )
|
1726 |
return false;
|
1727 |
|
1728 |
// Match everything else past the exclude list
|
1729 |
+
elseif ( $_wprp_hmbkp_exclude_string && preg_match( '(' . $_wprp_hmbkp_exclude_string . ')', $file['stored_filename'] ) )
|
1730 |
return false;
|
1731 |
|
1732 |
return true;
|