Version Description
Download this release
Release Info
| Developer | willmot |
| Plugin | |
| Version | 2.4.2 |
| Comparing to | |
| See all releases | |
Code changes from version 2.4.1 to 2.4.2
- admin/actions.php +5 -5
- admin/backups.php +1 -1
- admin/menu.php +7 -2
- admin/page.php +1 -1
- assets/hmbkp.css +3 -2
- assets/hmbkp.js +15 -14
- backupwordpress.php +50 -8
- classes/class-email.php +1 -1
- classes/class-requirements.php +12 -2
- classes/class-schedule.php +15 -7
- functions/interface.php +28 -9
- readme.txt +9 -1
admin/actions.php
CHANGED
|
@@ -21,7 +21,7 @@ function hmbkp_request_delete_backup() {
|
|
| 21 |
die;
|
| 22 |
|
| 23 |
}
|
| 24 |
-
add_action( 'load-
|
| 25 |
|
| 26 |
/**
|
| 27 |
* Enable support and then redirect back to the backups page
|
|
@@ -39,7 +39,7 @@ function hmbkp_request_enable_support() {
|
|
| 39 |
die;
|
| 40 |
|
| 41 |
}
|
| 42 |
-
add_action( 'load-
|
| 43 |
|
| 44 |
/**
|
| 45 |
* Delete a schedule and all it's backups and then redirect
|
|
@@ -58,7 +58,7 @@ function hmbkp_request_delete_schedule() {
|
|
| 58 |
die;
|
| 59 |
|
| 60 |
}
|
| 61 |
-
add_action( 'load-
|
| 62 |
|
| 63 |
/**
|
| 64 |
* Perform a manual backup via ajax
|
|
@@ -138,7 +138,7 @@ function hmbkp_request_download_backup() {
|
|
| 138 |
die;
|
| 139 |
|
| 140 |
}
|
| 141 |
-
add_action( 'load-
|
| 142 |
|
| 143 |
/**
|
| 144 |
* Cancels a running backup then redirect
|
|
@@ -162,7 +162,7 @@ function hmbkp_request_cancel_backup() {
|
|
| 162 |
die;
|
| 163 |
|
| 164 |
}
|
| 165 |
-
add_action( 'load-
|
| 166 |
|
| 167 |
/**
|
| 168 |
* Dismiss an error and then redirect
|
| 21 |
die;
|
| 22 |
|
| 23 |
}
|
| 24 |
+
add_action( 'load-' . HMBKP_ADMIN_PAGE, 'hmbkp_request_delete_backup' );
|
| 25 |
|
| 26 |
/**
|
| 27 |
* Enable support and then redirect back to the backups page
|
| 39 |
die;
|
| 40 |
|
| 41 |
}
|
| 42 |
+
add_action( 'load-' . HMBKP_ADMIN_PAGE, 'hmbkp_request_enable_support' );
|
| 43 |
|
| 44 |
/**
|
| 45 |
* Delete a schedule and all it's backups and then redirect
|
| 58 |
die;
|
| 59 |
|
| 60 |
}
|
| 61 |
+
add_action( 'load-' . HMBKP_ADMIN_PAGE, 'hmbkp_request_delete_schedule' );
|
| 62 |
|
| 63 |
/**
|
| 64 |
* Perform a manual backup via ajax
|
| 138 |
die;
|
| 139 |
|
| 140 |
}
|
| 141 |
+
add_action( 'load-' . HMBKP_ADMIN_PAGE, 'hmbkp_request_download_backup' );
|
| 142 |
|
| 143 |
/**
|
| 144 |
* Cancels a running backup then redirect
|
| 162 |
die;
|
| 163 |
|
| 164 |
}
|
| 165 |
+
add_action( 'load-' . HMBKP_ADMIN_PAGE, 'hmbkp_request_cancel_backup' );
|
| 166 |
|
| 167 |
/**
|
| 168 |
* Dismiss an error and then redirect
|
admin/backups.php
CHANGED
|
@@ -37,7 +37,7 @@
|
|
| 37 |
|
| 38 |
<?php endforeach; ?>
|
| 39 |
|
| 40 |
-
<li><a class="colorbox" href="<?php esc_attr_e( esc_url( add_query_arg( array( 'action' => 'hmbkp_add_schedule_load' ), admin_url( 'admin-ajax.php' ) ) ) ); ?>"> + <?php _e( 'add schedule', 'hmbkp' ); ?></a></li>
|
| 41 |
|
| 42 |
</ul>
|
| 43 |
|
| 37 |
|
| 38 |
<?php endforeach; ?>
|
| 39 |
|
| 40 |
+
<li><a class="colorbox" href="<?php esc_attr_e( esc_url( add_query_arg( array( 'action' => 'hmbkp_add_schedule_load' ), is_multisite() ? admin_url( 'admin-ajax.php' ) : network_admin_url( 'admin-ajax.php' ) ) ) ); ?>"> + <?php _e( 'add schedule', 'hmbkp' ); ?></a></li>
|
| 41 |
|
| 42 |
</ul>
|
| 43 |
|
admin/menu.php
CHANGED
|
@@ -7,8 +7,13 @@
|
|
| 7 |
* @return null
|
| 8 |
*/
|
| 9 |
function hmbkp_admin_menu() {
|
| 10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
}
|
|
|
|
| 12 |
add_action( 'admin_menu', 'hmbkp_admin_menu' );
|
| 13 |
|
| 14 |
/**
|
|
@@ -31,7 +36,7 @@ function hmbkp_manage_backups() {
|
|
| 31 |
function hmbkp_plugin_action_link( $links, $file ) {
|
| 32 |
|
| 33 |
if ( strpos( $file, HMBKP_PLUGIN_SLUG ) !== false )
|
| 34 |
-
array_push( $links, '<a href="
|
| 35 |
|
| 36 |
return $links;
|
| 37 |
|
| 7 |
* @return null
|
| 8 |
*/
|
| 9 |
function hmbkp_admin_menu() {
|
| 10 |
+
|
| 11 |
+
if ( is_multisite() )
|
| 12 |
+
add_submenu_page( 'settings.php', __( 'Manage Backups','hmbkp' ), __( 'Backups','hmbkp' ), ( defined( 'HMBKP_CAPABILITY' ) && HMBKP_CAPABILITY ) ? HMBKP_CAPABILITY : 'manage_options', HMBKP_PLUGIN_SLUG, 'hmbkp_manage_backups' );
|
| 13 |
+
else
|
| 14 |
+
add_management_page( __( 'Manage Backups','hmbkp' ), __( 'Backups','hmbkp' ), ( defined( 'HMBKP_CAPABILITY' ) && HMBKP_CAPABILITY ) ? HMBKP_CAPABILITY : 'manage_options', HMBKP_PLUGIN_SLUG, 'hmbkp_manage_backups' );
|
| 15 |
}
|
| 16 |
+
add_action( 'network_admin_menu', 'hmbkp_admin_menu' );
|
| 17 |
add_action( 'admin_menu', 'hmbkp_admin_menu' );
|
| 18 |
|
| 19 |
/**
|
| 36 |
function hmbkp_plugin_action_link( $links, $file ) {
|
| 37 |
|
| 38 |
if ( strpos( $file, HMBKP_PLUGIN_SLUG ) !== false )
|
| 39 |
+
array_push( $links, '<a href="' . esc_url( HMBKP_ADMIN_URL ) . '">' . __( 'Backups', 'hmbkp' ) . '</a>' );
|
| 40 |
|
| 41 |
return $links;
|
| 42 |
|
admin/page.php
CHANGED
|
@@ -11,7 +11,7 @@
|
|
| 11 |
|
| 12 |
<?php } else { ?>
|
| 13 |
|
| 14 |
-
<a id="intercom-info" class="colorbox add-new-h2" href="<?php echo wp_nonce_url( add_query_arg( array( 'action' => 'load_enable_support' ), admin_url( 'admin-ajax.php' ) ), 'hmbkp_nonce' ); ?>">Enable Support</a>
|
| 15 |
|
| 16 |
<?php } ?>
|
| 17 |
|
| 11 |
|
| 12 |
<?php } else { ?>
|
| 13 |
|
| 14 |
+
<a id="intercom-info" class="colorbox add-new-h2" href="<?php echo wp_nonce_url( add_query_arg( array( 'action' => 'load_enable_support' ), is_multisite() ? admin_url( 'admin-ajax.php' ) : network_admin_url( 'admin-ajax.php' ) ), 'hmbkp_nonce' ); ?>">Enable Support</a>
|
| 15 |
|
| 16 |
<?php } ?>
|
| 17 |
|
assets/hmbkp.css
CHANGED
|
@@ -38,14 +38,15 @@ tfoot p { margin: 0; font-weight: normal; }
|
|
| 38 |
.hmbkp-form label > input[type="text"], .hmbkp-form label > select, .hmbkp-form label > input[type="password"] { min-width: 200px; }
|
| 39 |
.hmbkp-form label > input[type="checkbox"] { margin-top: 6px; }
|
| 40 |
.hmbkp-form label .description { line-height: 16px; margin-top: 10px; float: none; }
|
| 41 |
-
.hmbkp-form p.submit { margin:
|
| 42 |
.hmbkp-form .button-primary { float: right; }
|
| 43 |
.hmbkp-form [type="number"] { min-width: 50px; width: 50px; }
|
| 44 |
.hmbkp-error span { position: absolute; top: -14px; right: 1px; color: #FFF; background-color: red; white-space: nowrap; line-height: 16px; font-size: 11px; padding: 0 3px; border-radius: 3px 3px 0 0; }
|
| 45 |
.hmbkp-error input[type], .hmbkp-error select { border-color: red; border-top-right-radius: 0; }
|
|
|
|
| 46 |
|
| 47 |
.hmbkp-form ul { width: 320px; overflow: hidden; }
|
| 48 |
-
.hmbkp-form ul.hmbkp_file_list { background-color: #FFF;
|
| 49 |
.hmbkp_file_list li { margin: 0; padding: 5px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: 16px; }
|
| 50 |
.hmbkp_file_list li + li { border-top: 1px dotted #CCC; }
|
| 51 |
|
| 38 |
.hmbkp-form label > input[type="text"], .hmbkp-form label > select, .hmbkp-form label > input[type="password"] { min-width: 200px; }
|
| 39 |
.hmbkp-form label > input[type="checkbox"] { margin-top: 6px; }
|
| 40 |
.hmbkp-form label .description { line-height: 16px; margin-top: 10px; float: none; }
|
| 41 |
+
.hmbkp-form p.submit { margin:0; padding:0; }
|
| 42 |
.hmbkp-form .button-primary { float: right; }
|
| 43 |
.hmbkp-form [type="number"] { min-width: 50px; width: 50px; }
|
| 44 |
.hmbkp-error span { position: absolute; top: -14px; right: 1px; color: #FFF; background-color: red; white-space: nowrap; line-height: 16px; font-size: 11px; padding: 0 3px; border-radius: 3px 3px 0 0; }
|
| 45 |
.hmbkp-error input[type], .hmbkp-error select { border-color: red; border-top-right-radius: 0; }
|
| 46 |
+
.hmbkp-edit-schedule-excludes-form .code{word-break: break-word;}
|
| 47 |
|
| 48 |
.hmbkp-form ul { width: 320px; overflow: hidden; }
|
| 49 |
+
.hmbkp-form ul.hmbkp_file_list { background-color: #FFF; display: block; border-radius: 4px; box-sizing: border-box; clear: both; box-shadow: inset 0px 0px 2px #CCC; font-size: 11px; }
|
| 50 |
.hmbkp_file_list li { margin: 0; padding: 5px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: 16px; }
|
| 51 |
.hmbkp_file_list li + li { border-top: 1px dotted #CCC; }
|
| 52 |
|
assets/hmbkp.js
CHANGED
|
@@ -19,14 +19,20 @@ jQuery( document ).ready( function( $ ) {
|
|
| 19 |
if ( ! $( '.subsubsub a.current' ).size() )
|
| 20 |
$( '.subsubsub li:first a').addClass( 'current' );
|
| 21 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
// Initialize colorbox
|
| 23 |
$( '.colorbox' ).colorbox( {
|
| 24 |
'initialWidth' : '320px',
|
| 25 |
'initialHeight' : '100px',
|
| 26 |
'transition' : 'elastic',
|
| 27 |
-
'scrolling' :
|
| 28 |
'innerWidth' : "320px",
|
| 29 |
-
'maxHeight' :
|
| 30 |
'escKey' : false,
|
| 31 |
'overlayClose' : false,
|
| 32 |
'onLoad' : function() {
|
|
@@ -38,16 +44,13 @@ jQuery( document ).ready( function( $ ) {
|
|
| 38 |
|
| 39 |
if ( $( ".hmbkp-form p.submit:contains('" + hmbkp.update + "')" ).size() )
|
| 40 |
$( '<button type="button" class="button-secondary hmbkp-colorbox-close">' + hmbkp.cancel + '</button>' ).appendTo( '.hmbkp-form p.submit' );
|
| 41 |
-
|
| 42 |
-
$.colorbox.resize();
|
| 43 |
-
|
| 44 |
}
|
| 45 |
|
| 46 |
} );
|
| 47 |
|
| 48 |
// Resize the colorbox when switching tabs
|
| 49 |
$( document).on( 'click', '.ui-tabs-anchor', function( e ) {
|
| 50 |
-
$.colorbox.resize();
|
| 51 |
} );
|
| 52 |
|
| 53 |
// Show delete confirm message for delete schedule
|
|
@@ -101,7 +104,7 @@ jQuery( document ).ready( function( $ ) {
|
|
| 101 |
|
| 102 |
$( '.hmbkp-edit-schedule-excludes-form' ).addClass( 'hmbkp-exclude-preview-open' );
|
| 103 |
|
| 104 |
-
$.colorbox.resize();
|
| 105 |
|
| 106 |
}
|
| 107 |
)
|
|
@@ -133,8 +136,6 @@ jQuery( document ).ready( function( $ ) {
|
|
| 133 |
|
| 134 |
$( '.hmbkp-edit-schedule-excludes-form' ).removeClass( 'hmbkp-exclude-preview-open' );
|
| 135 |
|
| 136 |
-
$.colorbox.resize();
|
| 137 |
-
|
| 138 |
} );
|
| 139 |
|
| 140 |
// Add exclude rule
|
|
@@ -149,7 +150,7 @@ jQuery( document ).ready( function( $ ) {
|
|
| 149 |
$( '.hmbkp-edit-schedule-excludes-form' ).replaceWith( data );
|
| 150 |
$( '.hmbkp-edit-schedule-excludes-form' ).show();
|
| 151 |
$( '.hmbkp-tabs' ).tabs();
|
| 152 |
-
$.colorbox.resize();
|
| 153 |
}
|
| 154 |
);
|
| 155 |
|
|
@@ -160,7 +161,7 @@ jQuery( document ).ready( function( $ ) {
|
|
| 160 |
|
| 161 |
$( this ).addClass( 'hmbkp-ajax-loading' ).text( '' );
|
| 162 |
|
| 163 |
-
$.colorbox.resize();
|
| 164 |
|
| 165 |
e.preventDefault();
|
| 166 |
|
|
@@ -171,7 +172,7 @@ jQuery( document ).ready( function( $ ) {
|
|
| 171 |
$( '.hmbkp-edit-schedule-excludes-form' ).replaceWith( data );
|
| 172 |
$( '.hmbkp-edit-schedule-excludes-form' ).show();
|
| 173 |
$( '.hmbkp-tabs' ).tabs();
|
| 174 |
-
$.colorbox.resize();
|
| 175 |
}
|
| 176 |
);
|
| 177 |
|
|
@@ -337,13 +338,13 @@ function catchResponseAndOfferToEmail( data ) {
|
|
| 337 |
|
| 338 |
jQuery.colorbox( {
|
| 339 |
'innerWidth' : "320px",
|
| 340 |
-
'maxHeight' : "
|
| 341 |
'html' : data,
|
| 342 |
'overlayClose' : false,
|
| 343 |
'escKey' : false,
|
| 344 |
'onLoad' : function() {
|
| 345 |
jQuery( '#cboxClose' ).remove();
|
| 346 |
-
jQuery.colorbox.resize();
|
| 347 |
}
|
| 348 |
} );
|
| 349 |
|
| 19 |
if ( ! $( '.subsubsub a.current' ).size() )
|
| 20 |
$( '.subsubsub li:first a').addClass( 'current' );
|
| 21 |
|
| 22 |
+
// Carries the same resize options we want
|
| 23 |
+
// to use to all other .resize()
|
| 24 |
+
var resize_options = {
|
| 25 |
+
height: '85%'
|
| 26 |
+
};
|
| 27 |
+
|
| 28 |
// Initialize colorbox
|
| 29 |
$( '.colorbox' ).colorbox( {
|
| 30 |
'initialWidth' : '320px',
|
| 31 |
'initialHeight' : '100px',
|
| 32 |
'transition' : 'elastic',
|
| 33 |
+
'scrolling' : true,
|
| 34 |
'innerWidth' : "320px",
|
| 35 |
+
'maxHeight' : resize_options.height, //85% Takes into account the WP Admin bar.
|
| 36 |
'escKey' : false,
|
| 37 |
'overlayClose' : false,
|
| 38 |
'onLoad' : function() {
|
| 44 |
|
| 45 |
if ( $( ".hmbkp-form p.submit:contains('" + hmbkp.update + "')" ).size() )
|
| 46 |
$( '<button type="button" class="button-secondary hmbkp-colorbox-close">' + hmbkp.cancel + '</button>' ).appendTo( '.hmbkp-form p.submit' );
|
|
|
|
|
|
|
|
|
|
| 47 |
}
|
| 48 |
|
| 49 |
} );
|
| 50 |
|
| 51 |
// Resize the colorbox when switching tabs
|
| 52 |
$( document).on( 'click', '.ui-tabs-anchor', function( e ) {
|
| 53 |
+
$.colorbox.resize(resize_options);
|
| 54 |
} );
|
| 55 |
|
| 56 |
// Show delete confirm message for delete schedule
|
| 104 |
|
| 105 |
$( '.hmbkp-edit-schedule-excludes-form' ).addClass( 'hmbkp-exclude-preview-open' );
|
| 106 |
|
| 107 |
+
$.colorbox.resize(resize_options);
|
| 108 |
|
| 109 |
}
|
| 110 |
)
|
| 136 |
|
| 137 |
$( '.hmbkp-edit-schedule-excludes-form' ).removeClass( 'hmbkp-exclude-preview-open' );
|
| 138 |
|
|
|
|
|
|
|
| 139 |
} );
|
| 140 |
|
| 141 |
// Add exclude rule
|
| 150 |
$( '.hmbkp-edit-schedule-excludes-form' ).replaceWith( data );
|
| 151 |
$( '.hmbkp-edit-schedule-excludes-form' ).show();
|
| 152 |
$( '.hmbkp-tabs' ).tabs();
|
| 153 |
+
$.colorbox.resize(resize_options);
|
| 154 |
}
|
| 155 |
);
|
| 156 |
|
| 161 |
|
| 162 |
$( this ).addClass( 'hmbkp-ajax-loading' ).text( '' );
|
| 163 |
|
| 164 |
+
$.colorbox.resize(resize_options);
|
| 165 |
|
| 166 |
e.preventDefault();
|
| 167 |
|
| 172 |
$( '.hmbkp-edit-schedule-excludes-form' ).replaceWith( data );
|
| 173 |
$( '.hmbkp-edit-schedule-excludes-form' ).show();
|
| 174 |
$( '.hmbkp-tabs' ).tabs();
|
| 175 |
+
$.colorbox.resize(resize_options);
|
| 176 |
}
|
| 177 |
);
|
| 178 |
|
| 338 |
|
| 339 |
jQuery.colorbox( {
|
| 340 |
'innerWidth' : "320px",
|
| 341 |
+
'maxHeight' : "85%",
|
| 342 |
'html' : data,
|
| 343 |
'overlayClose' : false,
|
| 344 |
'escKey' : false,
|
| 345 |
'onLoad' : function() {
|
| 346 |
jQuery( '#cboxClose' ).remove();
|
| 347 |
+
jQuery.colorbox.resize(resize_options);
|
| 348 |
}
|
| 349 |
} );
|
| 350 |
|
backupwordpress.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 → Backups</strong>.
|
| 7 |
Author: Human Made Limited
|
| 8 |
-
Version: 2.4.
|
| 9 |
Author URI: http://hmn.md/
|
| 10 |
*/
|
| 11 |
|
|
@@ -38,8 +38,13 @@ if ( ! defined( 'HMBKP_PLUGIN_URL' ) )
|
|
| 38 |
|
| 39 |
define( 'HMBKP_PLUGIN_LANG_DIR', apply_filters( 'hmbkp_filter_lang_dir', HMBKP_PLUGIN_SLUG . '/languages/' ) );
|
| 40 |
|
| 41 |
-
if ( ! defined( 'HMBKP_ADMIN_URL' ) )
|
| 42 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 43 |
|
| 44 |
$key = array( ABSPATH, time() );
|
| 45 |
|
|
@@ -79,6 +84,16 @@ if ( ! defined( 'WEEK_IN_SECONDS' ) )
|
|
| 79 |
if ( ! defined( 'YEAR_IN_SECONDS' ) )
|
| 80 |
define( 'YEAR_IN_SECONDS', 365 * DAY_IN_SECONDS );
|
| 81 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 82 |
// Load the admin menu
|
| 83 |
require_once( HMBKP_PLUGIN_PATH . '/admin/menu.php' );
|
| 84 |
require_once( HMBKP_PLUGIN_PATH . '/admin/actions.php' );
|
|
@@ -177,7 +192,9 @@ function hmbkp_load_scripts() {
|
|
| 177 |
);
|
| 178 |
|
| 179 |
}
|
| 180 |
-
add_action( 'admin_print_scripts-
|
|
|
|
|
|
|
| 181 |
|
| 182 |
/**
|
| 183 |
* Load Intercom and send across user information and server info
|
|
@@ -221,7 +238,9 @@ function hmbkp_load_intercom_script() {
|
|
| 221 |
<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>
|
| 222 |
|
| 223 |
<?php }
|
| 224 |
-
add_action( 'admin_footer-
|
|
|
|
|
|
|
| 225 |
|
| 226 |
function hmbkp_load_styles(){
|
| 227 |
|
|
@@ -229,8 +248,7 @@ function hmbkp_load_styles(){
|
|
| 229 |
wp_enqueue_style( 'hmbkp', HMBKP_PLUGIN_URL . 'assets/hmbkp.css', false, HMBKP_VERSION );
|
| 230 |
|
| 231 |
}
|
| 232 |
-
add_action( 'admin_print_styles-
|
| 233 |
-
|
| 234 |
|
| 235 |
/**
|
| 236 |
* Function to run when the schedule cron fires
|
|
@@ -292,4 +310,28 @@ function hmbkp_display_server_info_tab() {
|
|
| 292 |
);
|
| 293 |
|
| 294 |
}
|
| 295 |
-
add_action( 'load-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 → Backups</strong>.
|
| 7 |
Author: Human Made Limited
|
| 8 |
+
Version: 2.4.2
|
| 9 |
Author URI: http://hmn.md/
|
| 10 |
*/
|
| 11 |
|
| 38 |
|
| 39 |
define( 'HMBKP_PLUGIN_LANG_DIR', apply_filters( 'hmbkp_filter_lang_dir', HMBKP_PLUGIN_SLUG . '/languages/' ) );
|
| 40 |
|
| 41 |
+
if ( ! defined( 'HMBKP_ADMIN_URL' ) ) {
|
| 42 |
+
if ( is_multisite() )
|
| 43 |
+
define( 'HMBKP_ADMIN_URL', add_query_arg( 'page', HMBKP_PLUGIN_SLUG, network_admin_url( 'settings.php' ) ) );
|
| 44 |
+
else
|
| 45 |
+
define( 'HMBKP_ADMIN_URL', add_query_arg( 'page', HMBKP_PLUGIN_SLUG, admin_url( 'tools.php' ) ) );
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
|
| 49 |
$key = array( ABSPATH, time() );
|
| 50 |
|
| 84 |
if ( ! defined( 'YEAR_IN_SECONDS' ) )
|
| 85 |
define( 'YEAR_IN_SECONDS', 365 * DAY_IN_SECONDS );
|
| 86 |
|
| 87 |
+
if ( ! defined( 'HMBKP_ADMIN_PAGE' ) ) {
|
| 88 |
+
|
| 89 |
+
if ( is_multisite() )
|
| 90 |
+
define( 'HMBKP_ADMIN_PAGE', 'settings_page_' . HMBKP_PLUGIN_SLUG );
|
| 91 |
+
else
|
| 92 |
+
define( 'HMBKP_ADMIN_PAGE', 'tools_page_' . HMBKP_PLUGIN_SLUG );
|
| 93 |
+
|
| 94 |
+
}
|
| 95 |
+
|
| 96 |
+
|
| 97 |
// Load the admin menu
|
| 98 |
require_once( HMBKP_PLUGIN_PATH . '/admin/menu.php' );
|
| 99 |
require_once( HMBKP_PLUGIN_PATH . '/admin/actions.php' );
|
| 192 |
);
|
| 193 |
|
| 194 |
}
|
| 195 |
+
add_action( 'admin_print_scripts-' . HMBKP_ADMIN_PAGE, 'hmbkp_load_scripts' );
|
| 196 |
+
|
| 197 |
+
|
| 198 |
|
| 199 |
/**
|
| 200 |
* Load Intercom and send across user information and server info
|
| 238 |
<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>
|
| 239 |
|
| 240 |
<?php }
|
| 241 |
+
add_action( 'admin_footer-' . HMBKP_ADMIN_PAGE, 'hmbkp_load_intercom_script' );
|
| 242 |
+
|
| 243 |
+
|
| 244 |
|
| 245 |
function hmbkp_load_styles(){
|
| 246 |
|
| 248 |
wp_enqueue_style( 'hmbkp', HMBKP_PLUGIN_URL . 'assets/hmbkp.css', false, HMBKP_VERSION );
|
| 249 |
|
| 250 |
}
|
| 251 |
+
add_action( 'admin_print_styles-' . HMBKP_ADMIN_PAGE, 'hmbkp_load_styles' );
|
|
|
|
| 252 |
|
| 253 |
/**
|
| 254 |
* Function to run when the schedule cron fires
|
| 310 |
);
|
| 311 |
|
| 312 |
}
|
| 313 |
+
add_action( 'load-' . HMBKP_ADMIN_PAGE, 'hmbkp_display_server_info_tab' );
|
| 314 |
+
|
| 315 |
+
/**
|
| 316 |
+
* Ensure BackUpWordPress is loaded before addons
|
| 317 |
+
*/
|
| 318 |
+
function hmbkp_load_first() {
|
| 319 |
+
|
| 320 |
+
$active_plugins = get_option( 'active_plugins' );
|
| 321 |
+
|
| 322 |
+
$plugin_path = plugin_basename( __FILE__ );
|
| 323 |
+
|
| 324 |
+
$key = array_search( $plugin_path, $active_plugins );
|
| 325 |
+
|
| 326 |
+
if ( $key > 0 ) {
|
| 327 |
+
|
| 328 |
+
array_splice( $active_plugins, $key, 1 );
|
| 329 |
+
|
| 330 |
+
array_unshift( $active_plugins, $plugin_path );
|
| 331 |
+
|
| 332 |
+
update_option( 'active_plugins', $active_plugins );
|
| 333 |
+
|
| 334 |
+
}
|
| 335 |
+
|
| 336 |
+
}
|
| 337 |
+
add_action( 'activated_plugin', 'hmbkp_load_first' );
|
classes/class-email.php
CHANGED
|
@@ -164,7 +164,7 @@ class HMBKP_Email_Service extends HMBKP_Service {
|
|
| 164 |
$subject = sprintf( __( 'Backup of %s', 'hmbkp' ), $domain );
|
| 165 |
|
| 166 |
// If it's larger than the max attachment size limit assume it's not going to be able to send the backup
|
| 167 |
-
if ( filesize( $file ) < hmbkp_get_max_attachment_size() ) {
|
| 168 |
|
| 169 |
$message = sprintf( __( 'BackUpWordPress has completed a backup of your site %1$s.', 'hmbkp' ) . "\n\n" . __( 'The backup file should be attached to this email.', 'hmbkp' ) . "\n\n" . __( 'You can download the backup file by clicking the link below:', 'hmbkp' ) . "\n\n" . '%2$s' . "\n\n" . __( "Kind Regards,\nThe Happy BackUpWordPress Backup Emailing Robot", 'hmbkp' ), home_url(), $download );
|
| 170 |
|
| 164 |
$subject = sprintf( __( 'Backup of %s', 'hmbkp' ), $domain );
|
| 165 |
|
| 166 |
// If it's larger than the max attachment size limit assume it's not going to be able to send the backup
|
| 167 |
+
if ( @filesize( $file ) < hmbkp_get_max_attachment_size() ) {
|
| 168 |
|
| 169 |
$message = sprintf( __( 'BackUpWordPress has completed a backup of your site %1$s.', 'hmbkp' ) . "\n\n" . __( 'The backup file should be attached to this email.', 'hmbkp' ) . "\n\n" . __( 'You can download the backup file by clicking the link below:', 'hmbkp' ) . "\n\n" . '%2$s' . "\n\n" . __( "Kind Regards,\nThe Happy BackUpWordPress Backup Emailing Robot", 'hmbkp' ), home_url(), $download );
|
| 170 |
|
classes/class-requirements.php
CHANGED
|
@@ -251,6 +251,9 @@ class HMBKP_Requirement_PHP_User extends HMBKP_Requirement {
|
|
| 251 |
*/
|
| 252 |
protected function test() {
|
| 253 |
|
|
|
|
|
|
|
|
|
|
| 254 |
return shell_exec( 'whoami' );
|
| 255 |
|
| 256 |
}
|
|
@@ -274,6 +277,9 @@ class HMBKP_Requirement_PHP_Group extends HMBKP_Requirement {
|
|
| 274 |
*/
|
| 275 |
protected function test() {
|
| 276 |
|
|
|
|
|
|
|
|
|
|
| 277 |
return shell_exec( 'groups' );
|
| 278 |
|
| 279 |
}
|
|
@@ -557,9 +563,13 @@ class HMBKP_Requirement_Calculated_Size extends HMBKP_Requirement {
|
|
| 557 |
*/
|
| 558 |
protected function test() {
|
| 559 |
|
| 560 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
| 561 |
|
| 562 |
-
return $
|
| 563 |
|
| 564 |
}
|
| 565 |
|
| 251 |
*/
|
| 252 |
protected function test() {
|
| 253 |
|
| 254 |
+
if ( ! HM_Backup::is_shell_exec_available() )
|
| 255 |
+
return '';
|
| 256 |
+
|
| 257 |
return shell_exec( 'whoami' );
|
| 258 |
|
| 259 |
}
|
| 277 |
*/
|
| 278 |
protected function test() {
|
| 279 |
|
| 280 |
+
if ( ! HM_Backup::is_shell_exec_available() )
|
| 281 |
+
return '';
|
| 282 |
+
|
| 283 |
return shell_exec( 'groups' );
|
| 284 |
|
| 285 |
}
|
| 563 |
*/
|
| 564 |
protected function test() {
|
| 565 |
|
| 566 |
+
$schedules = HMBKP_Schedules::get_instance();
|
| 567 |
+
|
| 568 |
+
foreach ( $schedules->get_schedules() as $schedule )
|
| 569 |
+
if ( $schedule->is_filesize_cached() )
|
| 570 |
+
$backup_sizes[$schedule->get_id()] = $schedule->get_formatted_file_size();
|
| 571 |
|
| 572 |
+
return $backup_sizes;
|
| 573 |
|
| 574 |
}
|
| 575 |
|
classes/class-schedule.php
CHANGED
|
@@ -880,9 +880,11 @@ class HMBKP_Scheduled_Backup extends HM_Backup {
|
|
| 880 |
$excluded = array();
|
| 881 |
|
| 882 |
// Leftover backup folders can be either under content dir, or under the uploads dir
|
|
|
|
|
|
|
| 883 |
$hmbkp_folders = array_merge(
|
| 884 |
$this->find_backup_folders( 'backupwordpress-', WP_CONTENT_DIR ),
|
| 885 |
-
$this->find_backup_folders( 'backupwordpress-',
|
| 886 |
);
|
| 887 |
|
| 888 |
|
|
@@ -897,7 +899,7 @@ class HMBKP_Scheduled_Backup extends HM_Backup {
|
|
| 897 |
'updraft' => trailingslashit( WP_CONTENT_DIR ) . trailingslashit( 'updraft' ),
|
| 898 |
'wponlinebckp' => trailingslashit( WP_CONTENT_DIR ) . trailingslashit( 'backups' ),
|
| 899 |
'duplicator' => trailingslashit( ABSPATH ) . trailingslashit( 'wp-snapshots' ),
|
| 900 |
-
'backupbuddy' => trailingslashit(
|
| 901 |
'wpdbmanager' => trailingslashit( WP_CONTENT_DIR ) . trailingslashit( 'backup-db' ),
|
| 902 |
'supercache' => trailingslashit( WP_CONTENT_DIR ) . trailingslashit( 'cache' )
|
| 903 |
);
|
|
@@ -927,15 +929,21 @@ class HMBKP_Scheduled_Backup extends HM_Backup {
|
|
| 927 |
|
| 928 |
$found_folders = array();
|
| 929 |
|
| 930 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 931 |
|
| 932 |
-
|
| 933 |
|
| 934 |
-
|
| 935 |
|
| 936 |
-
|
| 937 |
|
| 938 |
-
|
|
|
|
|
|
|
| 939 |
|
| 940 |
}
|
| 941 |
|
| 880 |
$excluded = array();
|
| 881 |
|
| 882 |
// Leftover backup folders can be either under content dir, or under the uploads dir
|
| 883 |
+
$hmn_upload_dir = wp_upload_dir();
|
| 884 |
+
|
| 885 |
$hmbkp_folders = array_merge(
|
| 886 |
$this->find_backup_folders( 'backupwordpress-', WP_CONTENT_DIR ),
|
| 887 |
+
$this->find_backup_folders( 'backupwordpress-', $hmn_upload_dir['path'] )
|
| 888 |
);
|
| 889 |
|
| 890 |
|
| 899 |
'updraft' => trailingslashit( WP_CONTENT_DIR ) . trailingslashit( 'updraft' ),
|
| 900 |
'wponlinebckp' => trailingslashit( WP_CONTENT_DIR ) . trailingslashit( 'backups' ),
|
| 901 |
'duplicator' => trailingslashit( ABSPATH ) . trailingslashit( 'wp-snapshots' ),
|
| 902 |
+
'backupbuddy' => trailingslashit( $hmn_upload_dir['path'] ) . trailingslashit( 'backupbuddy_backups' ),
|
| 903 |
'wpdbmanager' => trailingslashit( WP_CONTENT_DIR ) . trailingslashit( 'backup-db' ),
|
| 904 |
'supercache' => trailingslashit( WP_CONTENT_DIR ) . trailingslashit( 'cache' )
|
| 905 |
);
|
| 929 |
|
| 930 |
$found_folders = array();
|
| 931 |
|
| 932 |
+
$folders_to_search = glob( $haystack . '/*', GLOB_ONLYDIR | GLOB_NOSORT );
|
| 933 |
+
|
| 934 |
+
if ( ! empty( $folders_to_search ) ) {
|
| 935 |
+
|
| 936 |
+
foreach ( $folders_to_search as $folder ) {
|
| 937 |
|
| 938 |
+
$pos = strpos( $folder, $needle );
|
| 939 |
|
| 940 |
+
$default_path = get_option( 'hmbkp_default_path' );
|
| 941 |
|
| 942 |
+
if ( ( false !== $pos ) && ( $folder !== $default_path ) ) {
|
| 943 |
|
| 944 |
+
$found_folders[] = trailingslashit( $folder );
|
| 945 |
+
|
| 946 |
+
}
|
| 947 |
|
| 948 |
}
|
| 949 |
|
functions/interface.php
CHANGED
|
@@ -9,7 +9,16 @@
|
|
| 9 |
function hmbkp_get_backup_row( $file, HMBKP_Scheduled_Backup $schedule ) {
|
| 10 |
|
| 11 |
$encoded_file = urlencode( base64_encode( $file ) );
|
| 12 |
-
$offset = get_option( 'gmt_offset' ) * 3600;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
|
| 14 |
<tr class="hmbkp_manage_backups_row<?php if ( file_exists( hmbkp_path() . '/.backup_complete' ) ) : ?> completed<?php unlink( hmbkp_path() . '/.backup_complete' ); endif; ?>">
|
| 15 |
|
|
@@ -26,10 +35,10 @@ function hmbkp_get_backup_row( $file, HMBKP_Scheduled_Backup $schedule ) {
|
|
| 26 |
<td>
|
| 27 |
|
| 28 |
<?php if ( hmbkp_is_path_accessible( hmbkp_path() ) ) : ?>
|
| 29 |
-
<a href="<?php echo wp_nonce_url(
|
| 30 |
<?php endif; ?>
|
| 31 |
|
| 32 |
-
<a href="<?php echo wp_nonce_url(
|
| 33 |
|
| 34 |
</td>
|
| 35 |
|
|
@@ -127,8 +136,13 @@ add_action( 'admin_head', 'hmbkp_admin_notices' );
|
|
| 127 |
*/
|
| 128 |
function hmbkp_plugin_row( $plugins ) {
|
| 129 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 130 |
if ( isset( $plugins[HMBKP_PLUGIN_SLUG . '/backupwordpress.php'] ) )
|
| 131 |
-
$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="' .
|
| 132 |
|
| 133 |
return $plugins;
|
| 134 |
|
|
@@ -255,26 +269,31 @@ function hmbkp_human_get_type( $type, HMBKP_Scheduled_Backup $schedule = null )
|
|
| 255 |
*/
|
| 256 |
function hmbkp_schedule_actions( HMBKP_Scheduled_Backup $schedule ) {
|
| 257 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 258 |
// Start output buffering
|
| 259 |
ob_start(); ?>
|
| 260 |
|
| 261 |
-
<span class="hmbkp-status"><?php echo $schedule->get_status() ? wp_kses_data( $schedule->get_status() ) : __( 'Starting Backup', 'hmbkp' ); ?> <a href="<?php echo esc_url( add_query_arg( array( 'action' => 'hmbkp_cancel', 'hmbkp_schedule_id' => $schedule->get_id() ),
|
| 262 |
|
| 263 |
<div class="hmbkp-schedule-actions row-actions">
|
| 264 |
|
| 265 |
-
<a class="colorbox" href="<?php echo esc_url( add_query_arg( array( 'action' => 'hmbkp_edit_schedule_load', 'hmbkp_schedule_id' => $schedule->get_id() ), admin_url( 'admin-ajax.php' ) ) ); ?>"><?php _e( 'Settings', 'hmbkp' ); ?></a> |
|
| 266 |
|
| 267 |
<?php if ( $schedule->get_type() !== 'database' ) { ?>
|
| 268 |
-
<a class="colorbox" href="<?php echo esc_url( add_query_arg( array( 'action' => 'hmbkp_edit_schedule_excludes_load', 'hmbkp_schedule_id' => $schedule->get_id() ), admin_url( 'admin-ajax.php' ) ) ); ?>"><?php _e( 'Excludes', 'hmbkp' ); ?></a> |
|
| 269 |
<?php } ?>
|
| 270 |
|
| 271 |
<?php // capture output
|
| 272 |
$output = ob_get_clean();
|
| 273 |
echo apply_filters( 'hmbkp_schedule_actions_menu', $output, $schedule ); ?>
|
| 274 |
|
| 275 |
-
<a class="hmbkp-run" href="<?php echo esc_url( add_query_arg( array( 'action' => 'hmbkp_run_schedule', 'hmbkp_schedule_id' => $schedule->get_id() ), admin_url( 'admin-ajax.php' ) ) ); ?>"><?php _e( 'Run now', 'hmbkp' ); ?></a> |
|
| 276 |
|
| 277 |
-
<a class="delete-action" href="<?php echo wp_nonce_url( add_query_arg( array( 'action' => 'hmbkp_delete_schedule', 'hmbkp_schedule_id' => $schedule->get_id() ),
|
| 278 |
|
| 279 |
</div>
|
| 280 |
|
| 9 |
function hmbkp_get_backup_row( $file, HMBKP_Scheduled_Backup $schedule ) {
|
| 10 |
|
| 11 |
$encoded_file = urlencode( base64_encode( $file ) );
|
| 12 |
+
$offset = get_option( 'gmt_offset' ) * 3600;
|
| 13 |
+
|
| 14 |
+
if ( is_multisite() ) {
|
| 15 |
+
$delete_action_url = network_admin_url( 'settings.php?page=' . HMBKP_PLUGIN_SLUG . '&hmbkp_delete_backup=' . $encoded_file . '&hmbkp_schedule_id=' . $schedule->get_id() );
|
| 16 |
+
$download_action_url = network_admin_url( 'settings.php?page=' . HMBKP_PLUGIN_SLUG . '&hmbkp_download_backup=' . $encoded_file . '&hmbkp_schedule_id=' . $schedule->get_id() );
|
| 17 |
+
} else {
|
| 18 |
+
$delete_action_url = admin_url( 'tools.php?page=' . HMBKP_PLUGIN_SLUG . '&hmbkp_delete_backup=' . $encoded_file . '&hmbkp_schedule_id=' . $schedule->get_id() );
|
| 19 |
+
$download_action_url = admin_url( 'tools.php?page=' . HMBKP_PLUGIN_SLUG . '&hmbkp_download_backup=' . $encoded_file . '&hmbkp_schedule_id=' . $schedule->get_id() );
|
| 20 |
+
}
|
| 21 |
+
?>
|
| 22 |
|
| 23 |
<tr class="hmbkp_manage_backups_row<?php if ( file_exists( hmbkp_path() . '/.backup_complete' ) ) : ?> completed<?php unlink( hmbkp_path() . '/.backup_complete' ); endif; ?>">
|
| 24 |
|
| 35 |
<td>
|
| 36 |
|
| 37 |
<?php if ( hmbkp_is_path_accessible( hmbkp_path() ) ) : ?>
|
| 38 |
+
<a href="<?php echo wp_nonce_url( $download_action_url, 'hmbkp-download_backup' ); ?>"><?php _e( 'Download', 'hmbkp' ); ?></a> |
|
| 39 |
<?php endif; ?>
|
| 40 |
|
| 41 |
+
<a href="<?php echo wp_nonce_url( $delete_action_url, 'hmbkp-delete_backup' ); ?>" class="delete-action"><?php _e( 'Delete', 'hmbkp' ); ?></a>
|
| 42 |
|
| 43 |
</td>
|
| 44 |
|
| 136 |
*/
|
| 137 |
function hmbkp_plugin_row( $plugins ) {
|
| 138 |
|
| 139 |
+
if ( is_multisite() )
|
| 140 |
+
$settings_url = network_admin_url( 'settings.php?page=' . HMBKP_PLUGIN_SLUG );
|
| 141 |
+
else
|
| 142 |
+
$settings_url = admin_url( 'tools.php?page=' . HMBKP_PLUGIN_SLUG );
|
| 143 |
+
|
| 144 |
if ( isset( $plugins[HMBKP_PLUGIN_SLUG . '/backupwordpress.php'] ) )
|
| 145 |
+
$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( $settings_url ) . '">Tools → Backups</a></strong>', $plugins[HMBKP_PLUGIN_SLUG . '/backupwordpress.php']['Description'] );
|
| 146 |
|
| 147 |
return $plugins;
|
| 148 |
|
| 269 |
*/
|
| 270 |
function hmbkp_schedule_actions( HMBKP_Scheduled_Backup $schedule ) {
|
| 271 |
|
| 272 |
+
if ( is_multisite() )
|
| 273 |
+
$settings_url = network_admin_url( 'settings.php?page=' . HMBKP_PLUGIN_SLUG );
|
| 274 |
+
else
|
| 275 |
+
$settings_url = admin_url( 'tools.php?page=' . HMBKP_PLUGIN_SLUG );
|
| 276 |
+
|
| 277 |
// Start output buffering
|
| 278 |
ob_start(); ?>
|
| 279 |
|
| 280 |
+
<span class="hmbkp-status"><?php echo $schedule->get_status() ? wp_kses_data( $schedule->get_status() ) : __( 'Starting Backup', 'hmbkp' ); ?> <a href="<?php echo esc_url( add_query_arg( array( 'action' => 'hmbkp_cancel', 'hmbkp_schedule_id' => $schedule->get_id() ), $settings_url ) ); ?>"><?php _e( 'cancel', 'hmbkp' ); ?></a></span>
|
| 281 |
|
| 282 |
<div class="hmbkp-schedule-actions row-actions">
|
| 283 |
|
| 284 |
+
<a class="colorbox" href="<?php echo esc_url( add_query_arg( array( 'action' => 'hmbkp_edit_schedule_load', 'hmbkp_schedule_id' => $schedule->get_id() ), is_multisite() ? admin_url( 'admin-ajax.php' ) : network_admin_url( 'admin-ajax.php' ) ) ); ?>"><?php _e( 'Settings', 'hmbkp' ); ?></a> |
|
| 285 |
|
| 286 |
<?php if ( $schedule->get_type() !== 'database' ) { ?>
|
| 287 |
+
<a class="colorbox" href="<?php echo esc_url( add_query_arg( array( 'action' => 'hmbkp_edit_schedule_excludes_load', 'hmbkp_schedule_id' => $schedule->get_id() ), is_multisite() ? admin_url( 'admin-ajax.php' ) : network_admin_url( 'admin-ajax.php' ) ) ); ?>"><?php _e( 'Excludes', 'hmbkp' ); ?></a> |
|
| 288 |
<?php } ?>
|
| 289 |
|
| 290 |
<?php // capture output
|
| 291 |
$output = ob_get_clean();
|
| 292 |
echo apply_filters( 'hmbkp_schedule_actions_menu', $output, $schedule ); ?>
|
| 293 |
|
| 294 |
+
<a class="hmbkp-run" href="<?php echo esc_url( add_query_arg( array( 'action' => 'hmbkp_run_schedule', 'hmbkp_schedule_id' => $schedule->get_id() ), is_multisite() ? admin_url( 'admin-ajax.php' ) : network_admin_url( 'admin-ajax.php' ) ) ); ?>"><?php _e( 'Run now', 'hmbkp' ); ?></a> |
|
| 295 |
|
| 296 |
+
<a class="delete-action" href="<?php echo wp_nonce_url( add_query_arg( array( 'action' => 'hmbkp_delete_schedule', 'hmbkp_schedule_id' => $schedule->get_id() ), $settings_url ), 'hmbkp-delete_schedule' ); ?>"><?php _e( 'Delete', 'hmbkp' ); ?></a>
|
| 297 |
|
| 298 |
</div>
|
| 299 |
|
readme.txt
CHANGED
|
@@ -3,7 +3,7 @@ Contributors: humanmade, willmot, pauldewouters, joehoyle, mattheu, tcrsavage, c
|
|
| 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.8
|
| 6 |
-
Stable tag: 2.4.
|
| 7 |
|
| 8 |
Simple automated back ups of your WordPress powered website.
|
| 9 |
|
|
@@ -103,6 +103,14 @@ You can also tweet <a href="http://twitter.com/humanmadeltd">@humanmadeltd</a> o
|
|
| 103 |
|
| 104 |
== Changelog ==
|
| 105 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 106 |
#### 2.4.1
|
| 107 |
|
| 108 |
* Add missing colorbox images
|
| 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.8
|
| 6 |
+
Stable tag: 2.4.2
|
| 7 |
|
| 8 |
Simple automated back ups of your WordPress powered website.
|
| 9 |
|
| 103 |
|
| 104 |
== Changelog ==
|
| 105 |
|
| 106 |
+
#### 2.4.2
|
| 107 |
+
|
| 108 |
+
* In WordPress Multisite the backups admin page is now located in Network admin instead of the wp-admin of the main site.
|
| 109 |
+
* Fixed an issue with the new intercom support integration that could cause loading the backups page to timeout
|
| 110 |
+
* Fixed 3 stray PHP warnings.
|
| 111 |
+
* BackUpWordPress will now always be loaded before any BackUpWordPress Extensions.
|
| 112 |
+
* Fixed an issue that could cause a long modal (excludes) to show underneath the WP admin bar.
|
| 113 |
+
|
| 114 |
#### 2.4.1
|
| 115 |
|
| 116 |
* Add missing colorbox images
|
