Version Description
= 3.0.4 =
- Fixes a few minor bugs. Immediate update is recommended.
= 3.0.2 =
- Important: we have dropped support for PHP 5.2, you will not be able to activate BackUpWordPress on a server running PHP versions older than PHP 5.3.29
= 3.0.1 =
- This is a critical update. Fixes a bug in the core backup library. Please update immediately.
Download this release
Release Info
Developer | pauldewouters |
Plugin | BackUpWordPress |
Version | 3.1.0 |
Comparing to | |
See all releases |
Code changes from version 3.0.4 to 3.1.0
- admin/actions.php +71 -31
- admin/constants.php +1 -1
- admin/schedule-sentence.php +24 -13
- admin/schedule-settings.php +1 -1
- admin/server-info.php +43 -15
- admin/upsell.php +12 -3
- assets/hmbkp.css +1 -1
- assets/hmbkp.js +144 -150
- assets/hmbkp.min.css +1 -1
- assets/hmbkp.min.js +1 -1
- backdrop/server.php +2 -2
- backdrop/task.php +2 -2
- backupwordpress.php +305 -245
- classes/class-email.php +1 -1
- classes/class-hmbkp-path.php +360 -0
- classes/class-notices.php +28 -11
- classes/class-requirements.php +36 -5
- classes/class-schedule.php +102 -31
- classes/class-setup.php +164 -0
- classes/wp-cli.php +30 -25
- content/custom/example-org-test-merge-existing-path-complete-2014-12-10-01-08-33.zip +0 -0
- content/custom/example-org-test-merge-existing-path-complete-2014-12-10-01-10-29.zip +0 -0
- content/custom/example-org-test-merge-existing-path-complete-2014-12-10-01-12-39.zip +0 -0
- content/custom/index.html +0 -0
- content/default/index.html +0 -0
- default/index.html +0 -0
- functions/core.php +14 -271
- functions/interface.php +67 -26
- languages/backupwordpress-fr_FR.mo +0 -0
- languages/backupwordpress-fr_FR.po +755 -718
- languages/backupwordpress.pot +183 -141
- readme.txt +68 -3
admin/actions.php
CHANGED
@@ -69,7 +69,7 @@ function hmbkp_request_do_backup() {
|
|
69 |
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
|
70 |
check_ajax_referer( 'hmbkp_run_schedule', 'hmbkp_run_schedule_nonce' );
|
71 |
} else {
|
72 |
-
check_admin_referer( '
|
73 |
}
|
74 |
|
75 |
// Fixes an issue on servers which only allow a single session per client
|
@@ -89,12 +89,14 @@ function hmbkp_request_do_backup() {
|
|
89 |
|
90 |
ignore_user_abort( true );
|
91 |
|
92 |
-
|
93 |
|
94 |
$schedule = new HMBKP_Scheduled_Backup( sanitize_text_field( urldecode( $_GET['hmbkp_schedule_id'] ) ) );
|
95 |
|
96 |
$schedule->run();
|
97 |
|
|
|
|
|
98 |
$errors = array_merge( $schedule->get_errors(), $schedule->get_warnings() );
|
99 |
|
100 |
$error_message = '';
|
@@ -123,7 +125,7 @@ function hmbkp_request_do_backup() {
|
|
123 |
|
124 |
}
|
125 |
add_action( 'wp_ajax_hmbkp_run_schedule', 'hmbkp_request_do_backup' );
|
126 |
-
add_action( '
|
127 |
|
128 |
/**
|
129 |
* Send the download file to the browser and then redirect back to the backups page
|
@@ -142,11 +144,7 @@ function hmbkp_request_download_backup() {
|
|
142 |
|
143 |
if ( $is_apache ) {
|
144 |
|
145 |
-
|
146 |
-
if ( file_exists( hmbkp_path() . '/.htaccess' ) )
|
147 |
-
unlink( hmbkp_path() . '/.htaccess' );
|
148 |
-
|
149 |
-
hmbkp_path();
|
150 |
|
151 |
$url = add_query_arg( 'key', HMBKP_SECURE_KEY, $url );
|
152 |
|
@@ -177,7 +175,7 @@ function hmbkp_request_cancel_backup() {
|
|
177 |
unlink( $schedule->get_schedule_running_path() );
|
178 |
}
|
179 |
|
180 |
-
|
181 |
|
182 |
wp_safe_redirect( hmbkp_get_settings_url(), 303 );
|
183 |
|
@@ -193,7 +191,7 @@ function hmbkp_dismiss_error() {
|
|
193 |
|
194 |
check_admin_referer( 'hmbkp_dismiss_error', 'hmbkp_dismiss_error_nonce' );
|
195 |
|
196 |
-
|
197 |
|
198 |
HMBKP_Notices::get_instance()->clear_all_notices();
|
199 |
|
@@ -537,24 +535,27 @@ add_action( 'load-' . HMBKP_ADMIN_PAGE, 'hmbkp_recalculate_directory_filesize' )
|
|
537 |
|
538 |
function hmbkp_calculate_site_size() {
|
539 |
|
540 |
-
if ( isset(
|
|
|
541 |
$current_schedule = new HMBKP_Scheduled_Backup( sanitize_text_field( $_GET['hmbkp_schedule_id'] ) );
|
|
|
542 |
} else {
|
|
|
543 |
// Refresh the schedules from the database to make sure we have the latest changes
|
544 |
HMBKP_Schedules::get_instance()->refresh_schedules();
|
545 |
|
546 |
$schedules = HMBKP_Schedules::get_instance()->get_schedules();
|
547 |
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
|
|
|
|
|
|
553 |
}
|
554 |
|
555 |
-
// Start calculating
|
556 |
-
$root = new SplFileInfo( $current_schedule->get_root() );
|
557 |
-
$size = $current_schedule->filesize( $root );
|
558 |
}
|
559 |
add_action( 'load-' . HMBKP_ADMIN_PAGE, 'hmbkp_calculate_site_size' );
|
560 |
|
@@ -563,20 +564,43 @@ add_action( 'load-' . HMBKP_ADMIN_PAGE, 'hmbkp_calculate_site_size' );
|
|
563 |
*/
|
564 |
function hmbkp_heartbeat_received( $response, $data ) {
|
565 |
|
566 |
-
|
|
|
|
|
567 |
|
568 |
-
$schedule = new HMBKP_Scheduled_Backup( sanitize_text_field( urldecode( $data['
|
569 |
|
570 |
-
if ( ! $
|
571 |
-
$response['hmbkp_schedule_status'] = 0;
|
572 |
|
573 |
-
|
574 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
575 |
|
576 |
}
|
577 |
|
578 |
-
|
579 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
580 |
return $response;
|
581 |
|
582 |
}
|
@@ -687,6 +711,16 @@ function hmbkp_ajax_cron_test() {
|
|
687 |
|
688 |
check_ajax_referer( 'hmbkp_nonce', 'nonce' );
|
689 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
690 |
if ( defined( 'ALTERNATE_WP_CRON' ) ) {
|
691 |
|
692 |
delete_option( 'hmbkp_wp_cron_test_failed' );
|
@@ -697,17 +731,22 @@ function hmbkp_ajax_cron_test() {
|
|
697 |
|
698 |
}
|
699 |
|
700 |
-
$
|
|
|
|
|
|
|
|
|
|
|
701 |
|
702 |
-
if ( is_wp_error( $
|
703 |
|
704 |
-
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'backupwordpress' ) . '</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 backups. See the %3$s for more details.', 'backupwordpress' ), '<code>wp-cron.php</code>', '<code>' . $
|
705 |
|
706 |
update_option( 'hmbkp_wp_cron_test_failed', true );
|
707 |
|
708 |
-
} elseif ( wp_remote_retrieve_response_code( $
|
709 |
|
710 |
-
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'backupwordpress' ) . '</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 backups. See the %3$s for more details.', 'backupwordpress' ), '<code>wp-cron.php</code>', '<code>' . esc_html( wp_remote_retrieve_response_code( $
|
711 |
|
712 |
update_option( 'hmbkp_wp_cron_test_failed', true );
|
713 |
|
@@ -716,6 +755,7 @@ function hmbkp_ajax_cron_test() {
|
|
716 |
echo 1;
|
717 |
|
718 |
delete_option( 'hmbkp_wp_cron_test_failed' );
|
|
|
719 |
|
720 |
}
|
721 |
|
69 |
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
|
70 |
check_ajax_referer( 'hmbkp_run_schedule', 'hmbkp_run_schedule_nonce' );
|
71 |
} else {
|
72 |
+
check_admin_referer( 'hmbkp_run_schedule', 'hmbkp_run_schedule_nonce' );
|
73 |
}
|
74 |
|
75 |
// Fixes an issue on servers which only allow a single session per client
|
89 |
|
90 |
ignore_user_abort( true );
|
91 |
|
92 |
+
HMBKP_Path::get_instance()->cleanup();
|
93 |
|
94 |
$schedule = new HMBKP_Scheduled_Backup( sanitize_text_field( urldecode( $_GET['hmbkp_schedule_id'] ) ) );
|
95 |
|
96 |
$schedule->run();
|
97 |
|
98 |
+
HMBKP_Notices::get_instance()->clear_all_notices();
|
99 |
+
|
100 |
$errors = array_merge( $schedule->get_errors(), $schedule->get_warnings() );
|
101 |
|
102 |
$error_message = '';
|
125 |
|
126 |
}
|
127 |
add_action( 'wp_ajax_hmbkp_run_schedule', 'hmbkp_request_do_backup' );
|
128 |
+
add_action( 'admin_post_hmbkp_run_schedule', 'hmbkp_request_do_backup' );
|
129 |
|
130 |
/**
|
131 |
* Send the download file to the browser and then redirect back to the backups page
|
144 |
|
145 |
if ( $is_apache ) {
|
146 |
|
147 |
+
HMBKP_Path::get_instance()->protect_path( 'reset' );
|
|
|
|
|
|
|
|
|
148 |
|
149 |
$url = add_query_arg( 'key', HMBKP_SECURE_KEY, $url );
|
150 |
|
175 |
unlink( $schedule->get_schedule_running_path() );
|
176 |
}
|
177 |
|
178 |
+
HMBKP_Path::get_instance()->cleanup();
|
179 |
|
180 |
wp_safe_redirect( hmbkp_get_settings_url(), 303 );
|
181 |
|
191 |
|
192 |
check_admin_referer( 'hmbkp_dismiss_error', 'hmbkp_dismiss_error_nonce' );
|
193 |
|
194 |
+
HMBKP_Path::get_instance()->cleanup();
|
195 |
|
196 |
HMBKP_Notices::get_instance()->clear_all_notices();
|
197 |
|
535 |
|
536 |
function hmbkp_calculate_site_size() {
|
537 |
|
538 |
+
if ( isset( $_GET['hmbkp_schedule_id'] ) ) {
|
539 |
+
|
540 |
$current_schedule = new HMBKP_Scheduled_Backup( sanitize_text_field( $_GET['hmbkp_schedule_id'] ) );
|
541 |
+
|
542 |
} else {
|
543 |
+
|
544 |
// Refresh the schedules from the database to make sure we have the latest changes
|
545 |
HMBKP_Schedules::get_instance()->refresh_schedules();
|
546 |
|
547 |
$schedules = HMBKP_Schedules::get_instance()->get_schedules();
|
548 |
|
549 |
+
$current_schedule = reset( $schedules );
|
550 |
+
|
551 |
+
}
|
552 |
+
|
553 |
+
if ( ! $current_schedule->is_site_size_cached() ) {
|
554 |
+
// Start calculating
|
555 |
+
$root = new SplFileInfo( $current_schedule->get_root() );
|
556 |
+
$size = $current_schedule->filesize( $root );
|
557 |
}
|
558 |
|
|
|
|
|
|
|
559 |
}
|
560 |
add_action( 'load-' . HMBKP_ADMIN_PAGE, 'hmbkp_calculate_site_size' );
|
561 |
|
564 |
*/
|
565 |
function hmbkp_heartbeat_received( $response, $data ) {
|
566 |
|
567 |
+
$response['heartbeat_interval'] = 'fast';
|
568 |
+
|
569 |
+
if ( ! empty( $data['hmbkp_schedule_id'] ) ) {
|
570 |
|
571 |
+
$schedule = new HMBKP_Scheduled_Backup( sanitize_text_field( urldecode( $data['hmbkp_schedule_id'] ) ) );
|
572 |
|
573 |
+
if ( ! empty( $data['hmbkp_is_in_progress'] ) ) {
|
|
|
574 |
|
575 |
+
if ( ! $schedule->get_status() ) {
|
576 |
+
$response['hmbkp_schedule_status'] = 0;
|
577 |
+
|
578 |
+
// Slow the heartbeat back down
|
579 |
+
$response['heartbeat_interval'] = 'slow';
|
580 |
+
|
581 |
+
} else {
|
582 |
+
$response['hmbkp_schedule_status'] = hmbkp_schedule_status( $schedule, false );
|
583 |
+
}
|
584 |
|
585 |
}
|
586 |
|
587 |
+
if ( ! empty( $data['hmbkp_client_request'] ) ) {
|
588 |
|
589 |
+
// Pass the site size to be displayed when it's ready.
|
590 |
+
if ( $schedule->is_site_size_cached() ) {
|
591 |
+
|
592 |
+
$response['hmbkp_site_size'] = $schedule->get_formatted_site_size();
|
593 |
+
|
594 |
+
ob_start();
|
595 |
+
require( HMBKP_PLUGIN_PATH . 'admin/schedule-form-excludes.php' );
|
596 |
+
$response['hmbkp_dir_sizes'] = ob_get_clean();
|
597 |
+
|
598 |
+
// Slow the heartbeat back down
|
599 |
+
$response['heartbeat_interval'] = 'slow';
|
600 |
+
}
|
601 |
+
}
|
602 |
+
|
603 |
+
}
|
604 |
return $response;
|
605 |
|
606 |
}
|
711 |
|
712 |
check_ajax_referer( 'hmbkp_nonce', 'nonce' );
|
713 |
|
714 |
+
// Only run the test once per week
|
715 |
+
if ( get_transient( 'hmbkp_wp_cron_test_beacon' ) ) {
|
716 |
+
|
717 |
+
echo 1;
|
718 |
+
|
719 |
+
die;
|
720 |
+
|
721 |
+
}
|
722 |
+
|
723 |
+
// Skip the test if they are using Alternate Cron
|
724 |
if ( defined( 'ALTERNATE_WP_CRON' ) ) {
|
725 |
|
726 |
delete_option( 'hmbkp_wp_cron_test_failed' );
|
731 |
|
732 |
}
|
733 |
|
734 |
+
$url = site_url( 'wp-cron.php' );
|
735 |
+
|
736 |
+
// Attempt to load wp-cron.php 3 times, if we get the same error each time then inform the user.
|
737 |
+
$response1 = wp_remote_head( $url, array( 'timeout' => 30 ) );
|
738 |
+
$response2 = wp_remote_head( $url, array( 'timeout' => 30 ) );
|
739 |
+
$response3 = wp_remote_head( $url, array( 'timeout' => 30 ) );
|
740 |
|
741 |
+
if ( is_wp_error( $response1 ) && is_wp_error( $response2 ) && is_wp_error( $response3 ) ) {
|
742 |
|
743 |
+
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'backupwordpress' ) . '</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 backups. See the %3$s for more details.', 'backupwordpress' ), '<code>wp-cron.php</code>', '<code>' . $response1->get_error_message() . '</code>', '<a href="http://wordpress.org/extend/plugins/backupwordpress/faq/">FAQ</a>' ) . '</p></div>';
|
744 |
|
745 |
update_option( 'hmbkp_wp_cron_test_failed', true );
|
746 |
|
747 |
+
} elseif ( ! in_array( 200, array_map( 'wp_remote_retrieve_response_code', array( $response1, $response2, $response3 ) ) ) ) {
|
748 |
|
749 |
+
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress has detected a problem.', 'backupwordpress' ) . '</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 backups. See the %3$s for more details.', 'backupwordpress' ), '<code>wp-cron.php</code>', '<code>' . esc_html( wp_remote_retrieve_response_code( $response1 ) ) . ' ' . esc_html( get_status_header_desc( wp_remote_retrieve_response_code( $response1 ) ) ) . '</code>', '<a href="http://wordpress.org/extend/plugins/backupwordpress/faq/">FAQ</a>' ) . '</p></div>';
|
750 |
|
751 |
update_option( 'hmbkp_wp_cron_test_failed', true );
|
752 |
|
755 |
echo 1;
|
756 |
|
757 |
delete_option( 'hmbkp_wp_cron_test_failed' );
|
758 |
+
set_transient( 'hmbkp_wp_cron_test_beacon', 1, WEEK_IN_SECONDS );
|
759 |
|
760 |
}
|
761 |
|
admin/constants.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
<p><?php printf( __( 'You\'ve set it to: %s', 'backupwordpress' ), '<code>' . HMBKP_PATH . '</code>' ); ?></p>
|
15 |
<?php } ?>
|
16 |
|
17 |
-
<p><?php printf( __( 'The path to folder you would like to store your backup files in, defaults to %s.', 'backupwordpress' ), '<code>' . esc_html(
|
18 |
|
19 |
</td>
|
20 |
|
14 |
<p><?php printf( __( 'You\'ve set it to: %s', 'backupwordpress' ), '<code>' . HMBKP_PATH . '</code>' ); ?></p>
|
15 |
<?php } ?>
|
16 |
|
17 |
+
<p><?php printf( __( 'The path to folder you would like to store your backup files in, defaults to %s.', 'backupwordpress' ), '<code>' . esc_html( hmbkp_path() ) . '</code>' ); ?> <?php _e( 'e.g.', 'backupwordpress' ); ?> <code>define( 'HMBKP_PATH', '/home/willmot/backups' );</code></p>
|
18 |
|
19 |
</td>
|
20 |
|
admin/schedule-sentence.php
CHANGED
@@ -1,17 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
|
4 |
-
$cached = $schedule->is_site_size_cached();
|
5 |
-
|
6 |
-
if ( 'database' === $schedule->get_type() ) {
|
7 |
-
$cached = true;
|
8 |
-
}
|
9 |
-
|
10 |
-
$filesize = $cached ? '(<code title="' . __( 'Backups will be compressed and should be smaller than this.', 'backupwordpress' ) . '">' . esc_attr( $schedule->get_formatted_site_size() ) . '</code>)' : '(<code class="calculating" title="' . __( 'this shouldn\'t take long…', 'backupwordpress' ) . '">' . __( 'calculating the size of your backup…', 'backupwordpress' ) . '</code>)';
|
11 |
-
|
12 |
-
if ( isset( $_GET['hmbkp_add_schedule'] ) ) {
|
13 |
-
$filesize = '';
|
14 |
-
}
|
15 |
|
16 |
// Backup Type
|
17 |
$type = strtolower( hmbkp_human_get_type( $schedule->get_type() ) );
|
@@ -143,4 +132,26 @@ if ( ! empty( $services ) && count( $services ) > 1 ) {
|
|
143 |
|
144 |
<?php require( HMBKP_PLUGIN_PATH . 'admin/schedule-settings.php' ); ?>
|
145 |
|
146 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
|
3 |
+
$filesize = hmbkp_get_site_size_text( $schedule );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
5 |
// Backup Type
|
6 |
$type = strtolower( hmbkp_human_get_type( $schedule->get_type() ) );
|
132 |
|
133 |
<?php require( HMBKP_PLUGIN_PATH . 'admin/schedule-settings.php' ); ?>
|
134 |
|
135 |
+
</div>
|
136 |
+
|
137 |
+
<?php
|
138 |
+
|
139 |
+
/**
|
140 |
+
* Returns a formatted string containing the calculated total site size or a message
|
141 |
+
* to indicate it is being calculated.
|
142 |
+
*
|
143 |
+
* @param HMBKP_Scheduled_Backup $schedule
|
144 |
+
*
|
145 |
+
* @return string
|
146 |
+
*/
|
147 |
+
function hmbkp_get_site_size_text( HMBKP_Scheduled_Backup $schedule ) {
|
148 |
+
|
149 |
+
if ( isset( $_GET['hmbkp_add_schedule'] ) ) {
|
150 |
+
return '';
|
151 |
+
} elseif ( ( 'database' === $schedule->get_type() ) || $schedule->is_site_size_cached() ) {
|
152 |
+
return sprintf( '(<code title="' . __( 'Backups will be compressed and should be smaller than this.', 'backupwordpress' ) . '">%s</code>)', esc_attr( $schedule->get_formatted_site_size() ) );
|
153 |
+
} else {
|
154 |
+
return sprintf('(<code class="calculating" title="' . __( 'this shouldn\'t take long…', 'backupwordpress' ) . '">' . __( 'calculating the size of your backup…', 'backupwordpress' ) . '</code>)');
|
155 |
+
}
|
156 |
+
|
157 |
+
}
|
admin/schedule-settings.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
<div class="hmbkp-schedule-actions row-actions">
|
4 |
|
5 |
-
<a class="hmbkp-run" href="<?php echo esc_url( wp_nonce_url( add_query_arg( array( 'action' => 'hmbkp_run_schedule', 'hmbkp_schedule_id' => $schedule->get_id() ),
|
6 |
|
7 |
<a href="<?php echo esc_url( add_query_arg( array( 'action' => 'hmbkp_edit_schedule', 'hmbkp_panel' => 'hmbkp_edit_schedule_settings', 'hmbkp_schedule_id' => $schedule->get_id() ), hmbkp_get_settings_url() ), 'hmbkp-edit-schedule' ); ?>"><?php _e( 'Settings', 'backupwordpress' ); ?></a> |
|
8 |
|
2 |
|
3 |
<div class="hmbkp-schedule-actions row-actions">
|
4 |
|
5 |
+
<a class="hmbkp-run" href="<?php echo esc_url( wp_nonce_url( add_query_arg( array( 'action' => 'hmbkp_run_schedule', 'hmbkp_schedule_id' => $schedule->get_id() ), admin_url( 'admin-post.php' ) ), 'hmbkp_run_schedule', 'hmbkp_run_schedule_nonce' ) ); ?>"><?php _e( 'Run now', 'backupwordpress' ); ?></a> |
|
6 |
|
7 |
<a href="<?php echo esc_url( add_query_arg( array( 'action' => 'hmbkp_edit_schedule', 'hmbkp_panel' => 'hmbkp_edit_schedule_settings', 'hmbkp_schedule_id' => $schedule->get_id() ), hmbkp_get_settings_url() ), 'hmbkp-edit-schedule' ); ?>"><?php _e( 'Settings', 'backupwordpress' ); ?></a> |
|
8 |
|
admin/server-info.php
CHANGED
@@ -8,30 +8,58 @@
|
|
8 |
|
9 |
<?php foreach ( HMBKP_Requirements::get_requirements( $group ) as $requirement ) : ?>
|
10 |
|
11 |
-
<?php if ( ( is_string( $requirement->raw_result() ) && strlen( $requirement->result() ) < 20 ) || is_bool( $requirement->raw_result() ) )
|
12 |
|
13 |
-
|
14 |
|
15 |
-
|
16 |
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
|
21 |
-
|
22 |
|
23 |
-
<?php
|
24 |
|
25 |
-
|
26 |
|
27 |
-
|
28 |
-
<?php echo esc_html( $requirement->name() ); ?>
|
29 |
-
<pre><?php echo esc_html( $requirement->result() ); ?></pre>
|
30 |
-
</td>
|
31 |
|
32 |
-
|
|
|
33 |
|
34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
|
36 |
<?php endforeach; ?>
|
37 |
|
8 |
|
9 |
<?php foreach ( HMBKP_Requirements::get_requirements( $group ) as $requirement ) : ?>
|
10 |
|
11 |
+
<?php if ( ( is_string( $requirement->raw_result() ) && strlen( $requirement->result() ) < 20 ) || is_bool( $requirement->raw_result() ) ) : ?>
|
12 |
|
13 |
+
<tr>
|
14 |
|
15 |
+
<td><?php echo esc_html( $requirement->name() ); ?></td>
|
16 |
|
17 |
+
<td>
|
18 |
+
<code><?php echo esc_html( $requirement->result() ); ?></code>
|
19 |
+
</td>
|
20 |
|
21 |
+
</tr>
|
22 |
|
23 |
+
<?php elseif ( is_array( $requirement->raw_result() ) ) : ?>
|
24 |
|
25 |
+
<tr>
|
26 |
|
27 |
+
<td><?php echo esc_html( $requirement->name() ); ?></td>
|
|
|
|
|
|
|
28 |
|
29 |
+
<td>
|
30 |
+
<ul>
|
31 |
|
32 |
+
<?php foreach ( $requirement->raw_result() as $key => $item ) : ?>
|
33 |
+
|
34 |
+
<?php if ( is_array( $item ) ) : ?>
|
35 |
+
|
36 |
+
<pre><?php var_export( $item ); ?></pre>
|
37 |
+
|
38 |
+
<?php else : ?>
|
39 |
+
|
40 |
+
<li>
|
41 |
+
<?php printf( __( '%1$s - %2$s' ), esc_html( $key ), esc_html( $item ) ); ?>
|
42 |
+
</li>
|
43 |
+
|
44 |
+
<?php endif; ?>
|
45 |
+
<?php endforeach; ?>
|
46 |
+
|
47 |
+
</ul>
|
48 |
+
</td>
|
49 |
+
</tr>
|
50 |
+
|
51 |
+
<?php else : ?>
|
52 |
+
|
53 |
+
<tr>
|
54 |
+
|
55 |
+
<td colspan="2">
|
56 |
+
<?php echo esc_html( $requirement->name() ); ?>
|
57 |
+
<pre><?php echo esc_html( $requirement->result() ); ?></pre>
|
58 |
+
</td>
|
59 |
+
|
60 |
+
</tr>
|
61 |
+
|
62 |
+
<?php endif; ?>
|
63 |
|
64 |
<?php endforeach; ?>
|
65 |
|
admin/upsell.php
CHANGED
@@ -7,11 +7,20 @@
|
|
7 |
<a target="_blank" href="http://bwp.hmn.md/downloads/backupwordpress-to-google-drive/">Google Drive</a> |
|
8 |
<a target="_blank" href="http://bwp.hmn.md/downloads/backupwordpress-to-amazon-s3/">Amazon S3</a> |
|
9 |
<a target="_blank" href="http://bwp.hmn.md/downloads/backupwordpress-to-ftp/">FTP</a> |
|
10 |
-
<a target="_blank" href="http://bwp.hmn.md/downloads/backupwordpress-to-rackspace-cloud/"
|
11 |
<a target="_blank" href="http://bwp.hmn.md/downloads/backupwordpress-to-windows-azure/">Windows Azure</a> |
|
12 |
<a target="_blank" href="http://bwp.hmn.md/downloads/backupwordpress-to-dreamobjects/">DreamObjects</a>
|
13 |
-
</span
|
14 |
|
15 |
-
|
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
</div>
|
7 |
<a target="_blank" href="http://bwp.hmn.md/downloads/backupwordpress-to-google-drive/">Google Drive</a> |
|
8 |
<a target="_blank" href="http://bwp.hmn.md/downloads/backupwordpress-to-amazon-s3/">Amazon S3</a> |
|
9 |
<a target="_blank" href="http://bwp.hmn.md/downloads/backupwordpress-to-ftp/">FTP</a> |
|
10 |
+
<a target="_blank" href="http://bwp.hmn.md/downloads/backupwordpress-to-rackspace-cloud/">Rackspace Cloud</a> |
|
11 |
<a target="_blank" href="http://bwp.hmn.md/downloads/backupwordpress-to-windows-azure/">Windows Azure</a> |
|
12 |
<a target="_blank" href="http://bwp.hmn.md/downloads/backupwordpress-to-dreamobjects/">DreamObjects</a>
|
13 |
+
</span>
|
14 |
|
15 |
+
<?php
|
16 |
|
17 |
+
printf(
|
18 |
+
__( '%1$sor buy the %2$sDeveloper Bundle%3$s now for only $99 (all Destinations & Unlimited Sites)%4$s', 'backupwordpress' ),
|
19 |
+
'<span>',
|
20 |
+
'<a target="_blank" href="https://bwp.hmn.md/checkout?edd_action=add_to_cart&download_id=36">',
|
21 |
+
'</a>',
|
22 |
+
'</span>'
|
23 |
+
);
|
24 |
+
|
25 |
+
?>
|
26 |
</div>
|
assets/hmbkp.css
CHANGED
@@ -61,7 +61,7 @@ thead td { border-bottom: 1px solid #e1e1e1; }
|
|
61 |
.server-info { overflow: auto; max-height: 50%; outline: black 1px solid; }
|
62 |
.server-info pre { max-height: 100px; overflow-x:hidden; }
|
63 |
|
64 |
-
#intercom-info { background: #0074a2; color:#fff; display: inline-block;}
|
65 |
#intercom-info:hover { background: #2ea2cc; color:#fff;}
|
66 |
#intercom-info span.dashicons-admin-users { position: relative; display:inline-block; vertical-align: middle; top:-2px; }
|
67 |
|
61 |
.server-info { overflow: auto; max-height: 50%; outline: black 1px solid; }
|
62 |
.server-info pre { max-height: 100px; overflow-x:hidden; }
|
63 |
|
64 |
+
#intercom-info { background: #0074a2; color:#fff; display: inline-block; margin-bottom: -3px; padding: 3px 8px; }
|
65 |
#intercom-info:hover { background: #2ea2cc; color:#fff;}
|
66 |
#intercom-info span.dashicons-admin-users { position: relative; display:inline-block; vertical-align: middle; top:-2px; }
|
67 |
|
assets/hmbkp.js
CHANGED
@@ -1,218 +1,212 @@
|
|
1 |
-
jQuery(
|
2 |
|
3 |
-
|
4 |
-
|
5 |
|
6 |
-
|
7 |
|
8 |
-
|
9 |
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
|
14 |
-
|
15 |
|
16 |
-
|
17 |
-
|
18 |
|
19 |
-
|
20 |
-
|
|
|
21 |
|
22 |
-
|
23 |
|
24 |
-
|
25 |
-
|
26 |
|
27 |
-
|
28 |
-
|
|
|
29 |
|
30 |
-
|
31 |
|
32 |
-
|
33 |
-
|
34 |
|
35 |
-
|
36 |
-
|
|
|
37 |
|
38 |
-
|
39 |
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
|
49 |
-
|
50 |
-
|
51 |
|
52 |
-
|
53 |
|
54 |
-
|
55 |
|
56 |
-
|
57 |
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
|
|
|
|
|
|
|
|
62 |
|
63 |
-
|
64 |
-
else {
|
65 |
-
$( '.calculating' ).remove();
|
66 |
-
}
|
67 |
|
68 |
-
|
69 |
-
|
70 |
|
71 |
-
|
72 |
-
$( '.calculating' ).remove();
|
73 |
|
74 |
-
|
75 |
-
}
|
76 |
|
77 |
-
|
78 |
-
$( document ).on( 'click', '.hmbkp-run', function( e ) {
|
79 |
|
80 |
-
|
81 |
|
82 |
-
|
|
|
83 |
|
84 |
-
|
85 |
|
86 |
-
|
87 |
-
ajaxurl,
|
88 |
-
{ 'hmbkp_run_schedule_nonce': hmbkp.hmbkp_run_schedule_nonce, 'action' : 'hmbkp_run_schedule', 'hmbkp_schedule_id' : scheduleId }
|
89 |
-
).done( function( data ) {
|
90 |
|
91 |
-
|
|
|
|
|
|
|
92 |
|
93 |
-
|
94 |
-
} ).fail( function( jqXHR, textStatus ) {
|
95 |
|
96 |
-
|
|
|
97 |
|
98 |
-
|
|
|
|
|
|
|
99 |
|
100 |
-
|
|
|
|
|
|
|
101 |
|
102 |
-
|
|
|
103 |
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
} );
|
110 |
|
111 |
-
|
112 |
-
$( document ).on( 'heartbeat-tick', function( e, data ) {
|
113 |
|
114 |
-
|
115 |
-
if ( data['hmbkp_schedule_status'] === 0 && ! $( '.hmbkp-error' ).size() ) {
|
116 |
-
location.reload( true );
|
117 |
-
}
|
118 |
|
119 |
-
|
120 |
-
if ( data['hmbkp_schedule_status'] !== 0 ) {
|
121 |
-
$( '.hmbkp-status' ).replaceWith( data['hmbkp_schedule_status'] );
|
122 |
-
}
|
123 |
|
124 |
-
|
125 |
|
126 |
-
|
|
|
|
|
127 |
|
128 |
-
|
129 |
|
130 |
-
|
|
|
|
|
131 |
|
132 |
-
|
133 |
-
|
134 |
-
|
|
|
|
|
|
|
135 |
|
136 |
-
|
|
|
|
|
|
|
|
|
137 |
|
138 |
-
|
139 |
-
|
140 |
-
|
|
|
|
|
|
|
|
|
141 |
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
|
149 |
-
|
150 |
-
settingFields.hide();
|
151 |
-
scheduleSettingFields.show();
|
152 |
-
twiceDailyNote.show();
|
153 |
-
break;
|
154 |
-
|
155 |
-
case 'hmbkp_weekly' : // fall through
|
156 |
-
case 'hmbkp_fortnightly' :
|
157 |
-
settingFields.hide();
|
158 |
-
jQuery( '#start-day' ).show();
|
159 |
-
scheduleSettingFields.show();
|
160 |
-
twiceDailyNote.hide();
|
161 |
-
break;
|
162 |
-
|
163 |
-
case 'hmbkp_monthly' :
|
164 |
-
settingFields.hide();
|
165 |
-
scheduleSettingFields.show();
|
166 |
-
jQuery( '#start-date' ).show();
|
167 |
-
twiceDailyNote.hide();
|
168 |
-
break;
|
169 |
-
|
170 |
-
}
|
171 |
|
172 |
}
|
173 |
|
174 |
function hmbkpCatchResponseAndOfferToEmail( data ) {
|
175 |
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
|
181 |
-
|
182 |
-
|
183 |
|
184 |
-
|
185 |
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
|
191 |
-
|
192 |
return;
|
193 |
} else {
|
194 |
-
location.reload(true);
|
195 |
}
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
}
|
200 |
|
201 |
-
|
202 |
|
203 |
-
|
204 |
|
205 |
-
|
206 |
|
207 |
-
|
208 |
-
ajaxurl,
|
209 |
-
{ 'nonce' : hmbkp.nonce, 'action' : 'hmbkp_email_error', 'hmbkp_error' : data },
|
210 |
-
function( data ) {
|
211 |
-
//jQuery.colorbox.close();
|
212 |
-
}
|
213 |
|
214 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
215 |
|
216 |
-
|
217 |
|
218 |
}
|
1 |
+
jQuery(document).ready(function ( $ ) {
|
2 |
|
3 |
+
// Don't ever cache ajax requests
|
4 |
+
$.ajaxSetup( {'cache': false} );
|
5 |
|
6 |
+
if ( $( 'select#hmbkp_schedule_recurrence_type' ).size() ) {
|
7 |
|
8 |
+
hmbkpToggleScheduleFields( $( 'select#hmbkp_schedule_recurrence_type' ).val() );
|
9 |
|
10 |
+
$( document ).on( 'change', 'select#hmbkp_schedule_recurrence_type', function () {
|
11 |
+
hmbkpToggleScheduleFields( $( this ).val() );
|
12 |
+
});
|
13 |
|
14 |
+
}
|
15 |
|
16 |
+
// Show delete confirm message for delete schedule
|
17 |
+
$( document ).on( 'click', '.hmbkp-schedule-actions .delete-action', function ( e ) {
|
18 |
|
19 |
+
if ( ! confirm( hmbkp.delete_schedule ) ) {
|
20 |
+
e.preventDefault();
|
21 |
+
}
|
22 |
|
23 |
+
} );
|
24 |
|
25 |
+
// Show delete confirm message for delete backup
|
26 |
+
$( document ).on( 'click', '.hmbkp_manage_backups_row .delete-action', function ( e ) {
|
27 |
|
28 |
+
if ( ! confirm(hmbkp.delete_backup ) ) {
|
29 |
+
e.preventDefault();
|
30 |
+
}
|
31 |
|
32 |
+
} );
|
33 |
|
34 |
+
// Show delete confirm message for remove exclude rule
|
35 |
+
$( document ).on( 'click', '.hmbkp-edit-schedule-excludes-form .delete-action', function ( e ) {
|
36 |
|
37 |
+
if ( ! confirm(hmbkp.remove_exclude_rule ) ) {
|
38 |
+
e.preventDefault();
|
39 |
+
}
|
40 |
|
41 |
+
});
|
42 |
|
43 |
+
// Test the cron response using ajax
|
44 |
+
$.post( ajaxurl, {'nonce': hmbkp.nonce, 'action': 'hmbkp_cron_test'},
|
45 |
+
function ( data ) {
|
46 |
+
if ( data !== '1' ) {
|
47 |
+
$( '.wrap > h2' ).after( data );
|
48 |
+
}
|
49 |
+
}
|
50 |
+
);
|
51 |
|
52 |
+
// Run a backup
|
53 |
+
$( document ).on( 'click', '.hmbkp-run', function ( e ) {
|
54 |
|
55 |
+
$( this ).closest( '.hmbkp-schedule-sentence' ).addClass('hmbkp-running' );
|
56 |
|
57 |
+
$( '.hmbkp-error' ).removeClass( 'hmbkp-error' );
|
58 |
|
59 |
+
var scheduleId = $( '[data-hmbkp-schedule-id]' ).attr( 'data-hmbkp-schedule-id' );
|
60 |
|
61 |
+
var ajaxRequest = $.get(
|
62 |
+
ajaxurl,
|
63 |
+
{
|
64 |
+
'hmbkp_run_schedule_nonce': hmbkp.hmbkp_run_schedule_nonce,
|
65 |
+
'action': 'hmbkp_run_schedule',
|
66 |
+
'hmbkp_schedule_id': scheduleId
|
67 |
+
}
|
68 |
+
).done( function ( data ) {
|
69 |
|
70 |
+
hmbkpCatchResponseAndOfferToEmail( data );
|
|
|
|
|
|
|
71 |
|
72 |
+
// Redirect back on error
|
73 |
+
}).fail( function ( jqXHR ) {
|
74 |
|
75 |
+
hmbkpCatchResponseAndOfferToEmail( jqXHR.responseText );
|
|
|
76 |
|
77 |
+
});
|
|
|
78 |
|
79 |
+
e.preventDefault();
|
|
|
80 |
|
81 |
+
});
|
82 |
|
83 |
+
// Send the schedule id with the heartbeat
|
84 |
+
$( document ).on( 'heartbeat-send', function ( e, data ) {
|
85 |
|
86 |
+
data.hmbkp_schedule_id = $( '[data-hmbkp-schedule-id]' ).attr( 'data-hmbkp-schedule-id' );
|
87 |
|
88 |
+
if ( $( '.hmbkp-schedule-sentence.hmbkp-running' ).size() ) {
|
|
|
|
|
|
|
89 |
|
90 |
+
data.hmbkp_is_in_progress = true;
|
91 |
+
} else {
|
92 |
+
data.hmbkp_client_request = 'site_size';
|
93 |
+
}
|
94 |
|
95 |
+
} );
|
|
|
96 |
|
97 |
+
// Update schedule status on heartbeat tick
|
98 |
+
$( document ).on( 'heartbeat-tick', function ( e, data ) {
|
99 |
|
100 |
+
// If the schedule has finished then reload the page
|
101 |
+
if ( data.hmbkp_schedule_status === 0 && ! $( '.hmbkp-error' ).size() ) {
|
102 |
+
location.reload(true);
|
103 |
+
}
|
104 |
|
105 |
+
// If the schedule is still running then update the schedule status
|
106 |
+
if ( ( data.hmbkp_schedule_status !== 0 ) && ( data.hmbkp_schedule_status !== undefined ) ) {
|
107 |
+
$( '.hmbkp-status' ).replaceWith( data.hmbkp_schedule_status );
|
108 |
+
}
|
109 |
|
110 |
+
if ( ( data.hmbkp_site_size !== undefined ) && ( $( 'code.calculating' ).size() ) ) {
|
111 |
+
$( 'code.calculating' ).text( data.hmbkp_site_size );
|
112 |
|
113 |
+
var excludes = $( '.hmbkp-exclude-settings' );
|
114 |
+
if ( excludes.size() ) {
|
115 |
+
excludes.replaceWith( data.hmbkp_dir_sizes );
|
116 |
+
}
|
117 |
+
}
|
|
|
118 |
|
119 |
+
});
|
|
|
120 |
|
121 |
+
});
|
|
|
|
|
|
|
122 |
|
123 |
+
function hmbkpToggleScheduleFields( recurrence ) {
|
|
|
|
|
|
|
124 |
|
125 |
+
recurrence = ( typeof recurrence !== 'undefined' ) ? recurrence : 'manually';
|
126 |
|
127 |
+
var settingFields = jQuery( '.recurring-setting' );
|
128 |
+
var scheduleSettingFields = jQuery( '#schedule-start' );
|
129 |
+
var twiceDailyNote = jQuery( 'p.twice-js' );
|
130 |
|
131 |
+
switch ( recurrence ) {
|
132 |
|
133 |
+
case 'manually':
|
134 |
+
settingFields.hide();
|
135 |
+
break;
|
136 |
|
137 |
+
case 'hmbkp_hourly' : // fall through
|
138 |
+
case 'hmbkp_daily' :
|
139 |
+
settingFields.hide();
|
140 |
+
scheduleSettingFields.show();
|
141 |
+
twiceDailyNote.hide();
|
142 |
+
break;
|
143 |
|
144 |
+
case 'hmbkp_twicedaily' :
|
145 |
+
settingFields.hide();
|
146 |
+
scheduleSettingFields.show();
|
147 |
+
twiceDailyNote.show();
|
148 |
+
break;
|
149 |
|
150 |
+
case 'hmbkp_weekly' : // fall through
|
151 |
+
case 'hmbkp_fortnightly' :
|
152 |
+
settingFields.hide();
|
153 |
+
jQuery('#start-day').show();
|
154 |
+
scheduleSettingFields.show();
|
155 |
+
twiceDailyNote.hide();
|
156 |
+
break;
|
157 |
|
158 |
+
case 'hmbkp_monthly' :
|
159 |
+
settingFields.hide();
|
160 |
+
scheduleSettingFields.show();
|
161 |
+
jQuery('#start-date').show();
|
162 |
+
twiceDailyNote.hide();
|
163 |
+
break;
|
164 |
|
165 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
|
167 |
}
|
168 |
|
169 |
function hmbkpCatchResponseAndOfferToEmail( data ) {
|
170 |
|
171 |
+
// Backup Succeeded
|
172 |
+
if ( ! data || data === 0 ) {
|
173 |
+
location.reload( true );
|
174 |
+
}
|
175 |
|
176 |
+
// The backup failed, show the error and offer to have it emailed back
|
177 |
+
else {
|
178 |
|
179 |
+
jQuery( '.hmbkp-schedule-sentence.hmbkp-running' ).removeClass( 'hmbkp-running' ).addClass( 'hmbkp-error' );
|
180 |
|
181 |
+
jQuery.post(
|
182 |
+
ajaxurl,
|
183 |
+
{'nonce': hmbkp.nonce, 'action': 'hmbkp_backup_error', 'hmbkp_error': data},
|
184 |
+
function ( data ) {
|
185 |
|
186 |
+
if ( ! data || data === 0 ) {
|
187 |
return;
|
188 |
} else {
|
189 |
+
location.reload( true );
|
190 |
}
|
191 |
+
}
|
192 |
+
);
|
|
|
|
|
193 |
|
194 |
+
}
|
195 |
|
196 |
+
jQuery( document ).one( 'click', '.hmbkp_send_error_via_email', function ( e ) {
|
197 |
|
198 |
+
e.preventDefault();
|
199 |
|
200 |
+
jQuery( this ).addClass( 'hmbkp-ajax-loading' ).attr( 'disabled', 'disabled' );
|
|
|
|
|
|
|
|
|
|
|
201 |
|
202 |
+
jQuery.post(
|
203 |
+
ajaxurl,
|
204 |
+
{'nonce': hmbkp.nonce, 'action': 'hmbkp_email_error', 'hmbkp_error': data},
|
205 |
+
function () {
|
206 |
+
//jQuery.colorbox.close();
|
207 |
+
}
|
208 |
+
);
|
209 |
|
210 |
+
});
|
211 |
|
212 |
}
|
assets/hmbkp.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.hmbkp_active td:first-child>code:before{content:"\00a0 \2713 ";font-size:11px}.hmbkp_active{background:#E5F7E8}div#hmbkp-warning,h2.nav-tab-wrapper+div[id^=hmbkp]{margin:20px 0 15px}h2+div[id^=hmbkp] input{max-width:100%}.nav-tab.hmbkp-running:not(.nav-tab-active):before{width:20px;height:20px;margin:0 10px -4px 0;content:"";background:transparent url(spinner-2x.gif) no-repeat 0 0;background-size:20px;display:inline-block}.hmbkp-upsell{margin-top:40px;padding-top:16px;border-top:1px solid #ccc}.hmbkp-upsell a{color:#57792b}.hmbkp-upsell a:hover{color:#98c063}.hmbkp-upsell-sep{color:#bbb}.hmbkp-upsell ul{overflow:hidden}.hmbkp-upsell li{float:left;margin:0 20px 20px 0}.hmbkp-upsell img{display:block;margin:0 auto;max-width:120px;min-height:60px}.hmbkp-upsell ul a{display:block;margin-bottom:0;width:120px}.hmbkp-upsell .howto{font-weight:400;display:inline}.hmbkp-upsell .hmbkp_hide{float:right}.hmbkp-schedule-sentence{font-size:16px;font-weight:lighter;margin:20px 0;background-color:#FBFBFB;padding:20px;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04)}.hmbkp-schedule-sentence::before{content:"\2714";margin-right:10px;width:16px;height:60px;display:block;float:left}.hmbkp-schedule-sentence.hmbkp-error:before{content:"\2718"}.hmbkp-schedule-sentence.hmbkp-running:before{width:20px;height:80px;margin:-1px 10px 0 0;content:"";background:transparent url(spinner-2x.gif) no-repeat 0 0;background-size:20px;display:inline-block}.hmbkp-schedule-sentence .hmbkp-status{display:none;font-size:12px;color:#666;margin:2px 0 0 30px}.hmbkp-schedule-sentence.hmbkp-running .hmbkp-status{display:block}.hmbkp-schedule-sentence.hmbkp-running .hmbkp-schedule-actions{display:none}.hmbkp-schedule-sentence :not(a)[title]{border-bottom:1px dotted #CCC;cursor:help}.hmbkp-schedule-sentence .hmbkp-status[title]{border-bottom:none}.hmbkp-schedule-sentence .submit{padding:0}.hmbkp-schedule-sentence .hmbkp-schedule-actions{visibility:visible;font-size:12px;font-weight:400;margin:0 0 0 26px}.hmbkp-schedule-actions a{white-space:nowrap}.hmbkp-schedule-settings{border-top:1px solid #e5e5e5;margin:20px -20px -20px;background-color:#f5f5f5;padding:0 20px 20px}.hmbkp-ajax-loading,button.hmbkp-ajax-loading{padding-left:20px;position:relative}.hmbkp-ajax-loading::after{content:"";width:16px;height:16px;background-image:url(spinner-2x.gif);background-size:16px 16px;background-repeat:no-repeat;background-position:0 0;position:absolute;right:-30px;top:5px}.delete-action{color:#a00;-webkit-transition:all 300ms ease;-moz-transition:all 300ms ease;-ms-transition:all 300ms ease;-o-transition:all 300ms ease;transition:all 300ms ease}.delete-action:hover .delete-action:focus{color:red;-webkit-transition:all 300ms ease;-moz-transition:all 300ms ease;-ms-transition:all 300ms ease;-o-transition:all 300ms ease;transition:all 300ms ease}.strikethrough{text-decoration:line-through}table.widefat tbody tr:nth-child(even){background-color:#f9f9f9}.hmbkp-exclude-settings td:first-child,.hmbkp-exclude-settings th:first-child{width:20px;padding-right:0}.hmbkp-exclude-settings thead tr:last-child{background-color:#f9f9f9}.hmbkp-exclude-settings table .button-secondary{line-height:18px;height:20px}thead td{border-bottom:1px solid #e1e1e1}.hmbkp-exclude-settings table .spinner{display:block;float:left;margin:0}.hmbkp-schedule-settings .column-format code{white-space:nowrap}.column-filesize code{position:relative}.column-filesize .dashicons-update{display:none;overflow:hidden;position:absolute;width:100%;left:0;text-align:center;background-color:rgba(255,255,255,.8)}.column-filesize .dashicons-update span{display:none}.column-filesize:hover .dashicons-update{display:inline-block}.hmbkp-exclude-settings td span.reason{color:#CCC}.server-info{overflow:auto;max-height:50%;outline:#000 1px solid}.server-info pre{max-height:100px;overflow-x:hidden}#intercom-info{background:#0074a2;color:#fff;display:inline-block}#intercom-info:hover{background:#2ea2cc;color:#fff}#intercom-info span.dashicons-admin-users{position:relative;display:inline-block;vertical-align:middle;top:-2px}pre{background-color:#eee;padding:10px;white-space:pre;max-height:320px;overflow:auto;word-wrap:normal!important}@media screen and (max-width:768px){.wrap h2{padding:10px 0 0}.hmbkp-schedule-sentence::before{height:80px}h2 .nav-tab{display:block;padding:10px;margin:0}.hmbkp-schedule-sentence{margin:10px 0;padding:10px}#intercom-info{display:none}.hmbkp-schedule-settings{padding:0 10px 10px}.hmbkp-exclude-settings table{margin:0 -10px;border-left:none;border-right:none;width:calc(100% + 20px)}.hmbkp-exclude-settings tr>:first-child,.hmbkp-schedule-settings thead tr:nth-child(2),.hmbkp-schedule-settings tr :nth-child(4),.hmbkp-schedule-settings tr :nth-child(5){display:none}.hmbkp-schedule-settings{margin-left:-10px;margin-right:-10px;margin-bottom:-10px}table.widefat tbody tr:nth-child(even){background-color:#fff}table.widefat tbody tr:nth-child(odd){background-color:#f9f9f9}}
|
1 |
+
.hmbkp_active td:first-child>code:before{content:"\00a0 \2713 ";font-size:11px}.hmbkp_active{background:#E5F7E8}div#hmbkp-warning,h2.nav-tab-wrapper+div[id^=hmbkp]{margin:20px 0 15px}h2+div[id^=hmbkp] input{max-width:100%}.nav-tab.hmbkp-running:not(.nav-tab-active):before{width:20px;height:20px;margin:0 10px -4px 0;content:"";background:transparent url(spinner-2x.gif) no-repeat 0 0;background-size:20px;display:inline-block}.hmbkp-upsell{margin-top:40px;padding-top:16px;border-top:1px solid #ccc}.hmbkp-upsell a{color:#57792b}.hmbkp-upsell a:hover{color:#98c063}.hmbkp-upsell-sep{color:#bbb}.hmbkp-upsell ul{overflow:hidden}.hmbkp-upsell li{float:left;margin:0 20px 20px 0}.hmbkp-upsell img{display:block;margin:0 auto;max-width:120px;min-height:60px}.hmbkp-upsell ul a{display:block;margin-bottom:0;width:120px}.hmbkp-upsell .howto{font-weight:400;display:inline}.hmbkp-upsell .hmbkp_hide{float:right}.hmbkp-schedule-sentence{font-size:16px;font-weight:lighter;margin:20px 0;background-color:#FBFBFB;padding:20px;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04)}.hmbkp-schedule-sentence::before{content:"\2714";margin-right:10px;width:16px;height:60px;display:block;float:left}.hmbkp-schedule-sentence.hmbkp-error:before{content:"\2718"}.hmbkp-schedule-sentence.hmbkp-running:before{width:20px;height:80px;margin:-1px 10px 0 0;content:"";background:transparent url(spinner-2x.gif) no-repeat 0 0;background-size:20px;display:inline-block}.hmbkp-schedule-sentence .hmbkp-status{display:none;font-size:12px;color:#666;margin:2px 0 0 30px}.hmbkp-schedule-sentence.hmbkp-running .hmbkp-status{display:block}.hmbkp-schedule-sentence.hmbkp-running .hmbkp-schedule-actions{display:none}.hmbkp-schedule-sentence :not(a)[title]{border-bottom:1px dotted #CCC;cursor:help}.hmbkp-schedule-sentence .hmbkp-status[title]{border-bottom:none}.hmbkp-schedule-sentence .submit{padding:0}.hmbkp-schedule-sentence .hmbkp-schedule-actions{visibility:visible;font-size:12px;font-weight:400;margin:0 0 0 26px}.hmbkp-schedule-actions a{white-space:nowrap}.hmbkp-schedule-settings{border-top:1px solid #e5e5e5;margin:20px -20px -20px;background-color:#f5f5f5;padding:0 20px 20px}.hmbkp-ajax-loading,button.hmbkp-ajax-loading{padding-left:20px;position:relative}.hmbkp-ajax-loading::after{content:"";width:16px;height:16px;background-image:url(spinner-2x.gif);background-size:16px 16px;background-repeat:no-repeat;background-position:0 0;position:absolute;right:-30px;top:5px}.delete-action{color:#a00;-webkit-transition:all 300ms ease;-moz-transition:all 300ms ease;-ms-transition:all 300ms ease;-o-transition:all 300ms ease;transition:all 300ms ease}.delete-action:hover .delete-action:focus{color:red;-webkit-transition:all 300ms ease;-moz-transition:all 300ms ease;-ms-transition:all 300ms ease;-o-transition:all 300ms ease;transition:all 300ms ease}.strikethrough{text-decoration:line-through}table.widefat tbody tr:nth-child(even){background-color:#f9f9f9}.hmbkp-exclude-settings td:first-child,.hmbkp-exclude-settings th:first-child{width:20px;padding-right:0}.hmbkp-exclude-settings thead tr:last-child{background-color:#f9f9f9}.hmbkp-exclude-settings table .button-secondary{line-height:18px;height:20px}thead td{border-bottom:1px solid #e1e1e1}.hmbkp-exclude-settings table .spinner{display:block;float:left;margin:0}.hmbkp-schedule-settings .column-format code{white-space:nowrap}.column-filesize code{position:relative}.column-filesize .dashicons-update{display:none;overflow:hidden;position:absolute;width:100%;left:0;text-align:center;background-color:rgba(255,255,255,.8)}.column-filesize .dashicons-update span{display:none}.column-filesize:hover .dashicons-update{display:inline-block}.hmbkp-exclude-settings td span.reason{color:#CCC}.server-info{overflow:auto;max-height:50%;outline:#000 1px solid}.server-info pre{max-height:100px;overflow-x:hidden}#intercom-info{background:#0074a2;color:#fff;display:inline-block;margin-bottom:-3px;padding:3px 8px}#intercom-info:hover{background:#2ea2cc;color:#fff}#intercom-info span.dashicons-admin-users{position:relative;display:inline-block;vertical-align:middle;top:-2px}pre{background-color:#eee;padding:10px;white-space:pre;max-height:320px;overflow:auto;word-wrap:normal!important}@media screen and (max-width:768px){.wrap h2{padding:10px 0 0}.hmbkp-schedule-sentence::before{height:80px}h2 .nav-tab{display:block;padding:10px;margin:0}.hmbkp-schedule-sentence{margin:10px 0;padding:10px}#intercom-info{display:none}.hmbkp-schedule-settings{padding:0 10px 10px}.hmbkp-exclude-settings table{margin:0 -10px;border-left:none;border-right:none;width:calc(100% + 20px)}.hmbkp-exclude-settings tr>:first-child,.hmbkp-schedule-settings thead tr:nth-child(2),.hmbkp-schedule-settings tr :nth-child(4),.hmbkp-schedule-settings tr :nth-child(5){display:none}.hmbkp-schedule-settings{margin-left:-10px;margin-right:-10px;margin-bottom:-10px}table.widefat tbody tr:nth-child(even){background-color:#fff}table.widefat tbody tr:nth-child(odd){background-color:#f9f9f9}}
|
assets/hmbkp.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
function hmbkpToggleScheduleFields(a){a="undefined"!=typeof a?a:"manually";var b=jQuery(".recurring-setting"),c=jQuery("#schedule-start"),d=jQuery("p.twice-js");switch(a){case"manually":b.hide();break;case"hmbkp_hourly":case"hmbkp_daily":b.hide(),c.show(),d.hide();break;case"hmbkp_twicedaily":b.hide(),c.show(),d.show();break;case"hmbkp_weekly":case"hmbkp_fortnightly":b.hide(),jQuery("#start-day").show(),c.show(),d.hide();break;case"hmbkp_monthly":b.hide(),c.show(),jQuery("#start-date").show(),d.hide()}}function hmbkpCatchResponseAndOfferToEmail(a){a&&0
|
1 |
+
function hmbkpToggleScheduleFields(a){a="undefined"!=typeof a?a:"manually";var b=jQuery(".recurring-setting"),c=jQuery("#schedule-start"),d=jQuery("p.twice-js");switch(a){case"manually":b.hide();break;case"hmbkp_hourly":case"hmbkp_daily":b.hide(),c.show(),d.hide();break;case"hmbkp_twicedaily":b.hide(),c.show(),d.show();break;case"hmbkp_weekly":case"hmbkp_fortnightly":b.hide(),jQuery("#start-day").show(),c.show(),d.hide();break;case"hmbkp_monthly":b.hide(),c.show(),jQuery("#start-date").show(),d.hide()}}function hmbkpCatchResponseAndOfferToEmail(a){a&&0!==a?(jQuery(".hmbkp-schedule-sentence.hmbkp-running").removeClass("hmbkp-running").addClass("hmbkp-error"),jQuery.post(ajaxurl,{nonce:hmbkp.nonce,action:"hmbkp_backup_error",hmbkp_error:a},function(a){a&&0!==a&&location.reload(!0)})):location.reload(!0),jQuery(document).one("click",".hmbkp_send_error_via_email",function(b){b.preventDefault(),jQuery(this).addClass("hmbkp-ajax-loading").attr("disabled","disabled"),jQuery.post(ajaxurl,{nonce:hmbkp.nonce,action:"hmbkp_email_error",hmbkp_error:a},function(){})})}jQuery(document).ready(function(a){a.ajaxSetup({cache:!1}),a("select#hmbkp_schedule_recurrence_type").size()&&(hmbkpToggleScheduleFields(a("select#hmbkp_schedule_recurrence_type").val()),a(document).on("change","select#hmbkp_schedule_recurrence_type",function(){hmbkpToggleScheduleFields(a(this).val())})),a(document).on("click",".hmbkp-schedule-actions .delete-action",function(a){confirm(hmbkp.delete_schedule)||a.preventDefault()}),a(document).on("click",".hmbkp_manage_backups_row .delete-action",function(a){confirm(hmbkp.delete_backup)||a.preventDefault()}),a(document).on("click",".hmbkp-edit-schedule-excludes-form .delete-action",function(a){confirm(hmbkp.remove_exclude_rule)||a.preventDefault()}),a.post(ajaxurl,{nonce:hmbkp.nonce,action:"hmbkp_cron_test"},function(b){"1"!==b&&a(".wrap > h2").after(b)}),a(document).on("click",".hmbkp-run",function(b){a(this).closest(".hmbkp-schedule-sentence").addClass("hmbkp-running"),a(".hmbkp-error").removeClass("hmbkp-error");{var c=a("[data-hmbkp-schedule-id]").attr("data-hmbkp-schedule-id");a.get(ajaxurl,{hmbkp_run_schedule_nonce:hmbkp.hmbkp_run_schedule_nonce,action:"hmbkp_run_schedule",hmbkp_schedule_id:c}).done(function(a){hmbkpCatchResponseAndOfferToEmail(a)}).fail(function(a){hmbkpCatchResponseAndOfferToEmail(a.responseText)})}b.preventDefault()}),a(document).on("heartbeat-send",function(b,c){c.hmbkp_schedule_id=a("[data-hmbkp-schedule-id]").attr("data-hmbkp-schedule-id"),a(".hmbkp-schedule-sentence.hmbkp-running").size()?c.hmbkp_is_in_progress=!0:c.hmbkp_client_request="site_size"}),a(document).on("heartbeat-tick",function(b,c){if(0!==c.hmbkp_schedule_status||a(".hmbkp-error").size()||location.reload(!0),0!==c.hmbkp_schedule_status&&void 0!==c.hmbkp_schedule_status&&a(".hmbkp-status").replaceWith(c.hmbkp_schedule_status),void 0!==c.hmbkp_site_size&&a("code.calculating").size()){a("code.calculating").text(c.hmbkp_site_size);var d=a(".hmbkp-exclude-settings");d.size()&&d.replaceWith(c.hmbkp_dir_sizes)}})});
|
backdrop/server.php
CHANGED
@@ -3,12 +3,12 @@
|
|
3 |
class HM_Backdrop_Server {
|
4 |
public function run() {
|
5 |
if ( empty( $_POST['key'] ) ) {
|
6 |
-
return new WP_Error( 'hm_backdrop_no_key', __( 'No key supplied', '
|
7 |
}
|
8 |
|
9 |
$data = get_transient( 'hm_backdrop-' . $_POST['key'] );
|
10 |
if ( empty( $data ) ) {
|
11 |
-
return new WP_Error( 'hm_backdrop_invalid_key', __( 'Supplied key was not valid', '
|
12 |
}
|
13 |
|
14 |
$result = call_user_func_array( $data['callback'], $data['params'] );
|
3 |
class HM_Backdrop_Server {
|
4 |
public function run() {
|
5 |
if ( empty( $_POST['key'] ) ) {
|
6 |
+
return new WP_Error( 'hm_backdrop_no_key', __( 'No key supplied', 'hm_backdrop' ) );
|
7 |
}
|
8 |
|
9 |
$data = get_transient( 'hm_backdrop-' . $_POST['key'] );
|
10 |
if ( empty( $data ) ) {
|
11 |
+
return new WP_Error( 'hm_backdrop_invalid_key', __( 'Supplied key was not valid', 'hm_backdrop' ) );
|
12 |
}
|
13 |
|
14 |
$result = call_user_func_array( $data['callback'], $data['params'] );
|
backdrop/task.php
CHANGED
@@ -19,7 +19,7 @@ class HM_Backdrop_Task {
|
|
19 |
public function schedule() {
|
20 |
|
21 |
if ( $this->is_scheduled() ) {
|
22 |
-
return new WP_Error( 'hm_backdrop_scheduled', __( 'Task is already scheduled to run', '
|
23 |
}
|
24 |
|
25 |
$data = array(
|
@@ -38,7 +38,7 @@ class HM_Backdrop_Task {
|
|
38 |
|
39 |
public function cancel() {
|
40 |
if ( ! $this->is_scheduled() ) {
|
41 |
-
return new WP_Error( 'hm_backdrop_not_scheduled', __( 'Task is not scheduled to run', '
|
42 |
}
|
43 |
|
44 |
delete_transient( 'hm_backdrop-' . $this->key );
|
19 |
public function schedule() {
|
20 |
|
21 |
if ( $this->is_scheduled() ) {
|
22 |
+
return new WP_Error( 'hm_backdrop_scheduled', __( 'Task is already scheduled to run', 'hm_backdrop' ) );
|
23 |
}
|
24 |
|
25 |
$data = array(
|
38 |
|
39 |
public function cancel() {
|
40 |
if ( ! $this->is_scheduled() ) {
|
41 |
+
return new WP_Error( 'hm_backdrop_not_scheduled', __( 'Task is not scheduled to run', 'hm_backdrop' ) );
|
42 |
}
|
43 |
|
44 |
delete_transient( 'hm_backdrop-' . $this->key );
|
backupwordpress.php
CHANGED
@@ -1,15 +1,14 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
/*
|
4 |
Plugin Name: BackUpWordPress
|
5 |
Plugin URI: http://bwp.hmn.md/
|
6 |
-
Description: Simple automated backups of your WordPress powered website. Once activated you'll find me under <strong>Tools → Backups</strong>.
|
|
|
7 |
Author: Human Made Limited
|
8 |
-
Version: 3.0.4
|
9 |
Author URI: http://hmn.md/
|
10 |
License: GPL-2.0+
|
11 |
License URI: http://www.gnu.org/licenses/gpl-2.0.txt
|
12 |
-
Text Domain:
|
13 |
Domain Path: /languages
|
14 |
Network: true
|
15 |
*/
|
@@ -32,350 +31,411 @@ along with this program; if not, write to the Free Software
|
|
32 |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
33 |
*/
|
34 |
|
35 |
-
|
36 |
-
define( 'HMBKP_REQUIRED_PHP_VERSION', '5.3.2' );
|
37 |
-
}
|
38 |
|
39 |
-
|
|
|
40 |
|
41 |
-
|
42 |
-
|
43 |
-
|
|
|
44 |
|
45 |
-
|
46 |
-
define( 'HMBKP_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
|
47 |
-
}
|
48 |
|
49 |
-
|
50 |
-
|
51 |
-
|
|
|
52 |
|
53 |
-
|
|
|
|
|
|
|
54 |
|
55 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
|
57 |
-
|
58 |
-
|
|
|
59 |
|
60 |
-
|
61 |
-
define( 'HMBKP_ADMIN_URL', add_query_arg( 'page', HMBKP_PLUGIN_SLUG, admin_url( 'tools.php' ) ) );
|
62 |
}
|
63 |
|
64 |
-
|
|
|
|
|
|
|
65 |
|
66 |
-
|
67 |
|
68 |
-
|
69 |
|
70 |
-
|
71 |
-
$key[] = constant( $constant );
|
72 |
-
}
|
73 |
|
74 |
-
|
75 |
|
76 |
-
|
77 |
|
78 |
-
|
|
|
79 |
|
80 |
-
|
81 |
-
define( 'HMBKP_REQUIRED_WP_VERSION', '3.9.3' );
|
82 |
-
}
|
83 |
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
|
|
88 |
|
89 |
-
|
90 |
|
91 |
-
|
92 |
-
|
93 |
|
94 |
-
} else {
|
95 |
-
define( 'HMBKP_ADMIN_PAGE', 'tools_page_' . HMBKP_PLUGIN_SLUG );
|
96 |
}
|
97 |
|
98 |
-
|
|
|
|
|
|
|
99 |
|
100 |
-
|
|
|
|
|
101 |
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
|
110 |
-
|
111 |
-
|
|
|
112 |
|
113 |
-
|
114 |
-
require_once( HMBKP_PLUGIN_PATH . 'classes/class-schedule.php' );
|
115 |
-
require_once( HMBKP_PLUGIN_PATH . 'classes/class-schedules.php' );
|
116 |
|
117 |
-
|
118 |
-
require_once( HMBKP_PLUGIN_PATH . 'functions/core.php' );
|
119 |
-
require_once( HMBKP_PLUGIN_PATH . 'functions/interface.php' );
|
120 |
|
121 |
-
|
122 |
-
require_once( HMBKP_PLUGIN_PATH . 'classes/class-services.php' );
|
123 |
|
124 |
-
|
125 |
-
require_once( HMBKP_PLUGIN_PATH . 'classes/class-email.php' );
|
126 |
|
127 |
-
|
128 |
-
require_once( HMBKP_PLUGIN_PATH . 'classes/class-webhooks.php' );
|
129 |
-
require_once( HMBKP_PLUGIN_PATH . 'classes/class-webhook-wpremote.php' );
|
130 |
|
131 |
-
|
132 |
-
if ( defined( 'WP_CLI' ) && WP_CLI ) {
|
133 |
-
include( HMBKP_PLUGIN_PATH . 'classes/wp-cli.php' );
|
134 |
-
}
|
135 |
|
136 |
-
|
137 |
-
|
138 |
-
register_deactivation_hook( HMBKP_PLUGIN_SLUG . '/backupwordpress.php', 'hmbkp_deactivate' );
|
139 |
|
140 |
-
|
141 |
-
hmbkp_constant_changes();
|
142 |
|
143 |
-
|
144 |
-
* Plugin setup
|
145 |
-
*
|
146 |
-
* @return null
|
147 |
-
*/
|
148 |
-
function hmbkp_init() {
|
149 |
|
150 |
-
|
|
|
|
|
|
|
151 |
|
152 |
-
|
153 |
-
define( 'HMBKP_VERSION', $plugin_data['Version'] );
|
154 |
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
}
|
159 |
|
160 |
-
|
161 |
-
|
|
|
|
|
162 |
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
|
168 |
-
|
169 |
|
170 |
-
|
171 |
-
return;
|
172 |
-
}
|
173 |
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
|
178 |
-
|
|
|
|
|
179 |
|
180 |
-
|
181 |
-
|
182 |
-
}
|
183 |
|
184 |
-
|
185 |
-
|
186 |
-
wp_localize_script(
|
187 |
-
'hmbkp',
|
188 |
-
'hmbkp',
|
189 |
-
array(
|
190 |
-
'page_slug' => HMBKP_PLUGIN_SLUG,
|
191 |
-
'nonce' => wp_create_nonce( 'hmbkp_nonce' ),
|
192 |
-
'hmbkp_run_schedule_nonce' => wp_create_nonce( 'hmbkp_run_schedule' ),
|
193 |
-
'update' => __( 'Update', 'backupwordpress' ),
|
194 |
-
'cancel' => __( 'Cancel', 'backupwordpress' ),
|
195 |
-
'delete_schedule' => __( 'Are you sure you want to delete this schedule? All of it\'s backups will also be deleted.', 'backupwordpress' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'backupwordpress' ) . "\n",
|
196 |
-
'delete_backup' => __( 'Are you sure you want to delete this backup?', 'backupwordpress' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'backupwordpress' ) . "\n",
|
197 |
-
'remove_exclude_rule' => __( 'Are you sure you want to remove this exclude rule?', 'backupwordpress' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'backupwordpress' ) . "\n",
|
198 |
-
'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?', 'backupwordpress' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'backupwordpress' ) . "\n"
|
199 |
-
)
|
200 |
-
);
|
201 |
|
202 |
-
|
203 |
-
|
|
|
204 |
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
*
|
210 |
-
* @return void
|
211 |
-
*/
|
212 |
-
function hmbkp_load_intercom_script() {
|
213 |
|
214 |
-
if ( ! get_option( 'hmbkp_enable_support' ) ) {
|
215 |
-
return;
|
216 |
}
|
217 |
|
218 |
-
|
|
|
|
|
|
|
219 |
|
220 |
-
|
221 |
|
222 |
-
|
223 |
|
224 |
-
|
225 |
|
226 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
227 |
|
228 |
}
|
229 |
|
230 |
-
|
231 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
232 |
}
|
233 |
|
234 |
-
|
|
|
|
|
|
|
|
|
|
|
235 |
|
236 |
-
|
237 |
-
|
238 |
-
$info['created_at'] = strtotime( $current_user->user_registered );
|
239 |
-
$info['app_id'] = '7f1l4qyq';
|
240 |
-
$info['name'] = $current_user->display_name;
|
241 |
-
$info['widget'] = array( 'activator' => '#intercom' ); ?>
|
242 |
|
243 |
-
|
244 |
-
|
245 |
-
</script>
|
246 |
-
<script>(function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',intercomSettings);}else{var d=document;var i=function(){i.c(arguments)};i.q=[];i.c=function(args){i.q.push(args)};w.Intercom=i;function l(){var s=d.createElement('script');s.type='text/javascript';s.async=true;s.src='https://static.intercomcdn.com/intercom.v1.js';var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);}if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}};})()</script>
|
247 |
|
248 |
-
|
249 |
-
|
250 |
|
251 |
-
|
252 |
-
|
253 |
-
*/
|
254 |
-
function hmbkp_load_styles(){
|
255 |
|
256 |
-
|
|
|
257 |
|
258 |
-
if ( WP_DEBUG ) {
|
259 |
-
$css_file = HMBKP_PLUGIN_URL . 'assets/hmbkp.css';
|
260 |
}
|
261 |
|
262 |
-
|
|
|
|
|
|
|
263 |
|
264 |
-
|
265 |
-
|
|
|
|
|
266 |
|
267 |
-
|
268 |
-
* Function to run when the schedule cron fires
|
269 |
-
* @param $schedule_id
|
270 |
-
*/
|
271 |
-
function hmbkp_schedule_hook_run( $schedule_id ) {
|
272 |
|
273 |
-
|
274 |
-
|
|
|
|
|
275 |
|
276 |
-
|
277 |
-
|
278 |
}
|
279 |
|
280 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
281 |
|
282 |
-
|
283 |
-
add_action( 'hmbkp_schedule_hook', 'hmbkp_schedule_hook_run' );
|
284 |
|
285 |
-
|
286 |
-
* Loads the plugin text domain for translation
|
287 |
-
* This setup allows a user to just drop his custom translation files into the WordPress language directory
|
288 |
-
* Files will need to be in a subdirectory with the name of the textdomain 'hmbkp'
|
289 |
-
*/
|
290 |
-
function hmbkp_plugin_textdomain() {
|
291 |
|
292 |
-
|
293 |
-
$textdomain = 'backupwordpress';
|
294 |
|
295 |
-
|
296 |
-
|
|
|
|
|
297 |
|
298 |
-
|
299 |
-
$hmbkp_wp_lang_dir = apply_filters( 'hmbkp_do_filter_wp_lang_dir', trailingslashit( WP_LANG_DIR ) . trailingslashit( $textdomain ) . $textdomain . '-' . $locale . '.mo' );
|
300 |
|
301 |
-
|
302 |
-
load_textdomain( $textdomain, $hmbkp_wp_lang_dir );
|
303 |
|
304 |
-
|
305 |
-
load_plugin_textdomain( $textdomain, false, HMBKP_PLUGIN_LANG_DIR );
|
306 |
|
307 |
-
|
308 |
-
add_action( 'init', 'hmbkp_plugin_textdomain', 1 );
|
309 |
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
function hmbkp_load_first() {
|
314 |
|
315 |
-
|
316 |
|
317 |
-
|
318 |
|
319 |
-
|
320 |
|
321 |
-
|
|
|
|
|
|
|
|
|
|
|
322 |
|
323 |
-
|
|
|
|
|
324 |
|
325 |
-
|
|
|
326 |
|
327 |
-
|
|
|
|
|
|
|
|
|
328 |
|
329 |
}
|
330 |
|
331 |
-
|
332 |
-
|
|
|
|
|
|
|
|
|
333 |
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
338 |
|
339 |
-
if ( ! function_exists( 'deactivate_plugins' ) || ! function_exists( 'current_action' ) ) {
|
340 |
-
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
341 |
}
|
342 |
|
343 |
-
|
344 |
-
|
345 |
-
|
|
|
|
|
|
|
346 |
|
347 |
-
if ( '
|
348 |
-
|
349 |
-
} else {
|
350 |
-
wp_die( hmbkp_get_notice_message(), __( 'BackUpWordPress', 'backupwordpress' ), array( 'back_link' => true ) );
|
351 |
}
|
352 |
-
}
|
353 |
|
354 |
-
|
355 |
-
add_action( 'plugins_loaded', 'hmbkp_maybe_self_deactivate' );
|
356 |
|
357 |
-
|
358 |
-
* Displays a message as notice in the admin.
|
359 |
-
*/
|
360 |
-
function hmbkp_display_admin_notices() {
|
361 |
|
362 |
-
|
363 |
|
364 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
365 |
|
366 |
-
/**
|
367 |
-
* Returns a localized user friendly error message.
|
368 |
-
*
|
369 |
-
* @return string
|
370 |
-
*/
|
371 |
-
function hmbkp_get_notice_message() {
|
372 |
-
|
373 |
-
return sprintf(
|
374 |
-
__( 'BackUpWordPress requires PHP version %1$s or later. It is not active. %2$s%3$s%4$sLearn more%5$s', 'backupwordpress' ),
|
375 |
-
HMBKP_REQUIRED_PHP_VERSION,
|
376 |
-
'<a href="',
|
377 |
-
'https://bwp.hmn.md/unsupported-php-version-error/',
|
378 |
-
'">',
|
379 |
-
'</a>'
|
380 |
-
);
|
381 |
}
|
|
|
|
1 |
<?php
|
|
|
2 |
/*
|
3 |
Plugin Name: BackUpWordPress
|
4 |
Plugin URI: http://bwp.hmn.md/
|
5 |
+
Description: Simple automated backups of your WordPress powered website. Once activated you'll find me under <strong>Tools → Backups</strong>. On multisite, you'll find me under the Network Settings menu.
|
6 |
+
Version: 3.1.0
|
7 |
Author: Human Made Limited
|
|
|
8 |
Author URI: http://hmn.md/
|
9 |
License: GPL-2.0+
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.txt
|
11 |
+
Text Domain: backupwordpress
|
12 |
Domain Path: /languages
|
13 |
Network: true
|
14 |
*/
|
31 |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
32 |
*/
|
33 |
|
34 |
+
include_once( dirname( __FILE__ ) . '/classes/class-setup.php' );
|
|
|
|
|
35 |
|
36 |
+
register_activation_hook( __FILE__, array( 'BackUpWordPress_Setup', 'activate' ) );
|
37 |
+
register_deactivation_hook( __FILE__, array( 'BackUpWordPress_Setup', 'deactivate' ) );
|
38 |
|
39 |
+
/**
|
40 |
+
* Class BackUpWordPress_Plugin
|
41 |
+
*/
|
42 |
+
class BackUpWordPress_Plugin {
|
43 |
|
44 |
+
const PLUGIN_VERSION = '3.1.0';
|
|
|
|
|
45 |
|
46 |
+
/**
|
47 |
+
* @var BackUpWordPress_Plugin The singleton instance.
|
48 |
+
*/
|
49 |
+
private static $instance;
|
50 |
|
51 |
+
/**
|
52 |
+
* Instantiates a new BackUpWordPress_Plugin object.
|
53 |
+
*/
|
54 |
+
private function __construct() {
|
55 |
|
56 |
+
add_action( 'plugins_loaded', array( $this, 'plugins_loaded' ) );
|
57 |
+
}
|
58 |
+
|
59 |
+
/**
|
60 |
+
* Insures we always return the same object.
|
61 |
+
*
|
62 |
+
* @return BackUpWordPress_Plugin
|
63 |
+
*/
|
64 |
+
public static function get_instance() {
|
65 |
|
66 |
+
if ( ! ( self::$instance instanceof BackUpWordPress_Plugin ) ) {
|
67 |
+
self::$instance = new BackUpWordPress_Plugin();
|
68 |
+
}
|
69 |
|
70 |
+
return self::$instance;
|
|
|
71 |
}
|
72 |
|
73 |
+
/**
|
74 |
+
* Initialize the plugin.
|
75 |
+
*/
|
76 |
+
public function plugins_loaded() {
|
77 |
|
78 |
+
if ( false !== $this->maybe_self_deactivate() ) {
|
79 |
|
80 |
+
$this->constants();
|
81 |
|
82 |
+
$this->includes();
|
|
|
|
|
83 |
|
84 |
+
$this->hooks();
|
85 |
|
86 |
+
$this->text_domain();
|
87 |
|
88 |
+
// If we get here, then BWP is loaded
|
89 |
+
do_action( 'backupwordpress_loaded' );
|
90 |
|
91 |
+
}
|
|
|
|
|
92 |
|
93 |
+
}
|
94 |
+
|
95 |
+
public function maybe_self_deactivate() {
|
96 |
+
|
97 |
+
if ( ! BackUpWordPress_Setup::meets_requirements() ) {
|
98 |
|
99 |
+
add_action( 'admin_init', array( 'BackUpWordPress_Setup', 'self_deactivate' ) );
|
100 |
|
101 |
+
add_action( 'admin_notices', array( 'BackUpWordPress_Setup', 'display_admin_notices' ) );
|
102 |
+
}
|
103 |
|
|
|
|
|
104 |
}
|
105 |
|
106 |
+
/**
|
107 |
+
* Define all the constants.
|
108 |
+
*/
|
109 |
+
public function constants() {
|
110 |
|
111 |
+
if ( ! defined( 'HMBKP_PLUGIN_SLUG' ) ) {
|
112 |
+
define( 'HMBKP_PLUGIN_SLUG', dirname( plugin_basename( __FILE__ ) ) );
|
113 |
+
}
|
114 |
|
115 |
+
if ( ! defined( 'HMBKP_PLUGIN_PATH' ) ) {
|
116 |
+
define( 'HMBKP_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
|
117 |
+
}
|
118 |
|
119 |
+
if ( ! defined( 'HMBKP_PLUGIN_URL' ) ) {
|
120 |
+
define( 'HMBKP_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
121 |
+
}
|
122 |
|
123 |
+
if ( ! defined( 'HMBKP_PLUGIN_LANG_DIR' ) ) {
|
124 |
+
define( 'HMBKP_PLUGIN_LANG_DIR', apply_filters( 'hmbkp_filter_lang_dir', HMBKP_PLUGIN_SLUG . '/languages/' ) );
|
125 |
+
}
|
126 |
|
127 |
+
if ( ! defined( 'HMBKP_ADMIN_URL' ) ) {
|
|
|
|
|
128 |
|
129 |
+
$page = is_multisite() ? network_admin_url( 'settings.php' ) : admin_url( 'tools.php' );
|
|
|
|
|
130 |
|
131 |
+
define( 'HMBKP_ADMIN_URL', add_query_arg( 'page', HMBKP_PLUGIN_SLUG, $page ) );
|
|
|
132 |
|
133 |
+
}
|
|
|
134 |
|
135 |
+
if ( ! defined( 'HMBKP_ADMIN_PAGE' ) ) {
|
|
|
|
|
136 |
|
137 |
+
$prefix = is_multisite() ? 'settings_page_' : 'tools_page_';
|
|
|
|
|
|
|
138 |
|
139 |
+
define( 'HMBKP_ADMIN_PAGE', $prefix . HMBKP_PLUGIN_SLUG );
|
140 |
+
}
|
|
|
141 |
|
142 |
+
define( 'HMBKP_SECURE_KEY', $this->generate_key() );
|
|
|
143 |
|
144 |
+
}
|
|
|
|
|
|
|
|
|
|
|
145 |
|
146 |
+
/**
|
147 |
+
* Load all BackUpWordPress functions.
|
148 |
+
*/
|
149 |
+
protected function includes() {
|
150 |
|
151 |
+
require_once( HMBKP_PLUGIN_PATH . 'classes/class-notices.php' );
|
|
|
152 |
|
153 |
+
// Load the admin menu
|
154 |
+
require_once( HMBKP_PLUGIN_PATH . 'admin/menu.php' );
|
155 |
+
require_once( HMBKP_PLUGIN_PATH . 'admin/actions.php' );
|
|
|
156 |
|
157 |
+
// Load hm-backup
|
158 |
+
if ( ! class_exists( 'HM_Backup' ) ) {
|
159 |
+
require_once( HMBKP_PLUGIN_PATH . 'hm-backup/hm-backup.php' );
|
160 |
+
}
|
161 |
|
162 |
+
// Load Backdrop if necessary.
|
163 |
+
if ( ! class_exists( 'HM_Backdrop_Task' ) ) {
|
164 |
+
require_once( HMBKP_PLUGIN_PATH . 'backdrop/hm-backdrop.php' );
|
165 |
+
}
|
166 |
|
167 |
+
require_once( HMBKP_PLUGIN_PATH . 'classes/class-requirements.php' );
|
168 |
|
169 |
+
require_once( HMBKP_PLUGIN_PATH . 'classes/class-hmbkp-path.php' );
|
|
|
|
|
170 |
|
171 |
+
// Load the schedules
|
172 |
+
require_once( HMBKP_PLUGIN_PATH . 'classes/class-schedule.php' );
|
173 |
+
require_once( HMBKP_PLUGIN_PATH . 'classes/class-schedules.php' );
|
174 |
|
175 |
+
// Load the core functions
|
176 |
+
require_once( HMBKP_PLUGIN_PATH . 'functions/core.php' );
|
177 |
+
require_once( HMBKP_PLUGIN_PATH . 'functions/interface.php' );
|
178 |
|
179 |
+
// Load Services
|
180 |
+
require_once( HMBKP_PLUGIN_PATH . 'classes/class-services.php' );
|
|
|
181 |
|
182 |
+
// Load the email service
|
183 |
+
require_once( HMBKP_PLUGIN_PATH . 'classes/class-email.php' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
|
185 |
+
// Load the webhook services
|
186 |
+
require_once( HMBKP_PLUGIN_PATH . 'classes/class-webhooks.php' );
|
187 |
+
require_once( HMBKP_PLUGIN_PATH . 'classes/class-webhook-wpremote.php' );
|
188 |
|
189 |
+
// Load the wp cli command
|
190 |
+
if ( defined( 'WP_CLI' ) && WP_CLI ) {
|
191 |
+
include( HMBKP_PLUGIN_PATH . 'classes/wp-cli.php' );
|
192 |
+
}
|
|
|
|
|
|
|
|
|
193 |
|
|
|
|
|
194 |
}
|
195 |
|
196 |
+
/**
|
197 |
+
* Hook into WordPress page lifecycle and execute BackUpWordPress functions.
|
198 |
+
*/
|
199 |
+
public function hooks() {
|
200 |
|
201 |
+
add_action( 'activated_plugin', array( $this, 'load_first' ) );
|
202 |
|
203 |
+
add_action( 'admin_init', array( $this, 'upgrade' ) );
|
204 |
|
205 |
+
add_action( 'admin_init', array( $this, 'init' ) );
|
206 |
|
207 |
+
add_action( 'hmbkp_schedule_hook', array( $this, 'schedule_hook_run' ) );
|
208 |
+
|
209 |
+
add_action( 'admin_enqueue_scripts', array( $this, 'scripts' ) );
|
210 |
+
|
211 |
+
add_action( 'admin_footer-' . HMBKP_ADMIN_PAGE, array( $this, 'load_intercom_script' ) );
|
212 |
+
|
213 |
+
add_action( 'admin_enqueue_scripts', array( $this, 'styles' ) );
|
214 |
|
215 |
}
|
216 |
|
217 |
+
/**
|
218 |
+
* Load the Javascript in the admin.
|
219 |
+
*
|
220 |
+
* @param $hook The name of the admin page hook.
|
221 |
+
*/
|
222 |
+
public function scripts( $hook ) {
|
223 |
+
|
224 |
+
if ( HMBKP_ADMIN_PAGE !== $hook ) {
|
225 |
+
return;
|
226 |
+
}
|
227 |
+
|
228 |
+
$js_file = HMBKP_PLUGIN_URL . 'assets/hmbkp.min.js';
|
229 |
+
|
230 |
+
if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
|
231 |
+
$js_file = HMBKP_PLUGIN_URL . 'assets/hmbkp.js';
|
232 |
+
}
|
233 |
+
|
234 |
+
wp_enqueue_script( 'hmbkp', $js_file, array( 'heartbeat' ), sanitize_key( self::PLUGIN_VERSION ) );
|
235 |
+
|
236 |
+
wp_localize_script(
|
237 |
+
'hmbkp',
|
238 |
+
'hmbkp',
|
239 |
+
array(
|
240 |
+
'page_slug' => HMBKP_PLUGIN_SLUG,
|
241 |
+
'nonce' => wp_create_nonce( 'hmbkp_nonce' ),
|
242 |
+
'hmbkp_run_schedule_nonce' => wp_create_nonce( 'hmbkp_run_schedule' ),
|
243 |
+
'update' => __( 'Update', 'backupwordpress' ),
|
244 |
+
'cancel' => __( 'Cancel', 'backupwordpress' ),
|
245 |
+
'delete_schedule' => __( 'Are you sure you want to delete this schedule? All of it\'s backups will also be deleted.', 'backupwordpress' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'backupwordpress' ) . "\n",
|
246 |
+
'delete_backup' => __( 'Are you sure you want to delete this backup?', 'backupwordpress' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'backupwordpress' ) . "\n",
|
247 |
+
'remove_exclude_rule' => __( 'Are you sure you want to remove this exclude rule?', 'backupwordpress' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'backupwordpress' ) . "\n",
|
248 |
+
'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?', 'backupwordpress' ) . "\n\n" . __( '\'Cancel\' to go back, \'OK\' to delete.', 'backupwordpress' ) . "\n"
|
249 |
+
)
|
250 |
+
);
|
251 |
+
|
252 |
}
|
253 |
|
254 |
+
/**
|
255 |
+
* Loads the plugin text domain for translation.
|
256 |
+
* This setup allows a user to just drop his custom translation files into the WordPress language directory
|
257 |
+
* Files will need to be in a subdirectory with the name of the textdomain 'backupwordpress'
|
258 |
+
*/
|
259 |
+
public function text_domain() {
|
260 |
|
261 |
+
// Set unique textdomain string
|
262 |
+
$textdomain = 'backupwordpress';
|
|
|
|
|
|
|
|
|
263 |
|
264 |
+
// The 'plugin_locale' filter is also used by default in load_plugin_textdomain()
|
265 |
+
$locale = apply_filters( 'plugin_locale', get_locale(), $textdomain );
|
|
|
|
|
266 |
|
267 |
+
// Set filter for WordPress languages directory
|
268 |
+
$hmbkp_wp_lang_dir = apply_filters( 'hmbkp_do_filter_wp_lang_dir', trailingslashit( WP_LANG_DIR ) . trailingslashit( $textdomain ) . $textdomain . '-' . $locale . '.mo' );
|
269 |
|
270 |
+
// Translations: First, look in WordPress' "languages" folder = custom & update-secure!
|
271 |
+
load_textdomain( $textdomain, $hmbkp_wp_lang_dir );
|
|
|
|
|
272 |
|
273 |
+
// Translations: Secondly, look in plugin's "languages" folder = default
|
274 |
+
load_plugin_textdomain( $textdomain, false, HMBKP_PLUGIN_LANG_DIR );
|
275 |
|
|
|
|
|
276 |
}
|
277 |
|
278 |
+
/**
|
279 |
+
* Determine if we need to run an upgrade routine.
|
280 |
+
*/
|
281 |
+
public function upgrade() {
|
282 |
|
283 |
+
// Fire the update action
|
284 |
+
if ( self::PLUGIN_VERSION != get_option( 'hmbkp_plugin_version' ) ) {
|
285 |
+
hmbkp_update();
|
286 |
+
}
|
287 |
|
288 |
+
}
|
|
|
|
|
|
|
|
|
289 |
|
290 |
+
/**
|
291 |
+
* Runs on every admin page load
|
292 |
+
*/
|
293 |
+
public function init() {
|
294 |
|
295 |
+
// If we have multiple paths for some reason then clean them up
|
296 |
+
HMBKP_Path::get_instance()->merge_existing_paths();
|
297 |
}
|
298 |
|
299 |
+
/**
|
300 |
+
* Generate a unique key.
|
301 |
+
*
|
302 |
+
* @return string
|
303 |
+
*/
|
304 |
+
protected function generate_key() {
|
305 |
+
|
306 |
+
$key = array( ABSPATH, time() );
|
307 |
+
|
308 |
+
foreach (
|
309 |
+
array(
|
310 |
+
'AUTH_KEY',
|
311 |
+
'SECURE_AUTH_KEY',
|
312 |
+
'LOGGED_IN_KEY',
|
313 |
+
'NONCE_KEY',
|
314 |
+
'AUTH_SALT',
|
315 |
+
'SECURE_AUTH_SALT',
|
316 |
+
'LOGGED_IN_SALT',
|
317 |
+
'NONCE_SALT',
|
318 |
+
'SECRET_KEY',
|
319 |
+
) as $constant
|
320 |
+
) {
|
321 |
+
|
322 |
+
if ( defined( $constant ) ) {
|
323 |
+
$key[] = constant( $constant );
|
324 |
+
}
|
325 |
+
}
|
326 |
|
327 |
+
shuffle( $key );
|
|
|
328 |
|
329 |
+
return md5( serialize( $key ) );
|
|
|
|
|
|
|
|
|
|
|
330 |
|
331 |
+
}
|
|
|
332 |
|
333 |
+
/**
|
334 |
+
* Ensure BackUpWordPress is loaded before add-ons, changes the order of the serialized values in the DB field.
|
335 |
+
*/
|
336 |
+
public function load_first() {
|
337 |
|
338 |
+
$active_plugins = get_option( 'active_plugins' );
|
|
|
339 |
|
340 |
+
$plugin_path = plugin_basename( __FILE__ );
|
|
|
341 |
|
342 |
+
$key = array_search( $plugin_path, $active_plugins );
|
|
|
343 |
|
344 |
+
if ( $key > 0 ) {
|
|
|
345 |
|
346 |
+
array_splice( $active_plugins, $key, 1 );
|
347 |
+
|
348 |
+
array_unshift( $active_plugins, $plugin_path );
|
|
|
349 |
|
350 |
+
update_option( 'active_plugins', $active_plugins );
|
351 |
|
352 |
+
}
|
353 |
|
354 |
+
}
|
355 |
|
356 |
+
/**
|
357 |
+
* Function to run when the schedule cron fires.
|
358 |
+
*
|
359 |
+
* @param $schedule_id
|
360 |
+
*/
|
361 |
+
public function schedule_hook_run( $schedule_id ) {
|
362 |
|
363 |
+
if ( ! hmbkp_possible() ) {
|
364 |
+
return;
|
365 |
+
}
|
366 |
|
367 |
+
$schedules = HMBKP_Schedules::get_instance();
|
368 |
+
$schedule = $schedules->get_schedule( $schedule_id );
|
369 |
|
370 |
+
if ( ! $schedule ) {
|
371 |
+
return;
|
372 |
+
}
|
373 |
+
|
374 |
+
$schedule->run();
|
375 |
|
376 |
}
|
377 |
|
378 |
+
/**
|
379 |
+
* Enqueue the plugin styles.
|
380 |
+
*
|
381 |
+
* @param $hook
|
382 |
+
*/
|
383 |
+
public function styles( $hook ) {
|
384 |
|
385 |
+
if ( HMBKP_ADMIN_PAGE !== $hook ) {
|
386 |
+
return;
|
387 |
+
}
|
388 |
+
|
389 |
+
$css_file = HMBKP_PLUGIN_URL . 'assets/hmbkp.min.css';
|
390 |
+
|
391 |
+
if ( WP_DEBUG ) {
|
392 |
+
$css_file = HMBKP_PLUGIN_URL . 'assets/hmbkp.css';
|
393 |
+
}
|
394 |
+
|
395 |
+
wp_enqueue_style( 'backupwordpress', $css_file, false, sanitize_key( self::PLUGIN_VERSION ) );
|
396 |
|
|
|
|
|
397 |
}
|
398 |
|
399 |
+
/**
|
400 |
+
* Load Intercom and send across user information and server info. Only loaded if the user has opted in.
|
401 |
+
*
|
402 |
+
* @param $hook
|
403 |
+
*/
|
404 |
+
public function load_intercom_script() {
|
405 |
|
406 |
+
if ( ! get_option( 'hmbkp_enable_support' ) ) {
|
407 |
+
return;
|
|
|
|
|
408 |
}
|
|
|
409 |
|
410 |
+
foreach ( HMBKP_Requirements::get_requirement_groups() as $group ) {
|
|
|
411 |
|
412 |
+
foreach ( HMBKP_Requirements::get_requirements( $group ) as $requirement ) {
|
|
|
|
|
|
|
413 |
|
414 |
+
$info[ $requirement->name() ] = $requirement->result();
|
415 |
|
416 |
+
}
|
417 |
+
}
|
418 |
+
|
419 |
+
foreach ( HMBKP_Services::get_services() as $file => $service ) {
|
420 |
+
array_merge( $info, call_user_func( array( $service, 'intercom_data' ) ) );
|
421 |
+
}
|
422 |
+
|
423 |
+
$current_user = wp_get_current_user();
|
424 |
+
|
425 |
+
$info['user_hash'] = hash_hmac( 'sha256', $current_user->user_email, 'fcUEt7Vi4ym5PXdcr2UNpGdgZTEvxX9NJl8YBTxK' );
|
426 |
+
$info['email'] = $current_user->user_email;
|
427 |
+
$info['created_at'] = strtotime( $current_user->user_registered );
|
428 |
+
$info['app_id'] = '7f1l4qyq';
|
429 |
+
$info['name'] = $current_user->display_name;
|
430 |
+
$info['widget'] = array( 'activator' => '#intercom' ); ?>
|
431 |
+
|
432 |
+
<script id="IntercomSettingsScriptTag">
|
433 |
+
window.intercomSettings = <?php echo json_encode( $info ); ?>;
|
434 |
+
</script>
|
435 |
+
<script>!function(){function e(){var a=c.createElement("script");a.type="text/javascript",a.async=!0,a.src="https://static.intercomcdn.com/intercom.v1.js";var b=c.getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b)}var a=window,b=a.Intercom;if("function"==typeof b)b("reattach_activator"),b("update",intercomSettings);else{var c=document,d=function(){d.c(arguments)};d.q=[],d.c=function(a){d.q.push(a)},a.Intercom=d,a.attachEvent?a.attachEvent("onload",e):a.addEventListener("load",e,!1)}}();</script>
|
436 |
+
|
437 |
+
<?php }
|
438 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
439 |
}
|
440 |
+
|
441 |
+
BackUpWordPress_Plugin::get_instance();
|
classes/class-email.php
CHANGED
@@ -27,7 +27,7 @@ class HMBKP_Email_Service extends HMBKP_Service {
|
|
27 |
</th>
|
28 |
|
29 |
<td>
|
30 |
-
<input type="
|
31 |
|
32 |
<p class="description"><?php printf( __( 'Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email addresses with a comma.', 'backupwordpress' ), '<code>' . size_format( hmbkp_get_max_attachment_size() ) . '</code>' ); ?></p>
|
33 |
</td>
|
27 |
</th>
|
28 |
|
29 |
<td>
|
30 |
+
<input type="text" id="<?php echo esc_attr( $this->get_field_name( 'email' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'email' ) ); ?>" value="<?php echo esc_attr( $this->get_field_value( 'email' ) ); ?>" placeholder="name@youremail.com" />
|
31 |
|
32 |
<p class="description"><?php printf( __( 'Receive a notification email when a backup completes, if the backup is small enough (< %s) then it will be attached to the email. Separate multiple email addresses with a comma.', 'backupwordpress' ), '<code>' . size_format( hmbkp_get_max_attachment_size() ) . '</code>' ); ?></p>
|
33 |
</td>
|
classes/class-hmbkp-path.php
ADDED
@@ -0,0 +1,360 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package BackUpWordPress
|
4 |
+
* @subpackage BackUpWordPress/classes
|
5 |
+
*/
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Returns the backup path
|
9 |
+
*
|
10 |
+
* @see HMBKP_Path
|
11 |
+
* @todo remove the need for this
|
12 |
+
*/
|
13 |
+
function hmbkp_path() {
|
14 |
+
return HMBKP_Path::get_instance()->get_path();
|
15 |
+
}
|
16 |
+
|
17 |
+
/**
|
18 |
+
* The Backup Path class
|
19 |
+
*
|
20 |
+
* Handles calculating & protecting the directory that backups will be stored in
|
21 |
+
*
|
22 |
+
* @todo Should be a singleton?
|
23 |
+
*/
|
24 |
+
class HMBKP_Path {
|
25 |
+
|
26 |
+
/**
|
27 |
+
* The path to the directory that backup files are stored in
|
28 |
+
*
|
29 |
+
* @var string $this->path
|
30 |
+
*/
|
31 |
+
protected $path;
|
32 |
+
|
33 |
+
/**
|
34 |
+
* The path to the directory that backup files are stored in
|
35 |
+
*
|
36 |
+
* @var string $this->path
|
37 |
+
*/
|
38 |
+
protected $custom_path;
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Protected constructor to prevent creating a new instance of the
|
42 |
+
* *Singleton* via the `new` operator from outside of this class.
|
43 |
+
*/
|
44 |
+
protected function __construct() {}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Private clone method to prevent cloning of the instance of the
|
48 |
+
* *Singleton* instance.
|
49 |
+
*
|
50 |
+
* @return void
|
51 |
+
*/
|
52 |
+
private function __clone() {}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Private unserialize method to prevent unserializing of the *Singleton*
|
56 |
+
* instance.
|
57 |
+
*
|
58 |
+
* @return void
|
59 |
+
*/
|
60 |
+
private function __wakeup() {}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Returns the *Singleton* instance of this class.
|
64 |
+
*
|
65 |
+
* @staticvar HMBKP_PAth $instance The *Singleton* instances of this class.
|
66 |
+
*
|
67 |
+
* @return HMBKP_Path The *Singleton* instance.
|
68 |
+
*/
|
69 |
+
public static function get_instance() {
|
70 |
+
|
71 |
+
static $instance = null;
|
72 |
+
|
73 |
+
if ( null === $instance ) {
|
74 |
+
$instance = new static();
|
75 |
+
}
|
76 |
+
|
77 |
+
return $instance;
|
78 |
+
|
79 |
+
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
* Get the path to the directory where backups will be stored
|
83 |
+
*/
|
84 |
+
public function get_path() {
|
85 |
+
|
86 |
+
// Calculate the path if needed
|
87 |
+
if ( empty( $this->path ) || ! wp_is_writable( $this->path ) ) {
|
88 |
+
$this->calculate_path();
|
89 |
+
}
|
90 |
+
|
91 |
+
// Ensure the backup directory is protected
|
92 |
+
$this->protect_path();
|
93 |
+
|
94 |
+
return $this->path;
|
95 |
+
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Set the path directly, overriding the default
|
100 |
+
*
|
101 |
+
* @param $path
|
102 |
+
*/
|
103 |
+
public function set_path( $path ) {
|
104 |
+
|
105 |
+
$this->custom_path = $path;
|
106 |
+
|
107 |
+
// Re-calculate the backup path
|
108 |
+
$this->calculate_path();
|
109 |
+
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Get the path to the default backup location in wp-content
|
114 |
+
*/
|
115 |
+
public function get_default_path() {
|
116 |
+
return trailingslashit( WP_CONTENT_DIR ) . 'backupwordpress-' . substr( HMBKP_SECURE_KEY, 0, 10 ) . '-backups';
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* Get the path to the fallback backup location in uploads
|
121 |
+
*/
|
122 |
+
public function get_fallback_path() {
|
123 |
+
|
124 |
+
$upload_dir = wp_upload_dir();
|
125 |
+
|
126 |
+
return trailingslashit( $upload_dir['basedir'] ) . 'backupwordpress-' . substr( HMBKP_SECURE_KEY, 0, 10 ) . '-backups';
|
127 |
+
|
128 |
+
}
|
129 |
+
|
130 |
+
/**
|
131 |
+
* Get the path to the custom backup location if it's been set
|
132 |
+
*/
|
133 |
+
public function get_custom_path() {
|
134 |
+
|
135 |
+
if ( $this->custom_path ) {
|
136 |
+
return $this->custom_path;
|
137 |
+
}
|
138 |
+
|
139 |
+
if ( defined( 'HMBKP_PATH' ) && wp_is_writable( HMBKP_PATH ) ) {
|
140 |
+
return HMBKP_PATH;
|
141 |
+
}
|
142 |
+
|
143 |
+
return '';
|
144 |
+
|
145 |
+
}
|
146 |
+
|
147 |
+
/**
|
148 |
+
* Builds an array containing existing backups folders.
|
149 |
+
*
|
150 |
+
* @return array
|
151 |
+
*/
|
152 |
+
public function get_existing_paths() {
|
153 |
+
|
154 |
+
if ( false === $default = glob( WP_CONTENT_DIR . '/backupwordpress-*-backups', GLOB_ONLYDIR ) ) {
|
155 |
+
$default = array();
|
156 |
+
}
|
157 |
+
|
158 |
+
$upload_dir = wp_upload_dir();
|
159 |
+
|
160 |
+
if ( false === $fallback = glob( $upload_dir['basedir'] . '/backupwordpress-*-backups', GLOB_ONLYDIR ) ) {
|
161 |
+
$fallback = array();
|
162 |
+
}
|
163 |
+
|
164 |
+
$paths = array_merge( $default, $fallback );
|
165 |
+
|
166 |
+
return $paths;
|
167 |
+
|
168 |
+
}
|
169 |
+
|
170 |
+
/**
|
171 |
+
* Returns the first existing path if there is one
|
172 |
+
*
|
173 |
+
* @return string Backup path if found empty string if not
|
174 |
+
*/
|
175 |
+
public function get_existing_path() {
|
176 |
+
|
177 |
+
$paths = $this->get_existing_paths();
|
178 |
+
|
179 |
+
if ( ! empty( $paths[0] ) ) {
|
180 |
+
return $paths[0];
|
181 |
+
}
|
182 |
+
|
183 |
+
return '';
|
184 |
+
|
185 |
+
}
|
186 |
+
|
187 |
+
/**
|
188 |
+
* Calculate the backup path and create the directory if it doesn't exist.
|
189 |
+
*
|
190 |
+
* Tries all possible locations and uses the first one possible
|
191 |
+
*
|
192 |
+
* @return
|
193 |
+
*/
|
194 |
+
public function calculate_path() {
|
195 |
+
|
196 |
+
$paths = array();
|
197 |
+
|
198 |
+
// If we have a custom path then try to use it
|
199 |
+
if ( $this->get_custom_path() ) {
|
200 |
+
$paths[] = $this->get_custom_path();
|
201 |
+
}
|
202 |
+
|
203 |
+
// If there is already a backups directory then try to use that
|
204 |
+
if ( $this->get_existing_path() ) {
|
205 |
+
$paths[] = $this->get_existing_path();
|
206 |
+
}
|
207 |
+
|
208 |
+
// If not then default to a new directory in wp-content
|
209 |
+
$paths[] = $this->get_default_path();
|
210 |
+
|
211 |
+
// If that didn't work then fallback to a new directory in uploads
|
212 |
+
$paths[] = $this->get_fallback_path();
|
213 |
+
|
214 |
+
// Loop through possible paths, use the first one that exists/can be created and is writable
|
215 |
+
foreach ( $paths as $path ) {
|
216 |
+
if ( wp_mkdir_p( $path ) ) { // Also handles fixing perms / directory already exists
|
217 |
+
break;
|
218 |
+
}
|
219 |
+
}
|
220 |
+
|
221 |
+
if ( isset( $path ) ) {
|
222 |
+
$this->path = $path;
|
223 |
+
}
|
224 |
+
|
225 |
+
}
|
226 |
+
|
227 |
+
/**
|
228 |
+
* @param string $reset
|
229 |
+
*/
|
230 |
+
public function protect_path( $reset = 'no' ) {
|
231 |
+
|
232 |
+
global $is_apache;
|
233 |
+
|
234 |
+
// Protect against directory browsing by including an index.html file
|
235 |
+
$index = $this->path . '/index.html';
|
236 |
+
|
237 |
+
if ( ( 'reset' === $reset ) && file_exists( $index ) ) {
|
238 |
+
@unlink( $index );
|
239 |
+
}
|
240 |
+
|
241 |
+
if ( ! file_exists( $index ) && wp_is_writable( $this->path ) ) {
|
242 |
+
file_put_contents( $index, '' );
|
243 |
+
}
|
244 |
+
|
245 |
+
$htaccess = $this->path . '/.htaccess';
|
246 |
+
|
247 |
+
if ( ( 'reset' === $reset ) && file_exists( $htaccess ) ) {
|
248 |
+
@unlink( $htaccess );
|
249 |
+
}
|
250 |
+
|
251 |
+
// Protect the directory with a .htaccess file on Apache servers
|
252 |
+
if ( $is_apache && function_exists( 'insert_with_markers' ) && ! file_exists( $htaccess ) && wp_is_writable( $this->path ) ) {
|
253 |
+
|
254 |
+
$contents[] = '# ' . sprintf( __( 'This %s file ensures that other people cannot download your backup files.', 'hmbkp' ), '.htaccess' );
|
255 |
+
$contents[] = '';
|
256 |
+
$contents[] = '<IfModule mod_rewrite.c>';
|
257 |
+
$contents[] = 'RewriteEngine On';
|
258 |
+
$contents[] = 'RewriteCond %{QUERY_STRING} !key=' . HMBKP_SECURE_KEY;
|
259 |
+
$contents[] = 'RewriteRule (.*) - [F]';
|
260 |
+
$contents[] = '</IfModule>';
|
261 |
+
$contents[] = '';
|
262 |
+
|
263 |
+
insert_with_markers( $htaccess, 'BackUpWordPress', $contents );
|
264 |
+
|
265 |
+
}
|
266 |
+
|
267 |
+
}
|
268 |
+
|
269 |
+
/**
|
270 |
+
* If we have more than one path then move any existing backups to the current path and remove them
|
271 |
+
*/
|
272 |
+
public function merge_existing_paths() {
|
273 |
+
|
274 |
+
$paths = $this->get_existing_paths();
|
275 |
+
|
276 |
+
if ( ( $paths && $this->get_custom_path() ) || count( $paths ) > 1 ) {
|
277 |
+
foreach ( $paths as $old_path ) {
|
278 |
+
$this->move_old_backups( $old_path );
|
279 |
+
}
|
280 |
+
}
|
281 |
+
|
282 |
+
}
|
283 |
+
|
284 |
+
/**
|
285 |
+
* Move backup files from an existing directory and the new
|
286 |
+
* location
|
287 |
+
*
|
288 |
+
* @param string $path The path to move the backups from
|
289 |
+
* @return void
|
290 |
+
*/
|
291 |
+
public function move_old_backups( $from ) {
|
292 |
+
|
293 |
+
if ( ! is_readable( $from ) ) {
|
294 |
+
return;
|
295 |
+
}
|
296 |
+
|
297 |
+
if ( ! wp_is_writable( $this->get_path() ) ) {
|
298 |
+
return;
|
299 |
+
}
|
300 |
+
|
301 |
+
// Move any existing backups
|
302 |
+
if ( $handle = opendir( $from ) ) {
|
303 |
+
|
304 |
+
// Loop through the backup directory
|
305 |
+
while ( false !== ( $file = readdir( $handle ) ) ) {
|
306 |
+
|
307 |
+
// Find all zips
|
308 |
+
if ( 'zip' === pathinfo( $file, PATHINFO_EXTENSION ) ) {
|
309 |
+
|
310 |
+
// Try to move them
|
311 |
+
if ( ! @rename( trailingslashit( $from ) . $file, trailingslashit( $this->get_path() ) . $file ) ) {
|
312 |
+
|
313 |
+
|
314 |
+
// If we can't move them then try to copy them
|
315 |
+
copy( trailingslashit( $from ) . $file, trailingslashit( $this->get_path() ) . $file );
|
316 |
+
|
317 |
+
}
|
318 |
+
|
319 |
+
}
|
320 |
+
}
|
321 |
+
|
322 |
+
closedir( $handle );
|
323 |
+
|
324 |
+
}
|
325 |
+
|
326 |
+
// Delete the old directory if it's inside WP_CONTENT_DIR
|
327 |
+
if ( false !== strpos( $from, WP_CONTENT_DIR ) && $from !== $this->get_path() ) {
|
328 |
+
hmbkp_rmdirtree( $from );
|
329 |
+
}
|
330 |
+
|
331 |
+
}
|
332 |
+
|
333 |
+
/**
|
334 |
+
* Clean any temporary / incomplete backups from the backups directory
|
335 |
+
*/
|
336 |
+
public function cleanup() {
|
337 |
+
|
338 |
+
// Don't cleanup a custom path, who knows what other stuff is there
|
339 |
+
if ( $this->get_path() === $this->get_custom_path() ) {
|
340 |
+
return;
|
341 |
+
}
|
342 |
+
|
343 |
+
if ( $handle = opendir( $this->get_path() ) ) {
|
344 |
+
|
345 |
+
while ( false !== ( $file = readdir( $handle ) ) ) {
|
346 |
+
|
347 |
+
if ( ! in_array( $file, array( '.', '..', 'index.html' ) ) && 'zip' !== pathinfo( $file, PATHINFO_EXTENSION ) && false === strpos( $file, '-running' ) ) {
|
348 |
+
|
349 |
+
@unlink( $file );
|
350 |
+
|
351 |
+
}
|
352 |
+
}
|
353 |
+
|
354 |
+
closedir( $handle );
|
355 |
+
|
356 |
+
}
|
357 |
+
|
358 |
+
}
|
359 |
+
|
360 |
+
}
|
classes/class-notices.php
CHANGED
@@ -10,6 +10,8 @@ class HMBKP_Notices {
|
|
10 |
*/
|
11 |
private static $_instance;
|
12 |
|
|
|
|
|
13 |
/**
|
14 |
*
|
15 |
*/
|
@@ -23,24 +25,28 @@ class HMBKP_Notices {
|
|
23 |
if ( ! ( self::$_instance instanceof HMBKP_Notices ) ) {
|
24 |
self::$_instance = new HMBKP_Notices();
|
25 |
}
|
|
|
26 |
return self::$_instance;
|
|
|
27 |
}
|
28 |
|
29 |
/**
|
30 |
* @param string $context
|
31 |
* @param array $messages
|
|
|
32 |
*
|
33 |
* @return mixed|void
|
34 |
*/
|
35 |
-
public function set_notices( $context, array $messages ) {
|
36 |
|
37 |
-
$
|
38 |
|
39 |
-
|
40 |
-
|
41 |
-
|
|
|
|
|
42 |
|
43 |
-
return get_option( 'hmbkp_notices' );
|
44 |
}
|
45 |
|
46 |
/**
|
@@ -53,23 +59,34 @@ class HMBKP_Notices {
|
|
53 |
*/
|
54 |
public function get_notices( $context = '' ) {
|
55 |
|
56 |
-
|
|
|
|
|
57 |
|
58 |
-
if (
|
59 |
-
return $
|
60 |
}
|
61 |
|
62 |
-
return $
|
63 |
}
|
64 |
|
65 |
return array();
|
66 |
|
67 |
}
|
68 |
|
|
|
|
|
|
|
|
|
69 |
/**
|
70 |
* Delete all notices from the DB.
|
71 |
*/
|
72 |
public function clear_all_notices() {
|
73 |
-
|
|
|
|
|
|
|
|
|
74 |
}
|
|
|
75 |
}
|
10 |
*/
|
11 |
private static $_instance;
|
12 |
|
13 |
+
private $notices;
|
14 |
+
|
15 |
/**
|
16 |
*
|
17 |
*/
|
25 |
if ( ! ( self::$_instance instanceof HMBKP_Notices ) ) {
|
26 |
self::$_instance = new HMBKP_Notices();
|
27 |
}
|
28 |
+
|
29 |
return self::$_instance;
|
30 |
+
|
31 |
}
|
32 |
|
33 |
/**
|
34 |
* @param string $context
|
35 |
* @param array $messages
|
36 |
+
* @param bool $persistant whether to save the notices to the database
|
37 |
*
|
38 |
* @return mixed|void
|
39 |
*/
|
40 |
+
public function set_notices( $context, array $messages, $persistant = true ) {
|
41 |
|
42 |
+
$this->notices[ $context ] = $messages;
|
43 |
|
44 |
+
if ( $persistant ) {
|
45 |
+
$notices = get_option( 'hmbkp_notices' );
|
46 |
+
$notices[ $context ] = $messages;
|
47 |
+
update_option( 'hmbkp_notices', $notices );
|
48 |
+
}
|
49 |
|
|
|
50 |
}
|
51 |
|
52 |
/**
|
59 |
*/
|
60 |
public function get_notices( $context = '' ) {
|
61 |
|
62 |
+
$notices = $this->get_all_notices();
|
63 |
+
|
64 |
+
if ( $notices ) {
|
65 |
|
66 |
+
if ( $context && isset( $notices[ $context ] ) ) {
|
67 |
+
return $notices[ $context ];
|
68 |
}
|
69 |
|
70 |
+
return $notices;
|
71 |
}
|
72 |
|
73 |
return array();
|
74 |
|
75 |
}
|
76 |
|
77 |
+
private function get_all_notices() {
|
78 |
+
return array_merge_recursive( (array) $this->notices, (array) get_option( 'hmbkp_notices' ) );
|
79 |
+
}
|
80 |
+
|
81 |
/**
|
82 |
* Delete all notices from the DB.
|
83 |
*/
|
84 |
public function clear_all_notices() {
|
85 |
+
|
86 |
+
$this->notices = array();
|
87 |
+
|
88 |
+
delete_option( 'hmbkp_notices' );
|
89 |
+
|
90 |
}
|
91 |
+
|
92 |
}
|
classes/class-requirements.php
CHANGED
@@ -255,7 +255,7 @@ class HMBKP_Requirement_PHP_User extends HMBKP_Requirement {
|
|
255 |
return '';
|
256 |
}
|
257 |
|
258 |
-
return shell_exec( 'whoami' );
|
259 |
|
260 |
}
|
261 |
|
@@ -282,7 +282,7 @@ class HMBKP_Requirement_PHP_Group extends HMBKP_Requirement {
|
|
282 |
return '';
|
283 |
}
|
284 |
|
285 |
-
return shell_exec( 'groups' );
|
286 |
|
287 |
}
|
288 |
|
@@ -332,7 +332,7 @@ class HMBKP_Requirement_Cron_Array extends HMBKP_Requirement {
|
|
332 |
return false;
|
333 |
}
|
334 |
|
335 |
-
return $cron;
|
336 |
|
337 |
}
|
338 |
|
@@ -451,7 +451,7 @@ class HMBKP_Requirement_Backup_Path extends HMBKP_Requirement {
|
|
451 |
* @return string
|
452 |
*/
|
453 |
protected function test() {
|
454 |
-
return
|
455 |
}
|
456 |
|
457 |
}
|
@@ -600,6 +600,37 @@ class HMBKP_Requirement_Calculated_Size extends HMBKP_Requirement {
|
|
600 |
|
601 |
HMBKP_Requirements::register( 'HMBKP_Requirement_Calculated_Size', 'Site' );
|
602 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
603 |
/**
|
604 |
* Class HMBKP_Requirement_WP_Cron_Test_Response
|
605 |
*/
|
@@ -941,7 +972,7 @@ class HMBKP_Requirement_Plugin_Version extends HMBKP_Requirement {
|
|
941 |
var $name = 'Plugin Version';
|
942 |
|
943 |
protected function test() {
|
944 |
-
return
|
945 |
}
|
946 |
}
|
947 |
HMBKP_Requirements::register( 'HMBKP_Requirement_Plugin_Version', 'constants' );
|
255 |
return '';
|
256 |
}
|
257 |
|
258 |
+
return trim( shell_exec( 'whoami' ) );
|
259 |
|
260 |
}
|
261 |
|
282 |
return '';
|
283 |
}
|
284 |
|
285 |
+
return trim( shell_exec( 'groups' ) );
|
286 |
|
287 |
}
|
288 |
|
332 |
return false;
|
333 |
}
|
334 |
|
335 |
+
return json_encode( $cron );
|
336 |
|
337 |
}
|
338 |
|
451 |
* @return string
|
452 |
*/
|
453 |
protected function test() {
|
454 |
+
return HMBKP_Path::get_instance()->get_path();
|
455 |
}
|
456 |
|
457 |
}
|
600 |
|
601 |
HMBKP_Requirements::register( 'HMBKP_Requirement_Calculated_Size', 'Site' );
|
602 |
|
603 |
+
/**
|
604 |
+
* Class HMBKP_Average_Backup_Duration
|
605 |
+
*/
|
606 |
+
class HMBKP_Average_Backup_Duration extends HMBKP_Requirement {
|
607 |
+
|
608 |
+
protected $name = 'Average backup duration';
|
609 |
+
|
610 |
+
public function __get( $property ) {
|
611 |
+
return $this->{$property};
|
612 |
+
}
|
613 |
+
|
614 |
+
/**
|
615 |
+
* Retrieves the average backup duration for each schedule.
|
616 |
+
*
|
617 |
+
* @return array The average backup duration for all schedules.
|
618 |
+
*/
|
619 |
+
public function test() {
|
620 |
+
|
621 |
+
$schedule_average_durations = array();
|
622 |
+
|
623 |
+
$schedules = HMBKP_Schedules::get_instance();
|
624 |
+
|
625 |
+
foreach ( $schedules->get_schedules() as $schedule ) {
|
626 |
+
$schedule_average_durations[ sprintf( __( 'Schedule: %s', 'backupwordpress' ), $schedule->get_id() ) ] = sprintf( __( 'Duration: %s', 'backupwordpress' ), $schedule->get_schedule_average_duration() );
|
627 |
+
}
|
628 |
+
|
629 |
+
return array_filter( $schedule_average_durations );
|
630 |
+
}
|
631 |
+
}
|
632 |
+
HMBKP_Requirements::register( 'HMBKP_Average_Backup_Duration', 'Site' );
|
633 |
+
|
634 |
/**
|
635 |
* Class HMBKP_Requirement_WP_Cron_Test_Response
|
636 |
*/
|
972 |
var $name = 'Plugin Version';
|
973 |
|
974 |
protected function test() {
|
975 |
+
return BackUpWordPress_Plugin::PLUGIN_VERSION;
|
976 |
}
|
977 |
}
|
978 |
HMBKP_Requirements::register( 'HMBKP_Requirement_Plugin_Version', 'constants' );
|
classes/class-schedule.php
CHANGED
@@ -61,10 +61,6 @@ class HMBKP_Scheduled_Backup extends HM_Backup {
|
|
61 |
$this->set_root( HMBKP_ROOT );
|
62 |
}
|
63 |
|
64 |
-
if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH ) {
|
65 |
-
$this->set_path( HMBKP_PATH );
|
66 |
-
}
|
67 |
-
|
68 |
if ( defined( 'HMBKP_EXCLUDE' ) && HMBKP_EXCLUDE ) {
|
69 |
parent::set_excludes( HMBKP_EXCLUDE, true );
|
70 |
}
|
@@ -126,6 +122,22 @@ class HMBKP_Scheduled_Backup extends HM_Backup {
|
|
126 |
|
127 |
}
|
128 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
/**
|
130 |
* Get the name of this backup schedule
|
131 |
*
|
@@ -343,16 +355,16 @@ class HMBKP_Scheduled_Backup extends HM_Backup {
|
|
343 |
* @return int The total of the file or directory
|
344 |
*/
|
345 |
function is_site_size_being_calculated() {
|
346 |
-
return get_transient( 'hmbkp_directory_filesizes_running' );
|
347 |
}
|
348 |
|
349 |
/**
|
350 |
* Whether the total filesize is being calculated
|
351 |
*
|
352 |
-
* @return
|
353 |
*/
|
354 |
function is_site_size_cached() {
|
355 |
-
return get_transient( 'hmbkp_directory_filesizes' );
|
356 |
}
|
357 |
|
358 |
/**
|
@@ -843,19 +855,15 @@ class HMBKP_Scheduled_Backup extends HM_Backup {
|
|
843 |
*/
|
844 |
public function set_status( $message ) {
|
845 |
|
846 |
-
if ( ! $handle = fopen( $this->get_schedule_running_path(), 'w' ) ) {
|
847 |
-
return;
|
848 |
-
}
|
849 |
-
|
850 |
$status = json_encode( (object) array(
|
851 |
'filename' => $this->get_archive_filename(),
|
852 |
'started' => $this->get_schedule_running_start_time(),
|
853 |
'status' => $message,
|
854 |
) );
|
855 |
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
|
860 |
}
|
861 |
|
@@ -921,6 +929,8 @@ class HMBKP_Scheduled_Backup extends HM_Backup {
|
|
921 |
case 'hmbkp_backup_complete' :
|
922 |
|
923 |
$this->set_status( __( 'Finishing Backup', 'backupwordpress' ) );
|
|
|
|
|
924 |
break;
|
925 |
|
926 |
case 'hmbkp_error' :
|
@@ -972,6 +982,79 @@ class HMBKP_Scheduled_Backup extends HM_Backup {
|
|
972 |
do_action( 'hmbkp_action_complete', $action, $this );
|
973 |
}
|
974 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
975 |
/**
|
976 |
* Get the backups created by this schedule
|
977 |
*
|
@@ -1107,17 +1190,6 @@ class HMBKP_Scheduled_Backup extends HM_Backup {
|
|
1107 |
// Leftover backup folders can be either under content dir, or under the uploads dir
|
1108 |
$hmn_upload_dir = wp_upload_dir();
|
1109 |
|
1110 |
-
$hmbkp_folders = array_merge(
|
1111 |
-
$this->find_backup_folders( 'backupwordpress-', WP_CONTENT_DIR ),
|
1112 |
-
$this->find_backup_folders( 'backupwordpress-', $hmn_upload_dir['path'] )
|
1113 |
-
);
|
1114 |
-
|
1115 |
-
if ( ! empty( $hmbkp_folders ) ) {
|
1116 |
-
foreach ( $hmbkp_folders as $path ) {
|
1117 |
-
$excluded[] = $path;
|
1118 |
-
}
|
1119 |
-
}
|
1120 |
-
|
1121 |
$backupwp_folders = $this->find_backup_folders( 'backwpup-', $hmn_upload_dir['path'] );
|
1122 |
|
1123 |
if ( ! empty( $backupwp_folders ) ) {
|
@@ -1143,6 +1215,7 @@ class HMBKP_Scheduled_Backup extends HM_Backup {
|
|
1143 |
}
|
1144 |
|
1145 |
// version control dirs
|
|
|
1146 |
$excluded[] = '.svn/';
|
1147 |
$excluded[] = '.git/';
|
1148 |
|
@@ -1151,7 +1224,7 @@ class HMBKP_Scheduled_Backup extends HM_Backup {
|
|
1151 |
|
1152 |
|
1153 |
/**
|
1154 |
-
* Returns an array
|
1155 |
*
|
1156 |
* @param $needle
|
1157 |
* @param $haystack
|
@@ -1162,6 +1235,7 @@ class HMBKP_Scheduled_Backup extends HM_Backup {
|
|
1162 |
|
1163 |
$found_folders = array();
|
1164 |
|
|
|
1165 |
$folders_to_search = glob( $haystack . '/*', GLOB_ONLYDIR | GLOB_NOSORT );
|
1166 |
|
1167 |
if ( ! empty( $folders_to_search ) ) {
|
@@ -1170,12 +1244,8 @@ class HMBKP_Scheduled_Backup extends HM_Backup {
|
|
1170 |
|
1171 |
$pos = strpos( $folder, $needle );
|
1172 |
|
1173 |
-
|
1174 |
-
|
1175 |
-
if ( ( false !== $pos ) && ( $folder !== $default_path ) ) {
|
1176 |
-
|
1177 |
$found_folders[] = trailingslashit( $folder );
|
1178 |
-
|
1179 |
}
|
1180 |
|
1181 |
}
|
@@ -1183,6 +1253,7 @@ class HMBKP_Scheduled_Backup extends HM_Backup {
|
|
1183 |
}
|
1184 |
|
1185 |
return $found_folders;
|
|
|
1186 |
}
|
1187 |
|
1188 |
}
|
61 |
$this->set_root( HMBKP_ROOT );
|
62 |
}
|
63 |
|
|
|
|
|
|
|
|
|
64 |
if ( defined( 'HMBKP_EXCLUDE' ) && HMBKP_EXCLUDE ) {
|
65 |
parent::set_excludes( HMBKP_EXCLUDE, true );
|
66 |
}
|
122 |
|
123 |
}
|
124 |
|
125 |
+
/**
|
126 |
+
* Returns the given option value or WP_Error if it doesn't exist
|
127 |
+
*
|
128 |
+
* @param $option_name
|
129 |
+
*
|
130 |
+
* @return WP_Error
|
131 |
+
*/
|
132 |
+
public function get_schedule_option( $option_name ) {
|
133 |
+
|
134 |
+
if ( isset( $this->options[ $option_name ] ) ) {
|
135 |
+
return $this->options[ $option_name ];
|
136 |
+
} else {
|
137 |
+
return new WP_Error( 'invalid_option_name', __( 'Invalid Option Name', 'backupwordpress' ) );
|
138 |
+
}
|
139 |
+
}
|
140 |
+
|
141 |
/**
|
142 |
* Get the name of this backup schedule
|
143 |
*
|
355 |
* @return int The total of the file or directory
|
356 |
*/
|
357 |
function is_site_size_being_calculated() {
|
358 |
+
return false !== get_transient( 'hmbkp_directory_filesizes_running' );
|
359 |
}
|
360 |
|
361 |
/**
|
362 |
* Whether the total filesize is being calculated
|
363 |
*
|
364 |
+
* @return bool The total of the file or directory
|
365 |
*/
|
366 |
function is_site_size_cached() {
|
367 |
+
return false !== get_transient( 'hmbkp_directory_filesizes' );
|
368 |
}
|
369 |
|
370 |
/**
|
855 |
*/
|
856 |
public function set_status( $message ) {
|
857 |
|
|
|
|
|
|
|
|
|
858 |
$status = json_encode( (object) array(
|
859 |
'filename' => $this->get_archive_filename(),
|
860 |
'started' => $this->get_schedule_running_start_time(),
|
861 |
'status' => $message,
|
862 |
) );
|
863 |
|
864 |
+
if ( false === @file_put_contents( $this->get_schedule_running_path(), $status ) ) {
|
865 |
+
throw new RuntimeException( sprintf( __( 'Error writing to file. (%s)', 'backpwordpress' ), $this->get_schedule_running_path() ) );
|
866 |
+
}
|
867 |
|
868 |
}
|
869 |
|
929 |
case 'hmbkp_backup_complete' :
|
930 |
|
931 |
$this->set_status( __( 'Finishing Backup', 'backupwordpress' ) );
|
932 |
+
$this->update_average_schedule_run_time( $this->get_schedule_running_start_time(), time() );
|
933 |
+
|
934 |
break;
|
935 |
|
936 |
case 'hmbkp_error' :
|
982 |
do_action( 'hmbkp_action_complete', $action, $this );
|
983 |
}
|
984 |
|
985 |
+
/**
|
986 |
+
* Calculate schedule run time.
|
987 |
+
*
|
988 |
+
* @param int Timestamp $end
|
989 |
+
*/
|
990 |
+
public function update_average_schedule_run_time( $start, $end ) {
|
991 |
+
|
992 |
+
if ( $end <= $start ) {
|
993 |
+
// Something went wrong, ignore.
|
994 |
+
return;
|
995 |
+
}
|
996 |
+
|
997 |
+
$diff = (int) abs( $end - $start );
|
998 |
+
|
999 |
+
if ( isset( $this->options['duration_total'] ) && isset( $this->options['backup_run_count'] ) ) {
|
1000 |
+
|
1001 |
+
$this->options['duration_total'] += $diff;
|
1002 |
+
$this->options['backup_run_count'] ++;
|
1003 |
+
|
1004 |
+
} else {
|
1005 |
+
|
1006 |
+
$this->options['duration_total'] = $diff;
|
1007 |
+
$this->options['backup_run_count'] = 1;
|
1008 |
+
|
1009 |
+
}
|
1010 |
+
|
1011 |
+
$this->save();
|
1012 |
+
}
|
1013 |
+
|
1014 |
+
/**
|
1015 |
+
* Calculates the average run time for this schedule.
|
1016 |
+
*
|
1017 |
+
* @return string
|
1018 |
+
*/
|
1019 |
+
public function get_schedule_average_duration() {
|
1020 |
+
|
1021 |
+
$duration = 'Unknown';
|
1022 |
+
|
1023 |
+
if ( ! isset( $this->options['duration_total'] ) || ! isset( $this->options['backup_run_count'] ) ) {
|
1024 |
+
return $duration;
|
1025 |
+
}
|
1026 |
+
|
1027 |
+
if ( 0 === (int) $this->options['backup_run_count'] ) {
|
1028 |
+
return $duration;
|
1029 |
+
}
|
1030 |
+
|
1031 |
+
$average_run_time = (int) $this->options['duration_total'] / (int) $this->options['backup_run_count'];
|
1032 |
+
|
1033 |
+
if ( $average_run_time < HOUR_IN_SECONDS ) {
|
1034 |
+
|
1035 |
+
$mins = round( $average_run_time / MINUTE_IN_SECONDS );
|
1036 |
+
|
1037 |
+
if ( $mins <= 1 ) {
|
1038 |
+
$mins = 1;
|
1039 |
+
}
|
1040 |
+
|
1041 |
+
/* translators: min=minute */
|
1042 |
+
$duration = sprintf( _n( '%s min', '%s mins', $mins, 'backupwordpress' ), $mins );
|
1043 |
+
|
1044 |
+
} elseif ( $average_run_time < DAY_IN_SECONDS && $average_run_time >= HOUR_IN_SECONDS ) {
|
1045 |
+
|
1046 |
+
$hours = round( $average_run_time / HOUR_IN_SECONDS );
|
1047 |
+
|
1048 |
+
if ( $hours <= 1 ) {
|
1049 |
+
$hours = 1;
|
1050 |
+
}
|
1051 |
+
|
1052 |
+
$duration = sprintf( _n( '%s hour', '%s hours', $hours, 'backupwordpress' ), $hours );
|
1053 |
+
}
|
1054 |
+
|
1055 |
+
return $duration;
|
1056 |
+
}
|
1057 |
+
|
1058 |
/**
|
1059 |
* Get the backups created by this schedule
|
1060 |
*
|
1190 |
// Leftover backup folders can be either under content dir, or under the uploads dir
|
1191 |
$hmn_upload_dir = wp_upload_dir();
|
1192 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1193 |
$backupwp_folders = $this->find_backup_folders( 'backwpup-', $hmn_upload_dir['path'] );
|
1194 |
|
1195 |
if ( ! empty( $backupwp_folders ) ) {
|
1215 |
}
|
1216 |
|
1217 |
// version control dirs
|
1218 |
+
// @todo stop excluding these once they are skipped entirely
|
1219 |
$excluded[] = '.svn/';
|
1220 |
$excluded[] = '.git/';
|
1221 |
|
1224 |
|
1225 |
|
1226 |
/**
|
1227 |
+
* Returns an array of other backup folders in the specified directory
|
1228 |
*
|
1229 |
* @param $needle
|
1230 |
* @param $haystack
|
1235 |
|
1236 |
$found_folders = array();
|
1237 |
|
1238 |
+
// @todo can be simplified
|
1239 |
$folders_to_search = glob( $haystack . '/*', GLOB_ONLYDIR | GLOB_NOSORT );
|
1240 |
|
1241 |
if ( ! empty( $folders_to_search ) ) {
|
1244 |
|
1245 |
$pos = strpos( $folder, $needle );
|
1246 |
|
1247 |
+
if ( false !== $pos ) {
|
|
|
|
|
|
|
1248 |
$found_folders[] = trailingslashit( $folder );
|
|
|
1249 |
}
|
1250 |
|
1251 |
}
|
1253 |
}
|
1254 |
|
1255 |
return $found_folders;
|
1256 |
+
|
1257 |
}
|
1258 |
|
1259 |
}
|
classes/class-setup.php
ADDED
@@ -0,0 +1,164 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
defined( 'ABSPATH' ) or exit;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class BackUpWordPress_Setup
|
7 |
+
*/
|
8 |
+
class BackUpWordPress_Setup {
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Defines the minimum version of WordPress required by BWP.
|
12 |
+
*/
|
13 |
+
const MIN_WP_VERSION = '3.9.3';
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Defines the minimum version of PHP required by BWP.
|
17 |
+
*/
|
18 |
+
const MIN_PHP_VERSION = '5.3.2';
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Setup the plugin defaults on activation
|
22 |
+
*/
|
23 |
+
public static function activate() {
|
24 |
+
|
25 |
+
// loads the translation files for the Error message in the wp_die call.
|
26 |
+
load_plugin_textdomain( 'backupwordpress', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
|
27 |
+
|
28 |
+
if ( ! current_user_can( 'activate_plugins' ) ) {
|
29 |
+
return;
|
30 |
+
}
|
31 |
+
|
32 |
+
if ( ! self::meets_requirements() ) {
|
33 |
+
|
34 |
+
wp_die( self::get_notice_message(), __( 'BackUpWordPress', 'backupwordpress' ), array( 'back_link' => true ) );
|
35 |
+
|
36 |
+
}
|
37 |
+
|
38 |
+
// Run deactivate on activation in-case it was deactivated manually
|
39 |
+
self::deactivate();
|
40 |
+
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Cleanup on plugin deactivation
|
45 |
+
*
|
46 |
+
* Removes options and clears all cron schedules
|
47 |
+
*/
|
48 |
+
public static function deactivate() {
|
49 |
+
|
50 |
+
if ( ! current_user_can( 'activate_plugins' ) ) {
|
51 |
+
return;
|
52 |
+
}
|
53 |
+
|
54 |
+
// Determine if we need to do any cleanup
|
55 |
+
if ( ! class_exists( 'HMBKP_Schedules' ) ) {
|
56 |
+
return;
|
57 |
+
}
|
58 |
+
|
59 |
+
$schedules = HMBKP_Schedules::get_instance();
|
60 |
+
|
61 |
+
if ( empty( $schedules ) ) {
|
62 |
+
return;
|
63 |
+
}
|
64 |
+
|
65 |
+
// Clear schedule crons
|
66 |
+
foreach ( $schedules->get_schedules() as $schedule ) {
|
67 |
+
$schedule->unschedule();
|
68 |
+
}
|
69 |
+
|
70 |
+
// Opt them out of support
|
71 |
+
delete_option( 'hmbkp_enable_support' );
|
72 |
+
|
73 |
+
// Remove the directory filesize cache
|
74 |
+
delete_transient( 'hmbkp_directory_filesizes' );
|
75 |
+
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Deactivate BackUpWordPress.
|
80 |
+
*/
|
81 |
+
public static function self_deactivate() {
|
82 |
+
|
83 |
+
if ( ! current_user_can( 'activate_plugins' ) ) {
|
84 |
+
return;
|
85 |
+
}
|
86 |
+
|
87 |
+
if ( ! function_exists( 'deactivate_plugins' ) ) {
|
88 |
+
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
89 |
+
}
|
90 |
+
|
91 |
+
deactivate_plugins( dirname( __DIR__ ) . '/backupwordpress.php' );
|
92 |
+
|
93 |
+
if ( isset( $_GET['activate'] ) ) {
|
94 |
+
unset( $_GET['activate'] );
|
95 |
+
}
|
96 |
+
|
97 |
+
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
* Determine if this WordPress install meets the minimum requirements for BWP to run.
|
101 |
+
*
|
102 |
+
* @return bool
|
103 |
+
*/
|
104 |
+
public static function meets_requirements() {
|
105 |
+
|
106 |
+
if ( false === self::is_supported_php_version() ) {
|
107 |
+
return false;
|
108 |
+
}
|
109 |
+
|
110 |
+
if ( false === self::is_supported_wp_version() ) {
|
111 |
+
return false;
|
112 |
+
}
|
113 |
+
|
114 |
+
return true;
|
115 |
+
}
|
116 |
+
|
117 |
+
/**
|
118 |
+
* Checks the current PHP version against the required version.
|
119 |
+
*
|
120 |
+
* @return bool 'Operator' parameter specified, returns a boolean.
|
121 |
+
*/
|
122 |
+
protected static function is_supported_php_version() {
|
123 |
+
|
124 |
+
return version_compare( phpversion(), self::MIN_PHP_VERSION, '>=' );
|
125 |
+
}
|
126 |
+
|
127 |
+
/**
|
128 |
+
* Checks the current WordPress version against the required version.
|
129 |
+
*
|
130 |
+
* @return bool 'Operator' parameter specified, returns a boolean.
|
131 |
+
*/
|
132 |
+
protected static function is_supported_wp_version() {
|
133 |
+
|
134 |
+
return version_compare( get_bloginfo( 'version' ), self::MIN_WP_VERSION, '>=' );
|
135 |
+
}
|
136 |
+
|
137 |
+
/**
|
138 |
+
* Displays a user friendly message in the WordPress admin.
|
139 |
+
*/
|
140 |
+
public static function display_admin_notices() {
|
141 |
+
|
142 |
+
echo '<div class="error"><p>' . self::get_notice_message() . '</p></div>';
|
143 |
+
|
144 |
+
}
|
145 |
+
|
146 |
+
/**
|
147 |
+
* Returns a localized user friendly error message.
|
148 |
+
*
|
149 |
+
* @return string
|
150 |
+
*/
|
151 |
+
public static function get_notice_message() {
|
152 |
+
|
153 |
+
return sprintf(
|
154 |
+
__( 'BackUpWordPress requires PHP version %1$s or later and WordPress version %2$s or later to run. It has not been activated. %3$s%4$s%5$sLearn more%6$s', 'backupwordpress' ),
|
155 |
+
self::MIN_PHP_VERSION,
|
156 |
+
self::MIN_WP_VERSION,
|
157 |
+
'<a href="',
|
158 |
+
'https://bwp.hmn.md/unsupported-php-version-error/',
|
159 |
+
'">',
|
160 |
+
'</a>'
|
161 |
+
);
|
162 |
+
}
|
163 |
+
|
164 |
+
}
|
classes/wp-cli.php
CHANGED
@@ -10,7 +10,7 @@
|
|
10 |
class BackUpCommand extends WP_CLI_Command {
|
11 |
|
12 |
/**
|
13 |
-
*
|
14 |
*
|
15 |
* ## OPTIONS
|
16 |
*
|
@@ -21,7 +21,7 @@ class BackUpCommand extends WP_CLI_Command {
|
|
21 |
* : Backup database only, defaults to off
|
22 |
*
|
23 |
* [--path]
|
24 |
-
* : dir that the backup should be save in, defaults to
|
25 |
*
|
26 |
* [--root]
|
27 |
* : dir that should be backed up, defaults to site root.
|
@@ -35,69 +35,74 @@ class BackUpCommand extends WP_CLI_Command {
|
|
35 |
* ## Usage
|
36 |
*
|
37 |
* wp backupwordpress backup [--files_only] [--database_only] [--path<dir>] [--root<dir>] [--zip_command_path=<path>] [--mysqldump_command_path=<path>]
|
|
|
38 |
*/
|
39 |
public function backup( $args, $assoc_args ) {
|
40 |
|
41 |
-
|
42 |
-
if ( HM_Backup::is_safe_mode_active() )
|
43 |
-
WP_CLI::error( sprintf( __( 'BackUpWordPress may not work when php is running with %s on', 'backupwordpress' ), 'safe_mode' ) );
|
44 |
-
|
45 |
-
add_action( 'hmbkp_mysqldump_started', function() {
|
46 |
WP_CLI::line( __( 'Backup: Dumping database...', 'backupwordpress' ) );
|
47 |
} );
|
48 |
|
49 |
-
add_action( 'hmbkp_archive_started', function() {
|
50 |
WP_CLI::line( __( 'Backup: Zipping everything up...', 'backupwordpress' ) );
|
51 |
} );
|
52 |
|
53 |
-
// Clean up any mess left by a previous backup
|
54 |
-
hmbkp_cleanup();
|
55 |
-
|
56 |
$hm_backup = new HM_Backup();
|
57 |
|
58 |
-
if ( ! empty( $assoc_args['path'] ) )
|
59 |
-
|
|
|
|
|
|
|
60 |
|
61 |
-
|
|
|
|
|
62 |
$hm_backup->set_root( $assoc_args['root'] );
|
|
|
63 |
|
64 |
if ( ( ! is_dir( $hm_backup->get_path() ) && ( ! is_writable( dirname( $hm_backup->get_path() ) ) || ! wp_mkdir_p( $hm_backup->get_path() ) ) ) || ! is_writable( $hm_backup->get_path() ) ) {
|
65 |
WP_CLI::error( __( 'Invalid backup path', 'backupwordpress' ) );
|
|
|
66 |
return false;
|
67 |
}
|
68 |
|
69 |
if ( ! is_dir( $hm_backup->get_root() ) || ! is_readable( $hm_backup->get_root() ) ) {
|
70 |
WP_CLI::error( __( 'Invalid root path', 'backupwordpress' ) );
|
|
|
71 |
return false;
|
72 |
}
|
73 |
|
74 |
-
if ( ! empty( $assoc_args['files_only'] ) )
|
75 |
$hm_backup->set_type( 'file' );
|
|
|
76 |
|
77 |
-
if ( ! empty( $assoc_args['database_only'] ) )
|
78 |
$hm_backup->set_type( 'database' );
|
|
|
79 |
|
80 |
-
if ( isset( $assoc_args['mysqldump_command_path'] ) )
|
81 |
$hm_backup->set_mysqldump_command_path( $assoc_args['mysqldump_command_path'] );
|
|
|
82 |
|
83 |
-
if ( isset( $assoc_args['zip_command_path'] ) )
|
84 |
$hm_backup->set_zip_command_path( $assoc_args['zip_command_path'] );
|
|
|
85 |
|
86 |
-
if ( ! empty( $assoc_args['excludes'] ) )
|
87 |
$hm_backup->set_excludes( $assoc_args['excludes'] );
|
|
|
88 |
|
89 |
$hm_backup->backup();
|
90 |
|
91 |
-
|
92 |
-
//hmbkp_delete_old_backups();
|
93 |
-
|
94 |
-
if ( file_exists( $hm_backup->get_archive_filepath() ) )
|
95 |
WP_CLI::success( __( 'Backup Complete: ', 'backupwordpress' ) . $hm_backup->get_archive_filepath() );
|
96 |
-
|
97 |
-
else
|
98 |
WP_CLI::error( __( 'Backup Failed', 'backupwordpress' ) );
|
|
|
99 |
|
100 |
}
|
101 |
|
102 |
}
|
|
|
103 |
WP_CLI::add_command( 'backupwordpress', 'BackUpCommand' );
|
10 |
class BackUpCommand extends WP_CLI_Command {
|
11 |
|
12 |
/**
|
13 |
+
* Perform a Backup.
|
14 |
*
|
15 |
* ## OPTIONS
|
16 |
*
|
21 |
* : Backup database only, defaults to off
|
22 |
*
|
23 |
* [--path]
|
24 |
+
* : dir that the backup should be save in, defaults to your existing backups directory
|
25 |
*
|
26 |
* [--root]
|
27 |
* : dir that should be backed up, defaults to site root.
|
35 |
* ## Usage
|
36 |
*
|
37 |
* wp backupwordpress backup [--files_only] [--database_only] [--path<dir>] [--root<dir>] [--zip_command_path=<path>] [--mysqldump_command_path=<path>]
|
38 |
+
*
|
39 |
*/
|
40 |
public function backup( $args, $assoc_args ) {
|
41 |
|
42 |
+
add_action( 'hmbkp_mysqldump_started', function () {
|
|
|
|
|
|
|
|
|
43 |
WP_CLI::line( __( 'Backup: Dumping database...', 'backupwordpress' ) );
|
44 |
} );
|
45 |
|
46 |
+
add_action( 'hmbkp_archive_started', function () {
|
47 |
WP_CLI::line( __( 'Backup: Zipping everything up...', 'backupwordpress' ) );
|
48 |
} );
|
49 |
|
|
|
|
|
|
|
50 |
$hm_backup = new HM_Backup();
|
51 |
|
52 |
+
if ( ! empty( $assoc_args['path'] ) ) {
|
53 |
+
HMBKP_Path::get_instance()->set_path( $assoc_args['path'] );
|
54 |
+
}
|
55 |
+
|
56 |
+
$hm_backup->set_path( HMBKP_Path::get_instance()->get_path() );
|
57 |
|
58 |
+
HMBKP_Path::get_instance()->cleanup();
|
59 |
+
|
60 |
+
if ( ! empty( $assoc_args['root'] ) ) {
|
61 |
$hm_backup->set_root( $assoc_args['root'] );
|
62 |
+
}
|
63 |
|
64 |
if ( ( ! is_dir( $hm_backup->get_path() ) && ( ! is_writable( dirname( $hm_backup->get_path() ) ) || ! wp_mkdir_p( $hm_backup->get_path() ) ) ) || ! is_writable( $hm_backup->get_path() ) ) {
|
65 |
WP_CLI::error( __( 'Invalid backup path', 'backupwordpress' ) );
|
66 |
+
|
67 |
return false;
|
68 |
}
|
69 |
|
70 |
if ( ! is_dir( $hm_backup->get_root() ) || ! is_readable( $hm_backup->get_root() ) ) {
|
71 |
WP_CLI::error( __( 'Invalid root path', 'backupwordpress' ) );
|
72 |
+
|
73 |
return false;
|
74 |
}
|
75 |
|
76 |
+
if ( ! empty( $assoc_args['files_only'] ) ) {
|
77 |
$hm_backup->set_type( 'file' );
|
78 |
+
}
|
79 |
|
80 |
+
if ( ! empty( $assoc_args['database_only'] ) ) {
|
81 |
$hm_backup->set_type( 'database' );
|
82 |
+
}
|
83 |
|
84 |
+
if ( isset( $assoc_args['mysqldump_command_path'] ) ) {
|
85 |
$hm_backup->set_mysqldump_command_path( $assoc_args['mysqldump_command_path'] );
|
86 |
+
}
|
87 |
|
88 |
+
if ( isset( $assoc_args['zip_command_path'] ) ) {
|
89 |
$hm_backup->set_zip_command_path( $assoc_args['zip_command_path'] );
|
90 |
+
}
|
91 |
|
92 |
+
if ( ! empty( $assoc_args['excludes'] ) ) {
|
93 |
$hm_backup->set_excludes( $assoc_args['excludes'] );
|
94 |
+
}
|
95 |
|
96 |
$hm_backup->backup();
|
97 |
|
98 |
+
if ( file_exists( $hm_backup->get_archive_filepath() ) ) {
|
|
|
|
|
|
|
99 |
WP_CLI::success( __( 'Backup Complete: ', 'backupwordpress' ) . $hm_backup->get_archive_filepath() );
|
100 |
+
} else {
|
|
|
101 |
WP_CLI::error( __( 'Backup Failed', 'backupwordpress' ) );
|
102 |
+
}
|
103 |
|
104 |
}
|
105 |
|
106 |
}
|
107 |
+
|
108 |
WP_CLI::add_command( 'backupwordpress', 'BackUpCommand' );
|
content/custom/example-org-test-merge-existing-path-complete-2014-12-10-01-08-33.zip
DELETED
Binary file
|
content/custom/example-org-test-merge-existing-path-complete-2014-12-10-01-10-29.zip
DELETED
Binary file
|
content/custom/example-org-test-merge-existing-path-complete-2014-12-10-01-12-39.zip
DELETED
Binary file
|
content/custom/index.html
DELETED
File without changes
|
content/default/index.html
DELETED
File without changes
|
default/index.html
DELETED
File without changes
|
functions/core.php
CHANGED
@@ -1,58 +1,5 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
/**
|
4 |
-
* Setup the plugin defaults on activation
|
5 |
-
*/
|
6 |
-
function hmbkp_activate() {
|
7 |
-
|
8 |
-
// loads the translation files
|
9 |
-
load_plugin_textdomain( 'hmbkp', false, HMBKP_PLUGIN_LANG_DIR );
|
10 |
-
|
11 |
-
// Don't activate on old versions of WordPress
|
12 |
-
global $wp_version;
|
13 |
-
|
14 |
-
if ( version_compare( $wp_version, HMBKP_REQUIRED_WP_VERSION, '<' ) ) {
|
15 |
-
|
16 |
-
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
17 |
-
deactivate_plugins( __FILE__ );
|
18 |
-
|
19 |
-
if ( isset( $_GET['action'] ) && ( 'activate' === $_GET['action'] || 'error_scrape' === $_GET['action'] ) ) {
|
20 |
-
wp_die( sprintf( __( 'BackUpWordPress requires WordPress version %s or greater.', 'backupwordpress' ), HMBKP_REQUIRED_WP_VERSION ), __( 'BackUpWordPress', 'backupwordpress' ), array( 'back_link' => true ) );
|
21 |
-
}
|
22 |
-
}
|
23 |
-
|
24 |
-
// Run deactivate on activation in-case it was deactivated manually
|
25 |
-
hmbkp_deactivate();
|
26 |
-
|
27 |
-
}
|
28 |
-
|
29 |
-
/**
|
30 |
-
* Cleanup on plugin deactivation
|
31 |
-
*
|
32 |
-
* Removes options and clears all cron schedules
|
33 |
-
*/
|
34 |
-
function hmbkp_deactivate() {
|
35 |
-
|
36 |
-
hmbkp_maybe_self_deactivate();
|
37 |
-
|
38 |
-
// Clean up the backups directory
|
39 |
-
hmbkp_cleanup();
|
40 |
-
|
41 |
-
$schedules = HMBKP_Schedules::get_instance();
|
42 |
-
|
43 |
-
// Clear schedule crons
|
44 |
-
foreach ( $schedules->get_schedules() as $schedule ) {
|
45 |
-
$schedule->unschedule();
|
46 |
-
}
|
47 |
-
|
48 |
-
// Opt them out of support
|
49 |
-
delete_option( 'hmbkp_enable_support' );
|
50 |
-
|
51 |
-
// Remove the directory filesize cache
|
52 |
-
delete_transient( 'hmbkp_directory_filesizes' );
|
53 |
-
|
54 |
-
}
|
55 |
-
|
56 |
/**
|
57 |
* Handles anything that needs to be
|
58 |
* done when the plugin is updated
|
@@ -195,42 +142,29 @@ function hmbkp_update() {
|
|
195 |
// Remove the plugin data cache
|
196 |
delete_transient( 'hmbkp_plugin_data' );
|
197 |
|
198 |
-
//
|
199 |
-
|
200 |
}
|
201 |
|
202 |
-
//
|
203 |
-
if ( get_option( 'hmbkp_plugin_version' ) && version_compare(
|
204 |
-
|
205 |
-
hmbkp_deactivate();
|
206 |
-
|
207 |
-
// re-calcuate the backups directory and move to it.
|
208 |
-
if ( ! defined( 'HMBKP_PATH' ) ) {
|
209 |
-
|
210 |
-
$old_path = hmbkp_path();
|
211 |
|
212 |
-
|
213 |
-
|
|
|
214 |
|
215 |
-
|
216 |
|
217 |
-
|
|
|
218 |
|
219 |
-
|
220 |
-
if ( file_exists( hmbkp_path() . '/.htaccess' ) ) {
|
221 |
-
unlink( hmbkp_path() . '/.htaccess' );
|
222 |
-
}
|
223 |
|
224 |
-
|
225 |
-
if ( file_exists( hmbkp_path() . '/index.html' ) ) {
|
226 |
-
unlink( hmbkp_path() . '/index.html' );
|
227 |
-
}
|
228 |
|
229 |
}
|
230 |
|
231 |
// Update the stored version
|
232 |
-
if ( get_option( 'hmbkp_plugin_version' ) !==
|
233 |
-
update_option( 'hmbkp_plugin_version',
|
234 |
}
|
235 |
|
236 |
}
|
@@ -335,149 +269,6 @@ function hmbkp_rmdirtree( $dir ) {
|
|
335 |
return true;
|
336 |
}
|
337 |
|
338 |
-
/**
|
339 |
-
* Get the path to the backups directory
|
340 |
-
*
|
341 |
-
* Will try to create it if it doesn't exist
|
342 |
-
* and will fallback to default if a custom dir
|
343 |
-
* isn't writable.
|
344 |
-
*/
|
345 |
-
function hmbkp_path() {
|
346 |
-
|
347 |
-
global $is_apache;
|
348 |
-
|
349 |
-
$path = untrailingslashit( get_option( 'hmbkp_path' ) );
|
350 |
-
|
351 |
-
// Allow the backups path to be defined
|
352 |
-
if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH )
|
353 |
-
$path = untrailingslashit( HMBKP_PATH );
|
354 |
-
|
355 |
-
// If the dir doesn't exist or isn't writable then use the default path instead instead
|
356 |
-
if ( ( ! $path || ( is_dir( $path ) && ! wp_is_writable( $path ) ) || ( ! is_dir( $path ) && ! wp_is_writable( dirname( $path ) ) ) ) && $path !== hmbkp_path_default() )
|
357 |
-
$path = hmbkp_path_default();
|
358 |
-
|
359 |
-
// Create the backups directory if it doesn't exist
|
360 |
-
if ( ! is_dir( $path ) && is_writable( dirname( $path ) ) )
|
361 |
-
wp_mkdir_p( $path );
|
362 |
-
|
363 |
-
// If the path has changed then cache it
|
364 |
-
if ( get_option( 'hmbkp_path' ) !== $path )
|
365 |
-
update_option( 'hmbkp_path', $path );
|
366 |
-
|
367 |
-
// Protect against directory browsing by including a index.html file
|
368 |
-
$index = $path . '/index.html';
|
369 |
-
|
370 |
-
if ( ! file_exists( $index ) && wp_is_writable( $path ) )
|
371 |
-
file_put_contents( $index, '' );
|
372 |
-
|
373 |
-
$htaccess = $path . '/.htaccess';
|
374 |
-
|
375 |
-
// Protect the directory with a .htaccess file on Apache servers
|
376 |
-
if ( $is_apache && function_exists( 'insert_with_markers' ) && ! file_exists( $htaccess ) && wp_is_writable( $path ) ) {
|
377 |
-
|
378 |
-
$contents[] = '# ' . sprintf( __( 'This %s file ensures that other people cannot download your backup files.', 'backupwordpress' ), '.htaccess' );
|
379 |
-
$contents[] = '';
|
380 |
-
$contents[] = '<IfModule mod_rewrite.c>';
|
381 |
-
$contents[] = 'RewriteEngine On';
|
382 |
-
$contents[] = 'RewriteCond %{QUERY_STRING} !key=' . HMBKP_SECURE_KEY;
|
383 |
-
$contents[] = 'RewriteRule (.*) - [F]';
|
384 |
-
$contents[] = '</IfModule>';
|
385 |
-
$contents[] = '';
|
386 |
-
|
387 |
-
insert_with_markers( $htaccess, 'BackUpWordPress', $contents );
|
388 |
-
|
389 |
-
}
|
390 |
-
|
391 |
-
return HM_Backup::conform_dir( $path );
|
392 |
-
|
393 |
-
}
|
394 |
-
|
395 |
-
/**
|
396 |
-
* Return the default backup path
|
397 |
-
*
|
398 |
-
* @return string path
|
399 |
-
*/
|
400 |
-
function hmbkp_path_default() {
|
401 |
-
|
402 |
-
$path = untrailingslashit( get_option( 'hmbkp_default_path' ) );
|
403 |
-
|
404 |
-
$content_dir = HM_Backup::conform_dir( trailingslashit( WP_CONTENT_DIR ) );
|
405 |
-
|
406 |
-
$pos = strpos( $path, $content_dir );
|
407 |
-
|
408 |
-
// no path set or current path doesn't match the database value
|
409 |
-
if ( empty( $path ) || ( false === $pos ) || ( 0 !== $pos ) ) {
|
410 |
-
|
411 |
-
$path = HM_Backup::conform_dir( trailingslashit( WP_CONTENT_DIR ) . 'backupwordpress-' . substr( HMBKP_SECURE_KEY, 0, 10 ) . '-backups' );
|
412 |
-
|
413 |
-
update_option( 'hmbkp_default_path', $path );
|
414 |
-
|
415 |
-
}
|
416 |
-
|
417 |
-
$upload_dir = wp_upload_dir();
|
418 |
-
|
419 |
-
// If the backups dir can't be created in WP_CONTENT_DIR then fallback to uploads
|
420 |
-
if ( ( ( ! is_dir( $path ) && ! wp_is_writable( dirname( $path ) ) ) || ( is_dir( $path ) && ! wp_is_writable( $path ) ) ) && false === strpos( $path, $upload_dir['basedir'] ) ) {
|
421 |
-
|
422 |
-
hmbkp_path_move( $path, $path = HM_Backup::conform_dir( trailingslashit( $upload_dir['basedir'] ) . 'backupwordpress-' . substr( HMBKP_SECURE_KEY, 0, 10 ) . '-backups' ) );
|
423 |
-
|
424 |
-
update_option( 'hmbkp_default_path', $path );
|
425 |
-
|
426 |
-
}
|
427 |
-
|
428 |
-
return $path;
|
429 |
-
|
430 |
-
}
|
431 |
-
|
432 |
-
/**
|
433 |
-
* Move the backup directory and all existing backup files to a new
|
434 |
-
* location
|
435 |
-
*
|
436 |
-
* @param string $from path to move the backups dir from
|
437 |
-
* @param string $to path to move the backups dir to
|
438 |
-
* @return void
|
439 |
-
*/
|
440 |
-
function hmbkp_path_move( $from, $to ) {
|
441 |
-
|
442 |
-
if ( ! trim( untrailingslashit( trim( $from ) ) ) || ! trim( untrailingslashit( trim( $to ) ) ) )
|
443 |
-
return;
|
444 |
-
|
445 |
-
// Create the new directory if it doesn't exist
|
446 |
-
if ( is_writable( dirname( $to ) ) && ! is_dir( $to ) )
|
447 |
-
wp_mkdir_p( $to );
|
448 |
-
|
449 |
-
// Bail if we couldn't
|
450 |
-
if ( ! is_dir( $to ) || ! wp_is_writable( $to ) )
|
451 |
-
return false;
|
452 |
-
|
453 |
-
update_option( 'hmbkp_path', $to );
|
454 |
-
|
455 |
-
// Bail if the old directory doesn't exist
|
456 |
-
if ( ! is_dir( $from ) )
|
457 |
-
return false;
|
458 |
-
|
459 |
-
// Cleanup before we start moving things
|
460 |
-
hmbkp_cleanup();
|
461 |
-
|
462 |
-
// Move any existing backups
|
463 |
-
if ( $handle = opendir( $from ) ) {
|
464 |
-
|
465 |
-
while ( false !== ( $file = readdir( $handle ) ) ) {
|
466 |
-
if ( 'zip' === pathinfo( $file, PATHINFO_EXTENSION ) )
|
467 |
-
if ( ! @rename( trailingslashit( $from ) . $file, trailingslashit( $to ) . $file ) )
|
468 |
-
copy( trailingslashit( $from ) . $file, trailingslashit( $to ) . $file );
|
469 |
-
}
|
470 |
-
|
471 |
-
closedir( $handle );
|
472 |
-
|
473 |
-
}
|
474 |
-
|
475 |
-
// Only delete the old directory if it's inside WP_CONTENT_DIR
|
476 |
-
if ( false !==strpos( $from, WP_CONTENT_DIR ) )
|
477 |
-
hmbkp_rmdirtree( $from );
|
478 |
-
|
479 |
-
}
|
480 |
-
|
481 |
/**
|
482 |
* Check if a backup is possible with regards to file
|
483 |
* permissions etc.
|
@@ -492,59 +283,11 @@ function hmbkp_possible() {
|
|
492 |
|
493 |
$test_backup = new HMBKP_Scheduled_Backup( 'test_backup' );
|
494 |
|
495 |
-
if ( ! is_readable( $test_backup->get_root() ) )
|
496 |
return false;
|
497 |
-
|
498 |
-
return true;
|
499 |
-
}
|
500 |
-
|
501 |
-
/**
|
502 |
-
* Remove any non backup.zip files from the backups dir.
|
503 |
-
*
|
504 |
-
* @return void
|
505 |
-
*/
|
506 |
-
function hmbkp_cleanup() {
|
507 |
-
|
508 |
-
if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH )
|
509 |
-
return;
|
510 |
-
|
511 |
-
$hmbkp_path = hmbkp_path();
|
512 |
-
|
513 |
-
if ( ! is_dir( $hmbkp_path ) )
|
514 |
-
return;
|
515 |
-
|
516 |
-
if ( $handle = opendir( $hmbkp_path ) ) {
|
517 |
-
|
518 |
-
while ( false !== ( $file = readdir( $handle ) ) ) {
|
519 |
-
if ( ! in_array( $file, array( '.', '..', 'index.html' ) ) && 'zip' !== pathinfo( $file, PATHINFO_EXTENSION ) && false === strpos( $file, '-running' ) )
|
520 |
-
hmbkp_rmdirtree( trailingslashit( $hmbkp_path ) . $file );
|
521 |
-
}
|
522 |
-
|
523 |
-
closedir( $handle );
|
524 |
-
|
525 |
}
|
526 |
|
527 |
-
|
528 |
-
|
529 |
-
/**
|
530 |
-
* Handles changes in the defined Constants
|
531 |
-
* that users can define to control advanced
|
532 |
-
* settings
|
533 |
-
*/
|
534 |
-
function hmbkp_constant_changes() {
|
535 |
-
|
536 |
-
// If a custom backup path has been set or changed
|
537 |
-
if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH && HM_Backup::conform_dir( HMBKP_PATH ) !== ( $from = HM_Backup::conform_dir( get_option( 'hmbkp_path' ) ) ) )
|
538 |
-
hmbkp_path_move( $from, HMBKP_PATH );
|
539 |
-
|
540 |
-
// If a custom backup path has been removed
|
541 |
-
if ( ( ( defined( 'HMBKP_PATH' ) && ! HMBKP_PATH ) || ! defined( 'HMBKP_PATH' ) && hmbkp_path_default() !== ( $from = HM_Backup::conform_dir( get_option( 'hmbkp_path' ) ) ) ) )
|
542 |
-
hmbkp_path_move( $from, hmbkp_path_default() );
|
543 |
-
|
544 |
-
// If the custom path has changed and the new directory isn't writable
|
545 |
-
if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH && ! wp_is_writable( HMBKP_PATH ) && get_option( 'hmbkp_path' ) === HMBKP_PATH && is_dir( HMBKP_PATH ) )
|
546 |
-
hmbkp_path_move( HMBKP_PATH, hmbkp_path_default() );
|
547 |
-
|
548 |
}
|
549 |
|
550 |
/**
|
1 |
<?php
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
/**
|
4 |
* Handles anything that needs to be
|
5 |
* done when the plugin is updated
|
142 |
// Remove the plugin data cache
|
143 |
delete_transient( 'hmbkp_plugin_data' );
|
144 |
|
|
|
|
|
145 |
}
|
146 |
|
147 |
+
// Update to 3.1
|
148 |
+
if ( get_option( 'hmbkp_plugin_version' ) && version_compare( '3.0', get_option( 'hmbkp_plugin_version' ), '>' ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
|
150 |
+
// Remove the plugin data cache
|
151 |
+
delete_option( 'hmbkp_path' );
|
152 |
+
delete_option( 'hmbkp_default_path' );
|
153 |
|
154 |
+
}
|
155 |
|
156 |
+
// Every update
|
157 |
+
if ( get_option( 'hmbkp_plugin_version' ) && version_compare( BackUpWordPress_Plugin::PLUGIN_VERSION, get_option( 'hmbkp_plugin_version' ), '>' ) ) {
|
158 |
|
159 |
+
BackUpWordPress_Setup::deactivate();
|
|
|
|
|
|
|
160 |
|
161 |
+
HMBKP_Path::get_instance()->protect_path( 'reset' );
|
|
|
|
|
|
|
162 |
|
163 |
}
|
164 |
|
165 |
// Update the stored version
|
166 |
+
if ( get_option( 'hmbkp_plugin_version' ) !== BackUpWordPress_Plugin::PLUGIN_VERSION ) {
|
167 |
+
update_option( 'hmbkp_plugin_version', BackUpWordPress_Plugin::PLUGIN_VERSION );
|
168 |
}
|
169 |
|
170 |
}
|
269 |
return true;
|
270 |
}
|
271 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
272 |
/**
|
273 |
* Check if a backup is possible with regards to file
|
274 |
* permissions etc.
|
283 |
|
284 |
$test_backup = new HMBKP_Scheduled_Backup( 'test_backup' );
|
285 |
|
286 |
+
if ( ! is_readable( $test_backup->get_root() ) ) {
|
287 |
return false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
288 |
}
|
289 |
|
290 |
+
return true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
291 |
}
|
292 |
|
293 |
/**
|
functions/interface.php
CHANGED
@@ -47,8 +47,14 @@ function hmbkp_get_backup_row( $file, HMBKP_Scheduled_Backup $schedule ) {
|
|
47 |
*/
|
48 |
function hmbkp_admin_notices() {
|
49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
$notices = HMBKP_Notices::get_instance()->get_notices();
|
51 |
-
|
52 |
if ( empty( $notices ) ) {
|
53 |
return;
|
54 |
}
|
@@ -67,7 +73,7 @@ function hmbkp_admin_notices() {
|
|
67 |
|
68 |
<ul>
|
69 |
<?php foreach ( $notices['backup_errors'] as $notice ) : ?>
|
70 |
-
<li><?php echo esc_html( $notice ); ?></li>
|
71 |
<?php endforeach; ?>
|
72 |
</ul>
|
73 |
|
@@ -77,17 +83,13 @@ function hmbkp_admin_notices() {
|
|
77 |
<?php if ( ! empty( $notices['server_config'] ) ) : ?>
|
78 |
|
79 |
<div id="hmbkp-warning" class="error fade">
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
</
|
86 |
-
|
87 |
-
<?php foreach ( $notices['server_config'] as $notice ) : ?>
|
88 |
-
<li><?php echo $notice; ?></li>
|
89 |
-
<?php endforeach; ?>
|
90 |
-
</ul>
|
91 |
</div>
|
92 |
|
93 |
<?php endif; ?>
|
@@ -96,6 +98,7 @@ function hmbkp_admin_notices() {
|
|
96 |
|
97 |
}
|
98 |
add_action( 'admin_notices', 'hmbkp_admin_notices' );
|
|
|
99 |
|
100 |
function hmbkp_set_server_config_notices() {
|
101 |
|
@@ -113,37 +116,49 @@ function hmbkp_set_server_config_notices() {
|
|
113 |
}
|
114 |
|
115 |
if ( ! is_dir( hmbkp_path() ) ) {
|
116 |
-
|
117 |
-
$messages[] = 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.', 'backupwordpress' ), '<code>wp-content</code>', '<code>chown ' . esc_html( $php_user ) . ':' . esc_html( $php_group ) . ' ' . esc_html( dirname( hmbkp_path() ) ) . '</code>', '<code>chmod 777 ' . esc_html( dirname( hmbkp_path() ) ) . '</code>' );
|
118 |
-
|
119 |
}
|
120 |
|
121 |
if ( is_dir( hmbkp_path() ) && ! wp_is_writable( hmbkp_path() ) ) {
|
122 |
-
|
123 |
$messages[] = sprintf( __( 'Your backups directory isn\'t writable, run %1$s or %2$s or set the permissions yourself.', 'backupwordpress' ), '<code>chown -R ' . esc_html( $php_user ) . ':' . esc_html( $php_group ) . ' ' . esc_html( hmbkp_path() ) . '</code>', '<code>chmod -R 777 ' . esc_html( hmbkp_path() ) . '</code>' );
|
124 |
-
|
125 |
}
|
126 |
|
127 |
if ( HM_Backup::is_safe_mode_active() ) {
|
128 |
$messages[] = 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.', 'backupwordpress' ), '<code>PHP</code>', sprintf( '<a href="%1$s">%2$s</a>', __( 'http://php.net/manual/en/features.safe-mode.php', 'backupwordpress' ), __( 'Safe Mode', 'backupwordpress' ) ), '<code>' . __( 'Safe Mode', 'backupwordpress' ) . '</code>' );
|
129 |
}
|
130 |
|
131 |
-
if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH
|
132 |
-
|
133 |
-
|
|
|
134 |
|
135 |
-
|
136 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
}
|
138 |
|
139 |
$test_backup = new HMBKP_Scheduled_Backup( 'test_backup' );
|
140 |
|
141 |
if ( ! is_readable( $test_backup->get_root() ) ) {
|
142 |
-
$messages[] = sprintf( __( 'Your
|
143 |
}
|
144 |
|
145 |
if ( count( $messages ) > 0 ) {
|
146 |
-
$notices->set_notices( 'server_config', $messages );
|
147 |
}
|
148 |
|
149 |
}
|
@@ -157,8 +172,9 @@ add_action( 'admin_init', 'hmbkp_set_server_config_notices' );
|
|
157 |
*/
|
158 |
function hmbkp_plugin_row( $plugins ) {
|
159 |
|
160 |
-
if ( isset( $plugins[HMBKP_PLUGIN_SLUG . '/backupwordpress.php'] ) )
|
161 |
$plugins[HMBKP_PLUGIN_SLUG . '/backupwordpress.php']['Description'] = str_replace( 'Once activated you\'ll find me under <strong>Tools → Backups</strong>', 'Find me under <strong><a href="' . esc_url( hmbkp_get_settings_url() ) . '">Tools → Backups</a></strong>', $plugins[HMBKP_PLUGIN_SLUG . '/backupwordpress.php']['Description'] );
|
|
|
162 |
|
163 |
return $plugins;
|
164 |
|
@@ -369,3 +385,28 @@ function hmbkp_get_settings_errors() {
|
|
369 |
function hmbkp_clear_settings_errors(){
|
370 |
return delete_transient( 'hmbkp_settings_errors' );
|
371 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
*/
|
48 |
function hmbkp_admin_notices() {
|
49 |
|
50 |
+
$current_screen = get_current_screen();
|
51 |
+
|
52 |
+
if ( ! isset( $current_screen ) || HMBKP_ADMIN_PAGE !== $current_screen->id ) {
|
53 |
+
return;
|
54 |
+
}
|
55 |
+
|
56 |
$notices = HMBKP_Notices::get_instance()->get_notices();
|
57 |
+
|
58 |
if ( empty( $notices ) ) {
|
59 |
return;
|
60 |
}
|
73 |
|
74 |
<ul>
|
75 |
<?php foreach ( $notices['backup_errors'] as $notice ) : ?>
|
76 |
+
<li><pre><?php echo esc_html( $notice ); ?></pre></li>
|
77 |
<?php endforeach; ?>
|
78 |
</ul>
|
79 |
|
83 |
<?php if ( ! empty( $notices['server_config'] ) ) : ?>
|
84 |
|
85 |
<div id="hmbkp-warning" class="error fade">
|
86 |
+
|
87 |
+
<ul>
|
88 |
+
<?php foreach ( $notices['server_config'] as $notice ) : ?>
|
89 |
+
<li><?php echo wp_kses_data( $notice ); ?></li>
|
90 |
+
<?php endforeach; ?>
|
91 |
+
</ul>
|
92 |
+
|
|
|
|
|
|
|
|
|
93 |
</div>
|
94 |
|
95 |
<?php endif; ?>
|
98 |
|
99 |
}
|
100 |
add_action( 'admin_notices', 'hmbkp_admin_notices' );
|
101 |
+
add_action( 'network_admin_notices', 'hmbkp_admin_notices' );
|
102 |
|
103 |
function hmbkp_set_server_config_notices() {
|
104 |
|
116 |
}
|
117 |
|
118 |
if ( ! is_dir( hmbkp_path() ) ) {
|
119 |
+
$messages[] = 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.', 'backupwordpress' ), '<code>' . esc_html( dirname( hmbkp_path() ) ) . '</code>', '<code>chown ' . esc_html( $php_user ) . ':' . esc_html( $php_group ) . ' ' . esc_html( dirname( hmbkp_path() ) ) . '</code>', '<code>chmod 777 ' . esc_html( dirname( hmbkp_path() ) ) . '</code>' );
|
|
|
|
|
120 |
}
|
121 |
|
122 |
if ( is_dir( hmbkp_path() ) && ! wp_is_writable( hmbkp_path() ) ) {
|
|
|
123 |
$messages[] = sprintf( __( 'Your backups directory isn\'t writable, run %1$s or %2$s or set the permissions yourself.', 'backupwordpress' ), '<code>chown -R ' . esc_html( $php_user ) . ':' . esc_html( $php_group ) . ' ' . esc_html( hmbkp_path() ) . '</code>', '<code>chmod -R 777 ' . esc_html( hmbkp_path() ) . '</code>' );
|
|
|
124 |
}
|
125 |
|
126 |
if ( HM_Backup::is_safe_mode_active() ) {
|
127 |
$messages[] = 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.', 'backupwordpress' ), '<code>PHP</code>', sprintf( '<a href="%1$s">%2$s</a>', __( 'http://php.net/manual/en/features.safe-mode.php', 'backupwordpress' ), __( 'Safe Mode', 'backupwordpress' ) ), '<code>' . __( 'Safe Mode', 'backupwordpress' ) . '</code>' );
|
128 |
}
|
129 |
|
130 |
+
if ( defined( 'HMBKP_PATH' ) && HMBKP_PATH ) {
|
131 |
+
|
132 |
+
// Suppress open_basedir warning https://bugs.php.net/bug.php?id=53041
|
133 |
+
if ( ! @file_exists( HMBKP_PATH ) ) {
|
134 |
|
135 |
+
$messages[] = sprintf( __( 'Your custom path does not exist', 'backupwordpress' ) );
|
136 |
+
|
137 |
+
} elseif ( hmbkp_is_restricted_custom_path() ) {
|
138 |
+
|
139 |
+
$messages[] = sprintf( __( 'Your custom path is unreachable due to a restriction set in your PHP configuration (open_basedir)', 'backupwordpress' ) );
|
140 |
+
|
141 |
+
} else {
|
142 |
+
|
143 |
+
if ( ! @is_dir( HMBKP_PATH ) ) {
|
144 |
+
$messages[] = sprintf( __( 'Your custom backups directory %1$s doesn\'t exist and can\'t be created, your backups will be saved to %2$s instead.', 'backupwordpress' ), '<code>' . esc_html( HMBKP_PATH ) . '</code>', '<code>' . esc_html( hmbkp_path() ) . '</code>' );
|
145 |
+
}
|
146 |
+
|
147 |
+
if ( @is_dir( HMBKP_PATH ) && ! wp_is_writable( HMBKP_PATH ) ) {
|
148 |
+
$messages[] = sprintf( __( 'Your custom backups directory %1$s isn\'t writable, new backups will be saved to %2$s instead.', 'backupwordpress' ), '<code>' . esc_html( HMBKP_PATH ) . '</code>', '<code>' . esc_html( hmbkp_path() ) . '</code>' );
|
149 |
+
|
150 |
+
}
|
151 |
+
}
|
152 |
}
|
153 |
|
154 |
$test_backup = new HMBKP_Scheduled_Backup( 'test_backup' );
|
155 |
|
156 |
if ( ! is_readable( $test_backup->get_root() ) ) {
|
157 |
+
$messages[] = sprintf( __( 'Your site root path %s isn\'t readable.', 'backupwordpress' ), '<code>' . $test_backup->get_root() . '</code>' );
|
158 |
}
|
159 |
|
160 |
if ( count( $messages ) > 0 ) {
|
161 |
+
$notices->set_notices( 'server_config', $messages, false );
|
162 |
}
|
163 |
|
164 |
}
|
172 |
*/
|
173 |
function hmbkp_plugin_row( $plugins ) {
|
174 |
|
175 |
+
if ( isset( $plugins[HMBKP_PLUGIN_SLUG . '/backupwordpress.php'] ) ) {
|
176 |
$plugins[HMBKP_PLUGIN_SLUG . '/backupwordpress.php']['Description'] = str_replace( 'Once activated you\'ll find me under <strong>Tools → Backups</strong>', 'Find me under <strong><a href="' . esc_url( hmbkp_get_settings_url() ) . '">Tools → Backups</a></strong>', $plugins[HMBKP_PLUGIN_SLUG . '/backupwordpress.php']['Description'] );
|
177 |
+
}
|
178 |
|
179 |
return $plugins;
|
180 |
|
385 |
function hmbkp_clear_settings_errors(){
|
386 |
return delete_transient( 'hmbkp_settings_errors' );
|
387 |
}
|
388 |
+
|
389 |
+
function hmbkp_is_restricted_custom_path() {
|
390 |
+
|
391 |
+
$open_basedir = @ini_get( 'open_basedir' );
|
392 |
+
|
393 |
+
if ( 0 === strlen( $open_basedir ) ) {
|
394 |
+
return false;
|
395 |
+
}
|
396 |
+
|
397 |
+
$open_basedir_paths = array_map( 'trim', explode( ':', $open_basedir ) );
|
398 |
+
|
399 |
+
// Is backups path in the open_basedir allowed paths?
|
400 |
+
if ( in_array( HMBKP_PATH, $open_basedir_paths ) ) {
|
401 |
+
return false;
|
402 |
+
}
|
403 |
+
|
404 |
+
// Is backups path a subdirectory of one of the allowed paths?
|
405 |
+
foreach ( $open_basedir_paths as $path ) {
|
406 |
+
if ( 0 === strpos( HMBKP_PATH, $path ) ) {
|
407 |
+
return false;
|
408 |
+
}
|
409 |
+
}
|
410 |
+
|
411 |
+
return true;
|
412 |
+
}
|
languages/backupwordpress-fr_FR.mo
CHANGED
Binary file
|
languages/backupwordpress-fr_FR.po
CHANGED
@@ -2,199 +2,562 @@
|
|
2 |
# This file is distributed under the same license as the 3.x package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"
|
|
|
|
|
|
|
|
|
|
|
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: Poedit 1.5.7\n"
|
11 |
-
"Project-Id-Version: 3.x\n"
|
12 |
-
"POT-Creation-Date: \n"
|
13 |
-
"Last-Translator: Human Made Limited <hello@hmn.md>\n"
|
14 |
-
"Language-Team: \n"
|
15 |
|
16 |
-
#: admin/
|
17 |
-
msgid ""
|
18 |
-
"
|
19 |
-
"<code>wp-config.php</code>, do automatic backups work?"
|
20 |
-
msgstr ""
|
21 |
-
"Essayez d'ajouter <code>define( 'ALTERNATE_WP_CRON', true );</code> à votre "
|
22 |
-
"fichier <code>wp-config.php</code>, est-ce que les sauvegardes automatiques "
|
23 |
-
"fonctionnent ?"
|
24 |
|
25 |
-
#: admin/
|
26 |
-
msgid ""
|
27 |
-
"
|
28 |
-
"maintenance plugin, .htaccess) if so wp-cron won't work until you remove it, "
|
29 |
-
"if you are and you temporarily remove the authentication, do backups start "
|
30 |
-
"working?"
|
31 |
-
msgstr ""
|
32 |
-
"Est-ce que votre site est privé ? ( protégé par une forme d'identification, "
|
33 |
-
"un plugin de maintenance, ou .htaccess). Si oui, wp-cron ne fonctionnera pas "
|
34 |
-
"tant que vous n'aurez pas désactivé la restriction. Vérifiez si la "
|
35 |
-
"désactivation de la restriction solutionne le problème."
|
36 |
|
37 |
-
#: admin/
|
38 |
-
msgid ""
|
39 |
-
"
|
40 |
-
"enable suport from your Admin Dashboard (recommended), or email support@hmn."
|
41 |
-
"md"
|
42 |
-
msgstr ""
|
43 |
-
"Envoyer un rapport des résultats à notre équipe de support technique pour "
|
44 |
-
"obtenir de l'aide. Pour ce faire, activez le support via l'admin "
|
45 |
-
"(recommandé) ou envoyez un courriel à support@hmn.md"
|
46 |
|
47 |
-
#: admin/
|
48 |
-
msgid "
|
49 |
-
msgstr "
|
50 |
|
51 |
-
#: admin/
|
52 |
-
msgid ""
|
53 |
-
"
|
54 |
-
"php5 /home/sites/yourdomain.com/public_html/wp-cron.php</code> (note the "
|
55 |
-
"space between php5 and the location of the file). The file <code>wp-cron."
|
56 |
-
"php</code> <code>chmod</code> must be set to <code>711</code>."
|
57 |
-
msgstr ""
|
58 |
-
"Le script à ajouter au cPanel de Heart Internet est le suivant: <code>/usr/"
|
59 |
-
"bin/php5 /home/sites/yourdomain.com/public_html/wp-cron.php</code> ( espace "
|
60 |
-
"entre php5 et le chemin ). Les permissions <code>chmod</code> du fichier "
|
61 |
-
"<code>wp-cron.php</code> doit être <code>711</code>."
|
62 |
|
63 |
-
#: admin/
|
64 |
-
msgid "
|
65 |
-
msgstr "
|
66 |
|
67 |
-
#: admin/
|
68 |
-
msgid ""
|
69 |
-
"
|
70 |
-
"resources on your server. The easiest way to establish this to exclude some "
|
71 |
-
"[of] or your entire uploades folder, running a backup an if that succeeds. "
|
72 |
-
"If so, we know it's probably a server issue. If not, report the results to "
|
73 |
-
"our support team for further help. To do this, either enable suport from "
|
74 |
-
"your Admin Dashboard (recommended), or email support@hmn.md"
|
75 |
-
msgstr ""
|
76 |
-
"Si vos sauvegardes échouent, la cause la plus commune est un manque de "
|
77 |
-
"ressources du serveur. Afin de vérifier si cela en est réellement la cause, "
|
78 |
-
"excluez votre répertoire wp-uploads et démarrez une sauvegarde. Si la "
|
79 |
-
"sauvegarde réussit, alors c'est très probablement une question de ressources "
|
80 |
-
"insuffisantes. Sinon, envoyez les résultats à notre support technique qui "
|
81 |
-
"pourra vous aider. Pour ce faire, activez le support sur la page de "
|
82 |
-
"configuration du plugin, ou envoyez un courriel à support@hmn.md"
|
83 |
|
84 |
-
#: admin/
|
85 |
-
msgid "
|
86 |
-
msgstr "
|
87 |
|
88 |
-
#: admin/
|
89 |
-
msgid "
|
90 |
-
msgstr "
|
91 |
|
92 |
-
#: admin/
|
93 |
-
msgid "
|
94 |
-
msgstr "
|
95 |
|
96 |
-
#: admin/
|
97 |
-
msgid "
|
98 |
-
msgstr "
|
99 |
|
100 |
-
#: admin/
|
101 |
-
msgid "
|
102 |
-
msgstr "
|
103 |
|
104 |
-
#: admin/
|
105 |
-
msgid "
|
106 |
-
msgstr "
|
107 |
|
108 |
-
#: admin/
|
109 |
msgid ""
|
110 |
-
"
|
111 |
-
"
|
|
|
112 |
msgstr ""
|
113 |
-
"
|
114 |
-
"
|
|
|
115 |
|
116 |
-
#: admin/schedule-form-excludes.php:
|
117 |
-
msgid "
|
118 |
-
msgstr "
|
119 |
|
120 |
-
#: admin/schedule-form-excludes.php:
|
121 |
-
msgid "
|
122 |
-
msgstr "
|
123 |
|
124 |
-
#: admin/
|
125 |
-
msgid "
|
126 |
-
msgstr "
|
127 |
|
128 |
-
#: admin/
|
129 |
-
msgid "
|
130 |
-
msgstr "
|
131 |
|
132 |
-
#: admin/
|
133 |
-
msgid "
|
134 |
-
msgstr "
|
135 |
|
136 |
-
#: admin/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
msgid ""
|
138 |
-
"
|
139 |
-
"
|
140 |
msgstr ""
|
141 |
-
"
|
142 |
-
"
|
143 |
-
"sauvegardez."
|
144 |
|
145 |
-
#: admin/
|
146 |
-
msgid "
|
147 |
-
msgstr "
|
148 |
|
149 |
-
#: admin/
|
150 |
-
msgid "
|
151 |
-
msgstr "
|
152 |
|
153 |
-
#: admin/
|
154 |
-
|
155 |
-
|
|
|
|
|
156 |
|
157 |
-
#: admin/
|
158 |
-
msgid "
|
159 |
-
|
|
|
|
|
160 |
|
161 |
-
#: admin/
|
162 |
-
|
163 |
-
|
|
|
|
|
164 |
|
165 |
-
#: admin/
|
166 |
-
msgid "
|
167 |
-
|
|
|
|
|
|
|
|
|
168 |
|
169 |
-
#: admin/
|
170 |
-
msgid "
|
171 |
-
msgstr "
|
172 |
|
173 |
-
#: admin/
|
174 |
-
msgid "
|
175 |
-
|
|
|
|
|
|
|
|
|
176 |
|
177 |
-
#: admin/
|
178 |
-
msgid "
|
179 |
-
msgstr "
|
180 |
|
181 |
-
#: admin/
|
182 |
-
msgid "
|
183 |
-
|
|
|
|
|
|
|
|
|
184 |
|
185 |
-
#: admin/
|
186 |
-
msgid "
|
187 |
-
msgstr "
|
188 |
|
189 |
-
#: admin/
|
190 |
-
msgid "
|
191 |
-
msgstr "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
192 |
|
193 |
#: admin/schedule-form-excludes.php:345 admin/schedule-form.php:185
|
194 |
-
#: admin/schedule-settings.php:
|
195 |
msgid "Done"
|
196 |
msgstr "Terminé"
|
197 |
|
|
|
|
|
|
|
|
|
198 |
#: admin/schedule-form.php:31
|
199 |
msgid "Backup"
|
200 |
msgstr "Sauvegarde"
|
@@ -349,10 +712,6 @@ msgstr "ne stocker aucune sauvegarde sur ce serveur"
|
|
349 |
msgid "store the last %1$s backups in %2$s"
|
350 |
msgstr "stocker les %1$s sauvegardes ici:%2$s"
|
351 |
|
352 |
-
#: admin/schedule-sentence.php:128
|
353 |
-
msgid "Backup my %1$s %2$s %3$s, %4$s. "
|
354 |
-
msgstr "Sauvegarder %1$s %2$s %3$s, %4$s."
|
355 |
-
|
356 |
#: admin/schedule-sentence.php:131
|
357 |
msgid "%s. "
|
358 |
msgstr "%s. "
|
@@ -365,47 +724,36 @@ msgstr "Envoyer une copie de chaque sauvegarde à %s."
|
|
365 |
msgid "Run now"
|
366 |
msgstr "Exécuter maintenant"
|
367 |
|
368 |
-
#: admin/schedule-settings.php:
|
369 |
-
msgid "Settings"
|
370 |
-
msgstr "Paramètres"
|
371 |
-
|
372 |
-
#: admin/schedule-settings.php:11
|
373 |
msgid "Excludes"
|
374 |
msgstr "Exclusions"
|
375 |
|
376 |
-
#: admin/schedule-settings.php:
|
377 |
msgid "Delete"
|
378 |
msgstr "Supprimer"
|
379 |
|
380 |
-
#:
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
#: backdrop/server.php:11
|
385 |
-
msgid "Supplied key was not valid"
|
386 |
-
msgstr "La clé fournie est invalide"
|
387 |
-
|
388 |
-
#: backdrop/task.php:22
|
389 |
-
msgid "Task is already scheduled to run"
|
390 |
-
msgstr "La tâche a déjà été programmée"
|
391 |
-
|
392 |
-
#: backdrop/task.php:41
|
393 |
-
msgid "Task is not scheduled to run"
|
394 |
-
msgstr "La tâche n'a pas été programmée"
|
395 |
|
396 |
-
#:
|
397 |
-
msgid "
|
398 |
-
|
|
|
|
|
|
|
|
|
399 |
|
400 |
-
#: backupwordpress.php:
|
401 |
msgid "Update"
|
402 |
msgstr "Enregistrer"
|
403 |
|
404 |
-
#: backupwordpress.php:
|
405 |
msgid "Cancel"
|
406 |
msgstr "Annuler"
|
407 |
|
408 |
-
#: backupwordpress.php:
|
409 |
msgid ""
|
410 |
"Are you sure you want to delete this schedule? All of it's backups will also "
|
411 |
"be deleted."
|
@@ -413,20 +761,20 @@ msgstr ""
|
|
413 |
"Etes-vous sûr(e) de vouloir supprimer cette planification de sauvegarde ? "
|
414 |
"Toutes les sauvegardes associées seront aussi supprimées."
|
415 |
|
416 |
-
#: backupwordpress.php:
|
417 |
-
#: backupwordpress.php:
|
418 |
msgid "'Cancel' to go back, 'OK' to delete."
|
419 |
msgstr "Annuler pour retourner, OK pour supprimer"
|
420 |
|
421 |
-
#: backupwordpress.php:
|
422 |
msgid "Are you sure you want to delete this backup?"
|
423 |
msgstr "Etes-vous sûr(e) de vouloir supprimer cette sauvegarde ?"
|
424 |
|
425 |
-
#: backupwordpress.php:
|
426 |
msgid "Are you sure you want to remove this exclude rule?"
|
427 |
msgstr "Etes-vous sûr(e) de vouloir supprimer cette règle d'exclusion ?"
|
428 |
|
429 |
-
#: backupwordpress.php:
|
430 |
msgid ""
|
431 |
"Reducing the number of backups that are stored on this server will cause "
|
432 |
"some of your existing backups to be deleted, are you sure that's what you "
|
@@ -436,10 +784,6 @@ msgstr ""
|
|
436 |
"certaines de vos sauvegardes. Etes-vous sûr(e) de vouloir effectuer cette "
|
437 |
"action ?"
|
438 |
|
439 |
-
#: backupwordpress.php:314
|
440 |
-
msgid "Server Info"
|
441 |
-
msgstr "Info serveur"
|
442 |
-
|
443 |
#: classes/class-email.php:26
|
444 |
msgid "Email notification"
|
445 |
msgstr "Notification par e-mail"
|
@@ -470,7 +814,7 @@ msgstr "Envoyer une confirmation par courrier électronique à %s"
|
|
470 |
msgid "%s isn't a valid email"
|
471 |
msgstr "%s n'est pas une addresse email valable"
|
472 |
|
473 |
-
#: classes/class-email.php:175
|
474 |
msgid "Backup of %s Failed"
|
475 |
msgstr "La sauvegarde de %s a échoué"
|
476 |
|
@@ -527,78 +871,99 @@ msgstr ""
|
|
527 |
"Malheureusement le fichier de sauvegarde est trop gros pour être joint à ce "
|
528 |
"courrier électronique."
|
529 |
|
530 |
-
#: classes/class-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
531 |
msgid "Argument 1 for %s must be a valid integer"
|
532 |
msgstr "Paramètre 1 de %s doit être un nombre entier valide."
|
533 |
|
534 |
-
#: classes/class-schedule.php:
|
535 |
msgid "Argument 1 for %s must be a valid future timestamp"
|
536 |
msgstr "Paramètre 1 de %s doit être un horodatage futur valide"
|
537 |
|
538 |
-
#: classes/class-schedule.php:
|
539 |
msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\""
|
540 |
msgstr ""
|
541 |
"Paramètre 1 pour %s doit être un intervalle de cron valide ou \"manuel\""
|
542 |
|
543 |
-
#: classes/class-schedule.php:
|
544 |
msgid "Starting Backup"
|
545 |
msgstr "Début de la sauvegarde"
|
546 |
|
547 |
-
#: classes/class-schedule.php:
|
|
|
|
|
|
|
|
|
548 |
msgid "Dumping Database %s"
|
549 |
msgstr "Export de la BDD %s en cours"
|
550 |
|
551 |
-
#: classes/class-schedule.php:
|
552 |
msgid "Verifying Database Dump %s"
|
553 |
msgstr "Vérification de l'export de la base de données %s"
|
554 |
|
555 |
-
#: classes/class-schedule.php:
|
556 |
msgid "Creating zip archive %s"
|
557 |
msgstr "Création de l'archive zip %s"
|
558 |
|
559 |
-
#: classes/class-schedule.php:
|
560 |
msgid "Verifying Zip Archive %s"
|
561 |
msgstr "Vérification de l'archive zip %s"
|
562 |
|
563 |
-
#: classes/class-schedule.php:
|
564 |
msgid "Finishing Backup"
|
565 |
msgstr "Fin de la sauvegarde"
|
566 |
|
567 |
-
#: classes/class-schedule.php:
|
568 |
msgid "Argument 1 for %s must be a non empty string"
|
569 |
msgstr "Paramètre 1 pour %s doit être une chaîne de caractères non vide"
|
570 |
|
571 |
-
#: classes/class-schedule.php:
|
572 |
msgid "%s doesn't exist"
|
573 |
msgstr "%s n'existe pas"
|
574 |
|
575 |
-
#: classes/class-schedule.php:
|
576 |
msgid "That backup wasn't created by this schedule"
|
577 |
msgstr "Cette sauvegarde n'a pas été créée par cet horaire"
|
578 |
|
579 |
-
#: classes/class-services.php:
|
580 |
msgid "Argument 1 for %s must be a valid filepath"
|
581 |
msgstr "Paramètre 1 de %s doit être un chemin valide"
|
582 |
|
583 |
-
#: classes/class-services.php:
|
584 |
msgid "Argument 1 for %s must be a registered service"
|
585 |
msgstr "Paramètre 1 pour %s doit être un Service enregistré"
|
586 |
|
587 |
-
#: classes/class-services.php:
|
588 |
msgid "Argument 1 for %s must be a valid class"
|
589 |
msgstr "Paramètre 1 de %s doit être une classe existante"
|
590 |
|
591 |
-
|
592 |
-
msgid "BackUpWordPress
|
|
|
|
|
|
|
|
|
|
|
|
|
593 |
msgstr ""
|
594 |
-
"BackUpWordPress
|
595 |
-
"
|
596 |
|
597 |
-
#: classes/
|
|
|
|
|
|
|
|
|
598 |
msgid "Backup: Dumping database..."
|
599 |
msgstr "Sauvegarde: export de la BDD"
|
600 |
|
601 |
-
#: classes/wp-cli.php:
|
602 |
msgid "Backup: Zipping everything up..."
|
603 |
msgstr "Sauvegarde: compression"
|
604 |
|
@@ -606,23 +971,23 @@ msgstr "Sauvegarde: compression"
|
|
606 |
msgid "Invalid backup path"
|
607 |
msgstr "Chemin de sauvegarde incorrect"
|
608 |
|
609 |
-
#: classes/wp-cli.php:
|
610 |
msgid "Invalid root path"
|
611 |
msgstr "Le chemin racine est invalide"
|
612 |
|
613 |
-
#: classes/wp-cli.php:
|
614 |
msgid "Backup Complete: "
|
615 |
msgstr "Sauvegarde terminée :"
|
616 |
|
617 |
-
#: classes/wp-cli.php:
|
618 |
msgid "Backup Failed"
|
619 |
msgstr "La sauvegarde a échoué"
|
620 |
|
621 |
-
#: functions/core.php:
|
622 |
msgid "BackUpWordPress has setup your default schedules."
|
623 |
msgstr "BackUpWordPress a réglé les planifications de sauvegarde par défaut."
|
624 |
|
625 |
-
#: functions/core.php:
|
626 |
msgid ""
|
627 |
"By default BackUpWordPress performs a daily backup of your database and a "
|
628 |
"weekly backup of your database & files. You can modify these schedules."
|
@@ -631,52 +996,50 @@ msgstr ""
|
|
631 |
"base de données et une sauvegarde hebdomadaire de votre base de données "
|
632 |
"& des fichiers. Vous pouvez modifier cette fréquence."
|
633 |
|
634 |
-
#: functions/core.php:
|
635 |
msgid "Once Hourly"
|
636 |
msgstr "Toutes les heures"
|
637 |
|
638 |
-
#: functions/core.php:
|
639 |
msgid "Twice Daily"
|
640 |
msgstr "Deux fois par jour"
|
641 |
|
642 |
-
#: functions/core.php:
|
643 |
msgid "Once Daily"
|
644 |
msgstr "Quotidiennement"
|
645 |
|
646 |
-
#: functions/core.php:
|
647 |
msgid "Once Weekly"
|
648 |
msgstr "Hebdomadaire"
|
649 |
|
650 |
-
#: functions/core.php:
|
651 |
msgid "Once Biweekly"
|
652 |
msgstr "Toutes les deux semaines"
|
653 |
|
654 |
-
#: functions/core.php:
|
655 |
msgid "Once Monthly"
|
656 |
msgstr "Mensuel"
|
657 |
|
658 |
-
#: functions/core.php:
|
659 |
msgid "You can only delete directories inside your WordPress installation"
|
660 |
msgstr ""
|
661 |
"Vous ne pouvez supprimer que les sauvegardes sous votre installation de "
|
662 |
"WordPress"
|
663 |
|
664 |
-
#: functions/
|
665 |
-
msgid ""
|
666 |
-
"This %s file ensures that other people cannot download your backup files."
|
667 |
-
msgstr ""
|
668 |
-
"Ce fichier %s permet de s'assurer que personne d'autre ne puisse télécharger "
|
669 |
-
"vos fichiers de sauvegarde."
|
670 |
-
|
671 |
-
#: functions/interface.php:32
|
672 |
msgid "Download"
|
673 |
msgstr "Télécharger"
|
674 |
|
675 |
-
#: functions/interface.php:
|
676 |
-
msgid "BackUpWordPress
|
677 |
-
msgstr "
|
|
|
|
|
|
|
|
|
|
|
678 |
|
679 |
-
#: functions/interface.php:
|
680 |
msgid ""
|
681 |
"The backups directory can't be created because your %1$s directory isn't "
|
682 |
"writable, run %2$s or %3$s or create the folder yourself."
|
@@ -685,7 +1048,7 @@ msgstr ""
|
|
685 |
"l'autorisation d'écriture. Exécutez %2$s ou %3$s, ou réglez les permissions "
|
686 |
"adéquates."
|
687 |
|
688 |
-
#: functions/interface.php:
|
689 |
msgid ""
|
690 |
"Your backups directory isn't writable, run %1$s or %2$s or set the "
|
691 |
"permissions yourself."
|
@@ -693,7 +1056,7 @@ msgstr ""
|
|
693 |
"Votre dossier de sauvegarde n'a pas l'autorisation d'écriture. Exécutez %1$s "
|
694 |
"ou %2$s, ou réglez les permissions adéquates."
|
695 |
|
696 |
-
#: functions/interface.php:
|
697 |
msgid ""
|
698 |
"%1$s is running in %2$s, please contact your host and ask them to disable "
|
699 |
"it. BackUpWordPress may not work correctly whilst %3$s is on."
|
@@ -702,15 +1065,15 @@ msgstr ""
|
|
702 |
"demande de désactiver cela. BackUpWordPress peut ne pas fonctionner "
|
703 |
"correctement tant que %3$s est activé."
|
704 |
|
705 |
-
#: functions/interface.php:
|
706 |
msgid "http://php.net/manual/en/features.safe-mode.php"
|
707 |
msgstr "http://br2.php.net/manual/fr/features.safe-mode.php"
|
708 |
|
709 |
-
#: functions/interface.php:
|
710 |
msgid "Safe Mode"
|
711 |
msgstr "Safe mode"
|
712 |
|
713 |
-
#: functions/interface.php:
|
714 |
msgid ""
|
715 |
"Your custom backups directory %1$s doesn't exist and can't be created, your "
|
716 |
"backups will be saved to %2$s instead."
|
@@ -718,7 +1081,7 @@ msgstr ""
|
|
718 |
"Le dossier de sauvegarde %1$s n'existe pas et ne peut être créé. Vos "
|
719 |
"sauvegardes seront stockées dans %2$s."
|
720 |
|
721 |
-
#: functions/interface.php:
|
722 |
msgid ""
|
723 |
"Your custom backups directory %1$s isn't writable, new backups will be saved "
|
724 |
"to %2$s instead."
|
@@ -726,571 +1089,245 @@ msgstr ""
|
|
726 |
"Le dossier de sauvegarde %1$s n'a pas l'autorisation d'écriture. Les "
|
727 |
"nouvelles sauvegardes seront stockées dans %2$s."
|
728 |
|
729 |
-
#: functions/interface.php:
|
730 |
-
|
731 |
-
|
732 |
-
"BackUpWordPress a détecté des problèmes lors de la dernière sauvegarde."
|
733 |
-
|
734 |
-
#: functions/interface.php:127
|
735 |
-
msgid "Your backup root path %s isn't readable."
|
736 |
msgstr ""
|
737 |
"Permission insuffisante en lecture de la racine du chemin de sauvegarde %s."
|
738 |
|
739 |
-
#: functions/interface.php:
|
740 |
msgid "Database and Files"
|
741 |
msgstr "Base de données et fichiers"
|
742 |
|
743 |
-
#: functions/interface.php:
|
744 |
msgid "Files"
|
745 |
msgstr "Fichiers"
|
746 |
|
747 |
-
#: functions/interface.php:
|
748 |
msgid "Database"
|
749 |
msgstr "Base de données"
|
750 |
|
751 |
-
#: functions/interface.php:
|
752 |
msgid "Legacy"
|
753 |
msgstr "Contribution"
|
754 |
|
755 |
-
#: functions/interface.php:
|
756 |
msgid "Started %s ago"
|
757 |
msgstr "Démarré il y a %s"
|
758 |
|
759 |
-
#: functions/interface.php:
|
760 |
msgid "cancel"
|
761 |
msgstr "annuler"
|
762 |
|
763 |
-
#: functions/interface.php:
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
#: functions/interface.php:263
|
768 |
-
msgid "No Backups Completed"
|
769 |
msgstr "Aucune Sauvegarde Terminée"
|
770 |
|
771 |
-
#: functions/interface.php:
|
772 |
-
msgid "1 Backup Completed"
|
773 |
-
msgstr "1 Sauvegarde Disponible"
|
774 |
-
|
775 |
-
#: functions/interface.php:273
|
776 |
msgid "Complete Hourly"
|
777 |
msgstr "Complet toutes les heures"
|
778 |
|
779 |
-
#: functions/interface.php:
|
780 |
msgid "File Hourly"
|
781 |
msgstr "Fichier une fois l'heure"
|
782 |
|
783 |
-
#: functions/interface.php:
|
784 |
msgid "Database Hourly"
|
785 |
msgstr "BDD une fois l'heure"
|
786 |
|
787 |
-
#: functions/interface.php:
|
788 |
msgid "Complete Twicedaily"
|
789 |
msgstr "Complet deux fois par jour"
|
790 |
|
791 |
-
#: functions/interface.php:
|
792 |
msgid "File Twicedaily"
|
793 |
msgstr "Fichier deux fois par jour"
|
794 |
|
795 |
-
#: functions/interface.php:
|
796 |
msgid "Database Twicedaily"
|
797 |
msgstr "BDD deux fois par jour"
|
798 |
|
799 |
-
#: functions/interface.php:
|
800 |
msgid "Complete Daily"
|
801 |
msgstr "Complet quotidiennement"
|
802 |
|
803 |
-
#: functions/interface.php:
|
804 |
msgid "File Daily"
|
805 |
msgstr "Fichier quotidiennement"
|
806 |
|
807 |
-
#: functions/interface.php:281
|
808 |
-
msgid "Database Daily"
|
809 |
-
msgstr "BDD quotidien"
|
810 |
-
|
811 |
-
#: functions/interface.php:282
|
812 |
-
msgid "Complete Weekly"
|
813 |
-
msgstr "Complet hebdomadaire"
|
814 |
-
|
815 |
-
#: functions/interface.php:283
|
816 |
-
msgid "File Weekly"
|
817 |
-
msgstr "Fichier hebdomadaire"
|
818 |
-
|
819 |
-
#: functions/interface.php:284
|
820 |
-
msgid "Database Weekly"
|
821 |
-
msgstr "BDD hebdomadaire"
|
822 |
-
|
823 |
-
#: functions/interface.php:285
|
824 |
-
msgid "Complete Biweekly"
|
825 |
-
msgstr "Complet bi hebdomadaire"
|
826 |
-
|
827 |
-
#: functions/interface.php:286
|
828 |
-
msgid "File Biweekly"
|
829 |
-
msgstr "Fichiers bihebdomadaire"
|
830 |
-
|
831 |
-
#: functions/interface.php:287
|
832 |
-
msgid "Database Biweekly"
|
833 |
-
msgstr "BDD bihebdomadaire"
|
834 |
-
|
835 |
#: functions/interface.php:288
|
836 |
-
msgid "
|
837 |
-
msgstr "
|
838 |
-
|
839 |
-
#: functions/interface.php:289
|
840 |
-
msgid "File Monthly"
|
841 |
-
msgstr "Fichier mensuel"
|
842 |
-
|
843 |
-
#: functions/interface.php:290
|
844 |
-
msgid "Database Monthly"
|
845 |
-
msgstr "BDD mensuel"
|
846 |
-
|
847 |
-
#: functions/interface.php:291
|
848 |
-
msgid "Complete Manually"
|
849 |
-
msgstr "Complet mensuel"
|
850 |
-
|
851 |
-
#: functions/interface.php:292
|
852 |
-
msgid "File Manually"
|
853 |
-
msgstr "Fichier manuel"
|
854 |
-
|
855 |
-
#: functions/interface.php:293
|
856 |
-
msgid "Database Manually"
|
857 |
-
msgstr "BDD manuel"
|
858 |
-
|
859 |
-
#: hm-backup/hm-backup.php:302
|
860 |
-
msgid "archive filename must be a non empty string"
|
861 |
-
msgstr "le nom de fichier doit être une chaîne de cqrqctères non vide"
|
862 |
-
|
863 |
-
#: hm-backup/hm-backup.php:305
|
864 |
-
msgid "invalid file extension for archive filename <code>%s</code>"
|
865 |
-
msgstr "extension de fichier incorrect pour le fichier de nom <code>%s</code>"
|
866 |
-
|
867 |
-
#: hm-backup/hm-backup.php:345
|
868 |
-
msgid "database dump filename must be a non empty string"
|
869 |
-
msgstr "le nom de fichier pour l'export de la BDD ne peut être vide"
|
870 |
-
|
871 |
-
#: hm-backup/hm-backup.php:348
|
872 |
-
msgid "invalid file extension for database dump filename <code>%s</code>"
|
873 |
-
msgstr ""
|
874 |
-
"l'extension de fichier de l'export de la BDD est invalide <code>%s</code>"
|
875 |
-
|
876 |
-
#: hm-backup/hm-backup.php:379
|
877 |
-
msgid "Invalid root path <code>%s</code> must be a valid directory path"
|
878 |
-
msgstr "Répertoire racine <code>%s</code> doit être un chemin valide"
|
879 |
-
|
880 |
-
#: hm-backup/hm-backup.php:408
|
881 |
-
msgid "Invalid backup path <code>%s</code> must be a non empty (string)"
|
882 |
-
msgstr "Chemin de sauvegarde invalide <code>%s</code>, ne peut pas être vide"
|
883 |
-
|
884 |
-
#: hm-backup/hm-backup.php:460
|
885 |
-
msgid ""
|
886 |
-
"Invalid backup type <code>%s</code> must be one of (string) file, database "
|
887 |
-
"or complete"
|
888 |
-
msgstr ""
|
889 |
-
"Type de sauvegarde invalide <code>%s</code> doit être parmi les suivants: "
|
890 |
-
"file, database ou complete"
|
891 |
-
|
892 |
-
msgid "BackUpWordPress"
|
893 |
-
msgstr "BackUpWordPress"
|
894 |
-
|
895 |
-
msgid "http://bwp.hmn.md/"
|
896 |
-
msgstr "http://bwp.hmn.md/"
|
897 |
-
|
898 |
-
msgid ""
|
899 |
-
"Simple automated backups of your WordPress powered website. Once activated "
|
900 |
-
"you'll find me under <strong>Tools → Backups</strong>."
|
901 |
-
msgstr ""
|
902 |
-
"Sauvegardes automatiques et faciles de votre site WordPress. Une fois "
|
903 |
-
"activé, les règlages se trouvent ici: <strong>Outils > Sauvegardes</strong>"
|
904 |
-
|
905 |
-
msgid "Human Made Limited"
|
906 |
-
msgstr "Human Made Limited"
|
907 |
-
|
908 |
-
msgid "http://hmn.md/"
|
909 |
-
msgstr "http://hmn.md/"
|
910 |
-
|
911 |
-
#: admin/actions.php:221
|
912 |
-
msgid "The schedule ID was not provided. Aborting."
|
913 |
-
msgstr "L'identifiant d'horaire non fourni. Execution interrompue."
|
914 |
-
|
915 |
-
#: admin/actions.php:278
|
916 |
-
msgid "Backup type cannot be empty"
|
917 |
-
msgstr "Le type de sauvegarde doit être indiqué"
|
918 |
-
|
919 |
-
#: admin/actions.php:282
|
920 |
-
msgid "Invalid backup type"
|
921 |
-
msgstr "Type de sauvegarde inexistant"
|
922 |
-
|
923 |
-
#: admin/actions.php:296
|
924 |
-
msgid "Schedule cannot be empty"
|
925 |
-
msgstr "La planification doit être indiquée"
|
926 |
-
|
927 |
-
#: admin/actions.php:300
|
928 |
-
msgid "Invalid schedule"
|
929 |
-
msgstr "Horaire incorrect"
|
930 |
-
|
931 |
-
#: admin/actions.php:314
|
932 |
-
msgid "Day of the week must be a valid lowercase day name"
|
933 |
-
msgstr "Le jour de la semain doit être un nom de jour existant en minuscules"
|
934 |
-
|
935 |
-
#: admin/actions.php:333
|
936 |
-
msgid "Day of month must be between 1 and 31"
|
937 |
-
msgstr "La valeur pour jour du mois doit être un nombre entre 1 et 31"
|
938 |
-
|
939 |
-
#: admin/actions.php:352
|
940 |
-
msgid "Hours must be between 0 and 23"
|
941 |
-
msgstr "La valeur pour les heures doit être entre 0 et 23"
|
942 |
-
|
943 |
-
#: admin/actions.php:371
|
944 |
-
msgid "Minutes must be between 0 and 59"
|
945 |
-
msgstr "Doit être un nombre entre 0 et 59"
|
946 |
-
|
947 |
-
#: admin/actions.php:385
|
948 |
-
msgid "Max backups can't be empty"
|
949 |
-
msgstr "Le nombre maximum de sauvegarde doit être indiqué"
|
950 |
-
|
951 |
-
#: admin/actions.php:389
|
952 |
-
msgid "Max backups must be a number"
|
953 |
-
msgstr "Le nombre maximum de sauvegardes doit être un nombre"
|
954 |
-
|
955 |
-
#: admin/actions.php:393
|
956 |
-
msgid "Max backups must be greater than 0"
|
957 |
-
msgstr "Le nombre maximum de sauvegardes doit être supérieur à 0"
|
958 |
-
|
959 |
-
#: admin/actions.php:582
|
960 |
-
msgid ""
|
961 |
-
"Your backup completed but with the following errors / warnings, it's "
|
962 |
-
"probably ok to ignore these."
|
963 |
-
msgstr ""
|
964 |
-
"La sauvegarde s'est achevée, mais a généré les erreurs suivantes, vous "
|
965 |
-
"pouvez probablement les ignorer."
|
966 |
-
|
967 |
-
#: admin/actions.php:586
|
968 |
-
msgid "Your backup failed"
|
969 |
-
msgstr "La sauvegarde a échoué"
|
970 |
-
|
971 |
-
#: admin/actions.php:590
|
972 |
-
msgid "Here's the response from the server:"
|
973 |
-
msgstr "Voici la réponse du serveur :"
|
974 |
-
|
975 |
-
#: admin/actions.php:594
|
976 |
-
msgid ""
|
977 |
-
"You can email details of this error to %s so they can look into the issue."
|
978 |
-
msgstr ""
|
979 |
-
"Vous pouvez envoyez les détails de cette erreur par e-mail ) %s afin qu'il "
|
980 |
-
"l'analyse."
|
981 |
-
|
982 |
-
#: admin/actions.php:596
|
983 |
-
msgid "Close"
|
984 |
-
msgstr "Fermer"
|
985 |
-
|
986 |
-
#: admin/actions.php:597
|
987 |
-
msgid "Email to Support"
|
988 |
-
msgstr "Contacter le support technique par e-mail"
|
989 |
-
|
990 |
-
#: admin/actions.php:705 admin/actions.php:711 functions/interface.php:81
|
991 |
-
#: functions/interface.php:92 functions/interface.php:103
|
992 |
-
#: functions/interface.php:127
|
993 |
-
msgid "BackUpWordPress has detected a problem."
|
994 |
-
msgstr "BackUpWordPress a détecté un problème."
|
995 |
-
|
996 |
-
#: admin/actions.php:705 admin/actions.php:711
|
997 |
-
msgid ""
|
998 |
-
"%1$s is returning a %2$s response which could mean cron jobs aren't getting "
|
999 |
-
"fired properly. BackUpWordPress relies on wp-cron to run scheduled backups. "
|
1000 |
-
"See the %3$s for more details."
|
1001 |
-
msgstr ""
|
1002 |
-
"%1$s retourne une réponse %2$s ce qui signifie que les tâches cron ne sont "
|
1003 |
-
"pas lancées correctement. BackUpWordPress dépend du bon fonctionnement de wp-"
|
1004 |
-
"cron pour lancer les sauvegardes programmées. Voir %3$s pour plus de détails."
|
1005 |
-
|
1006 |
-
#: admin/backups-table.php:8 admin/schedule-form-excludes.php:98
|
1007 |
-
msgid "Size"
|
1008 |
-
msgstr "Taille"
|
1009 |
-
|
1010 |
-
#: admin/backups-table.php:9 admin/schedule-form-excludes.php:100
|
1011 |
-
msgid "Type"
|
1012 |
-
msgstr "Type"
|
1013 |
-
|
1014 |
-
#: admin/backups-table.php:10
|
1015 |
-
msgid "Actions"
|
1016 |
-
msgstr "Actions"
|
1017 |
-
|
1018 |
-
#: admin/backups-table.php:35
|
1019 |
-
msgid "This is where your backups will appear once you have some."
|
1020 |
-
msgstr "Vos sauvegardes seront disponibles ici"
|
1021 |
-
|
1022 |
-
#: admin/backups.php:22
|
1023 |
-
msgid "add schedule"
|
1024 |
-
msgstr "ajouter un horaire"
|
1025 |
-
|
1026 |
-
#: admin/backups.php:26
|
1027 |
-
msgid "Support"
|
1028 |
-
msgstr "Support"
|
1029 |
-
|
1030 |
-
#: admin/backups.php:32
|
1031 |
-
msgid "Enable Support"
|
1032 |
-
msgstr "Activer le support"
|
1033 |
-
|
1034 |
-
#: admin/constants.php:3
|
1035 |
-
msgid ""
|
1036 |
-
"You can %1$s any of the following %2$s in your %3$s to control advanced "
|
1037 |
-
"settings. %4$s. Defined %5$s will be highlighted."
|
1038 |
-
msgstr ""
|
1039 |
-
"Vous pouvez %1$s chacun des prochains %2$s dans votre %3$s pour régler les "
|
1040 |
-
"paramètres avancés. %4$s. %5$s défini sera souligné."
|
1041 |
-
|
1042 |
-
#: admin/constants.php:3 admin/menu.php:69
|
1043 |
-
msgid "Constants"
|
1044 |
-
msgstr "Constantes"
|
1045 |
-
|
1046 |
-
#: admin/constants.php:3
|
1047 |
-
msgid "The Codex can help"
|
1048 |
-
msgstr "Le Codex peut aider"
|
1049 |
-
|
1050 |
-
#: admin/constants.php:14 admin/constants.php:30 admin/constants.php:46
|
1051 |
-
#: admin/constants.php:62 admin/constants.php:78 admin/constants.php:94
|
1052 |
-
#: admin/constants.php:110 classes/class-email.php:58
|
1053 |
-
msgid "You've set it to: %s"
|
1054 |
-
msgstr "Vous l'avez défini comme suit: %s"
|
1055 |
-
|
1056 |
-
#: admin/constants.php:17
|
1057 |
-
msgid ""
|
1058 |
-
"The path to folder you would like to store your backup files in, defaults to "
|
1059 |
-
"%s."
|
1060 |
-
msgstr "Le chemin du dossier de sauvegarde. Par défaut : %s."
|
1061 |
|
1062 |
-
#:
|
1063 |
-
|
1064 |
-
|
1065 |
-
msgid "e.g."
|
1066 |
-
msgstr "par exemple"
|
1067 |
|
1068 |
-
#:
|
1069 |
-
msgid ""
|
1070 |
-
"
|
1071 |
-
"up if available."
|
1072 |
-
msgstr ""
|
1073 |
-
"Le chemin de l'exécutable %1$s. Il sera utilisé pour la partie %2$s de la "
|
1074 |
-
"sauvegarde, s'il est présent."
|
1075 |
|
1076 |
-
#:
|
1077 |
-
msgid "
|
1078 |
-
msgstr "
|
1079 |
|
1080 |
-
#:
|
1081 |
-
msgid ""
|
1082 |
-
"
|
1083 |
-
"if available."
|
1084 |
-
msgstr ""
|
1085 |
-
"Le chemin vers l'exécutable %1$s. Il sera utilisé pour compresser %2$s et "
|
1086 |
-
"%3$s s'il est présent."
|
1087 |
|
1088 |
-
#:
|
1089 |
-
msgid "
|
1090 |
-
msgstr "
|
1091 |
|
1092 |
-
#:
|
1093 |
-
msgid ""
|
1094 |
-
"
|
1095 |
-
"directory is automatically excluded."
|
1096 |
-
msgstr ""
|
1097 |
-
"Liste, séparée par des virgules, des dossiers à exclure. Le dossier de "
|
1098 |
-
"sauvegarde est automatiquement exclu."
|
1099 |
|
1100 |
-
#:
|
1101 |
-
msgid "
|
1102 |
-
msgstr "
|
1103 |
|
1104 |
-
#:
|
1105 |
-
msgid "
|
1106 |
-
msgstr "
|
1107 |
|
1108 |
-
#:
|
1109 |
-
msgid "
|
1110 |
-
msgstr "
|
1111 |
|
1112 |
-
#:
|
1113 |
-
msgid "
|
1114 |
-
msgstr "
|
1115 |
|
1116 |
-
#:
|
1117 |
-
msgid ""
|
1118 |
-
"
|
1119 |
-
"send and receive messages we also send the following server information "
|
1120 |
-
"along with your requests:"
|
1121 |
-
msgstr ""
|
1122 |
-
"BqckUpWordPress utilise %s pour fournir du support technique. En plus de "
|
1123 |
-
"vous permettre d'envoyer et recevoir des messages, de l'information "
|
1124 |
-
"concernant la configuration du serveur est également jointe."
|
1125 |
|
1126 |
-
#:
|
1127 |
-
msgid "
|
1128 |
-
msgstr ""
|
1129 |
-
"Vous pouvez désactiver le support tecnique en désactivant BackUpWordPress."
|
1130 |
|
1131 |
-
#:
|
1132 |
-
msgid "
|
1133 |
-
msgstr "
|
1134 |
|
1135 |
-
#:
|
1136 |
-
msgid "
|
1137 |
-
msgstr "
|
1138 |
|
1139 |
-
#:
|
1140 |
-
msgid "
|
1141 |
-
msgstr "
|
1142 |
|
1143 |
-
#:
|
1144 |
-
msgid ""
|
1145 |
-
"Backups are stored on your server in <code>/wp-content/backups</code>, you "
|
1146 |
-
"can change the directory."
|
1147 |
msgstr ""
|
1148 |
-
"
|
1149 |
-
"backups</code>, vous pouvez changer ce répertoire."
|
1150 |
|
1151 |
-
#:
|
1152 |
-
msgid ""
|
1153 |
-
"
|
1154 |
-
"as well as your database, this includes any non WordPress folders that "
|
1155 |
-
"happen to be in your site root. This does mean that your backup directory "
|
1156 |
-
"can get quite large."
|
1157 |
-
msgstr ""
|
1158 |
-
"Important: Par défault, BackUpWordPress sauvegarde tout ce que contient la "
|
1159 |
-
"racine de votre site ainsi que votre base de données, y compris d'éventuels "
|
1160 |
-
"répertoires externes à WordPress. Ceci peut causer des archives de taille "
|
1161 |
-
"conséquente."
|
1162 |
|
1163 |
-
#:
|
1164 |
-
msgid "
|
1165 |
-
msgstr ""
|
1166 |
-
"Et si je désire stocker mes sauvegardes ailleurs que sur l'hébergement ?"
|
1167 |
|
1168 |
-
#:
|
1169 |
msgid ""
|
1170 |
-
"
|
1171 |
-
"
|
1172 |
-
"hmn.md/?utm_source=wordpress-org&utm_medium=plugin-"
|
1173 |
-
"page&utm_campaign=freeplugin\" title=\"BackUpWordPress Homepage\" target="
|
1174 |
-
"\"_blank\">https://bwp.hmn.md</a>"
|
1175 |
msgstr ""
|
1176 |
-
"
|
1177 |
-
"
|
1178 |
-
"bwp.hmn.md/?utm_source=wordpress-org&utm_medium=plugin-"
|
1179 |
-
"page&utm_campaign=freeplugin\" title=\"BackUpWordPress Homepage\" target="
|
1180 |
-
"\"_blank\">https://bwp.hmn.md</a>"
|
1181 |
|
1182 |
-
|
1183 |
-
msgid "
|
1184 |
-
msgstr "
|
1185 |
|
1186 |
-
|
|
|
1187 |
msgid ""
|
1188 |
-
"
|
1189 |
-
"
|
1190 |
-
"
|
1191 |
-
"import the database using your hosts database management tool (likely "
|
1192 |
-
"<code>phpMyAdmin</code>)."
|
1193 |
msgstr ""
|
1194 |
-
"
|
1195 |
-
"
|
1196 |
-
"<code>Extraire</code> les fichiers et les transférer sur votre serveur en "
|
1197 |
-
"remplaçant les fichiers existants. Vous pouvez alors importer la base de "
|
1198 |
-
"données en utilisant votre outil de gestion de base de données. Probablement "
|
1199 |
-
"<code>phpMyAdmin</code>"
|
1200 |
|
1201 |
-
|
1202 |
-
msgid ""
|
1203 |
-
"
|
1204 |
-
"center/restore-backup/\" title=\"Go to support center\" target=\"_blank"
|
1205 |
-
"\">How to restore from backup</a>."
|
1206 |
-
msgstr ""
|
1207 |
-
"Voir ce guide pour plus de détails - <a href=\"https://bwp.hmn.md/support-"
|
1208 |
-
"center/restore-backup/\" title=\"Go to support center\" target=\"_blank"
|
1209 |
-
"\">Comment restaurer à partir d'une sauvegarde</a>."
|
1210 |
|
1211 |
-
|
1212 |
-
msgid "
|
1213 |
-
msgstr "
|
1214 |
|
1215 |
-
#: admin/
|
1216 |
-
|
1217 |
-
|
|
|
|
|
|
|
|
|
1218 |
|
1219 |
-
#:
|
1220 |
-
|
1221 |
-
|
|
|
|
|
|
|
1222 |
|
1223 |
-
|
1224 |
-
|
1225 |
-
"Most servers have a filesize limit on email attachments, it's generally "
|
1226 |
-
"about 10mb. If your backup file is over that limit it won't be sent attached "
|
1227 |
-
"to the email, instead you should receive an email with a link to download "
|
1228 |
-
"the backup, if you aren't even receiving that then you likely have a mail "
|
1229 |
-
"issue on your server that you'll need to contact your host about."
|
1230 |
-
msgstr ""
|
1231 |
-
"La plupart des serveurs limitent la taille des pièces jointes aux emails, "
|
1232 |
-
"environ 10Mb en moyenne. Si votre archive est au delà de cette limite, elle "
|
1233 |
-
"ne sera pas jointe à l'email. Vous recevrez un email avec un lien pour "
|
1234 |
-
"télécharger le fichier. Si vous ne recevez aucun email, vous devrez "
|
1235 |
-
"probablement contacter votre hébergeur "
|
1236 |
|
1237 |
-
|
1238 |
-
|
1239 |
-
msgstr "Combien de sauvegardes sont stockées par défaut ?"
|
1240 |
|
1241 |
-
|
1242 |
-
|
1243 |
-
msgstr ""
|
1244 |
-
"BackUpWordPress stocke les 10 sauvegardes les plus récentes par défaut."
|
1245 |
|
1246 |
-
|
1247 |
-
|
1248 |
-
msgstr "Combien de temps en moyenne prend une sauvegarde ?"
|
1249 |
|
1250 |
-
|
1251 |
-
|
1252 |
-
"Unless your site is very large (many gigabytes) it should only take a few "
|
1253 |
-
"minutes to perform a back up, if your back up has been running for longer "
|
1254 |
-
"than an hour it's safe to assume that something has gone wrong, try de-"
|
1255 |
-
"activating and re-activating the plugin, if it keeps happening, contact "
|
1256 |
-
"support."
|
1257 |
-
msgstr ""
|
1258 |
-
"A mois que la taille totale de votre site soit très grande, celq ne devrait "
|
1259 |
-
"prendre que quelques minutes pour effectuer une sauvegarde, si celle-ci "
|
1260 |
-
"n'est toujours pas terminée après une heure, vous pouvez être certain qu'un "
|
1261 |
-
"problème s'est produit. Essayez de désactiver puis de réactiver le plugin."
|
1262 |
|
1263 |
-
|
1264 |
-
|
1265 |
-
msgstr "Que dois-je faire si je reçois un message d'erreur pour wp-cron ?"
|
1266 |
|
1267 |
-
|
1268 |
-
|
1269 |
-
"
|
1270 |
-
"
|
1271 |
-
"own server, it could be several things, in most cases, it's an issue with "
|
1272 |
-
"the server / site."
|
1273 |
-
msgstr ""
|
1274 |
-
"Le problème est que le fichier <code>wp-cron.php</code> ne renvoie pas un "
|
1275 |
-
"code <code>200</code> lorsqu'il reçoit une requête HTTP à pqrtir de votre "
|
1276 |
-
"propre serveur. Plusieurs raisons peuvent causer ce problème. La plupart du "
|
1277 |
-
"temps, c'est la faute du serveur / site."
|
1278 |
|
1279 |
-
|
1280 |
-
|
1281 |
-
msgstr ""
|
1282 |
-
"Il y a certaines choses que vous pouvez faire pour confirmer le problème."
|
1283 |
|
1284 |
-
|
1285 |
-
|
1286 |
-
msgstr "Est-ce que la publication programmée fonctionne ?"
|
1287 |
|
1288 |
-
|
1289 |
-
|
1290 |
-
"
|
1291 |
-
|
1292 |
-
|
|
|
1293 |
|
1294 |
-
|
1295 |
-
|
1296 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
# This file is distributed under the same license as the 3.x package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: 3.x\n"
|
6 |
+
"Report-Msgid-Bugs-To: support@humanmade.co.uk\n"
|
7 |
+
"POT-Creation-Date: 2014-12-30 12:38:35+00:00\n"
|
8 |
+
"PO-Revision-Date: 2015-01-05 19:03-0300\n"
|
9 |
+
"Last-Translator: Human Made Limited <hello@hmn.md>\n"
|
10 |
+
"Language-Team: \n"
|
11 |
"MIME-Version: 1.0\n"
|
12 |
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
"Content-Transfer-Encoding: 8bit\n"
|
14 |
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
15 |
"X-Generator: Poedit 1.5.7\n"
|
|
|
|
|
|
|
|
|
16 |
|
17 |
+
#: admin/actions.php:215
|
18 |
+
msgid "The schedule ID was not provided. Aborting."
|
19 |
+
msgstr "L'identifiant d'horaire non fourni. Execution interrompue."
|
|
|
|
|
|
|
|
|
|
|
20 |
|
21 |
+
#: admin/actions.php:271
|
22 |
+
msgid "Backup type cannot be empty"
|
23 |
+
msgstr "Le type de sauvegarde doit être indiqué"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
|
25 |
+
#: admin/actions.php:275
|
26 |
+
msgid "Invalid backup type"
|
27 |
+
msgstr "Type de sauvegarde inexistant"
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
|
29 |
+
#: admin/actions.php:289
|
30 |
+
msgid "Schedule cannot be empty"
|
31 |
+
msgstr "La planification doit être indiquée"
|
32 |
|
33 |
+
#: admin/actions.php:293
|
34 |
+
msgid "Invalid schedule"
|
35 |
+
msgstr "Horaire incorrect"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
|
37 |
+
#: admin/actions.php:307
|
38 |
+
msgid "Day of the week must be a valid lowercase day name"
|
39 |
+
msgstr "Le jour de la semain doit être un nom de jour existant en minuscules"
|
40 |
|
41 |
+
#: admin/actions.php:326
|
42 |
+
msgid "Day of month must be between 1 and 31"
|
43 |
+
msgstr "La valeur pour jour du mois doit être un nombre entre 1 et 31"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
|
45 |
+
#: admin/actions.php:345
|
46 |
+
msgid "Hours must be between 0 and 23"
|
47 |
+
msgstr "La valeur pour les heures doit être entre 0 et 23"
|
48 |
|
49 |
+
#: admin/actions.php:364
|
50 |
+
msgid "Minutes must be between 0 and 59"
|
51 |
+
msgstr "Doit être un nombre entre 0 et 59"
|
52 |
|
53 |
+
#: admin/actions.php:378
|
54 |
+
msgid "Max backups can't be empty"
|
55 |
+
msgstr "Le nombre maximum de sauvegarde doit être indiqué"
|
56 |
|
57 |
+
#: admin/actions.php:382
|
58 |
+
msgid "Max backups must be a number"
|
59 |
+
msgstr "Le nombre maximum de sauvegardes doit être un nombre"
|
60 |
|
61 |
+
#: admin/actions.php:386
|
62 |
+
msgid "Max backups must be greater than 0"
|
63 |
+
msgstr "Le nombre maximum de sauvegardes doit être supérieur à 0"
|
64 |
|
65 |
+
#: admin/actions.php:702 admin/actions.php:708
|
66 |
+
msgid "BackUpWordPress has detected a problem."
|
67 |
+
msgstr "BackUpWordPress a détecté un problème."
|
68 |
|
69 |
+
#: admin/actions.php:702 admin/actions.php:708
|
70 |
msgid ""
|
71 |
+
"%1$s is returning a %2$s response which could mean cron jobs aren't getting "
|
72 |
+
"fired properly. BackUpWordPress relies on wp-cron to run scheduled backups. "
|
73 |
+
"See the %3$s for more details."
|
74 |
msgstr ""
|
75 |
+
"%1$s retourne une réponse %2$s ce qui signifie que les tâches cron ne sont "
|
76 |
+
"pas lancées correctement. BackUpWordPress dépend du bon fonctionnement de wp-"
|
77 |
+
"cron pour lancer les sauvegardes programmées. Voir %3$s pour plus de détails."
|
78 |
|
79 |
+
#: admin/backups-table.php:8 admin/schedule-form-excludes.php:98
|
80 |
+
msgid "Size"
|
81 |
+
msgstr "Taille"
|
82 |
|
83 |
+
#: admin/backups-table.php:9 admin/schedule-form-excludes.php:100
|
84 |
+
msgid "Type"
|
85 |
+
msgstr "Type"
|
86 |
|
87 |
+
#: admin/backups-table.php:10
|
88 |
+
msgid "Actions"
|
89 |
+
msgstr "Actions"
|
90 |
|
91 |
+
#: admin/backups-table.php:35
|
92 |
+
msgid "This is where your backups will appear once you have some."
|
93 |
+
msgstr "Vos sauvegardes seront disponibles ici"
|
94 |
|
95 |
+
#: admin/backups.php:22
|
96 |
+
msgid "add schedule"
|
97 |
+
msgstr "ajouter un horaire"
|
98 |
|
99 |
+
#: admin/backups.php:26
|
100 |
+
msgid "Support"
|
101 |
+
msgstr "Support"
|
102 |
+
|
103 |
+
#: admin/backups.php:32
|
104 |
+
msgid "Enable Support"
|
105 |
+
msgstr "Activer le support"
|
106 |
+
|
107 |
+
#: admin/constants.php:3
|
108 |
msgid ""
|
109 |
+
"You can %1$s any of the following %2$s in your %3$s to control advanced "
|
110 |
+
"settings. %4$s. Defined %5$s will be highlighted."
|
111 |
msgstr ""
|
112 |
+
"Vous pouvez %1$s chacun des prochains %2$s dans votre %3$s pour régler les "
|
113 |
+
"paramètres avancés. %4$s. %5$s défini sera souligné."
|
|
|
114 |
|
115 |
+
#: admin/constants.php:3 admin/menu.php:69
|
116 |
+
msgid "Constants"
|
117 |
+
msgstr "Constantes"
|
118 |
|
119 |
+
#: admin/constants.php:3
|
120 |
+
msgid "The Codex can help"
|
121 |
+
msgstr "Le Codex peut aider"
|
122 |
|
123 |
+
#: admin/constants.php:14 admin/constants.php:30 admin/constants.php:46
|
124 |
+
#: admin/constants.php:62 admin/constants.php:78 admin/constants.php:94
|
125 |
+
#: admin/constants.php:110 classes/class-email.php:58
|
126 |
+
msgid "You've set it to: %s"
|
127 |
+
msgstr "Vous l'avez défini comme suit: %s"
|
128 |
|
129 |
+
#: admin/constants.php:17
|
130 |
+
msgid ""
|
131 |
+
"The path to folder you would like to store your backup files in, defaults to "
|
132 |
+
"%s."
|
133 |
+
msgstr "Le chemin du dossier de sauvegarde. Par défaut : %s."
|
134 |
|
135 |
+
#: admin/constants.php:17 admin/constants.php:33 admin/constants.php:49
|
136 |
+
#: admin/constants.php:65 admin/constants.php:81 admin/constants.php:97
|
137 |
+
#: admin/constants.php:113 classes/class-email.php:61
|
138 |
+
msgid "e.g."
|
139 |
+
msgstr "par exemple"
|
140 |
|
141 |
+
#: admin/constants.php:33
|
142 |
+
msgid ""
|
143 |
+
"The path to your %1$s executable. Will be used for the %2$s part of the back "
|
144 |
+
"up if available."
|
145 |
+
msgstr ""
|
146 |
+
"Le chemin de l'exécutable %1$s. Il sera utilisé pour la partie %2$s de la "
|
147 |
+
"sauvegarde, s'il est présent."
|
148 |
|
149 |
+
#: admin/constants.php:33 admin/constants.php:49
|
150 |
+
msgid "database"
|
151 |
+
msgstr "base de données"
|
152 |
|
153 |
+
#: admin/constants.php:49
|
154 |
+
msgid ""
|
155 |
+
"The path to your %1$s executable. Will be used to zip up your %2$s and %3$s "
|
156 |
+
"if available."
|
157 |
+
msgstr ""
|
158 |
+
"Le chemin vers l'exécutable %1$s. Il sera utilisé pour compresser %2$s et "
|
159 |
+
"%3$s s'il est présent."
|
160 |
|
161 |
+
#: admin/constants.php:49
|
162 |
+
msgid "files"
|
163 |
+
msgstr "fichiers"
|
164 |
|
165 |
+
#: admin/constants.php:65
|
166 |
+
msgid ""
|
167 |
+
"Comma separated list of files or directories to exclude, the backups "
|
168 |
+
"directory is automatically excluded."
|
169 |
+
msgstr ""
|
170 |
+
"Liste, séparée par des virgules, des dossiers à exclure. Le dossier de "
|
171 |
+
"sauvegarde est automatiquement exclu."
|
172 |
|
173 |
+
#: admin/constants.php:81
|
174 |
+
msgid "The capability to use when calling %1$s. Defaults to %2$s."
|
175 |
+
msgstr "La capacité à utiliser quand %1$s est appelé. Par défaut : %2$s."
|
176 |
|
177 |
+
#: admin/constants.php:97
|
178 |
+
msgid "The root directory that is backed up. Defaults to %s."
|
179 |
+
msgstr "Le répertoire racine à sauvegarder. Par défaut : %s."
|
180 |
+
|
181 |
+
#: admin/constants.php:113
|
182 |
+
msgid "The time that your schedules should run. Defaults to %s."
|
183 |
+
msgstr "L'heure à laquelle vos sauvegardes seront effectuées. Par défaut : %s."
|
184 |
+
|
185 |
+
#: admin/enable-support.php:3
|
186 |
+
msgid "Enable BackUpWordPress Support"
|
187 |
+
msgstr "Activer le support "
|
188 |
+
|
189 |
+
#: admin/enable-support.php:5
|
190 |
+
msgid ""
|
191 |
+
"BackUpWordPress uses %s to provide support. In addition to allowing you to "
|
192 |
+
"send and receive messages we also send the following server information "
|
193 |
+
"along with your requests:"
|
194 |
+
msgstr ""
|
195 |
+
"BqckUpWordPress utilise %s pour fournir du support technique. En plus de "
|
196 |
+
"vous permettre d'envoyer et recevoir des messages, de l'information "
|
197 |
+
"concernant la configuration du serveur est également jointe."
|
198 |
+
|
199 |
+
#: admin/enable-support.php:58
|
200 |
+
msgid "You can disable support in the future by deactivating BackUpWordPress."
|
201 |
+
msgstr ""
|
202 |
+
"Vous pouvez désactiver le support tecnique en désactivant BackUpWordPress."
|
203 |
+
|
204 |
+
#: admin/enable-support.php:60
|
205 |
+
msgid "No thanks"
|
206 |
+
msgstr "Non merci"
|
207 |
+
|
208 |
+
#: admin/enable-support.php:61
|
209 |
+
msgid "Yes I want to enable support"
|
210 |
+
msgstr "Oui, je veux activer le support technique"
|
211 |
+
|
212 |
+
#: admin/faq.php:2
|
213 |
+
msgid "Where does BackUpWordPress store the backup files?"
|
214 |
+
msgstr "Où sont stockées les sauvegardes ?"
|
215 |
+
|
216 |
+
#: admin/faq.php:4
|
217 |
+
msgid ""
|
218 |
+
"Backups are stored on your server in <code>/wp-content/backups</code>, you "
|
219 |
+
"can change the directory."
|
220 |
+
msgstr ""
|
221 |
+
"Les sauvegardes sont stockées sur votre serveur sous <code>/wp-content/"
|
222 |
+
"backups</code>, vous pouvez changer ce répertoire."
|
223 |
+
|
224 |
+
#: admin/faq.php:6
|
225 |
+
msgid ""
|
226 |
+
"Important: By default BackUpWordPress backs up everything in your site root "
|
227 |
+
"as well as your database, this includes any non WordPress folders that "
|
228 |
+
"happen to be in your site root. This does mean that your backup directory "
|
229 |
+
"can get quite large."
|
230 |
+
msgstr ""
|
231 |
+
"Important: Par défault, BackUpWordPress sauvegarde tout ce que contient la "
|
232 |
+
"racine de votre site ainsi que votre base de données, y compris d'éventuels "
|
233 |
+
"répertoires externes à WordPress. Ceci peut causer des archives de taille "
|
234 |
+
"conséquente."
|
235 |
+
|
236 |
+
#: admin/faq.php:8
|
237 |
+
msgid "What if I want to back up my site to another destination?"
|
238 |
+
msgstr ""
|
239 |
+
"Et si je désire stocker mes sauvegardes ailleurs que sur l'hébergement ?"
|
240 |
+
|
241 |
+
#: admin/faq.php:10
|
242 |
+
msgid ""
|
243 |
+
"BackUpWordPress Pro supports Dropbox, Google Drive, Amazon S3, Rackspace, "
|
244 |
+
"Azure, DreamObjects and FTP/SFTP. Check it out here: <a href=\"http://bwp."
|
245 |
+
"hmn.md/?utm_source=wordpress-org&utm_medium=plugin-"
|
246 |
+
"page&utm_campaign=freeplugin\" title=\"BackUpWordPress Homepage\" target="
|
247 |
+
"\"_blank\">https://bwp.hmn.md</a>"
|
248 |
+
msgstr ""
|
249 |
+
"BackUpWordPress Pro est compatible avec Dropbox, Google Drive, Amazon S3, "
|
250 |
+
"Rackspace, Azure, DreamObjects and FTP/SFTP. Plus d'infos: <a href=\"http://"
|
251 |
+
"bwp.hmn.md/?utm_source=wordpress-org&utm_medium=plugin-"
|
252 |
+
"page&utm_campaign=freeplugin\" title=\"BackUpWordPress Homepage\" target="
|
253 |
+
"\"_blank\">https://bwp.hmn.md</a>"
|
254 |
+
|
255 |
+
#: admin/faq.php:12
|
256 |
+
msgid "How do I restore my site from a backup?"
|
257 |
+
msgstr "Comment restaurer mon site à partir d'une sauvegarde ?"
|
258 |
+
|
259 |
+
#: admin/faq.php:14
|
260 |
+
msgid ""
|
261 |
+
"You need to download the latest backup file either by clicking download on "
|
262 |
+
"the backups page or via <code>FTP</code>. <code>Unzip</code> the files and "
|
263 |
+
"upload all the files to your server overwriting your site. You can then "
|
264 |
+
"import the database using your hosts database management tool (likely "
|
265 |
+
"<code>phpMyAdmin</code>)."
|
266 |
+
msgstr ""
|
267 |
+
"Vous devez télécharger l'archive la plus récente soit en cliquant "
|
268 |
+
"télécharger à partir de la page des sauvegardes ou via <code>FTP</code>. "
|
269 |
+
"<code>Extraire</code> les fichiers et les transférer sur votre serveur en "
|
270 |
+
"remplaçant les fichiers existants. Vous pouvez alors importer la base de "
|
271 |
+
"données en utilisant votre outil de gestion de base de données. Probablement "
|
272 |
+
"<code>phpMyAdmin</code>"
|
273 |
+
|
274 |
+
#: admin/faq.php:16
|
275 |
+
msgid ""
|
276 |
+
"See this guide for more details - <a href=\"https://bwp.hmn.md/support-"
|
277 |
+
"center/restore-backup/\" title=\"Go to support center\" target=\"_blank"
|
278 |
+
"\">How to restore from backup</a>."
|
279 |
+
msgstr ""
|
280 |
+
"Voir ce guide pour plus de détails - <a href=\"https://bwp.hmn.md/support-"
|
281 |
+
"center/restore-backup/\" title=\"Go to support center\" target=\"_blank"
|
282 |
+
"\">Comment restaurer à partir d'une sauvegarde</a>."
|
283 |
+
|
284 |
+
#: admin/faq.php:18
|
285 |
+
msgid "Does BackUpWordPress back up the backups directory?"
|
286 |
+
msgstr "Est-ce que BackUpWordPress sauvegarde le répertoire de sauvegardes ?"
|
287 |
+
|
288 |
+
#: admin/faq.php:20
|
289 |
+
msgid "No."
|
290 |
+
msgstr "Non"
|
291 |
+
|
292 |
+
#: admin/faq.php:22
|
293 |
+
msgid "I'm not receiving my backups by email?"
|
294 |
+
msgstr "Je ne reçois pas mes sauvegardes par email ?"
|
295 |
+
|
296 |
+
#: admin/faq.php:24
|
297 |
+
msgid ""
|
298 |
+
"Most servers have a filesize limit on email attachments, it's generally "
|
299 |
+
"about 10mb. If your backup file is over that limit it won't be sent attached "
|
300 |
+
"to the email, instead you should receive an email with a link to download "
|
301 |
+
"the backup, if you aren't even receiving that then you likely have a mail "
|
302 |
+
"issue on your server that you'll need to contact your host about."
|
303 |
+
msgstr ""
|
304 |
+
"La plupart des serveurs limitent la taille des pièces jointes aux emails, "
|
305 |
+
"environ 10Mb en moyenne. Si votre archive est au delà de cette limite, elle "
|
306 |
+
"ne sera pas jointe à l'email. Vous recevrez un email avec un lien pour "
|
307 |
+
"télécharger le fichier. Si vous ne recevez aucun email, vous devrez "
|
308 |
+
"probablement contacter votre hébergeur "
|
309 |
+
|
310 |
+
#: admin/faq.php:26
|
311 |
+
msgid "How many backups are stored by default?"
|
312 |
+
msgstr "Combien de sauvegardes sont stockées par défaut ?"
|
313 |
+
|
314 |
+
#: admin/faq.php:28
|
315 |
+
msgid "BackUpWordPress stores the last 10 backups by default."
|
316 |
+
msgstr ""
|
317 |
+
"BackUpWordPress stocke les 10 sauvegardes les plus récentes par défaut."
|
318 |
+
|
319 |
+
#: admin/faq.php:30
|
320 |
+
msgid "How long should a backup take?"
|
321 |
+
msgstr "Combien de temps en moyenne prend une sauvegarde ?"
|
322 |
+
|
323 |
+
#: admin/faq.php:32
|
324 |
+
msgid ""
|
325 |
+
"Unless your site is very large (many gigabytes) it should only take a few "
|
326 |
+
"minutes to perform a back up, if your back up has been running for longer "
|
327 |
+
"than an hour it's safe to assume that something has gone wrong, try de-"
|
328 |
+
"activating and re-activating the plugin, if it keeps happening, contact "
|
329 |
+
"support."
|
330 |
+
msgstr ""
|
331 |
+
"A mois que la taille totale de votre site soit très grande, celq ne devrait "
|
332 |
+
"prendre que quelques minutes pour effectuer une sauvegarde, si celle-ci "
|
333 |
+
"n'est toujours pas terminée après une heure, vous pouvez être certain qu'un "
|
334 |
+
"problème s'est produit. Essayez de désactiver puis de réactiver le plugin."
|
335 |
+
|
336 |
+
#: admin/faq.php:34
|
337 |
+
msgid "What do I do if I get the wp-cron error message?"
|
338 |
+
msgstr "Que dois-je faire si je reçois un message d'erreur pour wp-cron ?"
|
339 |
+
|
340 |
+
#: admin/faq.php:36
|
341 |
+
msgid ""
|
342 |
+
"The issue is that your <code>wp-cron.php</code> is not returning a "
|
343 |
+
"<code>200</code> response when hit with a HTTP request originating from your "
|
344 |
+
"own server, it could be several things, in most cases, it's an issue with "
|
345 |
+
"the server / site."
|
346 |
+
msgstr ""
|
347 |
+
"Le problème est que le fichier <code>wp-cron.php</code> ne renvoie pas un "
|
348 |
+
"code <code>200</code> lorsqu'il reçoit une requête HTTP à pqrtir de votre "
|
349 |
+
"propre serveur. Plusieurs raisons peuvent causer ce problème. La plupart du "
|
350 |
+
"temps, c'est la faute du serveur / site."
|
351 |
+
|
352 |
+
#: admin/faq.php:38
|
353 |
+
msgid "There are some things you can test to confirm this is the issue."
|
354 |
+
msgstr ""
|
355 |
+
"Il y a certaines choses que vous pouvez faire pour confirmer le problème."
|
356 |
+
|
357 |
+
#: admin/faq.php:40
|
358 |
+
msgid "Are scheduled posts working? (They use wp-cron as well ). "
|
359 |
+
msgstr "Est-ce que la publication programmée fonctionne ?"
|
360 |
+
|
361 |
+
#: admin/faq.php:42
|
362 |
+
msgid ""
|
363 |
+
"Are you hosted on Heart Internet? (wp-cron may not be supported by Heart "
|
364 |
+
"Internet, see below for work-around)."
|
365 |
+
msgstr "Est-ce que votre site est hébergé par Heart Internet ?"
|
366 |
+
|
367 |
+
#: admin/faq.php:44
|
368 |
+
msgid "If you click manual backup does it work?"
|
369 |
+
msgstr "Est-ce que la sauvegarde manuelle fonctionne ?"
|
370 |
+
|
371 |
+
#: admin/faq.php:46
|
372 |
+
msgid ""
|
373 |
+
"Try adding <code>define( 'ALTERNATE_WP_CRON', true );</code> to your "
|
374 |
+
"<code>wp-config.php</code>, do automatic backups work?"
|
375 |
+
msgstr ""
|
376 |
+
"Essayez d'ajouter <code>define( 'ALTERNATE_WP_CRON', true );</code> à votre "
|
377 |
+
"fichier <code>wp-config.php</code>, est-ce que les sauvegardes automatiques "
|
378 |
+
"fonctionnent ?"
|
379 |
+
|
380 |
+
#: admin/faq.php:48
|
381 |
+
msgid ""
|
382 |
+
"Is your site private (I.E. is it behind some kind of authentication, "
|
383 |
+
"maintenance plugin, .htaccess) if so wp-cron won't work until you remove it, "
|
384 |
+
"if you are and you temporarily remove the authentication, do backups start "
|
385 |
+
"working?"
|
386 |
+
msgstr ""
|
387 |
+
"Est-ce que votre site est privé ? ( protégé par une forme d'identification, "
|
388 |
+
"un plugin de maintenance, ou .htaccess). Si oui, wp-cron ne fonctionnera pas "
|
389 |
+
"tant que vous n'aurez pas désactivé la restriction. Vérifiez si la "
|
390 |
+
"désactivation de la restriction solutionne le problème."
|
391 |
+
|
392 |
+
#: admin/faq.php:50
|
393 |
+
msgid ""
|
394 |
+
"Report the results to our support team for further help. To do this, either "
|
395 |
+
"enable suport from your Admin Dashboard (recommended), or email support@hmn."
|
396 |
+
"md"
|
397 |
+
msgstr ""
|
398 |
+
"Envoyer un rapport des résultats à notre équipe de support technique pour "
|
399 |
+
"obtenir de l'aide. Pour ce faire, activez le support via l'admin "
|
400 |
+
"(recommandé) ou envoyez un courriel à support@hmn.md"
|
401 |
+
|
402 |
+
#: admin/faq.php:52
|
403 |
+
msgid "How to get BackUpWordPress working in Heart Internet"
|
404 |
+
msgstr "Instructions spécifiques pour l'hébergeur Heart Internet."
|
405 |
+
|
406 |
+
#: admin/faq.php:54
|
407 |
+
msgid ""
|
408 |
+
"The script to be entered into the Heart Internet cPanel is: <code>/usr/bin/"
|
409 |
+
"php5 /home/sites/yourdomain.com/public_html/wp-cron.php</code> (note the "
|
410 |
+
"space between php5 and the location of the file). The file <code>wp-cron."
|
411 |
+
"php</code> <code>chmod</code> must be set to <code>711</code>."
|
412 |
+
msgstr ""
|
413 |
+
"Le script à ajouter au cPanel de Heart Internet est le suivant: <code>/usr/"
|
414 |
+
"bin/php5 /home/sites/yourdomain.com/public_html/wp-cron.php</code> ( espace "
|
415 |
+
"entre php5 et le chemin ). Les permissions <code>chmod</code> du fichier "
|
416 |
+
"<code>wp-cron.php</code> doit être <code>711</code>."
|
417 |
+
|
418 |
+
#: admin/faq.php:56
|
419 |
+
msgid "My backups seem to be failing?"
|
420 |
+
msgstr "Mes sauvegardes échouent !"
|
421 |
+
|
422 |
+
#: admin/faq.php:58
|
423 |
+
msgid ""
|
424 |
+
"If your backups are failing - it's commonly caused by lack of available "
|
425 |
+
"resources on your server. The easiest way to establish this to exclude some "
|
426 |
+
"[of] or your entire uploades folder, running a backup an if that succeeds. "
|
427 |
+
"If so, we know it's probably a server issue. If not, report the results to "
|
428 |
+
"our support team for further help. To do this, either enable suport from "
|
429 |
+
"your Admin Dashboard (recommended), or email support@hmn.md"
|
430 |
+
msgstr ""
|
431 |
+
"Si vos sauvegardes échouent, la cause la plus commune est un manque de "
|
432 |
+
"ressources du serveur. Afin de vérifier si cela en est réellement la cause, "
|
433 |
+
"excluez votre répertoire wp-uploads et démarrez une sauvegarde. Si la "
|
434 |
+
"sauvegarde réussit, alors c'est très probablement une question de ressources "
|
435 |
+
"insuffisantes. Sinon, envoyez les résultats à notre support technique qui "
|
436 |
+
"pourra vous aider. Pour ce faire, activez le support sur la page de "
|
437 |
+
"configuration du plugin, ou envoyez un courriel à support@hmn.md"
|
438 |
+
|
439 |
+
#: admin/menu.php:12 admin/menu.php:14
|
440 |
+
msgid "Manage Backups"
|
441 |
+
msgstr "Gérer les sauvegardes"
|
442 |
+
|
443 |
+
#: admin/menu.php:12 admin/menu.php:14 admin/menu.php:39
|
444 |
+
msgid "Backups"
|
445 |
+
msgstr "Sauvegardes"
|
446 |
+
|
447 |
+
#: admin/menu.php:67
|
448 |
+
msgid "FAQ"
|
449 |
+
msgstr "FAQ"
|
450 |
+
|
451 |
+
#: admin/menu.php:79
|
452 |
+
msgid "Server Info"
|
453 |
+
msgstr "Info serveur"
|
454 |
+
|
455 |
+
#: admin/menu.php:86
|
456 |
+
msgid "For more information:"
|
457 |
+
msgstr "Pour de plus amples informations:"
|
458 |
+
|
459 |
+
#: admin/menu.php:88
|
460 |
+
msgid "Support Forums"
|
461 |
+
msgstr "Forums de support"
|
462 |
+
|
463 |
+
#: admin/menu.php:89
|
464 |
+
msgid "Help with translation"
|
465 |
+
msgstr "Aider à la traduction"
|
466 |
+
|
467 |
+
#: admin/page.php:7
|
468 |
+
msgid ""
|
469 |
+
"If you're finding BackUpWordPress useful, please %1$s rate it on the plugin "
|
470 |
+
"directory%2$s."
|
471 |
+
msgstr ""
|
472 |
+
"Si vous aimez BackUpWordPress, n'hésitez pas à %1$slaisser une évaluation "
|
473 |
+
"positive sur WordPress.org%2$s."
|
474 |
+
|
475 |
+
#: admin/schedule-form-excludes.php:5
|
476 |
+
msgid "Currently Excluded"
|
477 |
+
msgstr "Exclusions actives"
|
478 |
+
|
479 |
+
#: admin/schedule-form-excludes.php:40
|
480 |
+
msgid "Default rule"
|
481 |
+
msgstr "Règle par défaut"
|
482 |
+
|
483 |
+
#: admin/schedule-form-excludes.php:44
|
484 |
+
msgid "Defined in wp-config.php"
|
485 |
+
msgstr "Défini dans le fichier wp-config.php"
|
486 |
+
|
487 |
+
#: admin/schedule-form-excludes.php:48
|
488 |
+
msgid "Stop excluding"
|
489 |
+
msgstr "Ne plus exclure"
|
490 |
+
|
491 |
+
#: admin/schedule-form-excludes.php:64
|
492 |
+
msgid "Directory Listing"
|
493 |
+
msgstr "Contenu du répertoire"
|
494 |
+
|
495 |
+
#: admin/schedule-form-excludes.php:66
|
496 |
+
msgid ""
|
497 |
+
"Here's a directory listing of all files on your site, you can browse through "
|
498 |
+
"and exclude files or folders that you don't want included in your backup."
|
499 |
+
msgstr ""
|
500 |
+
"Voici l'arborescence de tous les fichiers de votre site, vous pouvez "
|
501 |
+
"naviguer et exclure les fichiers et répertoire que vous ne voulez pas "
|
502 |
+
"sauvegardez."
|
503 |
+
|
504 |
+
#: admin/schedule-form-excludes.php:97
|
505 |
+
msgid "Name"
|
506 |
+
msgstr "Nom"
|
507 |
+
|
508 |
+
#: admin/schedule-form-excludes.php:99
|
509 |
+
msgid "Permissions"
|
510 |
+
msgstr "Permissions"
|
511 |
+
|
512 |
+
#: admin/schedule-form-excludes.php:101
|
513 |
+
msgid "Status"
|
514 |
+
msgstr "Statut"
|
515 |
+
|
516 |
+
#: admin/schedule-form-excludes.php:158 admin/schedule-form-excludes.php:269
|
517 |
+
msgid "Refresh"
|
518 |
+
msgstr "Rafraîchir"
|
519 |
+
|
520 |
+
#: admin/schedule-form-excludes.php:175 admin/schedule-form-excludes.php:293
|
521 |
+
msgid "Symlink"
|
522 |
+
msgstr "Alias"
|
523 |
+
|
524 |
+
#: admin/schedule-form-excludes.php:179 admin/schedule-form-excludes.php:297
|
525 |
+
msgid "Folder"
|
526 |
+
msgstr "Répertoire"
|
527 |
+
|
528 |
+
#: admin/schedule-form-excludes.php:269
|
529 |
+
msgid "Recalculate the size of this directory"
|
530 |
+
msgstr "Recalculer la taille de ce répertoire"
|
531 |
+
|
532 |
+
#: admin/schedule-form-excludes.php:301
|
533 |
+
msgid "File"
|
534 |
+
msgstr "Fichier"
|
535 |
+
|
536 |
+
#: admin/schedule-form-excludes.php:311
|
537 |
+
msgid "Unreadable files won't be backed up."
|
538 |
+
msgstr "Les fichiers illisibles ne seront pas sauvegardés."
|
539 |
+
|
540 |
+
#: admin/schedule-form-excludes.php:311
|
541 |
+
msgid "Unreadable"
|
542 |
+
msgstr "Illisible"
|
543 |
+
|
544 |
+
#: admin/schedule-form-excludes.php:315
|
545 |
+
msgid "Excluded"
|
546 |
+
msgstr "Exclus"
|
547 |
+
|
548 |
+
#: admin/schedule-form-excludes.php:326
|
549 |
+
msgid "Exclude →"
|
550 |
+
msgstr "Exclure →"
|
551 |
|
552 |
#: admin/schedule-form-excludes.php:345 admin/schedule-form.php:185
|
553 |
+
#: admin/schedule-settings.php:79
|
554 |
msgid "Done"
|
555 |
msgstr "Terminé"
|
556 |
|
557 |
+
#: admin/schedule-form.php:1 admin/schedule-settings.php:7
|
558 |
+
msgid "Settings"
|
559 |
+
msgstr "Paramètres"
|
560 |
+
|
561 |
#: admin/schedule-form.php:31
|
562 |
msgid "Backup"
|
563 |
msgstr "Sauvegarde"
|
712 |
msgid "store the last %1$s backups in %2$s"
|
713 |
msgstr "stocker les %1$s sauvegardes ici:%2$s"
|
714 |
|
|
|
|
|
|
|
|
|
715 |
#: admin/schedule-sentence.php:131
|
716 |
msgid "%s. "
|
717 |
msgstr "%s. "
|
724 |
msgid "Run now"
|
725 |
msgstr "Exécuter maintenant"
|
726 |
|
727 |
+
#: admin/schedule-settings.php:13
|
|
|
|
|
|
|
|
|
728 |
msgid "Excludes"
|
729 |
msgstr "Exclusions"
|
730 |
|
731 |
+
#: admin/schedule-settings.php:25 functions/interface.php:34
|
732 |
msgid "Delete"
|
733 |
msgstr "Supprimer"
|
734 |
|
735 |
+
#: admin/upsell.php:3
|
736 |
+
#, fuzzy
|
737 |
+
msgid "Backup to"
|
738 |
+
msgstr "Sauvegarde"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
739 |
|
740 |
+
#: admin/upsell.php:15
|
741 |
+
msgid ""
|
742 |
+
"%1$sor buy the %2$sDeveloper Bundle%3$s now for only $99 (all "
|
743 |
+
"Destinations & Unlimited Sites)%4$s"
|
744 |
+
msgstr ""
|
745 |
+
"%1$sou achetez la %2$scollection developpeur%3$s maintenant pour seulement "
|
746 |
+
"$99 ( nombre illimité de sites et toutes les destinations )%4$s"
|
747 |
|
748 |
+
#: backupwordpress.php:241
|
749 |
msgid "Update"
|
750 |
msgstr "Enregistrer"
|
751 |
|
752 |
+
#: backupwordpress.php:242
|
753 |
msgid "Cancel"
|
754 |
msgstr "Annuler"
|
755 |
|
756 |
+
#: backupwordpress.php:243
|
757 |
msgid ""
|
758 |
"Are you sure you want to delete this schedule? All of it's backups will also "
|
759 |
"be deleted."
|
761 |
"Etes-vous sûr(e) de vouloir supprimer cette planification de sauvegarde ? "
|
762 |
"Toutes les sauvegardes associées seront aussi supprimées."
|
763 |
|
764 |
+
#: backupwordpress.php:243 backupwordpress.php:244 backupwordpress.php:245
|
765 |
+
#: backupwordpress.php:246
|
766 |
msgid "'Cancel' to go back, 'OK' to delete."
|
767 |
msgstr "Annuler pour retourner, OK pour supprimer"
|
768 |
|
769 |
+
#: backupwordpress.php:244
|
770 |
msgid "Are you sure you want to delete this backup?"
|
771 |
msgstr "Etes-vous sûr(e) de vouloir supprimer cette sauvegarde ?"
|
772 |
|
773 |
+
#: backupwordpress.php:245
|
774 |
msgid "Are you sure you want to remove this exclude rule?"
|
775 |
msgstr "Etes-vous sûr(e) de vouloir supprimer cette règle d'exclusion ?"
|
776 |
|
777 |
+
#: backupwordpress.php:246
|
778 |
msgid ""
|
779 |
"Reducing the number of backups that are stored on this server will cause "
|
780 |
"some of your existing backups to be deleted, are you sure that's what you "
|
784 |
"certaines de vos sauvegardes. Etes-vous sûr(e) de vouloir effectuer cette "
|
785 |
"action ?"
|
786 |
|
|
|
|
|
|
|
|
|
787 |
#: classes/class-email.php:26
|
788 |
msgid "Email notification"
|
789 |
msgstr "Notification par e-mail"
|
814 |
msgid "%s isn't a valid email"
|
815 |
msgstr "%s n'est pas une addresse email valable"
|
816 |
|
817 |
+
#: classes/class-email.php:175 classes/class-webhooks.php:58
|
818 |
msgid "Backup of %s Failed"
|
819 |
msgstr "La sauvegarde de %s a échoué"
|
820 |
|
871 |
"Malheureusement le fichier de sauvegarde est trop gros pour être joint à ce "
|
872 |
"courrier électronique."
|
873 |
|
874 |
+
#: classes/class-hmbkp-path.php:249
|
875 |
+
msgid ""
|
876 |
+
"This %s file ensures that other people cannot download your backup files."
|
877 |
+
msgstr ""
|
878 |
+
"Ce fichier %s permet de s'assurer que personne d'autre ne puisse télécharger "
|
879 |
+
"vos fichiers de sauvegarde."
|
880 |
+
|
881 |
+
#: classes/class-schedule.php:241
|
882 |
msgid "Argument 1 for %s must be a valid integer"
|
883 |
msgstr "Paramètre 1 de %s doit être un nombre entier valide."
|
884 |
|
885 |
+
#: classes/class-schedule.php:596
|
886 |
msgid "Argument 1 for %s must be a valid future timestamp"
|
887 |
msgstr "Paramètre 1 de %s doit être un horodatage futur valide"
|
888 |
|
889 |
+
#: classes/class-schedule.php:634
|
890 |
msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\""
|
891 |
msgstr ""
|
892 |
"Paramètre 1 pour %s doit être un intervalle de cron valide ou \"manuel\""
|
893 |
|
894 |
+
#: classes/class-schedule.php:769 functions/interface.php:221
|
895 |
msgid "Starting Backup"
|
896 |
msgstr "Début de la sauvegarde"
|
897 |
|
898 |
+
#: classes/class-schedule.php:849
|
899 |
+
msgid "Error writing to file. (%s)"
|
900 |
+
msgstr "Erreur lors de l'écriture de fichier."
|
901 |
+
|
902 |
+
#: classes/class-schedule.php:895
|
903 |
msgid "Dumping Database %s"
|
904 |
msgstr "Export de la BDD %s en cours"
|
905 |
|
906 |
+
#: classes/class-schedule.php:900
|
907 |
msgid "Verifying Database Dump %s"
|
908 |
msgstr "Vérification de l'export de la base de données %s"
|
909 |
|
910 |
+
#: classes/class-schedule.php:905
|
911 |
msgid "Creating zip archive %s"
|
912 |
msgstr "Création de l'archive zip %s"
|
913 |
|
914 |
+
#: classes/class-schedule.php:910
|
915 |
msgid "Verifying Zip Archive %s"
|
916 |
msgstr "Vérification de l'archive zip %s"
|
917 |
|
918 |
+
#: classes/class-schedule.php:915
|
919 |
msgid "Finishing Backup"
|
920 |
msgstr "Fin de la sauvegarde"
|
921 |
|
922 |
+
#: classes/class-schedule.php:1024
|
923 |
msgid "Argument 1 for %s must be a non empty string"
|
924 |
msgstr "Paramètre 1 pour %s doit être une chaîne de caractères non vide"
|
925 |
|
926 |
+
#: classes/class-schedule.php:1029
|
927 |
msgid "%s doesn't exist"
|
928 |
msgstr "%s n'existe pas"
|
929 |
|
930 |
+
#: classes/class-schedule.php:1034
|
931 |
msgid "That backup wasn't created by this schedule"
|
932 |
msgstr "Cette sauvegarde n'a pas été créée par cet horaire"
|
933 |
|
934 |
+
#: classes/class-services.php:278
|
935 |
msgid "Argument 1 for %s must be a valid filepath"
|
936 |
msgstr "Paramètre 1 de %s doit être un chemin valide"
|
937 |
|
938 |
+
#: classes/class-services.php:293
|
939 |
msgid "Argument 1 for %s must be a registered service"
|
940 |
msgstr "Paramètre 1 pour %s doit être un Service enregistré"
|
941 |
|
942 |
+
#: classes/class-services.php:310
|
943 |
msgid "Argument 1 for %s must be a valid class"
|
944 |
msgstr "Paramètre 1 de %s doit être une classe existante"
|
945 |
|
946 |
+
#. Plugin Name of the plugin/theme
|
947 |
+
msgid "BackUpWordPress"
|
948 |
+
msgstr "BackUpWordPress"
|
949 |
+
|
950 |
+
#: classes/class-setup.php:154
|
951 |
+
msgid ""
|
952 |
+
"BackUpWordPress requires PHP version %1$s or later and WordPress version "
|
953 |
+
"%2$s or later to run. It has not been activated. %3$s%4$s%5$sLearn more%6$s"
|
954 |
msgstr ""
|
955 |
+
"Pour fonctionner, BackUpWordPress requiert la version %1$s de PHP et la "
|
956 |
+
"version %2$s de WordPress ou supérieur. Il n'a pas ete activé"
|
957 |
|
958 |
+
#: classes/class-webhooks.php:102
|
959 |
+
msgid "Error: %s"
|
960 |
+
msgstr "Erreur: %s"
|
961 |
+
|
962 |
+
#: classes/wp-cli.php:43
|
963 |
msgid "Backup: Dumping database..."
|
964 |
msgstr "Sauvegarde: export de la BDD"
|
965 |
|
966 |
+
#: classes/wp-cli.php:47
|
967 |
msgid "Backup: Zipping everything up..."
|
968 |
msgstr "Sauvegarde: compression"
|
969 |
|
971 |
msgid "Invalid backup path"
|
972 |
msgstr "Chemin de sauvegarde incorrect"
|
973 |
|
974 |
+
#: classes/wp-cli.php:71
|
975 |
msgid "Invalid root path"
|
976 |
msgstr "Le chemin racine est invalide"
|
977 |
|
978 |
+
#: classes/wp-cli.php:99
|
979 |
msgid "Backup Complete: "
|
980 |
msgstr "Sauvegarde terminée :"
|
981 |
|
982 |
+
#: classes/wp-cli.php:101
|
983 |
msgid "Backup Failed"
|
984 |
msgstr "La sauvegarde a échoué"
|
985 |
|
986 |
+
#: functions/core.php:207
|
987 |
msgid "BackUpWordPress has setup your default schedules."
|
988 |
msgstr "BackUpWordPress a réglé les planifications de sauvegarde par défaut."
|
989 |
|
990 |
+
#: functions/core.php:207
|
991 |
msgid ""
|
992 |
"By default BackUpWordPress performs a daily backup of your database and a "
|
993 |
"weekly backup of your database & files. You can modify these schedules."
|
996 |
"base de données et une sauvegarde hebdomadaire de votre base de données "
|
997 |
"& des fichiers. Vous pouvez modifier cette fréquence."
|
998 |
|
999 |
+
#: functions/core.php:224
|
1000 |
msgid "Once Hourly"
|
1001 |
msgstr "Toutes les heures"
|
1002 |
|
1003 |
+
#: functions/core.php:225
|
1004 |
msgid "Twice Daily"
|
1005 |
msgstr "Deux fois par jour"
|
1006 |
|
1007 |
+
#: functions/core.php:226
|
1008 |
msgid "Once Daily"
|
1009 |
msgstr "Quotidiennement"
|
1010 |
|
1011 |
+
#: functions/core.php:227
|
1012 |
msgid "Once Weekly"
|
1013 |
msgstr "Hebdomadaire"
|
1014 |
|
1015 |
+
#: functions/core.php:228
|
1016 |
msgid "Once Biweekly"
|
1017 |
msgstr "Toutes les deux semaines"
|
1018 |
|
1019 |
+
#: functions/core.php:229
|
1020 |
msgid "Once Monthly"
|
1021 |
msgstr "Mensuel"
|
1022 |
|
1023 |
+
#: functions/core.php:247
|
1024 |
msgid "You can only delete directories inside your WordPress installation"
|
1025 |
msgstr ""
|
1026 |
"Vous ne pouvez supprimer que les sauvegardes sous votre installation de "
|
1027 |
"WordPress"
|
1028 |
|
1029 |
+
#: functions/interface.php:31
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1030 |
msgid "Download"
|
1031 |
msgstr "Télécharger"
|
1032 |
|
1033 |
+
#: functions/interface.php:62
|
1034 |
+
msgid "BackUpWordPress detected issues with your last backup."
|
1035 |
+
msgstr ""
|
1036 |
+
"BackUpWordPress a détecté des problèmes lors de la dernière sauvegarde."
|
1037 |
+
|
1038 |
+
#: functions/interface.php:64
|
1039 |
+
msgid "Dismiss"
|
1040 |
+
msgstr "Ignorer"
|
1041 |
|
1042 |
+
#: functions/interface.php:112
|
1043 |
msgid ""
|
1044 |
"The backups directory can't be created because your %1$s directory isn't "
|
1045 |
"writable, run %2$s or %3$s or create the folder yourself."
|
1048 |
"l'autorisation d'écriture. Exécutez %2$s ou %3$s, ou réglez les permissions "
|
1049 |
"adéquates."
|
1050 |
|
1051 |
+
#: functions/interface.php:116
|
1052 |
msgid ""
|
1053 |
"Your backups directory isn't writable, run %1$s or %2$s or set the "
|
1054 |
"permissions yourself."
|
1056 |
"Votre dossier de sauvegarde n'a pas l'autorisation d'écriture. Exécutez %1$s "
|
1057 |
"ou %2$s, ou réglez les permissions adéquates."
|
1058 |
|
1059 |
+
#: functions/interface.php:120
|
1060 |
msgid ""
|
1061 |
"%1$s is running in %2$s, please contact your host and ask them to disable "
|
1062 |
"it. BackUpWordPress may not work correctly whilst %3$s is on."
|
1065 |
"demande de désactiver cela. BackUpWordPress peut ne pas fonctionner "
|
1066 |
"correctement tant que %3$s est activé."
|
1067 |
|
1068 |
+
#: functions/interface.php:120
|
1069 |
msgid "http://php.net/manual/en/features.safe-mode.php"
|
1070 |
msgstr "http://br2.php.net/manual/fr/features.safe-mode.php"
|
1071 |
|
1072 |
+
#: functions/interface.php:120
|
1073 |
msgid "Safe Mode"
|
1074 |
msgstr "Safe mode"
|
1075 |
|
1076 |
+
#: functions/interface.php:124
|
1077 |
msgid ""
|
1078 |
"Your custom backups directory %1$s doesn't exist and can't be created, your "
|
1079 |
"backups will be saved to %2$s instead."
|
1081 |
"Le dossier de sauvegarde %1$s n'existe pas et ne peut être créé. Vos "
|
1082 |
"sauvegardes seront stockées dans %2$s."
|
1083 |
|
1084 |
+
#: functions/interface.php:128
|
1085 |
msgid ""
|
1086 |
"Your custom backups directory %1$s isn't writable, new backups will be saved "
|
1087 |
"to %2$s instead."
|
1089 |
"Le dossier de sauvegarde %1$s n'a pas l'autorisation d'écriture. Les "
|
1090 |
"nouvelles sauvegardes seront stockées dans %2$s."
|
1091 |
|
1092 |
+
#: functions/interface.php:134
|
1093 |
+
#, fuzzy
|
1094 |
+
msgid "Your site root path %s isn't readable."
|
|
|
|
|
|
|
|
|
1095 |
msgstr ""
|
1096 |
"Permission insuffisante en lecture de la racine du chemin de sauvegarde %s."
|
1097 |
|
1098 |
+
#: functions/interface.php:194
|
1099 |
msgid "Database and Files"
|
1100 |
msgstr "Base de données et fichiers"
|
1101 |
|
1102 |
+
#: functions/interface.php:197
|
1103 |
msgid "Files"
|
1104 |
msgstr "Fichiers"
|
1105 |
|
1106 |
+
#: functions/interface.php:200
|
1107 |
msgid "Database"
|
1108 |
msgstr "Base de données"
|
1109 |
|
1110 |
+
#: functions/interface.php:205
|
1111 |
msgid "Legacy"
|
1112 |
msgstr "Contribution"
|
1113 |
|
1114 |
+
#: functions/interface.php:220
|
1115 |
msgid "Started %s ago"
|
1116 |
msgstr "Démarré il y a %s"
|
1117 |
|
1118 |
+
#: functions/interface.php:222
|
1119 |
msgid "cancel"
|
1120 |
msgstr "annuler"
|
1121 |
|
1122 |
+
#: functions/interface.php:268
|
1123 |
+
#, fuzzy
|
1124 |
+
msgid "No backups completed"
|
|
|
|
|
|
|
1125 |
msgstr "Aucune Sauvegarde Terminée"
|
1126 |
|
1127 |
+
#: functions/interface.php:280
|
|
|
|
|
|
|
|
|
1128 |
msgid "Complete Hourly"
|
1129 |
msgstr "Complet toutes les heures"
|
1130 |
|
1131 |
+
#: functions/interface.php:281
|
1132 |
msgid "File Hourly"
|
1133 |
msgstr "Fichier une fois l'heure"
|
1134 |
|
1135 |
+
#: functions/interface.php:282
|
1136 |
msgid "Database Hourly"
|
1137 |
msgstr "BDD une fois l'heure"
|
1138 |
|
1139 |
+
#: functions/interface.php:283
|
1140 |
msgid "Complete Twicedaily"
|
1141 |
msgstr "Complet deux fois par jour"
|
1142 |
|
1143 |
+
#: functions/interface.php:284
|
1144 |
msgid "File Twicedaily"
|
1145 |
msgstr "Fichier deux fois par jour"
|
1146 |
|
1147 |
+
#: functions/interface.php:285
|
1148 |
msgid "Database Twicedaily"
|
1149 |
msgstr "BDD deux fois par jour"
|
1150 |
|
1151 |
+
#: functions/interface.php:286
|
1152 |
msgid "Complete Daily"
|
1153 |
msgstr "Complet quotidiennement"
|
1154 |
|
1155 |
+
#: functions/interface.php:287
|
1156 |
msgid "File Daily"
|
1157 |
msgstr "Fichier quotidiennement"
|
1158 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1159 |
#: functions/interface.php:288
|
1160 |
+
msgid "Database Daily"
|
1161 |
+
msgstr "BDD quotidien"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1162 |
|
1163 |
+
#: functions/interface.php:289
|
1164 |
+
msgid "Complete Weekly"
|
1165 |
+
msgstr "Complet hebdomadaire"
|
|
|
|
|
1166 |
|
1167 |
+
#: functions/interface.php:290
|
1168 |
+
msgid "File Weekly"
|
1169 |
+
msgstr "Fichier hebdomadaire"
|
|
|
|
|
|
|
|
|
1170 |
|
1171 |
+
#: functions/interface.php:291
|
1172 |
+
msgid "Database Weekly"
|
1173 |
+
msgstr "BDD hebdomadaire"
|
1174 |
|
1175 |
+
#: functions/interface.php:292
|
1176 |
+
msgid "Complete Biweekly"
|
1177 |
+
msgstr "Complet bi hebdomadaire"
|
|
|
|
|
|
|
|
|
1178 |
|
1179 |
+
#: functions/interface.php:293
|
1180 |
+
msgid "File Biweekly"
|
1181 |
+
msgstr "Fichiers bihebdomadaire"
|
1182 |
|
1183 |
+
#: functions/interface.php:294
|
1184 |
+
msgid "Database Biweekly"
|
1185 |
+
msgstr "BDD bihebdomadaire"
|
|
|
|
|
|
|
|
|
1186 |
|
1187 |
+
#: functions/interface.php:295
|
1188 |
+
msgid "Complete Monthly"
|
1189 |
+
msgstr "Complet mensuel"
|
1190 |
|
1191 |
+
#: functions/interface.php:296
|
1192 |
+
msgid "File Monthly"
|
1193 |
+
msgstr "Fichier mensuel"
|
1194 |
|
1195 |
+
#: functions/interface.php:297
|
1196 |
+
msgid "Database Monthly"
|
1197 |
+
msgstr "BDD mensuel"
|
1198 |
|
1199 |
+
#: functions/interface.php:298
|
1200 |
+
msgid "Complete Manually"
|
1201 |
+
msgstr "Complet mensuel"
|
1202 |
|
1203 |
+
#: functions/interface.php:299
|
1204 |
+
msgid "File Manually"
|
1205 |
+
msgstr "Fichier manuel"
|
|
|
|
|
|
|
|
|
|
|
|
|
1206 |
|
1207 |
+
#: functions/interface.php:300
|
1208 |
+
msgid "Database Manually"
|
1209 |
+
msgstr "BDD manuel"
|
|
|
1210 |
|
1211 |
+
#: hm-backup/hm-backup.php:286
|
1212 |
+
msgid "archive filename must be a non empty string"
|
1213 |
+
msgstr "le nom de fichier doit être une chaîne de cqrqctères non vide"
|
1214 |
|
1215 |
+
#: hm-backup/hm-backup.php:289
|
1216 |
+
msgid "invalid file extension for archive filename <code>%s</code>"
|
1217 |
+
msgstr "extension de fichier incorrect pour le fichier de nom <code>%s</code>"
|
1218 |
|
1219 |
+
#: hm-backup/hm-backup.php:329
|
1220 |
+
msgid "database dump filename must be a non empty string"
|
1221 |
+
msgstr "le nom de fichier pour l'export de la BDD ne peut être vide"
|
1222 |
|
1223 |
+
#: hm-backup/hm-backup.php:332
|
1224 |
+
msgid "invalid file extension for database dump filename <code>%s</code>"
|
|
|
|
|
1225 |
msgstr ""
|
1226 |
+
"l'extension de fichier de l'export de la BDD est invalide <code>%s</code>"
|
|
|
1227 |
|
1228 |
+
#: hm-backup/hm-backup.php:363
|
1229 |
+
msgid "Invalid root path <code>%s</code> must be a valid directory path"
|
1230 |
+
msgstr "Répertoire racine <code>%s</code> doit être un chemin valide"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1231 |
|
1232 |
+
#: hm-backup/hm-backup.php:392
|
1233 |
+
msgid "Invalid backup path <code>%s</code> must be a non empty (string)"
|
1234 |
+
msgstr "Chemin de sauvegarde invalide <code>%s</code>, ne peut pas être vide"
|
|
|
1235 |
|
1236 |
+
#: hm-backup/hm-backup.php:444
|
1237 |
msgid ""
|
1238 |
+
"Invalid backup type <code>%s</code> must be one of (string) file, database "
|
1239 |
+
"or complete"
|
|
|
|
|
|
|
1240 |
msgstr ""
|
1241 |
+
"Type de sauvegarde invalide <code>%s</code> doit être parmi les suivants: "
|
1242 |
+
"file, database ou complete"
|
|
|
|
|
|
|
1243 |
|
1244 |
+
#. Plugin URI of the plugin/theme
|
1245 |
+
msgid "http://bwp.hmn.md/"
|
1246 |
+
msgstr "http://bwp.hmn.md/"
|
1247 |
|
1248 |
+
#. Description of the plugin/theme
|
1249 |
+
#, fuzzy
|
1250 |
msgid ""
|
1251 |
+
"Simple automated backups of your WordPress powered website. Once activated "
|
1252 |
+
"you'll find me under <strong>Tools → Backups</strong>. On multisite, "
|
1253 |
+
"you'll find me under the Network Settings menu."
|
|
|
|
|
1254 |
msgstr ""
|
1255 |
+
"Sauvegardes automatiques et faciles de votre site WordPress. Une fois "
|
1256 |
+
"activé, les règlages se trouvent ici: <strong>Outils > Sauvegardes</strong>"
|
|
|
|
|
|
|
|
|
1257 |
|
1258 |
+
#. Author of the plugin/theme
|
1259 |
+
msgid "Human Made Limited"
|
1260 |
+
msgstr "Human Made Limited"
|
|
|
|
|
|
|
|
|
|
|
|
|
1261 |
|
1262 |
+
#. Author URI of the plugin/theme
|
1263 |
+
msgid "http://hmn.md/"
|
1264 |
+
msgstr "http://hmn.md/"
|
1265 |
|
1266 |
+
#: admin/schedule-sentence.php:128
|
1267 |
+
#, fuzzy
|
1268 |
+
msgctxt ""
|
1269 |
+
"1: Backup Type 2: Total size of backup 3: Schedule 4: Number of backups to "
|
1270 |
+
"store"
|
1271 |
+
msgid "Backup my %1$s %2$s %3$s, %4$s."
|
1272 |
+
msgstr "Sauvegarder %1$s %2$s %3$s, %4$s."
|
1273 |
|
1274 |
+
#: functions/interface.php:270
|
1275 |
+
msgctxt "backups count"
|
1276 |
+
msgid "One backup completed"
|
1277 |
+
msgid_plural "%1$s backups completed"
|
1278 |
+
msgstr[0] "1 Sauvegarde Disponible"
|
1279 |
+
msgstr[1] "%1$s sauvegardss disponibles"
|
1280 |
|
1281 |
+
#~ msgid "Remove"
|
1282 |
+
#~ msgstr "Retirer"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1283 |
|
1284 |
+
#~ msgid "No key supplied"
|
1285 |
+
#~ msgstr "Aucune clé fournie"
|
|
|
1286 |
|
1287 |
+
#~ msgid "Supplied key was not valid"
|
1288 |
+
#~ msgstr "La clé fournie est invalide"
|
|
|
|
|
1289 |
|
1290 |
+
#~ msgid "Task is already scheduled to run"
|
1291 |
+
#~ msgstr "La tâche a déjà été programmée"
|
|
|
1292 |
|
1293 |
+
#~ msgid "Task is not scheduled to run"
|
1294 |
+
#~ msgstr "La tâche n'a pas été programmée"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1295 |
|
1296 |
+
#~ msgid "BackUpWordPress requires WordPress version %s or greater."
|
1297 |
+
#~ msgstr "BackUpWordPress nécessite WordPress version %s ou plus récent."
|
|
|
1298 |
|
1299 |
+
#~ msgid "BackUpWordPress may not work when php is running with %s on"
|
1300 |
+
#~ msgstr ""
|
1301 |
+
#~ "BackUpWordPress peut ne pas fonctionner correctement lorsque PHP "
|
1302 |
+
#~ "s'exécute avec %s activé"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1303 |
|
1304 |
+
#~ msgid "BackUpWordPress is almost ready."
|
1305 |
+
#~ msgstr "BackUpWordPress a presque terminé."
|
|
|
|
|
1306 |
|
1307 |
+
#~ msgid "% Backups Completed"
|
1308 |
+
#~ msgstr "% Sauvegardes terminées"
|
|
|
1309 |
|
1310 |
+
#~ msgid ""
|
1311 |
+
#~ "Your backup completed but with the following errors / warnings, it's "
|
1312 |
+
#~ "probably ok to ignore these."
|
1313 |
+
#~ msgstr ""
|
1314 |
+
#~ "La sauvegarde s'est achevée, mais a généré les erreurs suivantes, vous "
|
1315 |
+
#~ "pouvez probablement les ignorer."
|
1316 |
|
1317 |
+
#~ msgid "Your backup failed"
|
1318 |
+
#~ msgstr "La sauvegarde a échoué"
|
1319 |
+
|
1320 |
+
#~ msgid "Here's the response from the server:"
|
1321 |
+
#~ msgstr "Voici la réponse du serveur :"
|
1322 |
+
|
1323 |
+
#~ msgid ""
|
1324 |
+
#~ "You can email details of this error to %s so they can look into the issue."
|
1325 |
+
#~ msgstr ""
|
1326 |
+
#~ "Vous pouvez envoyez les détails de cette erreur par e-mail ) %s afin "
|
1327 |
+
#~ "qu'il l'analyse."
|
1328 |
+
|
1329 |
+
#~ msgid "Close"
|
1330 |
+
#~ msgstr "Fermer"
|
1331 |
+
|
1332 |
+
#~ msgid "Email to Support"
|
1333 |
+
#~ msgstr "Contacter le support technique par e-mail"
|
languages/backupwordpress.pot
CHANGED
@@ -1,71 +1,71 @@
|
|
1 |
-
# Copyright (C)
|
2 |
# This file is distributed under the GPL-2.0+.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: BackUpWordPress 3.0
|
6 |
"Report-Msgid-Bugs-To: support@humanmade.co.uk\n"
|
7 |
-
"POT-Creation-Date:
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
11 |
-
"PO-Revision-Date:
|
12 |
"Last-Translator: Human Made Limited\n"
|
13 |
"Language-Team: Human Made Limited\n"
|
14 |
"X-Generator: grunt-wp-i18n 0.4.9\n"
|
15 |
|
16 |
-
#: admin/actions.php:
|
17 |
msgid "The schedule ID was not provided. Aborting."
|
18 |
msgstr ""
|
19 |
|
20 |
-
#: admin/actions.php:
|
21 |
msgid "Backup type cannot be empty"
|
22 |
msgstr ""
|
23 |
|
24 |
-
#: admin/actions.php:
|
25 |
msgid "Invalid backup type"
|
26 |
msgstr ""
|
27 |
|
28 |
-
#: admin/actions.php:
|
29 |
msgid "Schedule cannot be empty"
|
30 |
msgstr ""
|
31 |
|
32 |
-
#: admin/actions.php:
|
33 |
msgid "Invalid schedule"
|
34 |
msgstr ""
|
35 |
|
36 |
-
#: admin/actions.php:
|
37 |
msgid "Day of the week must be a valid lowercase day name"
|
38 |
msgstr ""
|
39 |
|
40 |
-
#: admin/actions.php:
|
41 |
msgid "Day of month must be between 1 and 31"
|
42 |
msgstr ""
|
43 |
|
44 |
-
#: admin/actions.php:
|
45 |
msgid "Hours must be between 0 and 23"
|
46 |
msgstr ""
|
47 |
|
48 |
-
#: admin/actions.php:
|
49 |
msgid "Minutes must be between 0 and 59"
|
50 |
msgstr ""
|
51 |
|
52 |
-
#: admin/actions.php:
|
53 |
msgid "Max backups can't be empty"
|
54 |
msgstr ""
|
55 |
|
56 |
-
#: admin/actions.php:
|
57 |
msgid "Max backups must be a number"
|
58 |
msgstr ""
|
59 |
|
60 |
-
#: admin/actions.php:
|
61 |
msgid "Max backups must be greater than 0"
|
62 |
msgstr ""
|
63 |
|
64 |
-
#: admin/actions.php:
|
65 |
msgid "BackUpWordPress has detected a problem."
|
66 |
msgstr ""
|
67 |
|
68 |
-
#: admin/actions.php:
|
69 |
msgid ""
|
70 |
"%1$s is returning a %2$s response which could mean cron jobs aren't getting "
|
71 |
"fired properly. BackUpWordPress relies on wp-cron to run scheduled backups. "
|
@@ -570,78 +570,78 @@ msgstr ""
|
|
570 |
msgid "This schedule will store a maximum of %s of backups."
|
571 |
msgstr ""
|
572 |
|
573 |
-
#: admin/schedule-sentence.php:
|
574 |
-
msgid "Backups will be compressed and should be smaller than this."
|
575 |
-
msgstr ""
|
576 |
-
|
577 |
-
#: admin/schedule-sentence.php:10
|
578 |
-
msgid "this shouldn't take long…"
|
579 |
-
msgstr ""
|
580 |
-
|
581 |
-
#: admin/schedule-sentence.php:10
|
582 |
-
msgid "calculating the size of your backup…"
|
583 |
-
msgstr ""
|
584 |
-
|
585 |
-
#: admin/schedule-sentence.php:22
|
586 |
msgid "The next backup will be on %1$s at %2$s %3$s"
|
587 |
msgstr ""
|
588 |
|
589 |
-
#: admin/schedule-sentence.php:
|
590 |
msgid "hourly on the hour"
|
591 |
msgstr ""
|
592 |
|
593 |
-
#: admin/schedule-sentence.php:
|
594 |
msgid "hourly at %s minutes past the hour"
|
595 |
msgstr ""
|
596 |
|
597 |
-
#: admin/schedule-sentence.php:
|
598 |
msgid "daily at %s"
|
599 |
msgstr ""
|
600 |
|
601 |
-
#: admin/schedule-sentence.php:
|
602 |
msgid "every 12 hours at %1$s & %2$s"
|
603 |
msgstr ""
|
604 |
|
605 |
-
#: admin/schedule-sentence.php:
|
606 |
msgid "weekly on %1$s at %2$s"
|
607 |
msgstr ""
|
608 |
|
609 |
-
#: admin/schedule-sentence.php:
|
610 |
msgid "biweekly on %1$s at %2$s"
|
611 |
msgstr ""
|
612 |
|
613 |
-
#: admin/schedule-sentence.php:
|
614 |
msgid "on the %1$s of each month at %2$s"
|
615 |
msgstr ""
|
616 |
|
617 |
-
#: admin/schedule-sentence.php:
|
618 |
msgid "manually"
|
619 |
msgstr ""
|
620 |
|
621 |
-
#: admin/schedule-sentence.php:
|
622 |
msgid "this server"
|
623 |
msgstr ""
|
624 |
|
625 |
-
#: admin/schedule-sentence.php:
|
626 |
msgid "store the most recent backup in %s"
|
627 |
msgstr ""
|
628 |
|
629 |
-
#: admin/schedule-sentence.php:
|
630 |
msgid "don't store any backups in on this server"
|
631 |
msgstr ""
|
632 |
|
633 |
-
#: admin/schedule-sentence.php:
|
634 |
msgid "store the last %1$s backups in %2$s"
|
635 |
msgstr ""
|
636 |
|
637 |
-
#: admin/schedule-sentence.php:
|
638 |
msgid "%s. "
|
639 |
msgstr ""
|
640 |
|
641 |
-
#: admin/schedule-sentence.php:
|
642 |
msgid "Send a copy of each backup to %s."
|
643 |
msgstr ""
|
644 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
645 |
#: admin/schedule-settings.php:5
|
646 |
msgid "Run now"
|
647 |
msgstr ""
|
@@ -654,54 +654,54 @@ msgstr ""
|
|
654 |
msgid "Delete"
|
655 |
msgstr ""
|
656 |
|
|
|
|
|
|
|
|
|
657 |
#: admin/upsell.php:3
|
658 |
msgid "Backup to"
|
659 |
msgstr ""
|
660 |
|
661 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
662 |
msgid "Update"
|
663 |
msgstr ""
|
664 |
|
665 |
-
#: backupwordpress.php:
|
666 |
msgid "Cancel"
|
667 |
msgstr ""
|
668 |
|
669 |
-
#: backupwordpress.php:
|
670 |
msgid ""
|
671 |
"Are you sure you want to delete this schedule? All of it's backups will "
|
672 |
"also be deleted."
|
673 |
msgstr ""
|
674 |
|
675 |
-
#: backupwordpress.php:
|
676 |
-
#: backupwordpress.php:
|
677 |
msgid "'Cancel' to go back, 'OK' to delete."
|
678 |
msgstr ""
|
679 |
|
680 |
-
#: backupwordpress.php:
|
681 |
msgid "Are you sure you want to delete this backup?"
|
682 |
msgstr ""
|
683 |
|
684 |
-
#: backupwordpress.php:
|
685 |
msgid "Are you sure you want to remove this exclude rule?"
|
686 |
msgstr ""
|
687 |
|
688 |
-
#: backupwordpress.php:
|
689 |
msgid ""
|
690 |
"Reducing the number of backups that are stored on this server will cause "
|
691 |
"some of your existing backups to be deleted, are you sure that's what you "
|
692 |
"want?"
|
693 |
msgstr ""
|
694 |
|
695 |
-
#. Plugin Name of the plugin/theme
|
696 |
-
msgid "BackUpWordPress"
|
697 |
-
msgstr ""
|
698 |
-
|
699 |
-
#: backupwordpress.php:374
|
700 |
-
msgid ""
|
701 |
-
"BackUpWordPress requires PHP version %1$s or later. It is not active. "
|
702 |
-
"%2$s%3$s%4$sLearn more%5$s"
|
703 |
-
msgstr ""
|
704 |
-
|
705 |
#: classes/class-email.php:26
|
706 |
msgid "Email notification"
|
707 |
msgstr ""
|
@@ -777,51 +777,84 @@ msgstr ""
|
|
777 |
msgid "Unfortunately the backup file was too large to attach to this email."
|
778 |
msgstr ""
|
779 |
|
780 |
-
#: classes/class-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
781 |
msgid "Argument 1 for %s must be a valid integer"
|
782 |
msgstr ""
|
783 |
|
784 |
-
#: classes/class-schedule.php:
|
785 |
msgid "Argument 1 for %s must be a valid future timestamp"
|
786 |
msgstr ""
|
787 |
|
788 |
-
#: classes/class-schedule.php:
|
789 |
msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\""
|
790 |
msgstr ""
|
791 |
|
792 |
-
#: classes/class-schedule.php:
|
793 |
msgid "Starting Backup"
|
794 |
msgstr ""
|
795 |
|
796 |
-
#: classes/class-schedule.php:
|
|
|
|
|
|
|
|
|
797 |
msgid "Dumping Database %s"
|
798 |
msgstr ""
|
799 |
|
800 |
-
#: classes/class-schedule.php:
|
801 |
msgid "Verifying Database Dump %s"
|
802 |
msgstr ""
|
803 |
|
804 |
-
#: classes/class-schedule.php:
|
805 |
msgid "Creating zip archive %s"
|
806 |
msgstr ""
|
807 |
|
808 |
-
#: classes/class-schedule.php:
|
809 |
msgid "Verifying Zip Archive %s"
|
810 |
msgstr ""
|
811 |
|
812 |
-
#: classes/class-schedule.php:
|
813 |
msgid "Finishing Backup"
|
814 |
msgstr ""
|
815 |
|
816 |
-
#: classes/class-schedule.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
817 |
msgid "Argument 1 for %s must be a non empty string"
|
818 |
msgstr ""
|
819 |
|
820 |
-
#: classes/class-schedule.php:
|
821 |
msgid "%s doesn't exist"
|
822 |
msgstr ""
|
823 |
|
824 |
-
#: classes/class-schedule.php:
|
825 |
msgid "That backup wasn't created by this schedule"
|
826 |
msgstr ""
|
827 |
|
@@ -837,19 +870,25 @@ msgstr ""
|
|
837 |
msgid "Argument 1 for %s must be a valid class"
|
838 |
msgstr ""
|
839 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
840 |
#: classes/class-webhooks.php:102
|
841 |
msgid "Error: %s"
|
842 |
msgstr ""
|
843 |
|
844 |
#: classes/wp-cli.php:43
|
845 |
-
msgid "BackUpWordPress may not work when php is running with %s on"
|
846 |
-
msgstr ""
|
847 |
-
|
848 |
-
#: classes/wp-cli.php:46
|
849 |
msgid "Backup: Dumping database..."
|
850 |
msgstr ""
|
851 |
|
852 |
-
#: classes/wp-cli.php:
|
853 |
msgid "Backup: Zipping everything up..."
|
854 |
msgstr ""
|
855 |
|
@@ -857,77 +896,69 @@ msgstr ""
|
|
857 |
msgid "Invalid backup path"
|
858 |
msgstr ""
|
859 |
|
860 |
-
#: classes/wp-cli.php:
|
861 |
msgid "Invalid root path"
|
862 |
msgstr ""
|
863 |
|
864 |
-
#: classes/wp-cli.php:
|
865 |
msgid "Backup Complete: "
|
866 |
msgstr ""
|
867 |
|
868 |
-
#: classes/wp-cli.php:
|
869 |
msgid "Backup Failed"
|
870 |
msgstr ""
|
871 |
|
872 |
-
#: functions/core.php:
|
873 |
-
msgid "BackUpWordPress requires WordPress version %s or greater."
|
874 |
-
msgstr ""
|
875 |
-
|
876 |
-
#: functions/core.php:273
|
877 |
msgid "BackUpWordPress has setup your default schedules."
|
878 |
msgstr ""
|
879 |
|
880 |
-
#: functions/core.php:
|
881 |
msgid ""
|
882 |
"By default BackUpWordPress performs a daily backup of your database and a "
|
883 |
"weekly backup of your database & files. You can modify these schedules."
|
884 |
msgstr ""
|
885 |
|
886 |
-
#: functions/core.php:
|
887 |
msgid "Once Hourly"
|
888 |
msgstr ""
|
889 |
|
890 |
-
#: functions/core.php:
|
891 |
msgid "Twice Daily"
|
892 |
msgstr ""
|
893 |
|
894 |
-
#: functions/core.php:
|
895 |
msgid "Once Daily"
|
896 |
msgstr ""
|
897 |
|
898 |
-
#: functions/core.php:
|
899 |
msgid "Once Weekly"
|
900 |
msgstr ""
|
901 |
|
902 |
-
#: functions/core.php:
|
903 |
msgid "Once Biweekly"
|
904 |
msgstr ""
|
905 |
|
906 |
-
#: functions/core.php:
|
907 |
msgid "Once Monthly"
|
908 |
msgstr ""
|
909 |
|
910 |
-
#: functions/core.php:
|
911 |
msgid "You can only delete directories inside your WordPress installation"
|
912 |
msgstr ""
|
913 |
|
914 |
-
#: functions/core.php:378
|
915 |
-
msgid "This %s file ensures that other people cannot download your backup files."
|
916 |
-
msgstr ""
|
917 |
-
|
918 |
#: functions/interface.php:31
|
919 |
msgid "Download"
|
920 |
msgstr ""
|
921 |
|
922 |
-
#: functions/interface.php:
|
923 |
msgid "BackUpWordPress detected issues with your last backup."
|
924 |
msgstr ""
|
925 |
|
926 |
-
#: functions/interface.php:
|
927 |
msgid "Dismiss"
|
928 |
msgstr ""
|
929 |
|
930 |
-
#: functions/interface.php:
|
931 |
msgid ""
|
932 |
"The backups directory can't be created because your %1$s directory isn't "
|
933 |
"writable, run %2$s or %3$s or create the folder yourself."
|
@@ -939,145 +970,155 @@ msgid ""
|
|
939 |
"permissions yourself."
|
940 |
msgstr ""
|
941 |
|
942 |
-
#: functions/interface.php:
|
943 |
msgid ""
|
944 |
"%1$s is running in %2$s, please contact your host and ask them to disable "
|
945 |
"it. BackUpWordPress may not work correctly whilst %3$s is on."
|
946 |
msgstr ""
|
947 |
|
948 |
-
#: functions/interface.php:
|
949 |
msgid "http://php.net/manual/en/features.safe-mode.php"
|
950 |
msgstr ""
|
951 |
|
952 |
-
#: functions/interface.php:
|
953 |
msgid "Safe Mode"
|
954 |
msgstr ""
|
955 |
|
956 |
-
#: functions/interface.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
957 |
msgid ""
|
958 |
"Your custom backups directory %1$s doesn't exist and can't be created, your "
|
959 |
"backups will be saved to %2$s instead."
|
960 |
msgstr ""
|
961 |
|
962 |
-
#: functions/interface.php:
|
963 |
msgid ""
|
964 |
"Your custom backups directory %1$s isn't writable, new backups will be "
|
965 |
"saved to %2$s instead."
|
966 |
msgstr ""
|
967 |
|
968 |
-
#: functions/interface.php:
|
969 |
-
msgid "Your
|
970 |
msgstr ""
|
971 |
|
972 |
-
#: functions/interface.php:
|
973 |
msgid "Database and Files"
|
974 |
msgstr ""
|
975 |
|
976 |
-
#: functions/interface.php:
|
977 |
msgid "Files"
|
978 |
msgstr ""
|
979 |
|
980 |
-
#: functions/interface.php:
|
981 |
msgid "Database"
|
982 |
msgstr ""
|
983 |
|
984 |
-
#: functions/interface.php:
|
985 |
msgid "Legacy"
|
986 |
msgstr ""
|
987 |
|
988 |
-
#: functions/interface.php:
|
989 |
msgid "Started %s ago"
|
990 |
msgstr ""
|
991 |
|
992 |
-
#: functions/interface.php:
|
993 |
msgid "cancel"
|
994 |
msgstr ""
|
995 |
|
996 |
-
#: functions/interface.php:
|
997 |
msgid "No backups completed"
|
998 |
msgstr ""
|
999 |
|
1000 |
-
#: functions/interface.php:
|
1001 |
msgid "Complete Hourly"
|
1002 |
msgstr ""
|
1003 |
|
1004 |
-
#: functions/interface.php:
|
1005 |
msgid "File Hourly"
|
1006 |
msgstr ""
|
1007 |
|
1008 |
-
#: functions/interface.php:
|
1009 |
msgid "Database Hourly"
|
1010 |
msgstr ""
|
1011 |
|
1012 |
-
#: functions/interface.php:
|
1013 |
msgid "Complete Twicedaily"
|
1014 |
msgstr ""
|
1015 |
|
1016 |
-
#: functions/interface.php:
|
1017 |
msgid "File Twicedaily"
|
1018 |
msgstr ""
|
1019 |
|
1020 |
-
#: functions/interface.php:
|
1021 |
msgid "Database Twicedaily"
|
1022 |
msgstr ""
|
1023 |
|
1024 |
-
#: functions/interface.php:
|
1025 |
msgid "Complete Daily"
|
1026 |
msgstr ""
|
1027 |
|
1028 |
-
#: functions/interface.php:
|
1029 |
msgid "File Daily"
|
1030 |
msgstr ""
|
1031 |
|
1032 |
-
#: functions/interface.php:
|
1033 |
msgid "Database Daily"
|
1034 |
msgstr ""
|
1035 |
|
1036 |
-
#: functions/interface.php:
|
1037 |
msgid "Complete Weekly"
|
1038 |
msgstr ""
|
1039 |
|
1040 |
-
#: functions/interface.php:
|
1041 |
msgid "File Weekly"
|
1042 |
msgstr ""
|
1043 |
|
1044 |
-
#: functions/interface.php:
|
1045 |
msgid "Database Weekly"
|
1046 |
msgstr ""
|
1047 |
|
1048 |
-
#: functions/interface.php:
|
1049 |
msgid "Complete Biweekly"
|
1050 |
msgstr ""
|
1051 |
|
1052 |
-
#: functions/interface.php:
|
1053 |
msgid "File Biweekly"
|
1054 |
msgstr ""
|
1055 |
|
1056 |
-
#: functions/interface.php:
|
1057 |
msgid "Database Biweekly"
|
1058 |
msgstr ""
|
1059 |
|
1060 |
-
#: functions/interface.php:
|
1061 |
msgid "Complete Monthly"
|
1062 |
msgstr ""
|
1063 |
|
1064 |
-
#: functions/interface.php:
|
1065 |
msgid "File Monthly"
|
1066 |
msgstr ""
|
1067 |
|
1068 |
-
#: functions/interface.php:
|
1069 |
msgid "Database Monthly"
|
1070 |
msgstr ""
|
1071 |
|
1072 |
-
#: functions/interface.php:
|
1073 |
msgid "Complete Manually"
|
1074 |
msgstr ""
|
1075 |
|
1076 |
-
#: functions/interface.php:
|
1077 |
msgid "File Manually"
|
1078 |
msgstr ""
|
1079 |
|
1080 |
-
#: functions/interface.php:
|
1081 |
msgid "Database Manually"
|
1082 |
msgstr ""
|
1083 |
|
@@ -1118,7 +1159,8 @@ msgstr ""
|
|
1118 |
#. Description of the plugin/theme
|
1119 |
msgid ""
|
1120 |
"Simple automated backups of your WordPress powered website. Once activated "
|
1121 |
-
"you'll find me under <strong>Tools → Backups</strong>."
|
|
|
1122 |
msgstr ""
|
1123 |
|
1124 |
#. Author of the plugin/theme
|
@@ -1129,14 +1171,14 @@ msgstr ""
|
|
1129 |
msgid "http://hmn.md/"
|
1130 |
msgstr ""
|
1131 |
|
1132 |
-
#: admin/schedule-sentence.php:
|
1133 |
msgctxt ""
|
1134 |
"1: Backup Type 2: Total size of backup 3: Schedule 4: Number of backups to "
|
1135 |
"store"
|
1136 |
msgid "Backup my %1$s %2$s %3$s, %4$s."
|
1137 |
msgstr ""
|
1138 |
|
1139 |
-
#: functions/interface.php:
|
1140 |
msgctxt "backups count"
|
1141 |
msgid "One backup completed"
|
1142 |
msgid_plural "%1$s backups completed"
|
1 |
+
# Copyright (C) 2015 Human Made Limited
|
2 |
# This file is distributed under the GPL-2.0+.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: BackUpWordPress 3.1.0\n"
|
6 |
"Report-Msgid-Bugs-To: support@humanmade.co.uk\n"
|
7 |
+
"POT-Creation-Date: 2015-01-13 13:30:57+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
11 |
+
"PO-Revision-Date: 2015-MO-DA HO:MI+ZONE\n"
|
12 |
"Last-Translator: Human Made Limited\n"
|
13 |
"Language-Team: Human Made Limited\n"
|
14 |
"X-Generator: grunt-wp-i18n 0.4.9\n"
|
15 |
|
16 |
+
#: admin/actions.php:215
|
17 |
msgid "The schedule ID was not provided. Aborting."
|
18 |
msgstr ""
|
19 |
|
20 |
+
#: admin/actions.php:271
|
21 |
msgid "Backup type cannot be empty"
|
22 |
msgstr ""
|
23 |
|
24 |
+
#: admin/actions.php:275
|
25 |
msgid "Invalid backup type"
|
26 |
msgstr ""
|
27 |
|
28 |
+
#: admin/actions.php:289
|
29 |
msgid "Schedule cannot be empty"
|
30 |
msgstr ""
|
31 |
|
32 |
+
#: admin/actions.php:293
|
33 |
msgid "Invalid schedule"
|
34 |
msgstr ""
|
35 |
|
36 |
+
#: admin/actions.php:307
|
37 |
msgid "Day of the week must be a valid lowercase day name"
|
38 |
msgstr ""
|
39 |
|
40 |
+
#: admin/actions.php:326
|
41 |
msgid "Day of month must be between 1 and 31"
|
42 |
msgstr ""
|
43 |
|
44 |
+
#: admin/actions.php:345
|
45 |
msgid "Hours must be between 0 and 23"
|
46 |
msgstr ""
|
47 |
|
48 |
+
#: admin/actions.php:364
|
49 |
msgid "Minutes must be between 0 and 59"
|
50 |
msgstr ""
|
51 |
|
52 |
+
#: admin/actions.php:378
|
53 |
msgid "Max backups can't be empty"
|
54 |
msgstr ""
|
55 |
|
56 |
+
#: admin/actions.php:382
|
57 |
msgid "Max backups must be a number"
|
58 |
msgstr ""
|
59 |
|
60 |
+
#: admin/actions.php:386
|
61 |
msgid "Max backups must be greater than 0"
|
62 |
msgstr ""
|
63 |
|
64 |
+
#: admin/actions.php:743 admin/actions.php:749
|
65 |
msgid "BackUpWordPress has detected a problem."
|
66 |
msgstr ""
|
67 |
|
68 |
+
#: admin/actions.php:743 admin/actions.php:749
|
69 |
msgid ""
|
70 |
"%1$s is returning a %2$s response which could mean cron jobs aren't getting "
|
71 |
"fired properly. BackUpWordPress relies on wp-cron to run scheduled backups. "
|
570 |
msgid "This schedule will store a maximum of %s of backups."
|
571 |
msgstr ""
|
572 |
|
573 |
+
#: admin/schedule-sentence.php:11
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
574 |
msgid "The next backup will be on %1$s at %2$s %3$s"
|
575 |
msgstr ""
|
576 |
|
577 |
+
#: admin/schedule-sentence.php:18
|
578 |
msgid "hourly on the hour"
|
579 |
msgstr ""
|
580 |
|
581 |
+
#: admin/schedule-sentence.php:18
|
582 |
msgid "hourly at %s minutes past the hour"
|
583 |
msgstr ""
|
584 |
|
585 |
+
#: admin/schedule-sentence.php:24
|
586 |
msgid "daily at %s"
|
587 |
msgstr ""
|
588 |
|
589 |
+
#: admin/schedule-sentence.php:35
|
590 |
msgid "every 12 hours at %1$s & %2$s"
|
591 |
msgstr ""
|
592 |
|
593 |
+
#: admin/schedule-sentence.php:41
|
594 |
msgid "weekly on %1$s at %2$s"
|
595 |
msgstr ""
|
596 |
|
597 |
+
#: admin/schedule-sentence.php:47
|
598 |
msgid "biweekly on %1$s at %2$s"
|
599 |
msgstr ""
|
600 |
|
601 |
+
#: admin/schedule-sentence.php:53
|
602 |
msgid "on the %1$s of each month at %2$s"
|
603 |
msgstr ""
|
604 |
|
605 |
+
#: admin/schedule-sentence.php:59
|
606 |
msgid "manually"
|
607 |
msgstr ""
|
608 |
|
609 |
+
#: admin/schedule-sentence.php:69
|
610 |
msgid "this server"
|
611 |
msgstr ""
|
612 |
|
613 |
+
#: admin/schedule-sentence.php:77
|
614 |
msgid "store the most recent backup in %s"
|
615 |
msgstr ""
|
616 |
|
617 |
+
#: admin/schedule-sentence.php:83
|
618 |
msgid "don't store any backups in on this server"
|
619 |
msgstr ""
|
620 |
|
621 |
+
#: admin/schedule-sentence.php:89
|
622 |
msgid "store the last %1$s backups in %2$s"
|
623 |
msgstr ""
|
624 |
|
625 |
+
#: admin/schedule-sentence.php:120
|
626 |
msgid "%s. "
|
627 |
msgstr ""
|
628 |
|
629 |
+
#: admin/schedule-sentence.php:124
|
630 |
msgid "Send a copy of each backup to %s."
|
631 |
msgstr ""
|
632 |
|
633 |
+
#: admin/schedule-sentence.php:152
|
634 |
+
msgid "Backups will be compressed and should be smaller than this."
|
635 |
+
msgstr ""
|
636 |
+
|
637 |
+
#: admin/schedule-sentence.php:154
|
638 |
+
msgid "this shouldn't take long…"
|
639 |
+
msgstr ""
|
640 |
+
|
641 |
+
#: admin/schedule-sentence.php:154
|
642 |
+
msgid "calculating the size of your backup…"
|
643 |
+
msgstr ""
|
644 |
+
|
645 |
#: admin/schedule-settings.php:5
|
646 |
msgid "Run now"
|
647 |
msgstr ""
|
654 |
msgid "Delete"
|
655 |
msgstr ""
|
656 |
|
657 |
+
#: admin/server-info.php:41
|
658 |
+
msgid "%1$s - %2$s"
|
659 |
+
msgstr ""
|
660 |
+
|
661 |
#: admin/upsell.php:3
|
662 |
msgid "Backup to"
|
663 |
msgstr ""
|
664 |
|
665 |
+
#: admin/upsell.php:18
|
666 |
+
msgid ""
|
667 |
+
"%1$sor buy the %2$sDeveloper Bundle%3$s now for only $99 (all "
|
668 |
+
"Destinations & Unlimited Sites)%4$s"
|
669 |
+
msgstr ""
|
670 |
+
|
671 |
+
#: backupwordpress.php:243
|
672 |
msgid "Update"
|
673 |
msgstr ""
|
674 |
|
675 |
+
#: backupwordpress.php:244
|
676 |
msgid "Cancel"
|
677 |
msgstr ""
|
678 |
|
679 |
+
#: backupwordpress.php:245
|
680 |
msgid ""
|
681 |
"Are you sure you want to delete this schedule? All of it's backups will "
|
682 |
"also be deleted."
|
683 |
msgstr ""
|
684 |
|
685 |
+
#: backupwordpress.php:245 backupwordpress.php:246 backupwordpress.php:247
|
686 |
+
#: backupwordpress.php:248
|
687 |
msgid "'Cancel' to go back, 'OK' to delete."
|
688 |
msgstr ""
|
689 |
|
690 |
+
#: backupwordpress.php:246
|
691 |
msgid "Are you sure you want to delete this backup?"
|
692 |
msgstr ""
|
693 |
|
694 |
+
#: backupwordpress.php:247
|
695 |
msgid "Are you sure you want to remove this exclude rule?"
|
696 |
msgstr ""
|
697 |
|
698 |
+
#: backupwordpress.php:248
|
699 |
msgid ""
|
700 |
"Reducing the number of backups that are stored on this server will cause "
|
701 |
"some of your existing backups to be deleted, are you sure that's what you "
|
702 |
"want?"
|
703 |
msgstr ""
|
704 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
705 |
#: classes/class-email.php:26
|
706 |
msgid "Email notification"
|
707 |
msgstr ""
|
777 |
msgid "Unfortunately the backup file was too large to attach to this email."
|
778 |
msgstr ""
|
779 |
|
780 |
+
#: classes/class-hmbkp-path.php:254
|
781 |
+
msgid "This %s file ensures that other people cannot download your backup files."
|
782 |
+
msgstr ""
|
783 |
+
|
784 |
+
#: classes/class-requirements.php:626
|
785 |
+
msgid "Schedule: %s"
|
786 |
+
msgstr ""
|
787 |
+
|
788 |
+
#: classes/class-requirements.php:626
|
789 |
+
msgid "Duration: %s"
|
790 |
+
msgstr ""
|
791 |
+
|
792 |
+
#: classes/class-schedule.php:137
|
793 |
+
msgid "Invalid Option Name"
|
794 |
+
msgstr ""
|
795 |
+
|
796 |
+
#: classes/class-schedule.php:257
|
797 |
msgid "Argument 1 for %s must be a valid integer"
|
798 |
msgstr ""
|
799 |
|
800 |
+
#: classes/class-schedule.php:612
|
801 |
msgid "Argument 1 for %s must be a valid future timestamp"
|
802 |
msgstr ""
|
803 |
|
804 |
+
#: classes/class-schedule.php:650
|
805 |
msgid "Argument 1 for %s must be a valid cron reoccurrence or \"manually\""
|
806 |
msgstr ""
|
807 |
|
808 |
+
#: classes/class-schedule.php:785 functions/interface.php:244
|
809 |
msgid "Starting Backup"
|
810 |
msgstr ""
|
811 |
|
812 |
+
#: classes/class-schedule.php:865
|
813 |
+
msgid "Error writing to file. (%s)"
|
814 |
+
msgstr ""
|
815 |
+
|
816 |
+
#: classes/class-schedule.php:911
|
817 |
msgid "Dumping Database %s"
|
818 |
msgstr ""
|
819 |
|
820 |
+
#: classes/class-schedule.php:916
|
821 |
msgid "Verifying Database Dump %s"
|
822 |
msgstr ""
|
823 |
|
824 |
+
#: classes/class-schedule.php:921
|
825 |
msgid "Creating zip archive %s"
|
826 |
msgstr ""
|
827 |
|
828 |
+
#: classes/class-schedule.php:926
|
829 |
msgid "Verifying Zip Archive %s"
|
830 |
msgstr ""
|
831 |
|
832 |
+
#: classes/class-schedule.php:931
|
833 |
msgid "Finishing Backup"
|
834 |
msgstr ""
|
835 |
|
836 |
+
#: classes/class-schedule.php:1042
|
837 |
+
#. translators: min=minute
|
838 |
+
msgid "%s min"
|
839 |
+
msgid_plural "%s mins"
|
840 |
+
msgstr[0] ""
|
841 |
+
msgstr[1] ""
|
842 |
+
|
843 |
+
#: classes/class-schedule.php:1052
|
844 |
+
msgid "%s hour"
|
845 |
+
msgid_plural "%s hours"
|
846 |
+
msgstr[0] ""
|
847 |
+
msgstr[1] ""
|
848 |
+
|
849 |
+
#: classes/class-schedule.php:1115
|
850 |
msgid "Argument 1 for %s must be a non empty string"
|
851 |
msgstr ""
|
852 |
|
853 |
+
#: classes/class-schedule.php:1120
|
854 |
msgid "%s doesn't exist"
|
855 |
msgstr ""
|
856 |
|
857 |
+
#: classes/class-schedule.php:1125
|
858 |
msgid "That backup wasn't created by this schedule"
|
859 |
msgstr ""
|
860 |
|
870 |
msgid "Argument 1 for %s must be a valid class"
|
871 |
msgstr ""
|
872 |
|
873 |
+
#. Plugin Name of the plugin/theme
|
874 |
+
msgid "BackUpWordPress"
|
875 |
+
msgstr ""
|
876 |
+
|
877 |
+
#: classes/class-setup.php:154
|
878 |
+
msgid ""
|
879 |
+
"BackUpWordPress requires PHP version %1$s or later and WordPress version "
|
880 |
+
"%2$s or later to run. It has not been activated. %3$s%4$s%5$sLearn more%6$s"
|
881 |
+
msgstr ""
|
882 |
+
|
883 |
#: classes/class-webhooks.php:102
|
884 |
msgid "Error: %s"
|
885 |
msgstr ""
|
886 |
|
887 |
#: classes/wp-cli.php:43
|
|
|
|
|
|
|
|
|
888 |
msgid "Backup: Dumping database..."
|
889 |
msgstr ""
|
890 |
|
891 |
+
#: classes/wp-cli.php:47
|
892 |
msgid "Backup: Zipping everything up..."
|
893 |
msgstr ""
|
894 |
|
896 |
msgid "Invalid backup path"
|
897 |
msgstr ""
|
898 |
|
899 |
+
#: classes/wp-cli.php:71
|
900 |
msgid "Invalid root path"
|
901 |
msgstr ""
|
902 |
|
903 |
+
#: classes/wp-cli.php:99
|
904 |
msgid "Backup Complete: "
|
905 |
msgstr ""
|
906 |
|
907 |
+
#: classes/wp-cli.php:101
|
908 |
msgid "Backup Failed"
|
909 |
msgstr ""
|
910 |
|
911 |
+
#: functions/core.php:207
|
|
|
|
|
|
|
|
|
912 |
msgid "BackUpWordPress has setup your default schedules."
|
913 |
msgstr ""
|
914 |
|
915 |
+
#: functions/core.php:207
|
916 |
msgid ""
|
917 |
"By default BackUpWordPress performs a daily backup of your database and a "
|
918 |
"weekly backup of your database & files. You can modify these schedules."
|
919 |
msgstr ""
|
920 |
|
921 |
+
#: functions/core.php:224
|
922 |
msgid "Once Hourly"
|
923 |
msgstr ""
|
924 |
|
925 |
+
#: functions/core.php:225
|
926 |
msgid "Twice Daily"
|
927 |
msgstr ""
|
928 |
|
929 |
+
#: functions/core.php:226
|
930 |
msgid "Once Daily"
|
931 |
msgstr ""
|
932 |
|
933 |
+
#: functions/core.php:227
|
934 |
msgid "Once Weekly"
|
935 |
msgstr ""
|
936 |
|
937 |
+
#: functions/core.php:228
|
938 |
msgid "Once Biweekly"
|
939 |
msgstr ""
|
940 |
|
941 |
+
#: functions/core.php:229
|
942 |
msgid "Once Monthly"
|
943 |
msgstr ""
|
944 |
|
945 |
+
#: functions/core.php:247
|
946 |
msgid "You can only delete directories inside your WordPress installation"
|
947 |
msgstr ""
|
948 |
|
|
|
|
|
|
|
|
|
949 |
#: functions/interface.php:31
|
950 |
msgid "Download"
|
951 |
msgstr ""
|
952 |
|
953 |
+
#: functions/interface.php:68
|
954 |
msgid "BackUpWordPress detected issues with your last backup."
|
955 |
msgstr ""
|
956 |
|
957 |
+
#: functions/interface.php:70
|
958 |
msgid "Dismiss"
|
959 |
msgstr ""
|
960 |
|
961 |
+
#: functions/interface.php:119
|
962 |
msgid ""
|
963 |
"The backups directory can't be created because your %1$s directory isn't "
|
964 |
"writable, run %2$s or %3$s or create the folder yourself."
|
970 |
"permissions yourself."
|
971 |
msgstr ""
|
972 |
|
973 |
+
#: functions/interface.php:127
|
974 |
msgid ""
|
975 |
"%1$s is running in %2$s, please contact your host and ask them to disable "
|
976 |
"it. BackUpWordPress may not work correctly whilst %3$s is on."
|
977 |
msgstr ""
|
978 |
|
979 |
+
#: functions/interface.php:127
|
980 |
msgid "http://php.net/manual/en/features.safe-mode.php"
|
981 |
msgstr ""
|
982 |
|
983 |
+
#: functions/interface.php:127
|
984 |
msgid "Safe Mode"
|
985 |
msgstr ""
|
986 |
|
987 |
+
#: functions/interface.php:135
|
988 |
+
msgid "Your custom path does not exist"
|
989 |
+
msgstr ""
|
990 |
+
|
991 |
+
#: functions/interface.php:139
|
992 |
+
msgid ""
|
993 |
+
"Your custom path is unreachable due to a restriction set in your PHP "
|
994 |
+
"configuration (open_basedir)"
|
995 |
+
msgstr ""
|
996 |
+
|
997 |
+
#: functions/interface.php:144
|
998 |
msgid ""
|
999 |
"Your custom backups directory %1$s doesn't exist and can't be created, your "
|
1000 |
"backups will be saved to %2$s instead."
|
1001 |
msgstr ""
|
1002 |
|
1003 |
+
#: functions/interface.php:148
|
1004 |
msgid ""
|
1005 |
"Your custom backups directory %1$s isn't writable, new backups will be "
|
1006 |
"saved to %2$s instead."
|
1007 |
msgstr ""
|
1008 |
|
1009 |
+
#: functions/interface.php:157
|
1010 |
+
msgid "Your site root path %s isn't readable."
|
1011 |
msgstr ""
|
1012 |
|
1013 |
+
#: functions/interface.php:217
|
1014 |
msgid "Database and Files"
|
1015 |
msgstr ""
|
1016 |
|
1017 |
+
#: functions/interface.php:220
|
1018 |
msgid "Files"
|
1019 |
msgstr ""
|
1020 |
|
1021 |
+
#: functions/interface.php:223
|
1022 |
msgid "Database"
|
1023 |
msgstr ""
|
1024 |
|
1025 |
+
#: functions/interface.php:228
|
1026 |
msgid "Legacy"
|
1027 |
msgstr ""
|
1028 |
|
1029 |
+
#: functions/interface.php:243
|
1030 |
msgid "Started %s ago"
|
1031 |
msgstr ""
|
1032 |
|
1033 |
+
#: functions/interface.php:245
|
1034 |
msgid "cancel"
|
1035 |
msgstr ""
|
1036 |
|
1037 |
+
#: functions/interface.php:291
|
1038 |
msgid "No backups completed"
|
1039 |
msgstr ""
|
1040 |
|
1041 |
+
#: functions/interface.php:303
|
1042 |
msgid "Complete Hourly"
|
1043 |
msgstr ""
|
1044 |
|
1045 |
+
#: functions/interface.php:304
|
1046 |
msgid "File Hourly"
|
1047 |
msgstr ""
|
1048 |
|
1049 |
+
#: functions/interface.php:305
|
1050 |
msgid "Database Hourly"
|
1051 |
msgstr ""
|
1052 |
|
1053 |
+
#: functions/interface.php:306
|
1054 |
msgid "Complete Twicedaily"
|
1055 |
msgstr ""
|
1056 |
|
1057 |
+
#: functions/interface.php:307
|
1058 |
msgid "File Twicedaily"
|
1059 |
msgstr ""
|
1060 |
|
1061 |
+
#: functions/interface.php:308
|
1062 |
msgid "Database Twicedaily"
|
1063 |
msgstr ""
|
1064 |
|
1065 |
+
#: functions/interface.php:309
|
1066 |
msgid "Complete Daily"
|
1067 |
msgstr ""
|
1068 |
|
1069 |
+
#: functions/interface.php:310
|
1070 |
msgid "File Daily"
|
1071 |
msgstr ""
|
1072 |
|
1073 |
+
#: functions/interface.php:311
|
1074 |
msgid "Database Daily"
|
1075 |
msgstr ""
|
1076 |
|
1077 |
+
#: functions/interface.php:312
|
1078 |
msgid "Complete Weekly"
|
1079 |
msgstr ""
|
1080 |
|
1081 |
+
#: functions/interface.php:313
|
1082 |
msgid "File Weekly"
|
1083 |
msgstr ""
|
1084 |
|
1085 |
+
#: functions/interface.php:314
|
1086 |
msgid "Database Weekly"
|
1087 |
msgstr ""
|
1088 |
|
1089 |
+
#: functions/interface.php:315
|
1090 |
msgid "Complete Biweekly"
|
1091 |
msgstr ""
|
1092 |
|
1093 |
+
#: functions/interface.php:316
|
1094 |
msgid "File Biweekly"
|
1095 |
msgstr ""
|
1096 |
|
1097 |
+
#: functions/interface.php:317
|
1098 |
msgid "Database Biweekly"
|
1099 |
msgstr ""
|
1100 |
|
1101 |
+
#: functions/interface.php:318
|
1102 |
msgid "Complete Monthly"
|
1103 |
msgstr ""
|
1104 |
|
1105 |
+
#: functions/interface.php:319
|
1106 |
msgid "File Monthly"
|
1107 |
msgstr ""
|
1108 |
|
1109 |
+
#: functions/interface.php:320
|
1110 |
msgid "Database Monthly"
|
1111 |
msgstr ""
|
1112 |
|
1113 |
+
#: functions/interface.php:321
|
1114 |
msgid "Complete Manually"
|
1115 |
msgstr ""
|
1116 |
|
1117 |
+
#: functions/interface.php:322
|
1118 |
msgid "File Manually"
|
1119 |
msgstr ""
|
1120 |
|
1121 |
+
#: functions/interface.php:323
|
1122 |
msgid "Database Manually"
|
1123 |
msgstr ""
|
1124 |
|
1159 |
#. Description of the plugin/theme
|
1160 |
msgid ""
|
1161 |
"Simple automated backups of your WordPress powered website. Once activated "
|
1162 |
+
"you'll find me under <strong>Tools → Backups</strong>. On multisite, "
|
1163 |
+
"you'll find me under the Network Settings menu."
|
1164 |
msgstr ""
|
1165 |
|
1166 |
#. Author of the plugin/theme
|
1171 |
msgid "http://hmn.md/"
|
1172 |
msgstr ""
|
1173 |
|
1174 |
+
#: admin/schedule-sentence.php:117
|
1175 |
msgctxt ""
|
1176 |
"1: Backup Type 2: Total size of backup 3: Schedule 4: Number of backups to "
|
1177 |
"store"
|
1178 |
msgid "Backup my %1$s %2$s %3$s, %4$s."
|
1179 |
msgstr ""
|
1180 |
|
1181 |
+
#: functions/interface.php:293
|
1182 |
msgctxt "backups count"
|
1183 |
msgid "One backup completed"
|
1184 |
msgid_plural "%1$s backups completed"
|
readme.txt
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
=== BackUpWordPress ===
|
2 |
Contributors: humanmade, willmot, pauldewouters, joehoyle, mattheu, tcrsavage, cuvelier
|
3 |
Tags: back up, backup, backups, database, zip, db, files, archive, wp-cli, humanmade
|
4 |
-
Requires at least: 3.
|
5 |
-
Tested up to: 4.
|
6 |
-
Stable tag: 3.0
|
7 |
|
8 |
Simple automated backups of your WordPress powered website.
|
9 |
|
@@ -132,6 +132,71 @@ You can also tweet <a href="http://twitter.com/humanmadeltd">@humanmadeltd</a> o
|
|
132 |
|
133 |
== Changelog ==
|
134 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
135 |
#### 3.0.4 / 2014-12-10
|
136 |
|
137 |
* Simplify the backup count display
|
1 |
=== BackUpWordPress ===
|
2 |
Contributors: humanmade, willmot, pauldewouters, joehoyle, mattheu, tcrsavage, cuvelier
|
3 |
Tags: back up, backup, backups, database, zip, db, files, archive, wp-cli, humanmade
|
4 |
+
Requires at least: 3.9
|
5 |
+
Tested up to: 4.2-alpha
|
6 |
+
Stable tag: 3.1.0
|
7 |
|
8 |
Simple automated backups of your WordPress powered website.
|
9 |
|
132 |
|
133 |
== Changelog ==
|
134 |
|
135 |
+
#### 3.1.0 / 2015-01-13
|
136 |
+
|
137 |
+
* Correct $response1 variable
|
138 |
+
* (origin/issue-652, issue-652) Suppress warnings from filesystem functions
|
139 |
+
* Remove debugging function
|
140 |
+
* (origin/issue-475, issue-475) Fix a French string
|
141 |
+
* Format the intercom data better
|
142 |
+
* Load Intercom in the admin footer
|
143 |
+
* Fix some HTML issues
|
144 |
+
* Add a function that returns a given option value
|
145 |
+
* Return Unknown if no average exists or invalid
|
146 |
+
* Add a start parameter to function
|
147 |
+
* Pass in the start time as a parameter
|
148 |
+
* Make strings translatable
|
149 |
+
* Escape values
|
150 |
+
* Adds a function to track backup duration and another to display it
|
151 |
+
* Adds Average Backup Duration Info
|
152 |
+
* Improve display of arrays
|
153 |
+
* Fixes open_basedir warnings
|
154 |
+
* Replace spaces with tabs for indentation
|
155 |
+
* (wp-cron-test-improvements) Improve the reliability of the wp-cron test
|
156 |
+
* Pop in the directory sizes
|
157 |
+
* Adapt heartbeat pulse
|
158 |
+
* Update Javascript
|
159 |
+
* Update constant name
|
160 |
+
* Load the default translations so that activation error message is in user language
|
161 |
+
* Fix a few translatable strings
|
162 |
+
* Update French translations
|
163 |
+
* Re-uglify Intercom js
|
164 |
+
* Use provided callback argument to determine current screen
|
165 |
+
* remove deprecated code
|
166 |
+
* Only show notices on BWP admin page
|
167 |
+
* Fix class name
|
168 |
+
* Make function public for now
|
169 |
+
* Get an instance of BWP to load functions
|
170 |
+
* Fix conditional
|
171 |
+
* Show admin notice if fails to meet requirements
|
172 |
+
* Remove unneeded function
|
173 |
+
* Fix references
|
174 |
+
* Refactor main class after addition of the Setup class
|
175 |
+
* Introduce a setup class
|
176 |
+
* Determine if we need to run a cleanup routine
|
177 |
+
* Introduce a custom hook for addons
|
178 |
+
* Refactor main plugin file into a singleton class
|
179 |
+
* Bring activation and deactivation into main plugin class
|
180 |
+
* css changes to fix support button alignment
|
181 |
+
* Fixes issue preventing backups from running without JS
|
182 |
+
* Remove back compat memory limit define
|
183 |
+
* Refactor HMBKP_Notices to support non-persistant notices
|
184 |
+
* Minor refactor for PHP minimum requirements notice
|
185 |
+
* Clear previous backup notices when running a new backup
|
186 |
+
* Fix issues with custom paths
|
187 |
+
* Improved singleton pattern
|
188 |
+
* Display errors in network admin
|
189 |
+
* Change to text input so multiple email address are supported
|
190 |
+
* Removes HTML tag from string
|
191 |
+
* Account for new schedule
|
192 |
+
* Make upsell sentence translatable
|
193 |
+
* fix return type
|
194 |
+
* Return true if transient exists
|
195 |
+
* Check if constant is defined
|
196 |
+
* Request the site size via heartbeat send
|
197 |
+
* Pass site size through heartbeat
|
198 |
+
* Only calculate if necessary
|
199 |
+
|
200 |
#### 3.0.4 / 2014-12-10
|
201 |
|
202 |
* Simplify the backup count display
|