Version Description
- The bug related to inprogress backup and restore was fixed.
Download this release
Release Info
Developer | BackupGuard |
Plugin | WordPress Backup and Migrate Plugin – Backup Guard |
Version | 1.2.9 |
Comparing to | |
See all releases |
Code changes from version 1.2.8 to 1.2.9
- README.txt +4 -1
- backup.php +2 -2
- com/core/backup/SGBackup.php +26 -0
- com/lib/SGArchiveToZip.php +49 -0
- com/lib/test.txt +26 -0
- public/ajax/checkBackupCreation.php +29 -15
- public/ajax/checkRestoreCreation.php +15 -1
- public/js/sgbackup.js +14 -3
README.txt
CHANGED
@@ -6,7 +6,7 @@ Donate link: https://backup-guard.com/products/backup-wordpress
|
|
6 |
Tags: backup, wordpress backup plugin, backup plugin, database backup, migrate, back up
|
7 |
Requires at least: 3.8
|
8 |
Tested up to: 5.4
|
9 |
-
Stable tag: 1.2.
|
10 |
License: GPLv2 or later
|
11 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
12 |
|
@@ -157,6 +157,9 @@ When you are facing an issue of any kind with any of our products, the first thi
|
|
157 |
6. Site backup customization
|
158 |
|
159 |
== Changelog ==
|
|
|
|
|
|
|
160 |
= 1.2.8 =
|
161 |
* Bug fixed related to restore.
|
162 |
* Admin side design improvements
|
6 |
Tags: backup, wordpress backup plugin, backup plugin, database backup, migrate, back up
|
7 |
Requires at least: 3.8
|
8 |
Tested up to: 5.4
|
9 |
+
Stable tag: 1.2.9
|
10 |
License: GPLv2 or later
|
11 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
12 |
|
157 |
6. Site backup customization
|
158 |
|
159 |
== Changelog ==
|
160 |
+
= 1.2.9 =
|
161 |
+
* The bug related to inprogress backup and restore was fixed.
|
162 |
+
|
163 |
= 1.2.8 =
|
164 |
* Bug fixed related to restore.
|
165 |
* Admin side design improvements
|
backup.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Plugin Name: Backup
|
5 |
* Plugin URI: https://backup-guard.com/products/backup-wordpress
|
6 |
* Description: Backup Guard is the most complete site backup and restore plugin. We offer the easiest way to backup, restore or migrate your site. You can backup your files, database or both.
|
7 |
-
* Version: 1.2.
|
8 |
* Author: BackupGuard
|
9 |
* Author URI: https://backup-guard.com/products/backup-wordpress
|
10 |
* License: GPL-2.0+
|
@@ -16,7 +16,7 @@ if (function_exists('activate_backup_guard')) {
|
|
16 |
}
|
17 |
|
18 |
if (!defined('SG_BACKUP_GUARD_VERSION')) {
|
19 |
-
define('SG_BACKUP_GUARD_VERSION', '1.2.
|
20 |
}
|
21 |
|
22 |
if (!defined('SG_BACKUP_GUARD_MAIN_FILE')) {
|
4 |
* Plugin Name: Backup
|
5 |
* Plugin URI: https://backup-guard.com/products/backup-wordpress
|
6 |
* Description: Backup Guard is the most complete site backup and restore plugin. We offer the easiest way to backup, restore or migrate your site. You can backup your files, database or both.
|
7 |
+
* Version: 1.2.9
|
8 |
* Author: BackupGuard
|
9 |
* Author URI: https://backup-guard.com/products/backup-wordpress
|
10 |
* License: GPL-2.0+
|
16 |
}
|
17 |
|
18 |
if (!defined('SG_BACKUP_GUARD_VERSION')) {
|
19 |
+
define('SG_BACKUP_GUARD_VERSION', '1.2.9');
|
20 |
}
|
21 |
|
22 |
if (!defined('SG_BACKUP_GUARD_MAIN_FILE')) {
|
com/core/backup/SGBackup.php
CHANGED
@@ -1120,6 +1120,32 @@ class SGBackup implements SGIBackupDelegate
|
|
1120 |
}
|
1121 |
return (int)$res[0]['status'];
|
1122 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1123 |
|
1124 |
public static function getRunningActions()
|
1125 |
{
|
1120 |
}
|
1121 |
return (int)$res[0]['status'];
|
1122 |
}
|
1123 |
+
|
1124 |
+
public static function deleteActionById($actionId)
|
1125 |
+
{
|
1126 |
+
$sgdb = SGDatabase::getInstance();
|
1127 |
+
$res = $sgdb->query('DELETE FROM '.SG_ACTION_TABLE_NAME.' WHERE id=%d', array($actionId));
|
1128 |
+
|
1129 |
+
return $res;
|
1130 |
+
}
|
1131 |
+
|
1132 |
+
public static function cleanRunningActions($runningActions)
|
1133 |
+
{
|
1134 |
+
if (empty($runningActions)) {
|
1135 |
+
return false;
|
1136 |
+
}
|
1137 |
+
foreach ($runningActions as $action) {
|
1138 |
+
if (empty($action)) {
|
1139 |
+
continue;
|
1140 |
+
}
|
1141 |
+
if ($action['status'] == SG_ACTION_STATUS_IN_PROGRESS_FILES) {
|
1142 |
+
$id = $action['id'];
|
1143 |
+
SGBackup::deleteActionById($id);
|
1144 |
+
}
|
1145 |
+
}
|
1146 |
+
|
1147 |
+
return true;
|
1148 |
+
}
|
1149 |
|
1150 |
public static function getRunningActions()
|
1151 |
{
|
com/lib/SGArchiveToZip.php
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SGArchiveToZip
|
4 |
+
{
|
5 |
+
public function __construct()
|
6 |
+
{
|
7 |
+
$this->backupFiles = new SGBackupFiles();
|
8 |
+
}
|
9 |
+
|
10 |
+
private $filePath;
|
11 |
+
private $fileName;
|
12 |
+
|
13 |
+
public function setFilePath($filePath)
|
14 |
+
{
|
15 |
+
$this->filePath = $filePath;
|
16 |
+
}
|
17 |
+
|
18 |
+
public function getFilePath()
|
19 |
+
{
|
20 |
+
return $this->filePath;
|
21 |
+
}
|
22 |
+
|
23 |
+
public function setFileName($fileName)
|
24 |
+
{
|
25 |
+
$this->fileName = $fileName;
|
26 |
+
}
|
27 |
+
|
28 |
+
public function getFileName()
|
29 |
+
{
|
30 |
+
return $this->fileName;
|
31 |
+
}
|
32 |
+
|
33 |
+
public function convert()
|
34 |
+
{
|
35 |
+
$this->extract();
|
36 |
+
}
|
37 |
+
|
38 |
+
private function extract()
|
39 |
+
{
|
40 |
+
$backupName = $this->getFileName();
|
41 |
+
$backupName = backupGuardRemoveSlashes($backupName);
|
42 |
+
$backupPath = SG_BACKUP_DIRECTORY.$backupName;
|
43 |
+
$filePath = $backupPath.'/'.$backupName.'.sgbp';
|
44 |
+
|
45 |
+
$files = new SGBackup();
|
46 |
+
$files->extractForZip($filePath, $backupPath, $backupName);
|
47 |
+
//$files->extractBackupByPath($backupPath.'/'.$backupName.'.sgbp', $backupName);
|
48 |
+
}
|
49 |
+
}
|
com/lib/test.txt
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Array
|
2 |
+
(
|
3 |
+
[siteUrl] => http://localhost:8888/wordpress
|
4 |
+
[home] => http://localhost:8888/wordpress
|
5 |
+
[dbPrefix] => wp_
|
6 |
+
[tables] => ["wp_options","wp_commentmeta","wp_comments","wp_custom","wp_links","wp_postmeta","wp_posts","wp_term_relationships","wp_term_taxonomy","wp_termmeta","wp_terms","wp_usermeta","wp_users","wp_wfblockediplog"]
|
7 |
+
[method] => 2
|
8 |
+
[multisitePath] =>
|
9 |
+
[multisiteDomain] =>
|
10 |
+
[selectivRestoreable] => 1
|
11 |
+
[phpVersion] => 7.0.31
|
12 |
+
[version] => 5
|
13 |
+
)
|
14 |
+
Array
|
15 |
+
(
|
16 |
+
[siteUrl] => http://localhost:8888/wordpress
|
17 |
+
[home] => http://localhost:8888/wordpress
|
18 |
+
[dbPrefix] => wp_
|
19 |
+
[tables] => ["wp_options","wp_commentmeta","wp_comments","wp_custom","wp_links","wp_postmeta","wp_posts","wp_term_relationships","wp_term_taxonomy","wp_termmeta","wp_terms","wp_usermeta","wp_users","wp_wfblockediplog"]
|
20 |
+
[method] => 2
|
21 |
+
[multisitePath] =>
|
22 |
+
[multisiteDomain] =>
|
23 |
+
[selectivRestoreable] => 1
|
24 |
+
[phpVersion] => 7.0.31
|
25 |
+
[version] => 5
|
26 |
+
)
|
public/ajax/checkBackupCreation.php
CHANGED
@@ -1,17 +1,31 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
|
10 |
-
|
11 |
-
|
12 |
-
die('1');
|
13 |
-
}
|
14 |
-
}
|
15 |
-
|
16 |
-
die('2');
|
17 |
-
}
|
1 |
<?php
|
2 |
+
require_once(dirname(__FILE__).'/../boot.php');
|
3 |
+
require_once(SG_BACKUP_PATH.'SGBackup.php');
|
4 |
+
if(backupGuardIsAjax()) {
|
5 |
+
$runningActions = array();
|
6 |
+
|
7 |
+
$timeout = 10; //in sec
|
8 |
+
while ($timeout != 0) {
|
9 |
+
sleep(1);
|
10 |
+
$timeout--;
|
11 |
+
|
12 |
+
$created = SGConfig::get('SG_RUNNING_ACTION', true);
|
13 |
+
if ($created) {
|
14 |
+
die((1));
|
15 |
+
}
|
16 |
+
$runningActions = SGBackup::getRunningActions();
|
17 |
+
|
18 |
+
if (empty($runningActions)) {
|
19 |
+
break;
|
20 |
+
}
|
21 |
+
}
|
22 |
+
|
23 |
+
if (!empty($runningActions)) {
|
24 |
+
SGBackup::cleanRunningActions($runningActions);
|
25 |
+
die(json_encode(array(
|
26 |
+
'status' => 'cleaned'
|
27 |
+
)));
|
28 |
+
}
|
29 |
|
30 |
+
die('2');
|
31 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
public/ajax/checkRestoreCreation.php
CHANGED
@@ -2,6 +2,7 @@
|
|
2 |
|
3 |
require_once(dirname(__FILE__).'/../boot.php');
|
4 |
require_once(SG_BACKUP_PATH.'SGBackup.php');
|
|
|
5 |
|
6 |
if (backupGuardIsAjax()) {
|
7 |
$timeout = 10; //in sec
|
@@ -12,7 +13,8 @@ if (backupGuardIsAjax()) {
|
|
12 |
|
13 |
if ($created) {
|
14 |
$runningActions = SGBackup::getRunningActions();
|
15 |
-
|
|
|
16 |
$actionId = $runningActions[0]['id'];
|
17 |
die(json_encode(array(
|
18 |
'status' => 0,
|
@@ -21,6 +23,18 @@ if (backupGuardIsAjax()) {
|
|
21 |
)));
|
22 |
}
|
23 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
}
|
25 |
|
26 |
die('{"status":1}');
|
2 |
|
3 |
require_once(dirname(__FILE__).'/../boot.php');
|
4 |
require_once(SG_BACKUP_PATH.'SGBackup.php');
|
5 |
+
$runningActions = array();
|
6 |
|
7 |
if (backupGuardIsAjax()) {
|
8 |
$timeout = 10; //in sec
|
13 |
|
14 |
if ($created) {
|
15 |
$runningActions = SGBackup::getRunningActions();
|
16 |
+
// when there are multiple uncompleted actions
|
17 |
+
if ($runningActions && count($runningActions) == 1 && $runningActions[0]['progress'] == 0) {
|
18 |
$actionId = $runningActions[0]['id'];
|
19 |
die(json_encode(array(
|
20 |
'status' => 0,
|
23 |
)));
|
24 |
}
|
25 |
}
|
26 |
+
|
27 |
+
$runningActions = SGBackup::getRunningActions();
|
28 |
+
|
29 |
+
if (empty($runningActions)) {
|
30 |
+
break;
|
31 |
+
}
|
32 |
+
}
|
33 |
+
if (!empty($runningActions)) {
|
34 |
+
SGBackup::cleanRunningActions($runningActions);
|
35 |
+
die(json_encode(array(
|
36 |
+
'status' => 'cleaned'
|
37 |
+
)));
|
38 |
}
|
39 |
|
40 |
die('{"status":1}');
|
public/js/sgbackup.js
CHANGED
@@ -509,21 +509,32 @@ sgBackup.fileUploadProgress = function(e){
|
|
509 |
}
|
510 |
|
511 |
sgBackup.checkBackupCreation = function(){
|
|
|
512 |
var sgBackupCreationHandler = new sgRequestHandler('checkBackupCreation', {token: BG_BACKUP_STRINGS.nonce});
|
513 |
sgBackupCreationHandler.dataType = 'html';
|
514 |
-
sgBackupCreationHandler.callback = function(response){
|
515 |
-
jQuery
|
516 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
517 |
};
|
518 |
sgBackupCreationHandler.run();
|
519 |
};
|
520 |
|
521 |
sgBackup.checkRestoreCreation = function(){
|
|
|
522 |
var sgRestoreCreationHandler = new sgRequestHandler('checkRestoreCreation', {token: BG_BACKUP_STRINGS.nonce});
|
523 |
sgRestoreCreationHandler.callback = function(response){
|
524 |
if (response.status==0 && response.external_enabled==1) {
|
525 |
location.href = response.external_url;
|
526 |
}
|
|
|
|
|
|
|
527 |
else {
|
528 |
location.reload();
|
529 |
}
|
509 |
}
|
510 |
|
511 |
sgBackup.checkBackupCreation = function(){
|
512 |
+
jQuery('#manualBackup .btn-success').attr('disabled', true);
|
513 |
var sgBackupCreationHandler = new sgRequestHandler('checkBackupCreation', {token: BG_BACKUP_STRINGS.nonce});
|
514 |
sgBackupCreationHandler.dataType = 'html';
|
515 |
+
sgBackupCreationHandler.callback = function(response) {
|
516 |
+
var result = jQuery.parseJSON(response);
|
517 |
+
if (result && result.status == 'cleaned') {
|
518 |
+
sgBackup.manualBackup();
|
519 |
+
}
|
520 |
+
else {
|
521 |
+
jQuery('#sg-modal').modal('hide');
|
522 |
+
location.reload();
|
523 |
+
}
|
524 |
};
|
525 |
sgBackupCreationHandler.run();
|
526 |
};
|
527 |
|
528 |
sgBackup.checkRestoreCreation = function(){
|
529 |
+
jQuery('#manualBackup .btn-success').attr('disabled', true);
|
530 |
var sgRestoreCreationHandler = new sgRequestHandler('checkRestoreCreation', {token: BG_BACKUP_STRINGS.nonce});
|
531 |
sgRestoreCreationHandler.callback = function(response){
|
532 |
if (response.status==0 && response.external_enabled==1) {
|
533 |
location.href = response.external_url;
|
534 |
}
|
535 |
+
else if (response.status == 'cleaned') {
|
536 |
+
jQuery('#manualBackup .btn-success').click();
|
537 |
+
}
|
538 |
else {
|
539 |
location.reload();
|
540 |
}
|