BackUpWordPress - Version 2.1.1

Version Description

Download this release

Release Info

Developer willmot
Plugin Icon 128x128 BackUpWordPress
Version 2.1.1
Comparing to
See all releases

Code changes from version 2.1 to 2.1.1

admin/actions.php CHANGED
@@ -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 ( ( require_once( ABSPATH . '/wp-admin/includes/misc.php' ) ) && got_mod_rewrite() ) {
84
 
85
  // Force the .htaccess to be rebuilt
86
  if ( file_exists( hmbkp_path() . '/.htaccess' ) )
@@ -381,8 +383,6 @@ function hmbkp_preview_exclude_rule() {
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>
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' ) )
383
 
384
  $schedule->set_excludes( $excludes );
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>
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
 
assets/hmbkp.js CHANGED
@@ -29,7 +29,7 @@ jQuery( document ).ready( function( $ ) {
29
 
30
  $( '.hmbkp-tabs' ).tabs();
31
 
32
- if ( $( '.hmbkp-form p.submit:contains(\'Update\')' ).size() )
33
  $( '<button type="button" class="button-secondary hmbkp-fancybox-close">' + objectL10n.cancel + '</button></p>' ).appendTo( '.hmbkp-form p.submit' );
34
 
35
  }
29
 
30
  $( '.hmbkp-tabs' ).tabs();
31
 
32
+ if ( $( ".hmbkp-form p.submit:contains('" + objectL10n.update + "')" ).size() )
33
  $( '<button type="button" class="button-secondary hmbkp-fancybox-close">' + objectL10n.cancel + '</button></p>' ).appendTo( '.hmbkp-form p.submit' );
34
 
35
  }
classes/schedule.php CHANGED
@@ -94,7 +94,7 @@ class HMBKP_Scheduled_Backup extends HM_Backup {
94
  $this->set_path( hmbkp_path() );
95
 
96
  // Set the archive filename to site name + schedule slug + date
97
- $this->set_archive_filename( implode( '-', array( sanitize_title( url_shorten( home_url() ) ), $this->get_id(), $this->get_type(), date( 'Y-m-d-H-i-s', current_time( 'timestamp' ) ) ) ) . '.zip' );
98
 
99
  // Setup the schedule if it isn't set or TODO if it's changed
100
  if ( ( ! $this->get_next_occurrence() && in_array( $this->get_reoccurrence(), array_keys( wp_get_schedules() ) ) ) || ( date( get_option( 'time_format' ), strtotime( HMBKP_SCHEDULE_TIME ) - ( get_option( 'gmt_offset' ) * 3600 ) ) !== date( get_option( 'time_format' ), $this->get_next_occurrence() ) ) )
@@ -306,8 +306,12 @@ class HMBKP_Scheduled_Backup extends HM_Backup {
306
 
307
  foreach ( $this->get_files() as $file ) {
308
 
309
- if ( $file === '.' || $file === '..' || ! $file->isReadable() )
310
- continue;
 
 
 
 
311
 
312
  // Excludes
313
  if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', HM_Backup::conform_dir( $file->getPathname() ) ) ) )
94
  $this->set_path( hmbkp_path() );
95
 
96
  // Set the archive filename to site name + schedule slug + date
97
+ $this->set_archive_filename( implode( '-', array( sanitize_title( str_ireplace( array( 'http://', 'https://', 'www' ), '', home_url() ) ), $this->get_id(), $this->get_type(), date( 'Y-m-d-H-i-s', current_time( 'timestamp' ) ) ) ) . '.zip' );
98
 
99
  // Setup the schedule if it isn't set or TODO if it's changed
100
  if ( ( ! $this->get_next_occurrence() && in_array( $this->get_reoccurrence(), array_keys( wp_get_schedules() ) ) ) || ( date( get_option( 'time_format' ), strtotime( HMBKP_SCHEDULE_TIME ) - ( get_option( 'gmt_offset' ) * 3600 ) ) !== date( get_option( 'time_format' ), $this->get_next_occurrence() ) ) )
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() ) ) ) )
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
@@ -286,7 +288,7 @@ function hmbkp_path() {
286
  file_put_contents( $index, '' );
287
 
288
  // Protect the directory with a .htaccess file on Apache servers
289
- if ( ( require_once( ABSPATH . '/wp-admin/includes/misc.php' ) ) && got_mod_rewrite() ) {
290
 
291
  $htaccess = $path . '/.htaccess';
292
 
@@ -299,8 +301,7 @@ function hmbkp_path() {
299
  $contents[] = '</IfModule>';
300
  $contents[] = '';
301
 
302
- if ( ! file_exists( $htaccess ) && is_writable( $path ) )
303
- insert_with_markers( $htaccess, 'BackUpWordPress', $contents );
304
 
305
  }
306
 
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
288
  file_put_contents( $index, '' );
289
 
290
  // Protect the directory with a .htaccess file on Apache servers
291
+ if ( $is_apache && function_exists( 'insert_with_markers' ) && ! file_exists( $htaccess ) && is_writable( $path ) ) {
292
 
293
  $htaccess = $path . '/.htaccess';
294
 
301
  $contents[] = '</IfModule>';
302
  $contents[] = '';
303
 
304
+ insert_with_markers( $htaccess, 'BackUpWordPress', $contents );
 
305
 
306
  }
307
 
functions/interface.php CHANGED
@@ -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 directory browsing dots
178
- if ( $file === '.' || $file === '..' )
179
  continue;
180
 
181
  // Show only unreadable files
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
hm-backup/hm-backup.php CHANGED
@@ -270,7 +270,7 @@ class HM_Backup {
270
  public function get_archive_filename() {
271
 
272
  if ( empty( $this->archive_filename ) )
273
- $this->set_archive_filename( implode( '-', array( sanitize_title( url_shorten( home_url() ) ), 'backup', date( 'Y-m-d-H-i-s', current_time( 'timestamp' ) ) ) ) . '.zip' );
274
 
275
  return $this->archive_filename;
276
 
@@ -350,7 +350,7 @@ class HM_Backup {
350
  public function get_root() {
351
 
352
  if ( empty( $this->root ) )
353
- $this->set_root( HM_Backup::conform_dir( self::get_home_path() ) );
354
 
355
  return $this->root;
356
 
@@ -368,7 +368,7 @@ class HM_Backup {
368
  if ( empty( $path ) || ! is_string( $path ) || ! is_dir ( $path ) )
369
  throw new Exception( 'Invalid root path <code>' . $path . '</code> must be a valid directory path' );
370
 
371
- $this->root = HM_Backup::conform_dir( $path );
372
 
373
  }
374
 
@@ -381,7 +381,7 @@ class HM_Backup {
381
  public function get_path() {
382
 
383
  if ( empty( $this->path ) )
384
- $this->set_path( HM_Backup::conform_dir( hmbkp_path_default() ) );
385
 
386
  return $this->path;
387
 
@@ -399,7 +399,7 @@ class HM_Backup {
399
  if ( empty( $path ) || ! is_string( $path ) )
400
  throw new Exception( 'Invalid backup path <code>' . $path . '</code> must be a non empty (string)' );
401
 
402
- $this->path = HM_Backup::conform_dir( $path );
403
 
404
  }
405
 
@@ -511,7 +511,7 @@ class HM_Backup {
511
 
512
  // Find the one which works
513
  foreach ( $mysqldump_locations as $location )
514
- if ( is_executable( HM_Backup::conform_dir( $location ) ) )
515
  $this->set_mysqldump_command_path( $location );
516
 
517
  return $this->mysqldump_command_path;
@@ -572,7 +572,7 @@ class HM_Backup {
572
 
573
  // Find the one which works
574
  foreach ( $zip_locations as $location )
575
- if ( is_executable( HM_Backup::conform_dir( $location ) ) )
576
  $this->set_zip_command_path( $location );
577
 
578
  return $this->zip_command_path;
@@ -817,18 +817,23 @@ class HM_Backup {
817
 
818
  foreach ( $this->get_files() as $file ) {
819
 
820
- if ( $file === '.' || $file === '..' || ! $file->isReadable() )
821
- continue;
 
 
 
 
 
822
 
823
  // Excludes
824
- if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', HM_Backup::conform_dir( $file->getPathname() ) ) ) )
825
  continue;
826
 
827
  if ( $file->isDir() )
828
- $zip->addEmptyDir( trailingslashit( str_ireplace( trailingslashit( $this->get_root() ), '', HM_Backup::conform_dir( $file->getPathname() ) ) ) );
829
 
830
  elseif ( $file->isFile() )
831
- $zip->addFile( $file->getPathname(), str_ireplace( trailingslashit( $this->get_root() ), '', HM_Backup::conform_dir( $file->getPathname() ) ) );
832
 
833
  if ( ++$files_added % 500 === 0 )
834
  if ( ! $zip->close() || ! $zip->open( $this->get_archive_filepath(), ZIPARCHIVE::CREATE ) )
@@ -947,7 +952,7 @@ class HM_Backup {
947
  if ( $this->get_errors( $this->get_archive_method() ) )
948
  return false;
949
 
950
- if ( $this->get_unreadable_files() )
951
  $this->warning( $this->get_archive_method(), __( 'The following files are unreadable and couldn\'t be backed up: ', 'hmbkp' ) . implode( ', ', $this->get_unreadable_files() ) );
952
 
953
  return $this->archive_verified = true;
@@ -996,11 +1001,11 @@ class HM_Backup {
996
 
997
  while ( $file = readdir( $handle ) ) :
998
 
999
- // Ignore current dir and containing dir and any unreadable files or directories
1000
  if ( $file === '.' || $file === '..' )
1001
  continue;
1002
 
1003
- $filepath = HM_Backup::conform_dir( trailingslashit( $dir ) . $file );
1004
  $file = str_ireplace( trailingslashit( $this->get_root() ), '', $filepath );
1005
 
1006
  $files[] = new SplFileInfo( $filepath );
@@ -1031,11 +1036,16 @@ class HM_Backup {
1031
 
1032
  foreach ( $this->get_files() as $file ) {
1033
 
1034
- if ( $file === '.' || $file === '..' || ! $file->isReadable() )
1035
- continue;
 
 
 
 
 
1036
 
1037
  // Excludes
1038
- if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', HM_Backup::conform_dir( $file->getPathname() ) ) ) )
1039
  continue;
1040
 
1041
  $this->included_files[] = $file;
@@ -1063,11 +1073,16 @@ class HM_Backup {
1063
 
1064
  foreach ( $this->get_files() as $file ) {
1065
 
1066
- if ( $file === '.' || $file === '..' || ! $file->isReadable() )
1067
- continue;
 
 
 
 
 
1068
 
1069
  // Excludes
1070
- if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', HM_Backup::conform_dir( $file->getPathname() ) ) ) )
1071
  continue;
1072
 
1073
  $this->included_file_count++;
@@ -1095,11 +1110,16 @@ class HM_Backup {
1095
 
1096
  foreach ( $this->get_files() as $file ) {
1097
 
1098
- if ( $file === '.' || $file === '..' || ! $file->isReadable() )
1099
- continue;
 
 
 
 
 
1100
 
1101
  // Excludes
1102
- if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', HM_Backup::conform_dir( $file->getPathname() ) ) ) )
1103
  $this->excluded_files[] = $file;
1104
 
1105
  }
@@ -1125,11 +1145,16 @@ class HM_Backup {
1125
 
1126
  foreach ( $this->get_files() as $file ) {
1127
 
1128
- if ( $file === '.' || $file === '..' || ! $file->isReadable() )
1129
- continue;
 
 
 
 
 
1130
 
1131
  // Excludes
1132
- if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', HM_Backup::conform_dir( $file->getPathname() ) ) ) )
1133
  $this->excluded_file_count++;
1134
 
1135
  }
@@ -1153,8 +1178,9 @@ class HM_Backup {
1153
 
1154
  foreach ( $this->get_files() as $file ) {
1155
 
1156
- if ( $file === '.' || $file === '..' )
1157
- continue;
 
1158
 
1159
  if ( ! $file->isReadable() )
1160
  $this->unreadable_files[] = $file;
@@ -1180,8 +1206,9 @@ class HM_Backup {
1180
 
1181
  foreach ( $this->get_files() as $file ) {
1182
 
1183
- if ( $file === '.' || $file === '..' )
1184
- continue;
 
1185
 
1186
  if ( ! $file->isReadable() )
1187
  $this->get_unreadable_file_count++;
@@ -1291,7 +1318,7 @@ class HM_Backup {
1291
  $fragment = true;
1292
 
1293
  // Strip $this->root and conform
1294
- $rule = str_ireplace( $this->get_root(), '', untrailingslashit( HM_Backup::conform_dir( $rule ) ) );
1295
 
1296
  // Strip the preceeding slash
1297
  if ( in_array( substr( $rule, 0, 1 ), array( '\\', '/' ) ) )
270
  public function get_archive_filename() {
271
 
272
  if ( empty( $this->archive_filename ) )
273
+ $this->set_archive_filename( implode( '-', array( sanitize_title( str_ireplace( array( 'http://', 'https://', 'www' ), '', home_url() ) ), 'backup', date( 'Y-m-d-H-i-s', current_time( 'timestamp' ) ) ) ) . '.zip' );
274
 
275
  return $this->archive_filename;
276
 
350
  public function get_root() {
351
 
352
  if ( empty( $this->root ) )
353
+ $this->set_root( self::conform_dir( self::get_home_path() ) );
354
 
355
  return $this->root;
356
 
368
  if ( empty( $path ) || ! is_string( $path ) || ! is_dir ( $path ) )
369
  throw new Exception( 'Invalid root path <code>' . $path . '</code> must be a valid directory path' );
370
 
371
+ $this->root = self::conform_dir( $path );
372
 
373
  }
374
 
381
  public function get_path() {
382
 
383
  if ( empty( $this->path ) )
384
+ $this->set_path( self::conform_dir( hmbkp_path_default() ) );
385
 
386
  return $this->path;
387
 
399
  if ( empty( $path ) || ! is_string( $path ) )
400
  throw new Exception( 'Invalid backup path <code>' . $path . '</code> must be a non empty (string)' );
401
 
402
+ $this->path = self::conform_dir( $path );
403
 
404
  }
405
 
511
 
512
  // Find the one which works
513
  foreach ( $mysqldump_locations as $location )
514
+ if ( is_executable( self::conform_dir( $location ) ) )
515
  $this->set_mysqldump_command_path( $location );
516
 
517
  return $this->mysqldump_command_path;
572
 
573
  // Find the one which works
574
  foreach ( $zip_locations as $location )
575
+ if ( is_executable( self::conform_dir( $location ) ) )
576
  $this->set_zip_command_path( $location );
577
 
578
  return $this->zip_command_path;
817
 
818
  foreach ( $this->get_files() as $file ) {
819
 
820
+ // Skip dot files, they should only exist on versions of PHP between 5.2.11 -> 5.3
821
+ if ( method_exists( $file, 'isDot' ) && $file->isDot() )
822
+ continue;
823
+
824
+ // Skip unreadable files
825
+ if ( ! $file->isReadable() )
826
+ continue;
827
 
828
  // Excludes
829
+ if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', self::conform_dir( $file->getPathname() ) ) ) )
830
  continue;
831
 
832
  if ( $file->isDir() )
833
+ $zip->addEmptyDir( trailingslashit( str_ireplace( trailingslashit( $this->get_root() ), '', self::conform_dir( $file->getPathname() ) ) ) );
834
 
835
  elseif ( $file->isFile() )
836
+ $zip->addFile( $file->getPathname(), str_ireplace( trailingslashit( $this->get_root() ), '', self::conform_dir( $file->getPathname() ) ) );
837
 
838
  if ( ++$files_added % 500 === 0 )
839
  if ( ! $zip->close() || ! $zip->open( $this->get_archive_filepath(), ZIPARCHIVE::CREATE ) )
952
  if ( $this->get_errors( $this->get_archive_method() ) )
953
  return false;
954
 
955
+ if ( $this->get_unreadable_file_count() )
956
  $this->warning( $this->get_archive_method(), __( 'The following files are unreadable and couldn\'t be backed up: ', 'hmbkp' ) . implode( ', ', $this->get_unreadable_files() ) );
957
 
958
  return $this->archive_verified = true;
1001
 
1002
  while ( $file = readdir( $handle ) ) :
1003
 
1004
+ // Ignore current dir and containing dir
1005
  if ( $file === '.' || $file === '..' )
1006
  continue;
1007
 
1008
+ $filepath = self::conform_dir( trailingslashit( $dir ) . $file );
1009
  $file = str_ireplace( trailingslashit( $this->get_root() ), '', $filepath );
1010
 
1011
  $files[] = new SplFileInfo( $filepath );
1036
 
1037
  foreach ( $this->get_files() as $file ) {
1038
 
1039
+ // Skip dot files, they should only exist on versions of PHP between 5.2.11 -> 5.3
1040
+ if ( method_exists( $file, 'isDot' ) && $file->isDot() )
1041
+ continue;
1042
+
1043
+ // Skip unreadable files
1044
+ if ( ! $file->isReadable() )
1045
+ continue;
1046
 
1047
  // Excludes
1048
+ if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', self::conform_dir( $file->getPathname() ) ) ) )
1049
  continue;
1050
 
1051
  $this->included_files[] = $file;
1073
 
1074
  foreach ( $this->get_files() as $file ) {
1075
 
1076
+ // Skip dot files, they should only exist on versions of PHP between 5.2.11 -> 5.3
1077
+ if ( method_exists( $file, 'isDot' ) && $file->isDot() )
1078
+ continue;
1079
+
1080
+ // Skip unreadable files
1081
+ if ( ! $file->isReadable() )
1082
+ continue;
1083
 
1084
  // Excludes
1085
+ if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', self::conform_dir( $file->getPathname() ) ) ) )
1086
  continue;
1087
 
1088
  $this->included_file_count++;
1110
 
1111
  foreach ( $this->get_files() as $file ) {
1112
 
1113
+ // Skip dot files, they should only exist on versions of PHP between 5.2.11 -> 5.3
1114
+ if ( method_exists( $file, 'isDot' ) && $file->isDot() )
1115
+ continue;
1116
+
1117
+ // Skip unreadable files
1118
+ if ( ! $file->isReadable() )
1119
+ continue;
1120
 
1121
  // Excludes
1122
+ if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', self::conform_dir( $file->getPathname() ) ) ) )
1123
  $this->excluded_files[] = $file;
1124
 
1125
  }
1145
 
1146
  foreach ( $this->get_files() as $file ) {
1147
 
1148
+ // Skip dot files, they should only exist on versions of PHP between 5.2.11 -> 5.3
1149
+ if ( method_exists( $file, 'isDot' ) && $file->isDot() )
1150
+ continue;
1151
+
1152
+ // Skip unreadable files
1153
+ if ( ! $file->isReadable() )
1154
+ continue;
1155
 
1156
  // Excludes
1157
+ if ( $excludes && preg_match( '(' . $excludes . ')', str_ireplace( trailingslashit( $this->get_root() ), '', self::conform_dir( $file->getPathname() ) ) ) )
1158
  $this->excluded_file_count++;
1159
 
1160
  }
1178
 
1179
  foreach ( $this->get_files() as $file ) {
1180
 
1181
+ // Skip dot files, they should only exist on versions of PHP between 5.2.11 -> 5.3
1182
+ if ( method_exists( $file, 'isDot' ) && $file->isDot() )
1183
+ continue;
1184
 
1185
  if ( ! $file->isReadable() )
1186
  $this->unreadable_files[] = $file;
1206
 
1207
  foreach ( $this->get_files() as $file ) {
1208
 
1209
+ // Skip dot files, they should only exist on versions of PHP between 5.2.11 -> 5.3
1210
+ if ( method_exists( $file, 'isDot' ) && $file->isDot() )
1211
+ continue;
1212
 
1213
  if ( ! $file->isReadable() )
1214
  $this->get_unreadable_file_count++;
1318
  $fragment = true;
1319
 
1320
  // Strip $this->root and conform
1321
+ $rule = str_ireplace( $this->get_root(), '', untrailingslashit( self::conform_dir( $rule ) ) );
1322
 
1323
  // Strip the preceeding slash
1324
  if ( in_array( substr( $rule, 0, 1 ), array( '\\', '/' ) ) )
plugin.php CHANGED
@@ -5,7 +5,7 @@ Plugin Name: BackUpWordPress
5
  Plugin URI: http://hmn.md/backupwordpress/
6
  Description: Simple automated backups of your WordPress powered website. Once activated you'll find me under <strong>Tools &rarr; Backups</strong>.
7
  Author: Human Made Limited
8
- Version: 2.1
9
  Author URI: http://hmn.md/
10
  */
11
 
5
  Plugin URI: http://hmn.md/backupwordpress/
6
  Description: Simple automated backups of your WordPress powered website. Once activated you'll find me under <strong>Tools &rarr; Backups</strong>.
7
  Author: Human Made Limited
8
+ Version: 2.1.1
9
  Author URI: http://hmn.md/
10
  */
11
 
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,6 +103,16 @@ You can also tweet <a href="http://twitter.com/humanmadeltd">@humanmadeltd</a> o
103
 
104
  == Changelog ==
105
 
 
 
 
 
 
 
 
 
 
 
106
  #### 2.1
107
 
108
  * Stop blocking people with `safe_mode = On` from using the plugin, instead just show a warning.
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.1
7
 
8
  Simple automated back ups of your WordPress powered website.
9
 
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
+ * Properly skip dot files, should fix fatal errors on systems with `open_basedir` restrictions.
112
+ * Don't call `apache_mod_loaded` as it caused wierd DNS issue on some sites, use `global $is_apache` instead.
113
+ * Fix a possible double full stop at the end of the schedule sentence.
114
+ * Minor code cleanup.
115
+
116
  #### 2.1
117
 
118
  * Stop blocking people with `safe_mode = On` from using the plugin, instead just show a warning.