Version Description
Download this release
Release Info
Developer | willmot |
Plugin | The WP Remote WordPress Plugin |
Version | 2.4.12 |
Comparing to | |
See all releases |
Code changes from version 2.4.11 to 2.4.12
- backupwordpress/admin/actions.php +27 -14
- backupwordpress/admin/schedule.php +1 -1
- backupwordpress/assets/hmbkp.js +5 -5
- backupwordpress/classes/schedule.php +6 -2
- backupwordpress/functions/core.php +6 -4
- backupwordpress/functions/interface.php +3 -3
- backupwordpress/hm-backup/hm-backup.php +46 -17
- backupwordpress/plugin.php +1 -3
- backupwordpress/readme.txt +20 -1
- plugin.php +4 -1
- readme.txt +7 -1
backupwordpress/admin/actions.php
CHANGED
@@ -45,9 +45,9 @@ add_action( 'load-tools_page_' . HMBKP_PLUGIN_SLUG, 'hmbkp_request_delete_schedu
|
|
45 |
function hmbkp_ajax_request_do_backup() {
|
46 |
|
47 |
if ( empty( $_POST['hmbkp_schedule_id'] ) )
|
48 |
-
|
49 |
|
50 |
-
// We
|
51 |
error_reporting( E_ERROR );
|
52 |
@ini_set( 'display_errors', 'On' );
|
53 |
@ini_set( 'html_errors', 'Off' );
|
@@ -75,12 +75,14 @@ add_action( 'wp_ajax_hmbkp_run_schedule', 'hmbkp_ajax_request_do_backup' );
|
|
75 |
*/
|
76 |
function hmbkp_request_download_backup() {
|
77 |
|
|
|
|
|
78 |
if ( empty( $_GET['hmbkp_download_backup'] ) || ! check_admin_referer( 'hmbkp-download_backup' ) || ! file_exists( base64_decode( $_GET['hmbkp_download_backup'] ) ) )
|
79 |
return;
|
80 |
|
81 |
$url = str_replace( HM_Backup::conform_dir( HM_Backup::get_home_path() ), home_url(), trailingslashit( dirname( base64_decode( $_GET['hmbkp_download_backup'] ) ) ) ) . urlencode( pathinfo( base64_decode( $_GET['hmbkp_download_backup'] ), PATHINFO_BASENAME ) );
|
82 |
|
83 |
-
if (
|
84 |
|
85 |
// Force the .htaccess to be rebuilt
|
86 |
if ( file_exists( hmbkp_path() . '/.htaccess' ) )
|
@@ -147,7 +149,7 @@ add_action( 'admin_init', 'hmbkp_dismiss_error' );
|
|
147 |
function hmbkp_ajax_is_backup_in_progress() {
|
148 |
|
149 |
if ( empty( $_POST['hmbkp_schedule_id'] ) )
|
150 |
-
|
151 |
|
152 |
$schedule = new HMBKP_Scheduled_Backup( urldecode( $_POST['hmbkp_schedule_id'] ) );
|
153 |
|
@@ -168,7 +170,7 @@ add_action( 'wp_ajax_hmbkp_is_in_progress', 'hmbkp_ajax_is_backup_in_progress' )
|
|
168 |
function hmbkp_ajax_calculate_backup_size() {
|
169 |
|
170 |
if ( empty( $_POST['hmbkp_schedule_id'] ) )
|
171 |
-
|
172 |
|
173 |
$schedule = new HMBKP_Scheduled_Backup( urldecode( $_POST['hmbkp_schedule_id'] ) );
|
174 |
|
@@ -207,6 +209,9 @@ add_action( 'wp_ajax_hmbkp_cron_test', 'hmbkp_ajax_cron_test' );
|
|
207 |
*/
|
208 |
function hmbkp_edit_schedule_load() {
|
209 |
|
|
|
|
|
|
|
210 |
$schedule = new HMBKP_Scheduled_Backup( $_GET['hmbkp_schedule_id'] );
|
211 |
|
212 |
require( HMBKP_PLUGIN_PATH . '/admin/schedule-form.php' );
|
@@ -221,6 +226,9 @@ add_action( 'wp_ajax_hmbkp_edit_schedule_load', 'hmbkp_edit_schedule_load' );
|
|
221 |
*/
|
222 |
function hmbkp_edit_schedule_excludes_load() {
|
223 |
|
|
|
|
|
|
|
224 |
$schedule = new HMBKP_Scheduled_Backup( $_GET['hmbkp_schedule_id'] );
|
225 |
|
226 |
require( HMBKP_PLUGIN_PATH . '/admin/schedule-form-excludes.php' );
|
@@ -253,7 +261,7 @@ add_action( 'wp_ajax_hmbkp_add_schedule_load', 'hmbkp_add_schedule_load' );
|
|
253 |
function hmnkp_edit_schedule_submit() {
|
254 |
|
255 |
if ( empty( $_GET['hmbkp_schedule_id'] ) )
|
256 |
-
|
257 |
|
258 |
$schedule = new HMBKP_Scheduled_Backup( $_GET['hmbkp_schedule_id'] );
|
259 |
|
@@ -325,6 +333,9 @@ add_action( 'wp_ajax_hmnkp_edit_schedule_submit', 'hmnkp_edit_schedule_submit' )
|
|
325 |
*/
|
326 |
function hmbkp_add_exclude_rule() {
|
327 |
|
|
|
|
|
|
|
328 |
$schedule = new HMBKP_Scheduled_Backup( $_POST['hmbkp_schedule_id'] );
|
329 |
|
330 |
$schedule->set_excludes( $_POST['hmbkp_exclude_rule'], true );
|
@@ -347,6 +358,9 @@ add_action( 'wp_ajax_hmbkp_add_exclude_rule', 'hmbkp_add_exclude_rule' );
|
|
347 |
*/
|
348 |
function hmbkp_delete_exclude_rule() {
|
349 |
|
|
|
|
|
|
|
350 |
$schedule = new HMBKP_Scheduled_Backup( $_GET['hmbkp_schedule_id'] );
|
351 |
|
352 |
$excludes = $schedule->get_excludes();
|
@@ -371,18 +385,17 @@ add_action( 'wp_ajax_hmbkp_delete_exclude_rule', 'hmbkp_delete_exclude_rule' );
|
|
371 |
*/
|
372 |
function hmbkp_preview_exclude_rule() {
|
373 |
|
374 |
-
if (
|
375 |
-
|
376 |
|
377 |
-
|
378 |
-
|
|
|
379 |
|
380 |
hmbkp_file_list( $schedule, $excludes, 'get_excluded_files' );
|
381 |
|
382 |
$schedule->set_excludes( $excludes );
|
383 |
|
384 |
-
error_log( $schedule->get_excluded_file_count() );
|
385 |
-
|
386 |
if ( $schedule->get_excluded_file_count() ) { ?>
|
387 |
|
388 |
<p><?php printf( _n( '%s matches 1 file.', '%1$s matches %2$d files.', $schedule->get_excluded_file_count(), 'hmbkp' ), '<code>' . implode( '</code>, <code>', $excludes ) . '</code>', $schedule->get_excluded_file_count() ); ?></p>
|
@@ -403,7 +416,7 @@ add_action( 'wp_ajax_hmbkp_file_list', 'hmbkp_preview_exclude_rule', 10, 0 );
|
|
403 |
function hmbkp_display_error_and_offer_to_email_it() {
|
404 |
|
405 |
if ( empty( $_POST['hmbkp_error'] ) )
|
406 |
-
|
407 |
|
408 |
$error = str_replace( HM_Backup::get_home_path(), '', $_POST['hmbkp_error'] ); ?>
|
409 |
|
@@ -425,7 +438,7 @@ add_action( 'wp_ajax_hmbkp_backup_error', 'hmbkp_display_error_and_offer_to_emai
|
|
425 |
function hmbkp_send_error_via_email() {
|
426 |
|
427 |
if ( empty( $_POST['hmbkp_error'] ) )
|
428 |
-
|
429 |
|
430 |
$error = $_POST['hmbkp_error'];
|
431 |
|
45 |
function hmbkp_ajax_request_do_backup() {
|
46 |
|
47 |
if ( empty( $_POST['hmbkp_schedule_id'] ) )
|
48 |
+
exit;
|
49 |
|
50 |
+
// We want to display any fatal errors in this ajax request so we can catch them on the other side.
|
51 |
error_reporting( E_ERROR );
|
52 |
@ini_set( 'display_errors', 'On' );
|
53 |
@ini_set( 'html_errors', 'Off' );
|
75 |
*/
|
76 |
function hmbkp_request_download_backup() {
|
77 |
|
78 |
+
global $is_apache;
|
79 |
+
|
80 |
if ( empty( $_GET['hmbkp_download_backup'] ) || ! check_admin_referer( 'hmbkp-download_backup' ) || ! file_exists( base64_decode( $_GET['hmbkp_download_backup'] ) ) )
|
81 |
return;
|
82 |
|
83 |
$url = str_replace( HM_Backup::conform_dir( HM_Backup::get_home_path() ), home_url(), trailingslashit( dirname( base64_decode( $_GET['hmbkp_download_backup'] ) ) ) ) . urlencode( pathinfo( base64_decode( $_GET['hmbkp_download_backup'] ), PATHINFO_BASENAME ) );
|
84 |
|
85 |
+
if ( $is_apache ) {
|
86 |
|
87 |
// Force the .htaccess to be rebuilt
|
88 |
if ( file_exists( hmbkp_path() . '/.htaccess' ) )
|
149 |
function hmbkp_ajax_is_backup_in_progress() {
|
150 |
|
151 |
if ( empty( $_POST['hmbkp_schedule_id'] ) )
|
152 |
+
exit;
|
153 |
|
154 |
$schedule = new HMBKP_Scheduled_Backup( urldecode( $_POST['hmbkp_schedule_id'] ) );
|
155 |
|
170 |
function hmbkp_ajax_calculate_backup_size() {
|
171 |
|
172 |
if ( empty( $_POST['hmbkp_schedule_id'] ) )
|
173 |
+
exit;
|
174 |
|
175 |
$schedule = new HMBKP_Scheduled_Backup( urldecode( $_POST['hmbkp_schedule_id'] ) );
|
176 |
|
209 |
*/
|
210 |
function hmbkp_edit_schedule_load() {
|
211 |
|
212 |
+
if ( empty( $_GET['hmbkp_schedule_id'] ) )
|
213 |
+
exit;
|
214 |
+
|
215 |
$schedule = new HMBKP_Scheduled_Backup( $_GET['hmbkp_schedule_id'] );
|
216 |
|
217 |
require( HMBKP_PLUGIN_PATH . '/admin/schedule-form.php' );
|
226 |
*/
|
227 |
function hmbkp_edit_schedule_excludes_load() {
|
228 |
|
229 |
+
if ( empty( $_GET['hmbkp_schedule_id'] ) )
|
230 |
+
exit;
|
231 |
+
|
232 |
$schedule = new HMBKP_Scheduled_Backup( $_GET['hmbkp_schedule_id'] );
|
233 |
|
234 |
require( HMBKP_PLUGIN_PATH . '/admin/schedule-form-excludes.php' );
|
261 |
function hmnkp_edit_schedule_submit() {
|
262 |
|
263 |
if ( empty( $_GET['hmbkp_schedule_id'] ) )
|
264 |
+
exit;
|
265 |
|
266 |
$schedule = new HMBKP_Scheduled_Backup( $_GET['hmbkp_schedule_id'] );
|
267 |
|
333 |
*/
|
334 |
function hmbkp_add_exclude_rule() {
|
335 |
|
336 |
+
if ( empty( $_POST['hmbkp_schedule_id'] ) )
|
337 |
+
exit;
|
338 |
+
|
339 |
$schedule = new HMBKP_Scheduled_Backup( $_POST['hmbkp_schedule_id'] );
|
340 |
|
341 |
$schedule->set_excludes( $_POST['hmbkp_exclude_rule'], true );
|
358 |
*/
|
359 |
function hmbkp_delete_exclude_rule() {
|
360 |
|
361 |
+
if ( empty( $_GET['hmbkp_schedule_id'] ) )
|
362 |
+
exit;
|
363 |
+
|
364 |
$schedule = new HMBKP_Scheduled_Backup( $_GET['hmbkp_schedule_id'] );
|
365 |
|
366 |
$excludes = $schedule->get_excludes();
|
385 |
*/
|
386 |
function hmbkp_preview_exclude_rule() {
|
387 |
|
388 |
+
if ( empty( $_POST['hmbkp_schedule_id'] ) || empty( $_POST['hmbkp_schedule_excludes'] ) )
|
389 |
+
exit;
|
390 |
|
391 |
+
$schedule = new HMBKP_Scheduled_Backup( $_POST['hmbkp_schedule_id'] );
|
392 |
+
|
393 |
+
$excludes = explode( ',', $_POST['hmbkp_schedule_excludes'] );
|
394 |
|
395 |
hmbkp_file_list( $schedule, $excludes, 'get_excluded_files' );
|
396 |
|
397 |
$schedule->set_excludes( $excludes );
|
398 |
|
|
|
|
|
399 |
if ( $schedule->get_excluded_file_count() ) { ?>
|
400 |
|
401 |
<p><?php printf( _n( '%s matches 1 file.', '%1$s matches %2$d files.', $schedule->get_excluded_file_count(), 'hmbkp' ), '<code>' . implode( '</code>, <code>', $excludes ) . '</code>', $schedule->get_excluded_file_count() ); ?></p>
|
416 |
function hmbkp_display_error_and_offer_to_email_it() {
|
417 |
|
418 |
if ( empty( $_POST['hmbkp_error'] ) )
|
419 |
+
exit;
|
420 |
|
421 |
$error = str_replace( HM_Backup::get_home_path(), '', $_POST['hmbkp_error'] ); ?>
|
422 |
|
438 |
function hmbkp_send_error_via_email() {
|
439 |
|
440 |
if ( empty( $_POST['hmbkp_error'] ) )
|
441 |
+
exit;
|
442 |
|
443 |
$error = $_POST['hmbkp_error'];
|
444 |
|
backupwordpress/admin/schedule.php
CHANGED
@@ -93,7 +93,7 @@ foreach ( HMBKP_Services::get_services( $schedule ) as $file => $service )
|
|
93 |
|
94 |
<div class="hmbkp-schedule-sentence<?php if ( $schedule->get_status() ) { ?> hmbkp-running<?php } ?>">
|
95 |
|
96 |
-
<?php printf( __( 'Backup my %1$s %2$s %3$s, %4$s. %5$s', 'hmbkp' ), $filesize, '<span>' . $type . '</span>', $reoccurrence, $backup_to_keep, implode( '. ', $services ) ); ?>
|
97 |
|
98 |
<?php hmbkp_schedule_actions( $schedule ); ?>
|
99 |
|
93 |
|
94 |
<div class="hmbkp-schedule-sentence<?php if ( $schedule->get_status() ) { ?> hmbkp-running<?php } ?>">
|
95 |
|
96 |
+
<?php printf( __( 'Backup my %1$s %2$s %3$s, %4$s. %5$s', 'hmbkp' ), $filesize, '<span>' . $type . '</span>', $reoccurrence, $backup_to_keep, implode( '. ', array_filter( $services ) ) ); ?>
|
97 |
|
98 |
<?php hmbkp_schedule_actions( $schedule ); ?>
|
99 |
|
backupwordpress/assets/hmbkp.js
CHANGED
@@ -216,7 +216,7 @@ jQuery( document ).ready( function( $ ) {
|
|
216 |
function( data ) {
|
217 |
|
218 |
// Assume success if no data passed back
|
219 |
-
if ( ! data ) {
|
220 |
|
221 |
$.fancybox.close();
|
222 |
|
@@ -306,7 +306,7 @@ jQuery( document ).ready( function( $ ) {
|
|
306 |
function( data ) {
|
307 |
|
308 |
// Backup Succeeded
|
309 |
-
if ( ! data ) {
|
310 |
location.reload( true );
|
311 |
}
|
312 |
|
@@ -320,7 +320,7 @@ jQuery( document ).ready( function( $ ) {
|
|
320 |
{ 'action' : 'hmbkp_backup_error', 'hmbkp_error' : data },
|
321 |
function( data ) {
|
322 |
|
323 |
-
if ( ! data )
|
324 |
return;
|
325 |
|
326 |
$.fancybox( {
|
@@ -375,8 +375,8 @@ function hmbkpRedirectOnBackupComplete( schedule_id, redirect ) {
|
|
375 |
{ 'action' : 'hmbkp_is_in_progress', 'hmbkp_schedule_id' : jQuery( '[data-hmbkp-schedule-id]' ).attr( 'data-hmbkp-schedule-id' ) },
|
376 |
function( data ) {
|
377 |
|
378 |
-
if ( data
|
379 |
-
|
380 |
|
381 |
} else {
|
382 |
|
216 |
function( data ) {
|
217 |
|
218 |
// Assume success if no data passed back
|
219 |
+
if ( ! data || data == 0 ) {
|
220 |
|
221 |
$.fancybox.close();
|
222 |
|
306 |
function( data ) {
|
307 |
|
308 |
// Backup Succeeded
|
309 |
+
if ( ! data || data == 0 ) {
|
310 |
location.reload( true );
|
311 |
}
|
312 |
|
320 |
{ 'action' : 'hmbkp_backup_error', 'hmbkp_error' : data },
|
321 |
function( data ) {
|
322 |
|
323 |
+
if ( ! data || data == 0 )
|
324 |
return;
|
325 |
|
326 |
$.fancybox( {
|
375 |
{ 'action' : 'hmbkp_is_in_progress', 'hmbkp_schedule_id' : jQuery( '[data-hmbkp-schedule-id]' ).attr( 'data-hmbkp-schedule-id' ) },
|
376 |
function( data ) {
|
377 |
|
378 |
+
if ( data == 0 && redirect === true ) {
|
379 |
+
location.reload( true );
|
380 |
|
381 |
} else {
|
382 |
|
backupwordpress/classes/schedule.php
CHANGED
@@ -306,8 +306,12 @@ class HMBKP_Scheduled_Backup extends HM_Backup {
|
|
306 |
|
307 |
foreach ( $this->get_files() as $file ) {
|
308 |
|
309 |
-
|
310 |
-
|
|
|
|
|
|
|
|
|
311 |
|
312 |
// Excludes
|
313 |
if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', HM_Backup::conform_dir( $file->getPathname() ) ) ) )
|
306 |
|
307 |
foreach ( $this->get_files() as $file ) {
|
308 |
|
309 |
+
// Skip dot files, they should only exist on versions of PHP between 5.2.11 -> 5.3
|
310 |
+
if ( method_exists( $file, 'isDot' ) && $file->isDot() )
|
311 |
+
continue;
|
312 |
+
|
313 |
+
if ( ! $file->isReadable() )
|
314 |
+
continue;
|
315 |
|
316 |
// Excludes
|
317 |
if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', HM_Backup::conform_dir( $file->getPathname() ) ) ) )
|
backupwordpress/functions/core.php
CHANGED
@@ -261,6 +261,8 @@ function hmbkp_rmdirtree( $dir ) {
|
|
261 |
*/
|
262 |
function hmbkp_path() {
|
263 |
|
|
|
|
|
264 |
$path = get_option( 'hmbkp_path' );
|
265 |
|
266 |
// Allow the backups path to be defined
|
@@ -285,10 +287,10 @@ function hmbkp_path() {
|
|
285 |
if ( ! file_exists( $index ) && is_writable( $path ) )
|
286 |
file_put_contents( $index, '' );
|
287 |
|
288 |
-
|
289 |
-
if ( apply_filters( 'got_rewrite', apache_mod_loaded( 'mod_rewrite', true ) ) && function_exists( 'insert_with_markers' ) && ! file_exists( $htaccess ) && is_writable( $path ) ) {
|
290 |
|
291 |
-
|
|
|
292 |
|
293 |
$contents[] = '# ' . sprintf( __( 'This %s file ensures that other people cannot download your backup files.', 'hmbkp' ), '.htaccess' );
|
294 |
$contents[] = '';
|
@@ -327,7 +329,7 @@ function hmbkp_path_default() {
|
|
327 |
$upload_dir = wp_upload_dir();
|
328 |
|
329 |
// If the backups dir can't be created in WP_CONTENT_DIR then fallback to uploads
|
330 |
-
if ( ( ! is_dir( $path ) && ! is_writable( dirname( $path ) ) ) || ( is_dir( $path ) && ! is_writable( $path ) ) && strpos( $path, $upload_dir['basedir'] ) === false ) {
|
331 |
|
332 |
hmbkp_path_move( $path, $path = HM_Backup::conform_dir( trailingslashit( $upload_dir['basedir'] ) . substr( md5( time() ), 0, 10 ) . '-backups' ) );
|
333 |
|
261 |
*/
|
262 |
function hmbkp_path() {
|
263 |
|
264 |
+
global $is_apache;
|
265 |
+
|
266 |
$path = get_option( 'hmbkp_path' );
|
267 |
|
268 |
// Allow the backups path to be defined
|
287 |
if ( ! file_exists( $index ) && is_writable( $path ) )
|
288 |
file_put_contents( $index, '' );
|
289 |
|
290 |
+
$htaccess = $path . '/.htaccess';
|
|
|
291 |
|
292 |
+
// Protect the directory with a .htaccess file on Apache servers
|
293 |
+
if ( $is_apache && function_exists( 'insert_with_markers' ) && ! file_exists( $htaccess ) && is_writable( $path ) ) {
|
294 |
|
295 |
$contents[] = '# ' . sprintf( __( 'This %s file ensures that other people cannot download your backup files.', 'hmbkp' ), '.htaccess' );
|
296 |
$contents[] = '';
|
329 |
$upload_dir = wp_upload_dir();
|
330 |
|
331 |
// If the backups dir can't be created in WP_CONTENT_DIR then fallback to uploads
|
332 |
+
if ( ( ( ! is_dir( $path ) && ! is_writable( dirname( $path ) ) ) || ( is_dir( $path ) && ! is_writable( $path ) ) ) && strpos( $path, $upload_dir['basedir'] ) === false ) {
|
333 |
|
334 |
hmbkp_path_move( $path, $path = HM_Backup::conform_dir( trailingslashit( $upload_dir['basedir'] ) . substr( md5( time() ), 0, 10 ) . '-backups' ) );
|
335 |
|
backupwordpress/functions/interface.php
CHANGED
@@ -47,7 +47,7 @@ function hmbkp_admin_notices() {
|
|
47 |
function hmbkp_path_exists_warning() {
|
48 |
$php_user = exec( 'whoami' );
|
49 |
$php_group = reset( explode( ' ', exec( 'groups' ) ) );
|
50 |
-
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress is almost ready.', 'hmbkp' ) . '</strong> ' . sprintf( __( 'The backups directory can\'t be created because your %1$s directory isn\'t writable, run %2$s or %3$s or create the folder yourself.', 'hmbkp' ), '<code>wp-content</code>', '<code>chown ' . $php_user . ':' . $php_group . ' ' .
|
51 |
}
|
52 |
add_action( 'admin_notices', 'hmbkp_path_exists_warning' );
|
53 |
|
@@ -174,8 +174,8 @@ function hmbkp_file_list( HMBKP_Scheduled_Backup $schedule, $excludes = null, $f
|
|
174 |
if ( ! is_null( $excludes ) && strpos( $file, str_ireplace( $schedule->get_root(), '', $schedule->get_path() ) ) !== false )
|
175 |
continue;
|
176 |
|
177 |
-
// Skip
|
178 |
-
if ( $file
|
179 |
continue;
|
180 |
|
181 |
// Show only unreadable files
|
47 |
function hmbkp_path_exists_warning() {
|
48 |
$php_user = exec( 'whoami' );
|
49 |
$php_group = reset( explode( ' ', exec( 'groups' ) ) );
|
50 |
+
echo '<div id="hmbkp-warning" class="updated fade"><p><strong>' . __( 'BackUpWordPress is almost ready.', 'hmbkp' ) . '</strong> ' . sprintf( __( 'The backups directory can\'t be created because your %1$s directory isn\'t writable, run %2$s or %3$s or create the folder yourself.', 'hmbkp' ), '<code>wp-content</code>', '<code>chown ' . $php_user . ':' . $php_group . ' ' . dirname( hmbkp_path() ) . '</code>', '<code>chmod 777 ' . dirname( hmbkp_path() ) . '</code>' ) . '</p></div>';
|
51 |
}
|
52 |
add_action( 'admin_notices', 'hmbkp_path_exists_warning' );
|
53 |
|
174 |
if ( ! is_null( $excludes ) && strpos( $file, str_ireplace( $schedule->get_root(), '', $schedule->get_path() ) ) !== false )
|
175 |
continue;
|
176 |
|
177 |
+
// Skip dot files, they should only exist on versions of PHP between 5.2.11 -> 5.3
|
178 |
+
if ( method_exists( $file, 'isDot' ) && $file->isDot() )
|
179 |
continue;
|
180 |
|
181 |
// Show only unreadable files
|
backupwordpress/hm-backup/hm-backup.php
CHANGED
@@ -195,7 +195,8 @@ class HM_Backup {
|
|
195 |
|
196 |
$home_path = ABSPATH;
|
197 |
|
198 |
-
|
|
|
199 |
$home_path = trailingslashit( substr( ABSPATH, 0, strrpos( ABSPATH, str_replace( $home_url, '', $site_url ) ) ) );
|
200 |
|
201 |
return self::conform_dir( $home_path );
|
@@ -817,8 +818,13 @@ class HM_Backup {
|
|
817 |
|
818 |
foreach ( $this->get_files() as $file ) {
|
819 |
|
820 |
-
|
821 |
-
|
|
|
|
|
|
|
|
|
|
|
822 |
|
823 |
// Excludes
|
824 |
if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', self::conform_dir( $file->getPathname() ) ) ) )
|
@@ -902,7 +908,8 @@ class HM_Backup {
|
|
902 |
if ( ! empty( $this->mysqldump_verified ) )
|
903 |
return true;
|
904 |
|
905 |
-
|
|
|
906 |
$this->error( $this->get_mysqldump_method(), __( 'The mysqldump file was not created', 'hmbkp' ) );
|
907 |
|
908 |
if ( $this->get_errors( $this->get_mysqldump_method() ) )
|
@@ -996,7 +1003,7 @@ class HM_Backup {
|
|
996 |
|
997 |
while ( $file = readdir( $handle ) ) :
|
998 |
|
999 |
-
// Ignore current dir and containing dir
|
1000 |
if ( $file === '.' || $file === '..' )
|
1001 |
continue;
|
1002 |
|
@@ -1031,8 +1038,13 @@ class HM_Backup {
|
|
1031 |
|
1032 |
foreach ( $this->get_files() as $file ) {
|
1033 |
|
1034 |
-
|
1035 |
-
|
|
|
|
|
|
|
|
|
|
|
1036 |
|
1037 |
// Excludes
|
1038 |
if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', self::conform_dir( $file->getPathname() ) ) ) )
|
@@ -1063,8 +1075,13 @@ class HM_Backup {
|
|
1063 |
|
1064 |
foreach ( $this->get_files() as $file ) {
|
1065 |
|
1066 |
-
|
1067 |
-
|
|
|
|
|
|
|
|
|
|
|
1068 |
|
1069 |
// Excludes
|
1070 |
if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', self::conform_dir( $file->getPathname() ) ) ) )
|
@@ -1095,8 +1112,13 @@ class HM_Backup {
|
|
1095 |
|
1096 |
foreach ( $this->get_files() as $file ) {
|
1097 |
|
1098 |
-
|
1099 |
-
|
|
|
|
|
|
|
|
|
|
|
1100 |
|
1101 |
// Excludes
|
1102 |
if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', self::conform_dir( $file->getPathname() ) ) ) )
|
@@ -1125,8 +1147,13 @@ class HM_Backup {
|
|
1125 |
|
1126 |
foreach ( $this->get_files() as $file ) {
|
1127 |
|
1128 |
-
|
1129 |
-
|
|
|
|
|
|
|
|
|
|
|
1130 |
|
1131 |
// Excludes
|
1132 |
if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', self::conform_dir( $file->getPathname() ) ) ) )
|
@@ -1153,8 +1180,9 @@ class HM_Backup {
|
|
1153 |
|
1154 |
foreach ( $this->get_files() as $file ) {
|
1155 |
|
1156 |
-
|
1157 |
-
|
|
|
1158 |
|
1159 |
if ( ! $file->isReadable() )
|
1160 |
$this->unreadable_files[] = $file;
|
@@ -1180,8 +1208,9 @@ class HM_Backup {
|
|
1180 |
|
1181 |
foreach ( $this->get_files() as $file ) {
|
1182 |
|
1183 |
-
|
1184 |
-
|
|
|
1185 |
|
1186 |
if ( ! $file->isReadable() )
|
1187 |
$this->get_unreadable_file_count++;
|
195 |
|
196 |
$home_path = ABSPATH;
|
197 |
|
198 |
+
// If site_url contains home_url and they differ then assume WordPress is installed in a sub directory
|
199 |
+
if ( $home_url !== $site_url && strpos( $site_url, $home_url ) === 0 )
|
200 |
$home_path = trailingslashit( substr( ABSPATH, 0, strrpos( ABSPATH, str_replace( $home_url, '', $site_url ) ) ) );
|
201 |
|
202 |
return self::conform_dir( $home_path );
|
818 |
|
819 |
foreach ( $this->get_files() as $file ) {
|
820 |
|
821 |
+
// Skip dot files, they should only exist on versions of PHP between 5.2.11 -> 5.3
|
822 |
+
if ( method_exists( $file, 'isDot' ) && $file->isDot() )
|
823 |
+
continue;
|
824 |
+
|
825 |
+
// Skip unreadable files
|
826 |
+
if ( ! $file->isReadable() )
|
827 |
+
continue;
|
828 |
|
829 |
// Excludes
|
830 |
if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', self::conform_dir( $file->getPathname() ) ) ) )
|
908 |
if ( ! empty( $this->mysqldump_verified ) )
|
909 |
return true;
|
910 |
|
911 |
+
// mysqldump can create empty dump files on error so we need to check the filesize
|
912 |
+
if ( ! file_exists( $this->get_database_dump_filepath() ) || filesize( $this->get_database_dump_filepath() ) === 0 )
|
913 |
$this->error( $this->get_mysqldump_method(), __( 'The mysqldump file was not created', 'hmbkp' ) );
|
914 |
|
915 |
if ( $this->get_errors( $this->get_mysqldump_method() ) )
|
1003 |
|
1004 |
while ( $file = readdir( $handle ) ) :
|
1005 |
|
1006 |
+
// Ignore current dir and containing dir
|
1007 |
if ( $file === '.' || $file === '..' )
|
1008 |
continue;
|
1009 |
|
1038 |
|
1039 |
foreach ( $this->get_files() as $file ) {
|
1040 |
|
1041 |
+
// Skip dot files, they should only exist on versions of PHP between 5.2.11 -> 5.3
|
1042 |
+
if ( method_exists( $file, 'isDot' ) && $file->isDot() )
|
1043 |
+
continue;
|
1044 |
+
|
1045 |
+
// Skip unreadable files
|
1046 |
+
if ( ! $file->isReadable() )
|
1047 |
+
continue;
|
1048 |
|
1049 |
// Excludes
|
1050 |
if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', self::conform_dir( $file->getPathname() ) ) ) )
|
1075 |
|
1076 |
foreach ( $this->get_files() as $file ) {
|
1077 |
|
1078 |
+
// Skip dot files, they should only exist on versions of PHP between 5.2.11 -> 5.3
|
1079 |
+
if ( method_exists( $file, 'isDot' ) && $file->isDot() )
|
1080 |
+
continue;
|
1081 |
+
|
1082 |
+
// Skip unreadable files
|
1083 |
+
if ( ! $file->isReadable() )
|
1084 |
+
continue;
|
1085 |
|
1086 |
// Excludes
|
1087 |
if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', self::conform_dir( $file->getPathname() ) ) ) )
|
1112 |
|
1113 |
foreach ( $this->get_files() as $file ) {
|
1114 |
|
1115 |
+
// Skip dot files, they should only exist on versions of PHP between 5.2.11 -> 5.3
|
1116 |
+
if ( method_exists( $file, 'isDot' ) && $file->isDot() )
|
1117 |
+
continue;
|
1118 |
+
|
1119 |
+
// Skip unreadable files
|
1120 |
+
if ( ! $file->isReadable() )
|
1121 |
+
continue;
|
1122 |
|
1123 |
// Excludes
|
1124 |
if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', self::conform_dir( $file->getPathname() ) ) ) )
|
1147 |
|
1148 |
foreach ( $this->get_files() as $file ) {
|
1149 |
|
1150 |
+
// Skip dot files, they should only exist on versions of PHP between 5.2.11 -> 5.3
|
1151 |
+
if ( method_exists( $file, 'isDot' ) && $file->isDot() )
|
1152 |
+
continue;
|
1153 |
+
|
1154 |
+
// Skip unreadable files
|
1155 |
+
if ( ! $file->isReadable() )
|
1156 |
+
continue;
|
1157 |
|
1158 |
// Excludes
|
1159 |
if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', self::conform_dir( $file->getPathname() ) ) ) )
|
1180 |
|
1181 |
foreach ( $this->get_files() as $file ) {
|
1182 |
|
1183 |
+
// Skip dot files, they should only exist on versions of PHP between 5.2.11 -> 5.3
|
1184 |
+
if ( method_exists( $file, 'isDot' ) && $file->isDot() )
|
1185 |
+
continue;
|
1186 |
|
1187 |
if ( ! $file->isReadable() )
|
1188 |
$this->unreadable_files[] = $file;
|
1208 |
|
1209 |
foreach ( $this->get_files() as $file ) {
|
1210 |
|
1211 |
+
// Skip dot files, they should only exist on versions of PHP between 5.2.11 -> 5.3
|
1212 |
+
if ( method_exists( $file, 'isDot' ) && $file->isDot() )
|
1213 |
+
continue;
|
1214 |
|
1215 |
if ( ! $file->isReadable() )
|
1216 |
$this->get_unreadable_file_count++;
|
backupwordpress/plugin.php
CHANGED
@@ -109,10 +109,8 @@ if ( ! function_exists( 'hmbkp_init' ) ) :
|
|
109 |
*/
|
110 |
function hmbkp_init() {
|
111 |
|
112 |
-
$plugin_data = get_plugin_data( __FILE__ );
|
113 |
-
|
114 |
// define the plugin version
|
115 |
-
define( 'HMBKP_VERSION',
|
116 |
|
117 |
// Load translations
|
118 |
load_plugin_textdomain( 'hmbkp', false, HMBKP_PLUGIN_SLUG . '/languages/' );
|
109 |
*/
|
110 |
function hmbkp_init() {
|
111 |
|
|
|
|
|
112 |
// define the plugin version
|
113 |
+
define( 'HMBKP_VERSION', '2.1.3' );
|
114 |
|
115 |
// Load translations
|
116 |
load_plugin_textdomain( 'hmbkp', false, HMBKP_PLUGIN_SLUG . '/languages/' );
|
backupwordpress/readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: humanmade, joehoyle, mattheu, tcrsavage, willmot, cuvelier
|
|
3 |
Tags: back up, backup, backups, database, zip, db, files, archive, wp-cli, humanmade
|
4 |
Requires at least: 3.3.3
|
5 |
Tested up to: 3.5
|
6 |
-
Stable tag: 2.1
|
7 |
|
8 |
Simple automated back ups of your WordPress powered website.
|
9 |
|
@@ -103,11 +103,30 @@ You can also tweet <a href="http://twitter.com/humanmadeltd">@humanmadeltd</a> o
|
|
103 |
|
104 |
== Changelog ==
|
105 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
#### 2.1.1
|
107 |
|
108 |
* Fix a possible fatal error when a backup schedule is instantiated outside of wp-admin.
|
109 |
* Don't use functions from misc.php as loading it too early can cause fatal errors.
|
110 |
* Don't hardcode an English string in the JS, use the translated string instead.
|
|
|
|
|
|
|
111 |
* Minor code cleanup.
|
112 |
|
113 |
#### 2.1
|
3 |
Tags: back up, backup, backups, database, zip, db, files, archive, wp-cli, humanmade
|
4 |
Requires at least: 3.3.3
|
5 |
Tested up to: 3.5
|
6 |
+
Stable tag: 2.1.3
|
7 |
|
8 |
Simple automated back ups of your WordPress powered website.
|
9 |
|
103 |
|
104 |
== Changelog ==
|
105 |
|
106 |
+
#### 2.1.4
|
107 |
+
|
108 |
+
* Don't repeatedly try to create the backups directory in the `uploads` if `uploads` isn't writable.
|
109 |
+
* Show the correct path in the warning message when the backups path can't be created.
|
110 |
+
|
111 |
+
#### 2.1.3
|
112 |
+
|
113 |
+
* Fix a regression in `2.1.2` that broke previewing and adding new exclude rules.
|
114 |
+
|
115 |
+
#### 2.1.2
|
116 |
+
|
117 |
+
* Fix an issue that could stop the settings panel from closing on save on servers which return `'0'` for ajax requests.
|
118 |
+
* Fix an issue that could cause the backup root to be set to `/` on sites with `site_url` and `home` set to different domains.
|
119 |
+
* The mysqldump fallback function will now be used if `mysqldump` produces an empty file.
|
120 |
+
* Fix a possible PHP `NOTICE` on Apache servers.
|
121 |
+
|
122 |
#### 2.1.1
|
123 |
|
124 |
* Fix a possible fatal error when a backup schedule is instantiated outside of wp-admin.
|
125 |
* Don't use functions from misc.php as loading it too early can cause fatal errors.
|
126 |
* Don't hardcode an English string in the JS, use the translated string instead.
|
127 |
+
* Properly skip dot files, should fix fatal errors on systems with `open_basedir` restrictions.
|
128 |
+
* Don't call `apache_mod_loaded` as it caused wierd DNS issue on some sites, use `global $is_apache` instead.
|
129 |
+
* Fix a possible double full stop at the end of the schedule sentence.
|
130 |
* Minor code cleanup.
|
131 |
|
132 |
#### 2.1
|
plugin.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
/*
|
4 |
Plugin Name: WP Remote
|
5 |
Description: Manage your WordPress site with <a href="https://wpremote.com/">WP Remote</a>. <strong>Deactivate to clear your API Key.</strong>
|
6 |
-
Version: 2.4.
|
7 |
Author: Human Made Limited
|
8 |
Author URI: http://hmn.md/
|
9 |
*/
|
@@ -70,6 +70,9 @@ if ( version_compare( get_bloginfo( 'version' ), '3.1', '>=' ) ) {
|
|
70 |
|
71 |
require( WPRP_PLUGIN_PATH . '/backupwordpress/plugin.php' );
|
72 |
|
|
|
|
|
|
|
73 |
require_once( WPRP_PLUGIN_PATH . '/wprp.backups.php' );
|
74 |
|
75 |
}
|
3 |
/*
|
4 |
Plugin Name: WP Remote
|
5 |
Description: Manage your WordPress site with <a href="https://wpremote.com/">WP Remote</a>. <strong>Deactivate to clear your API Key.</strong>
|
6 |
+
Version: 2.4.12
|
7 |
Author: Human Made Limited
|
8 |
Author URI: http://hmn.md/
|
9 |
*/
|
70 |
|
71 |
require( WPRP_PLUGIN_PATH . '/backupwordpress/plugin.php' );
|
72 |
|
73 |
+
// Set the correct path for the BackUpWordPress language files.
|
74 |
+
load_plugin_textdomain( 'hmbkp', false, '/wpremote/' . HMBKP_PLUGIN_SLUG . '/languages/' );
|
75 |
+
|
76 |
require_once( WPRP_PLUGIN_PATH . '/wprp.backups.php' );
|
77 |
|
78 |
}
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: humanmade, joehoyle, mattheu, tcrsavage, willmot
|
|
3 |
Tags: wpremote, remote administration, multiple wordpress
|
4 |
Requires at least: 2.9
|
5 |
Tested up to: 3.5
|
6 |
-
Stable tag: 2.4.
|
7 |
|
8 |
WP Remote is a free web app that enables you to easily manage all of your WordPress powered sites from one place.
|
9 |
|
@@ -31,6 +31,12 @@ You can email us at support@wpremote.com for support.
|
|
31 |
|
32 |
== Changelog ==
|
33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
#### 2.4.10 + 2.4.11
|
35 |
|
36 |
* Plugin release shenaningans.
|
3 |
Tags: wpremote, remote administration, multiple wordpress
|
4 |
Requires at least: 2.9
|
5 |
Tested up to: 3.5
|
6 |
+
Stable tag: 2.4.12
|
7 |
|
8 |
WP Remote is a free web app that enables you to easily manage all of your WordPress powered sites from one place.
|
9 |
|
31 |
|
32 |
== Changelog ==
|
33 |
|
34 |
+
#### 2.4.12
|
35 |
+
|
36 |
+
* Upgrade bundled BackUpWordPress to 2.1.3.
|
37 |
+
* Fix an issue with Download Site on Apache servers.
|
38 |
+
* Set the correct location for the BackUpWordPress language files.
|
39 |
+
|
40 |
#### 2.4.10 + 2.4.11
|
41 |
|
42 |
* Plugin release shenaningans.
|