WordPress Backup & Security Plugin – BlogVault - Version 4.74

Version Description

  • Enhanced handling of plugin services
  • Removed deprecated hook
Download this release

Release Info

Developer ritesh.soni36
Plugin Icon 128x128 WordPress Backup & Security Plugin – BlogVault
Version 4.74
Comparing to
See all releases

Code changes from version 4.73 to 4.74

blogvault.php CHANGED
@@ -5,7 +5,7 @@ Plugin URI: https://blogvault.net
5
  Description: Easiest way to backup & secure your WordPress site
6
  Author: Backup by BlogVault
7
  Author URI: https://blogvault.net
8
- Version: 4.73
9
  Network: True
10
  */
11
 
5
  Description: Easiest way to backup & secure your WordPress site
6
  Author: Backup by BlogVault
7
  Author URI: https://blogvault.net
8
+ Version: 4.74
9
  Network: True
10
  */
11
 
callback/base.php CHANGED
@@ -10,11 +10,11 @@ class BVCallbackBase {
10
  "DYNSYNC_WING_VERSION" => '1.0',
11
  "UPGRADER_WING_VERSION" => '1.0',
12
  "BRAND_WING_VERSION" => '1.0',
13
- "DB_WING_VERSION" => '1.0',
14
  "ACCOUNT_WING_VERSION" => '1.1',
15
- "MISC_WING_VERSION" => '1.1',
16
- "FS_WING_VERSION" => '1.0',
17
- "INFO_WING_VERSION" => '1.3',
18
  "WATCH_WING_VERSION" => '1.0',
19
  "FS_WRITE_WING_VERSION" => '1.0',
20
  "IPSTORE_WING_VERSION" => '1.0',
10
  "DYNSYNC_WING_VERSION" => '1.0',
11
  "UPGRADER_WING_VERSION" => '1.0',
12
  "BRAND_WING_VERSION" => '1.0',
13
+ "DB_WING_VERSION" => '1.1',
14
  "ACCOUNT_WING_VERSION" => '1.1',
15
+ "MISC_WING_VERSION" => '1.2',
16
+ "FS_WING_VERSION" => '1.1',
17
+ "INFO_WING_VERSION" => '1.4',
18
  "WATCH_WING_VERSION" => '1.0',
19
  "FS_WRITE_WING_VERSION" => '1.0',
20
  "IPSTORE_WING_VERSION" => '1.0',
callback/wings/db.php CHANGED
@@ -11,7 +11,7 @@ class BVDBCallback extends BVCallbackBase {
11
 
12
  public static $bvTables = array("fw_requests", "lp_requests", "ip_store");
13
 
14
- const DB_WING_VERSION = 1.0;
15
 
16
  public function __construct($callback_handler) {
17
  $this->db = $callback_handler->db;
@@ -284,6 +284,22 @@ class BVDBCallback extends BVCallbackBase {
284
  break;
285
  case "altrtbl":
286
  $resp = array("altrtbl" => $db->alterBVTable($params['query'], $params['query']));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
287
  break;
288
  default:
289
  $resp = false;
11
 
12
  public static $bvTables = array("fw_requests", "lp_requests", "ip_store");
13
 
14
+ const DB_WING_VERSION = 1.1;
15
 
16
  public function __construct($callback_handler) {
17
  $this->db = $callback_handler->db;
284
  break;
285
  case "altrtbl":
286
  $resp = array("altrtbl" => $db->alterBVTable($params['query'], $params['query']));
287
+ break;
288
+ case "tbls":
289
+ $resp = array();
290
+
291
+ if (array_key_exists('truncate', $params))
292
+ $resp['truncate'] = $db->truncateTables($params['truncate']);
293
+
294
+ if (array_key_exists('drop', $params))
295
+ $resp['drop'] = $db->dropTables($params['drop']);
296
+
297
+ if (array_key_exists('create', $params))
298
+ $resp['create'] = $db->createTables($params['create']);
299
+
300
+ if (array_key_exists('alter', $params))
301
+ $resp['alter'] = $db->alterTables($params['alter']);
302
+
303
  break;
304
  default:
305
  $resp = false;
callback/wings/fs.php CHANGED
@@ -9,7 +9,7 @@ class BVFSCallback extends BVCallbackBase {
9
  public $account;
10
 
11
  public static $cwAllowedFiles = array(".htaccess", ".user.ini", "malcare-waf.php");
12
- const FS_WING_VERSION = 1.0;
13
 
14
  public function __construct($callback_handler) {
15
  $this->account = $callback_handler->account;
@@ -200,7 +200,7 @@ class BVFSCallback extends BVCallbackBase {
200
  if ($md5 === true && !is_dir($absfile)) {
201
  $fdata["md5"] = $this->calculateMd5($absfile, $fdata, $offset, $limit, $bsize);
202
  }
203
- $result["stats"][] = $fdata;
204
  }
205
  return $result;
206
  }
@@ -288,15 +288,11 @@ class BVFSCallback extends BVCallbackBase {
288
  $resp = array("status" => "done", "links" => $links);
289
  break;
290
  case "getfilesstats":
291
- $files = $params['files'];
292
- $offset = intval(urldecode($params['offset']));
293
- $limit = intval(urldecode($params['limit']));
294
- $bsize = intval(urldecode($params['bsize']));
295
- $md5 = false;
296
- if (array_key_exists('md5', $params)) {
297
- $md5 = true;
298
- }
299
- $resp = $this->getFilesStats($files, $offset, $limit, $bsize, $md5);
300
  break;
301
  case "sendmanyfiles":
302
  $files = $params['files'];
@@ -335,7 +331,7 @@ class BVFSCallback extends BVCallbackBase {
335
  foreach($regexes as $regex) {
336
  $directoryList = array_merge($directoryList, glob($options['dir'].$regex, $glob_option));
337
  }
338
- $resp[$options['dir']] = $this->getFilesStats($directoryList, 0, 0, 0, $md5);
339
  }
340
  break;
341
  case "dirsexists":
@@ -357,6 +353,30 @@ class BVFSCallback extends BVCallbackBase {
357
  $files = $params['files'];
358
  $withContent = array_key_exists('withcontent', $params) ? $params['withcontent'] : true;
359
  $resp = array("files_content" => $this->getFilesContent($files, $withContent));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
360
  break;
361
  default:
362
  $resp = false;
9
  public $account;
10
 
11
  public static $cwAllowedFiles = array(".htaccess", ".user.ini", "malcare-waf.php");
12
+ const FS_WING_VERSION = 1.1;
13
 
14
  public function __construct($callback_handler) {
15
  $this->account = $callback_handler->account;
200
  if ($md5 === true && !is_dir($absfile)) {
201
  $fdata["md5"] = $this->calculateMd5($absfile, $fdata, $offset, $limit, $bsize);
202
  }
203
+ $result[] = $fdata;
204
  }
205
  return $result;
206
  }
288
  $resp = array("status" => "done", "links" => $links);
289
  break;
290
  case "getfilesstats":
291
+ $md5 = array_key_exists('md5', $params) ? $params['md5'] : false;
292
+ $stats = $this->getFilesStats(
293
+ $params['files'], $params['offset'], $params['limit'], $params['bsize'], $md5
294
+ );
295
+ $resp = array('stats' => $stats);
 
 
 
 
296
  break;
297
  case "sendmanyfiles":
298
  $files = $params['files'];
331
  foreach($regexes as $regex) {
332
  $directoryList = array_merge($directoryList, glob($options['dir'].$regex, $glob_option));
333
  }
334
+ $resp[$options['dir']] = array('stats' => $this->getFilesStats($directoryList, 0, 0, 0, $md5));
335
  }
336
  break;
337
  case "dirsexists":
353
  $files = $params['files'];
354
  $withContent = array_key_exists('withcontent', $params) ? $params['withcontent'] : true;
355
  $resp = array("files_content" => $this->getFilesContent($files, $withContent));
356
+ break;
357
+ case "gtfls":
358
+ $resp = array();
359
+
360
+ if (array_key_exists('get_files_content', $params)) {
361
+ $args = $params['get_files_content'];
362
+ $with_content = array_key_exists('withcontent', $args) ? $args['withcontent'] : true;
363
+ $resp['get_files_content'] = $this->getFilesContent($args['files'], $with_content);
364
+ }
365
+
366
+ if (array_key_exists('get_files_stats', $params)) {
367
+ $args = $params['get_files_stats'];
368
+ $md5 = array_key_exists('md5', $args) ? $args['md5'] : false;
369
+ $stats = $this->getFilesStats(
370
+ $args['files'], $args['offset'], $args['limit'], $args['bsize'], $md5
371
+ );
372
+
373
+ $result = array();
374
+ foreach ($stats as $stat) {
375
+ $result[$stat['filename']] = $stat;
376
+ }
377
+ $resp['get_files_stats'] = $result;
378
+ }
379
+
380
  break;
381
  default:
382
  $resp = false;
callback/wings/info.php CHANGED
@@ -10,7 +10,7 @@ class BVInfoCallback extends BVCallbackBase {
10
  public $bvinfo;
11
  public $bvapi;
12
 
13
- const INFO_WING_VERSION = 1.3;
14
 
15
  public function __construct($callback_handler) {
16
  $this->db = $callback_handler->db;
@@ -260,6 +260,18 @@ class BVInfoCallback extends BVCallbackBase {
260
  return $host_info;
261
  }
262
 
 
 
 
 
 
 
 
 
 
 
 
 
263
  function refreshUpdatesInfo() {
264
  global $wp_current_filter;
265
  $wp_current_filter[] = 'load-update-core.php';
@@ -399,6 +411,21 @@ class BVInfoCallback extends BVCallbackBase {
399
  return $result;
400
  }
401
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
402
  public function process($request) {
403
  $db = $this->db;
404
  $params = $request->params;
@@ -468,6 +495,9 @@ class BVInfoCallback extends BVCallbackBase {
468
  case "gtsteinfo":
469
  $resp = $this->getSiteInfo($params);
470
  break;
 
 
 
471
  default:
472
  $resp = false;
473
  }
10
  public $bvinfo;
11
  public $bvapi;
12
 
13
+ const INFO_WING_VERSION = 1.4;
14
 
15
  public function __construct($callback_handler) {
16
  $this->db = $callback_handler->db;
260
  return $host_info;
261
  }
262
 
263
+ public function serverConfig() {
264
+ return array(
265
+ 'software' => $_SERVER['SERVER_SOFTWARE'],
266
+ 'sapi' => (function_exists('php_sapi_name')) ? php_sapi_name() : false,
267
+ 'has_apache_get_modules' => function_exists('apache_get_modules'),
268
+ 'posix_getuid' => (function_exists('posix_getuid')) ? posix_getuid() : null,
269
+ 'uid' => (function_exists('getmyuid')) ? getmyuid() : null,
270
+ 'user_ini' => ini_get('user_ini.filename'),
271
+ 'php_major_version' => PHP_MAJOR_VERSION
272
+ );
273
+ }
274
+
275
  function refreshUpdatesInfo() {
276
  global $wp_current_filter;
277
  $wp_current_filter[] = 'load-update-core.php';
411
  return $result;
412
  }
413
 
414
+ function getPluginServicesInfo($args) {
415
+ $result = array();
416
+
417
+ if (array_key_exists('get_options', $args))
418
+ $result['get_options'] = $this->settings->getOptions($args['get_options']);
419
+
420
+ if (array_key_exists('pingbv', $args))
421
+ $result['pingbv'] = array('status' => $this->pingBV());
422
+
423
+ if (array_key_exists('server_config', $args))
424
+ $result['server_config'] = $this->serverConfig();
425
+
426
+ return $result;
427
+ }
428
+
429
  public function process($request) {
430
  $db = $this->db;
431
  $params = $request->params;
495
  case "gtsteinfo":
496
  $resp = $this->getSiteInfo($params);
497
  break;
498
+ case "psinfo":
499
+ $resp = $this->getPluginServicesInfo($params);
500
+ break;
501
  default:
502
  $resp = false;
503
  }
callback/wings/misc.php CHANGED
@@ -11,7 +11,7 @@ class BVMiscCallback extends BVCallbackBase {
11
  public $bvapi;
12
  public $db;
13
 
14
- const MISC_WING_VERSION = 1.1;
15
 
16
  public function __construct($callback_handler) {
17
  $this->settings = $callback_handler->settings;
@@ -154,6 +154,19 @@ class BVMiscCallback extends BVCallbackBase {
154
  break;
155
  case "dlttrsnt":
156
  $resp = array("dlttrsnt" => $settings->deleteTransient($params['key']));
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  break;
158
  case "setbvss":
159
  $resp = array("status" => $settings->updateOption('bv_site_settings', $params['bv_site_settings']));
11
  public $bvapi;
12
  public $db;
13
 
14
+ const MISC_WING_VERSION = 1.2;
15
 
16
  public function __construct($callback_handler) {
17
  $this->settings = $callback_handler->settings;
154
  break;
155
  case "dlttrsnt":
156
  $resp = array("dlttrsnt" => $settings->deleteTransient($params['key']));
157
+ break;
158
+ case "optns":
159
+ $resp = array();
160
+
161
+ if (array_key_exists("get_options", $params))
162
+ $resp["get_options"] = $settings->getOptions($params["get_options"]);
163
+
164
+ if (array_key_exists("update_options", $params))
165
+ $resp["update_options"] = $settings->updateOptions($params["update_options"]);
166
+
167
+ if (array_key_exists("delete_options", $params))
168
+ $resp["delete_options"] = $settings->deleteOptions($params["delete_options"]);
169
+
170
  break;
171
  case "setbvss":
172
  $resp = array("status" => $settings->updateOption('bv_site_settings', $params['bv_site_settings']));
info.php CHANGED
@@ -10,7 +10,7 @@ if (!class_exists('BVInfo')) :
10
  public $badgeinfo = 'bvbadge';
11
  public $ip_header_option = 'bvipheader';
12
  public $brand_option = 'bvbrand';
13
- public $version = '4.73';
14
  public $webpage = 'https://blogvault.net';
15
  public $appurl = 'https://app.blogvault.net';
16
  public $slug = 'blogvault-real-time-backup/blogvault.php';
10
  public $badgeinfo = 'bvbadge';
11
  public $ip_header_option = 'bvipheader';
12
  public $brand_option = 'bvbrand';
13
+ public $version = '4.74';
14
  public $webpage = 'https://blogvault.net';
15
  public $appurl = 'https://app.blogvault.net';
16
  public $slug = 'blogvault-real-time-backup/blogvault.php';
readme.txt CHANGED
@@ -1,66 +1,71 @@
1
- === Backup & Staging - BlogVault Backups ===
2
  Contributors: BlogVault Backup
3
- Tags: backup, wordpress backup, backup plugin, cloud backup, database backup, back up, staging, restore, s3 backup, dropbox backup, google drive backup
4
  Plugin URI: https://blogvault.net/
5
  Donate link: https://app.blogvault.net/home/signup
6
  Requires at least: 4.0
7
  Tested up to: 5.9
8
  Requires PHP: 5.4.0
9
- Stable tag: 4.73
10
  License: GPLv2 or later
11
  License URI: [http://www.gnu.org/licenses/gpl-2.0.html](http://www.gnu.org/licenses/gpl-2.0.html)
12
 
13
- Backup , Restore, Migrate, and Stage your website with our incremental backup technology. Backup easily to S3 and Dropbox. Complete website backups.
14
 
15
  == DESCRIPTION ==
16
- The Most Reliable Incremental Backup Plugin with Free Cloud Storage. Best Part, Comes with a FREE Staging Environment.
 
 
 
 
17
 
18
  Check out more BlogVault customer testimonials from **[here](http://bit.ly/2RGXKN2)**
19
 
20
- With a 100% Successful Website Restore Rate, BlogVault is the world's Fastest and most Reliable WordPress Backup solution trusted by over 4,50,000+ websites.
21
 
22
  **Companies you Trust, Trust BlogVault.**
23
 
24
- We officially power migration for some of the largest web hosts from WPEngine, Pantheon, FlyWheel, LiquidWeb, Cloudways, Savvii and many more.
25
 
26
- It is the perfect solution for developer and agencies as it comes with all the tools you need to maintain and manage multiple websites. **From One-Click Staging to Flawless Migrations to Complete Website Management and a White Label Solution**. It even provides out of the box **Client Reporting**.
27
 
28
  Learn more about BlogVault from **[here](http://bit.ly/2RLJh2e)**
29
 
30
  == BlogVault in Numbers ==
31
  * 1+ million Successful Website Restorations
32
- * 450,000+ Sites backed up and counting
33
- * 330GB Largest site Backed Up
34
  * 10,000+ Web hosts Compatibility
35
  * Five Star Support
36
 
37
  [youtube https://www.youtube.com/watch?v=Y4teDRL08mY]
38
 
39
- == Benefits of Using BlogVault as Your Go-to Backup Solution ==
40
 
41
  = 1. Incremental Backups Guaranteed to Always Work =
42
- * Incremental backups that never overloads your server
43
  * Free offsite storage ensures 24X7 availability
44
  * 90 days archive to recover from any mistake
45
  * First plugin with Multi-site backup support
 
46
 
47
  = 2. Fastest Website Recovery Within Minutes =
48
- * 1 million+ website restores with 100% success rate
49
  * Differential Restore for lightning-fast recovery
50
  * 90 days archive to recover from any mistake
51
- * Perform full Restore even if your website is offline
52
 
53
  = 3. Deploy a Staging Site in One-click for Free =
54
- * Safely test your website updates and changes
55
  * Staging site runs on our cloud servers
56
  * Completely free of cost
57
- * One-click Merge to push changes to live site
58
 
59
  = 4. Frustration-Free Website Migrations in 1-Click =
60
  * Compatible & approved with 5,000+ web hosts
61
- * Zero downtime guaranteed
62
  * Intelligent automatic rewrite of all website URLs
63
- * Migrate to a new domain, host, DNS or server
64
 
65
  = 5. Real-time Backups for WooCommerce Stores =
66
  * Backup all orders as and when they take place
@@ -73,46 +78,46 @@ Learn more about BlogVault from **[here](http://bit.ly/2RLJh2e)**
73
  * Exclusive White-label solution to grow revenues
74
  * Beautiful and comprehensive Client Reporting
75
 
76
- = 7. Last, BlogVault is a "Service," Not just a Backup Plugin =
77
- * Always improving & adding features unlike plugins
78
  * Our Support always has your back
79
- * Full peace of mind with encrypted offsite storage
80
- * Access backups 24X7 with independent dashboard
81
 
82
- == Why Choose BlogVault Backup Services? ==
83
 
84
  * **Set up & Running in Just 60 Secs -** Get started in no time. Log in. Auto-Install. And that’s it!
85
- * **Comes with Built-in Free Staging -** Develop your site the way you’ve always wanted to. Update without breaking live site.
86
- * **Doesn’t Slow Down Website, Ever -** All processing take place on our own server. Your site does not slow down at all.
87
- * **No Technical Knowledge Needed -** Automated workflows that ensure everything you need is only a click away.
88
  * **Personal Support for Everyone -** Agile & Responsive Customer Support that caters to Everyone.
89
 
90
- **Have You Tried BlogVault Pro Yet?**
91
 
92
- BlogVault offers an unrestricted 7 days free trial. **Explore all features of full BlogVault for FREE**.
93
 
94
- **[Try out BlogVault](http://bit.ly/2RKzrgY)** without any commitment. No credit card needed.
95
 
96
  == FREQUENTLY ASKED QUESTIONS ==
97
 
98
- =Can I Setup my BlogVault backup account myself?=
99
  This plugin works in tandem with the [BlogVault](https://blogvault.net) servers. BlogVault servers do all the heavy processing and will alert you if your site has any issues.
100
 
101
  This requires an account with BlogVault to be created to use the plugin.
102
 
103
  Yes. Take the help of this **[step-by-step guide](http://bit.ly/2RJg9sv)**.
104
 
105
- =I am unable to reach the backup plugin. What can I do?=
106
  You can send an email to the support team on *support@blogvault.net* and notify our team regarding this.
107
 
108
- =Are there any prerequisites for using BlogVault?=
109
  No. All you need is a WordPress site. We don’t use your website resources for backing up so you will not experience any downtime, or page delay while executing BlogVault functions.
110
 
111
  =Do you have a free plan? How does it work?=
112
- BlogVault is a paid backup service. But we understand the user's dilemma before starting a new service, which is why we provide a 7 days free trial period. You can avail free trial without any registration, just enter your email ID, password and site URL. Moreover, we do not discriminate between our trial period users and premium customers.
113
 
114
- =How do I upgrade from my free trial to a premium account?=
115
- To upgrade from free trial version to a premium account, please take the help of **[this guide](http://bit.ly/2RHvPfS)**.
116
 
117
  =How do I upgrade to a bigger Plan?=
118
  To upgrade to a bigger Plan, take the help of **[this guide](http://bit.ly/2RHvPfS)**.
@@ -127,7 +132,7 @@ BlogVault Backup Service backs up everything in your WordPress site incrementall
127
 
128
  This strategy ensures that we do not miss anything on your site.
129
 
130
- =How often does BlogVault backup my website?=
131
  BlogVault backs up your website daily, automatically.
132
 
133
  =How safe are my backup files?=
@@ -137,12 +142,12 @@ Your backups are very safe. We use encrypted cloud backups and off-site BlogVaul
137
  We do not automatically sync your backups to Dropbox. However, we do provide an interface that can help enable you to move your backup to Dropbox. You can also download your Backups to your computer and then upload them on Google Drive.
138
 
139
  =Can BlogVault be used for WooCommerce store websites?=
140
- Yes, BlogVault integrates well with WooCommerce websites with the special inbuilt Real Time backups functionality. Please see **[WooCommerce backups page](http://bit.ly/2RKNfrR)**.
141
 
142
  =What does BlogVault backup from a WooCommerce site?=
143
  BlogVault backups files and tables, database metadata like database name, location, all content, settings, and configuration.
144
 
145
- =Can I restore WooCommerce backup using BlogVault?=
146
  Yes. Restoring a backup using BlogVault is easy. Take a look at **[how to restore a site](http://bit.ly/2RL9gXN)**.
147
 
148
  =Can I use BlogVault to handle Backup Restoration?=
@@ -158,15 +163,15 @@ Yes. You can do this by making use of our integrated Migration feature where you
158
  Your staging site will be on BlogVault servers.
159
 
160
  =How long is my staging valid?=
161
- With BlogVault backup service, you can extend your staging site validity up to 56 days.
162
 
163
  =What do I do after Staging a site?=
164
  After you are satisfied with your staging site, BlogVault Backup Service allows you can push the changes you like, onto your actual live site, directly.
165
 
166
  =Will I receive emails from the staging environment?=
167
- No, we do not have a mailing system at the Staging server. Many sites have automated emails setup on their sites. On staging environments, they do not want these to be triggered. Staging environment does not have protection for spam emails. Blocking all emails ensures that the staging server IP is not blacklisted.
168
 
169
- =Can I merge WooCommerce website staging site to live site?=
170
  If you move them from the staging site to the live site, all your new orders will be lost on the live site. But we have provided you with the option with the selective merge. Select only the tables you want to merge and let BlogVault take care of the rest for you. Please don’t forget to backup your website before you start merging.
171
 
172
  =Does BlogVault backup work with all web hosts?=
@@ -180,19 +185,19 @@ No, BlogVault Backup Service will cause no downtime to the destination server wh
180
  =Will BlogVault start backing up the new site after migration?=
181
  Unless otherwise specified, BlogVault will backup a site following DNS resolution. If you migrated the site to a different URL, make sure the new URL is added as a site with BlogVault to enable backup. If the migration were to the same URL at a different host, BlogVault would automatically start doing a backup from the new location as soon as the DNS is updated.
182
 
183
- =Can I update WordPress core, plugins and themes directly?=
184
  Yes. Take a look at this **[Manage Site help doc](http://bit.ly/2ROA9du)**. Before updating on the live site, we’d suggest you update on a staging site. BlogVault Backup Service comes with a free staging website.
185
 
186
  =Can I manage my site users and their password directly?=
187
- Yes. With BlogVault backup service, you can manage your site users and passwords. Take the help of this **[Manage Site help doc](http://bit.ly/2ROA9du)**.
188
 
189
- =Can I add Clients and Team Members on my BlogVault Backup account?=
190
  Yes, you can.
191
 
192
- Our client feature is for your reference alone. You can assign a client to their site. If you want to give a user, the dashboard access, please add them as your team members under the team section. Please see **[How do I add clients and team members](http://bit.ly/2RK7p5t)**?
193
 
194
  =Isn’t WordPress or Web Host backing up my website for me?=
195
- WordPress by default does not back up your site for you. As for web hosts, if your site is not on wordpress.com, then you have a reason to worry. Servers, while generally robust, do fail from time to time for various reasons. Moreover, web hosting providers usually do not provide complete backups. When such backups are restored, sites crash and data is lost. Several such horror stories inspired us to build this service!
196
 
197
  =Do I really need BlogVault?=
198
  BlogVault provides comprehensive and complete backup services. Apart from handling website security, it can also assist you with instant Migration as well as Staging and Merging services at very reasonable rates.
@@ -214,14 +219,14 @@ Your Website Reports will contain details on the following:
214
  * Active Plugins
215
  * Installed Themes
216
 
217
- =Is BlogVault compatible with all other plugins and themes?=
218
- BlogVault is compatible with all plugins and themes. It works even if you have a different backup plugin installed. If you want to uninstall a plugin and install BlogVault plugin, kindly take a look at our guide on **[How to install BlogVault](http://bit.ly/2RKgPxP)**.
219
 
220
  =Error: "FTP permission issues, FTP is correct but we might not have permissions to upload or remove a file."=
221
  This could happen when you’re on shared hosting. Contact your host and ask them to grant you access to upload files via FTP.
222
 
223
  =Error: "Execution expired, Connection timed out, Connection reset by a peer in both FTP and HTTP requests."=
224
- Nothing to worry, this notification means your destination server denied our requests to offload your site’s data. This could be because of a few reasons:
225
  * Your destination site isn’t reachable (you’ll have to contact your destination web host about this)
226
  * You have a firewall installed, which is blocking consecutive requests from the same source (in which case, please wait for some time and try again)
227
 
@@ -236,17 +241,21 @@ These are available on our website: [Terms of Service](https://blogvault.net/tos
236
 
237
  == SCREENSHOTS ==
238
 
239
- 1. BlogVault provides you a comprehensive History page that lets you manage all your WordPress backups with ease.
240
- 2. Trusted by over 4,00,000+ websites, BlogVault is the best WordPress backup service for your website.
241
  3. Check the Performance Speed of your website from the BlogVault dashboard.
242
  4. Manage multiple WordPress sites from one dashboard.
243
  5. With Uptime Monitoring you get notified the moment your website is shut down.
244
- 6. With BlogVault's free Staging test updates, plugins, and WordPress themes without breaking your live site.
245
  7. With BlogVault's White-Label Solution you can showcase our service under your own brilliant brand.
246
- 8. For WooCommerce sites, BlogVault’s Real Time Backups can make all the difference.
247
- 9. We power WordPress migration for WPEngine, Pantheon, FlyWheel, LiquidWeb, Cloudways, Savvii and many more. Need we say more?
248
 
249
  == CHANGELOG ==
 
 
 
 
250
  = 4.73 =
251
  * Improvements in identifying plugin updates.
252
 
1
+ === BlogVault WordPress Backup Plugin - Migration, Staging, and Backups ===
2
  Contributors: BlogVault Backup
3
+ Tags: backup, wordpress backup, backup plugin, cloud backup, database backup, back up, staging, restore, s3 backup, dropbox backup, migration
4
  Plugin URI: https://blogvault.net/
5
  Donate link: https://app.blogvault.net/home/signup
6
  Requires at least: 4.0
7
  Tested up to: 5.9
8
  Requires PHP: 5.4.0
9
+ Stable tag: 4.74
10
  License: GPLv2 or later
11
  License URI: [http://www.gnu.org/licenses/gpl-2.0.html](http://www.gnu.org/licenses/gpl-2.0.html)
12
 
13
+ Comprehensive WordPress backup plugin with integrated staging, migration, and 1-click restore. Get daily or real-time secure WordPress backups easily.
14
 
15
  == DESCRIPTION ==
16
+ The Most Reliable Incremental WordPress Backup Plugin with Free Cloud Storage. The best Part, Comes with a FREE Staging Environment.
17
+
18
+ BlogVault regularly backs up everything in your WordPress site – Including WordPress database, WordPress files, themes, images, etc.
19
+
20
+ WordPress database and files backup using BlogVault is much safer and simpler than creating a backup manually.
21
 
22
  Check out more BlogVault customer testimonials from **[here](http://bit.ly/2RGXKN2)**
23
 
24
+ With a 100% Successful Website Restore Rate, BlogVault is the world's fastest and best WordPress Backup Plugin trusted by over 4,50,000+ WordPress websites.
25
 
26
  **Companies you Trust, Trust BlogVault.**
27
 
28
+ We officially power migration for some of the largest web hosts from WPEngine, Pantheon, FlyWheel, LiquidWeb, Cloudways, Savvii, and many more.
29
 
30
+ It is the perfect solution for developers and agencies as it comes with all the tools you need to maintain and manage multiple WordPress websites. **From One-Click Staging to Flawless Migrations to Complete Website Management and a White Label Solution**. It even provides out-of-the-box **Client Reporting**.
31
 
32
  Learn more about BlogVault from **[here](http://bit.ly/2RLJh2e)**
33
 
34
  == BlogVault in Numbers ==
35
  * 1+ million Successful Website Restorations
36
+ * 450,000+ WordPress Sites backed up and counting
37
+ * 330GB Largest WordPress site Backed Up
38
  * 10,000+ Web hosts Compatibility
39
  * Five Star Support
40
 
41
  [youtube https://www.youtube.com/watch?v=Y4teDRL08mY]
42
 
43
+ == Benefits of Using BlogVault backup plugin as Your Go-to Backup Solution ==
44
 
45
  = 1. Incremental Backups Guaranteed to Always Work =
46
+ * Incremental automatic backups that never overload your server
47
  * Free offsite storage ensures 24X7 availability
48
  * 90 days archive to recover from any mistake
49
  * First plugin with Multi-site backup support
50
+ * Custom Schedule your WordPress backups daily, weekly or monthly
51
 
52
  = 2. Fastest Website Recovery Within Minutes =
53
+ * 1 million+ WordPress website restores with 100% success rate
54
  * Differential Restore for lightning-fast recovery
55
  * 90 days archive to recover from any mistake
56
+ * Perform full Restore even if your WordPress website is offline
57
 
58
  = 3. Deploy a Staging Site in One-click for Free =
59
+ * Safely test your WordPress website updates and changes
60
  * Staging site runs on our cloud servers
61
  * Completely free of cost
62
+ * One-click Merge to push changes to live WordPress site
63
 
64
  = 4. Frustration-Free Website Migrations in 1-Click =
65
  * Compatible & approved with 5,000+ web hosts
66
+ * Zero downtime guaranteed with our migration plugin
67
  * Intelligent automatic rewrite of all website URLs
68
+ * Migrate to a new domain, host, DNS, or server
69
 
70
  = 5. Real-time Backups for WooCommerce Stores =
71
  * Backup all orders as and when they take place
78
  * Exclusive White-label solution to grow revenues
79
  * Beautiful and comprehensive Client Reporting
80
 
81
+ = 7. Last, BlogVault is a "Service," Not just a WordPress Backup Plugin =
82
+ * Always improving & adding features unlike other WordPress backup plugins
83
  * Our Support always has your back
84
+ * Full peace of mind with encrypted off-site storage
85
+ * Access complete backups 24X7 with independent dashboard
86
 
87
+ == Why Choose BlogVault WordPress backup plugin? ==
88
 
89
  * **Set up & Running in Just 60 Secs -** Get started in no time. Log in. Auto-Install. And that’s it!
90
+ * **Comes with Built-in Free Staging -** Develop your site the way you’ve always wanted to. Update without breaking the live site.
91
+ * **Doesn’t Slow Down WordPress Website, Ever -** All processing takes place on our own server. Your site does not slow down at all.
92
+ * **No Technical Knowledge Needed -** Automated workflows like automated backups that ensure everything you need is only a click away.
93
  * **Personal Support for Everyone -** Agile & Responsive Customer Support that caters to Everyone.
94
 
95
+ **Have You Tried BlogVault Pro version Yet?**
96
 
97
+ BlogVault WP backup plugin offers an unrestricted 7 days free trial. **Explore all features of full BlogVault for FREE**.
98
 
99
+ **[Try out BlogVault](http://bit.ly/2RKzrgY)** without any commitment. No credit card is needed.
100
 
101
  == FREQUENTLY ASKED QUESTIONS ==
102
 
103
+ =Can I set up my BlogVault backup account myself?=
104
  This plugin works in tandem with the [BlogVault](https://blogvault.net) servers. BlogVault servers do all the heavy processing and will alert you if your site has any issues.
105
 
106
  This requires an account with BlogVault to be created to use the plugin.
107
 
108
  Yes. Take the help of this **[step-by-step guide](http://bit.ly/2RJg9sv)**.
109
 
110
+ =I am unable to reach the WordPress backup plugin. What can I do?=
111
  You can send an email to the support team on *support@blogvault.net* and notify our team regarding this.
112
 
113
+ =Are there any prerequisites for using the BlogVault backup plugin for the WordPress site?=
114
  No. All you need is a WordPress site. We don’t use your website resources for backing up so you will not experience any downtime, or page delay while executing BlogVault functions.
115
 
116
  =Do you have a free plan? How does it work?=
117
+ BlogVault is a paid backup service. But we understand the user's dilemma before starting a new service, which is why we provide a 7 day free trial period. You can avail free trial without any registration, just enter your email ID, password, and site URL. Moreover, we do not discriminate between our trial period users and premium customers.
118
 
119
+ =How do I upgrade from my free trial to a premium version of the account?=
120
+ To upgrade from a free trial version to a premium account, please take the help of **[this guide](http://bit.ly/2RHvPfS)**.
121
 
122
  =How do I upgrade to a bigger Plan?=
123
  To upgrade to a bigger Plan, take the help of **[this guide](http://bit.ly/2RHvPfS)**.
132
 
133
  This strategy ensures that we do not miss anything on your site.
134
 
135
+ =How often does BlogVault backup my WordPress site?=
136
  BlogVault backs up your website daily, automatically.
137
 
138
  =How safe are my backup files?=
142
  We do not automatically sync your backups to Dropbox. However, we do provide an interface that can help enable you to move your backup to Dropbox. You can also download your Backups to your computer and then upload them on Google Drive.
143
 
144
  =Can BlogVault be used for WooCommerce store websites?=
145
+ Yes, BlogVault integrates well with WooCommerce websites with the special inbuilt Real-Time backups functionality. Please see **[WooCommerce backups page](http://bit.ly/2RKNfrR)**.
146
 
147
  =What does BlogVault backup from a WooCommerce site?=
148
  BlogVault backups files and tables, database metadata like database name, location, all content, settings, and configuration.
149
 
150
+ =Can I restore WooCommerce store backup using BlogVault?=
151
  Yes. Restoring a backup using BlogVault is easy. Take a look at **[how to restore a site](http://bit.ly/2RL9gXN)**.
152
 
153
  =Can I use BlogVault to handle Backup Restoration?=
163
  Your staging site will be on BlogVault servers.
164
 
165
  =How long is my staging valid?=
166
+ With the BlogVault backup service, you can extend your staging site validity up to 56 days.
167
 
168
  =What do I do after Staging a site?=
169
  After you are satisfied with your staging site, BlogVault Backup Service allows you can push the changes you like, onto your actual live site, directly.
170
 
171
  =Will I receive emails from the staging environment?=
172
+ No, we do not have a mailing system at the Staging server. Many sites have automated emails set up on their sites. On staging environments, they do not want these to be triggered. The staging environment does not have protection for spam emails. Blocking all emails ensures that the staging server IP is not blacklisted.
173
 
174
+ =Can I merge the WooCommerce website staging site to the live site?=
175
  If you move them from the staging site to the live site, all your new orders will be lost on the live site. But we have provided you with the option with the selective merge. Select only the tables you want to merge and let BlogVault take care of the rest for you. Please don’t forget to backup your website before you start merging.
176
 
177
  =Does BlogVault backup work with all web hosts?=
185
  =Will BlogVault start backing up the new site after migration?=
186
  Unless otherwise specified, BlogVault will backup a site following DNS resolution. If you migrated the site to a different URL, make sure the new URL is added as a site with BlogVault to enable backup. If the migration were to the same URL at a different host, BlogVault would automatically start doing a backup from the new location as soon as the DNS is updated.
187
 
188
+ =Can I update WordPress core, plugins, and themes directly?=
189
  Yes. Take a look at this **[Manage Site help doc](http://bit.ly/2ROA9du)**. Before updating on the live site, we’d suggest you update on a staging site. BlogVault Backup Service comes with a free staging website.
190
 
191
  =Can I manage my site users and their password directly?=
192
+ Yes. With the BlogVault backup service, you can manage your site users and passwords. Take the help of this **[Manage Site help doc](http://bit.ly/2ROA9du)**.
193
 
194
+ =Can I add Clients and Team Members to my BlogVault Backup account?=
195
  Yes, you can.
196
 
197
+ Our client feature is for your reference alone. You can assign a client to their site. If you want to give a user, dashboard access, please add them as your team members under the team section. Please see **[How do I add clients and team members](http://bit.ly/2RK7p5t)**?
198
 
199
  =Isn’t WordPress or Web Host backing up my website for me?=
200
+ WordPress by default does not back up your site for you. As for web hosts, if your site is not on wordpress.com, then you have a reason to worry. Servers, while generally robust, do fail from time to time for various reasons. Moreover, web hosting providers usually do not provide complete backups. When such backups are restored, sites crash, and data is lost. Several such horror stories inspired us to build this service!
201
 
202
  =Do I really need BlogVault?=
203
  BlogVault provides comprehensive and complete backup services. Apart from handling website security, it can also assist you with instant Migration as well as Staging and Merging services at very reasonable rates.
219
  * Active Plugins
220
  * Installed Themes
221
 
222
+ =Is BlogVault compatible with all other WordPress plugins and themes?=
223
+ BlogVault is compatible with all plugins and themes. It works even if you have a different backup plugin installed. If you want to uninstall a plugin and install the BlogVault plugin, kindly take a look at our guide on **[How to install BlogVault](http://bit.ly/2RKgPxP)**.
224
 
225
  =Error: "FTP permission issues, FTP is correct but we might not have permissions to upload or remove a file."=
226
  This could happen when you’re on shared hosting. Contact your host and ask them to grant you access to upload files via FTP.
227
 
228
  =Error: "Execution expired, Connection timed out, Connection reset by a peer in both FTP and HTTP requests."=
229
+ Nothing to worry about, this notification means your destination server denied our requests to offload your site’s data. This could be because of a few reasons:
230
  * Your destination site isn’t reachable (you’ll have to contact your destination web host about this)
231
  * You have a firewall installed, which is blocking consecutive requests from the same source (in which case, please wait for some time and try again)
232
 
241
 
242
  == SCREENSHOTS ==
243
 
244
+ 1. BlogVault provides you with a comprehensive History page that lets you manage all your WordPress backups with ease.
245
+ 2. Trusted by over 4,00,000+ websites, BlogVault is the best WordPress files and database backup plugin for your website.
246
  3. Check the Performance Speed of your website from the BlogVault dashboard.
247
  4. Manage multiple WordPress sites from one dashboard.
248
  5. With Uptime Monitoring you get notified the moment your website is shut down.
249
+ 6. With BlogVault's free Staging test updates, WordPress plugins, and WordPress themes without breaking your live site.
250
  7. With BlogVault's White-Label Solution you can showcase our service under your own brilliant brand.
251
+ 8. For WooCommerce sites, BlogVault’s Real-Time Backups can make all the difference.
252
+ 9. We power WordPress migration for WPEngine, Pantheon, FlyWheel, LiquidWeb, Cloudways, Savvii, and many more. Need we say more?
253
 
254
  == CHANGELOG ==
255
+ = 4.74 =
256
+ * Enhanced handling of plugin services
257
+ * Removed deprecated hook
258
+
259
  = 4.73 =
260
  * Improvements in identifying plugin updates.
261
 
wp_db.php CHANGED
@@ -92,6 +92,14 @@ class BVWPDb {
92
  return $this->isTablePresent($table);
93
  }
94
 
 
 
 
 
 
 
 
 
95
  public function alterBVTable($query, $name) {
96
  $resp = false;
97
  $table = $this->getBVTable($name);
@@ -101,6 +109,14 @@ class BVWPDb {
101
  return $resp;
102
  }
103
 
 
 
 
 
 
 
 
 
104
  public function getTableContent($table, $fields = '*', $filter = '', $limit = 0, $offset = 0) {
105
  $query = "SELECT $fields from $table $filter";
106
  if ($limit > 0)
@@ -154,6 +170,22 @@ class BVWPDb {
154
  return !$this->isTablePresent($table);
155
  }
156
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  public function deleteRowsFromtable($name, $count = 1) {
158
  $table = $this->getBVTable($name);
159
  if ($this->isTablePresent($table)) {
92
  return $this->isTablePresent($table);
93
  }
94
 
95
+ public function createTables($tables, $usedbdelta = false) {
96
+ $result = array();
97
+ foreach ($tables as $table => $query) {
98
+ $result[$table] = $this->createTable($query, $table, $usedbdelta);
99
+ }
100
+ return $result;
101
+ }
102
+
103
  public function alterBVTable($query, $name) {
104
  $resp = false;
105
  $table = $this->getBVTable($name);
109
  return $resp;
110
  }
111
 
112
+ public function alterTables($tables) {
113
+ $result = array();
114
+ foreach ($tables as $table => $query) {
115
+ $result[$table] = $this->alterBVTable($query, $table);
116
+ }
117
+ return $result;
118
+ }
119
+
120
  public function getTableContent($table, $fields = '*', $filter = '', $limit = 0, $offset = 0) {
121
  $query = "SELECT $fields from $table $filter";
122
  if ($limit > 0)
170
  return !$this->isTablePresent($table);
171
  }
172
 
173
+ public function dropTables($tables) {
174
+ $result = array();
175
+ foreach ($tables as $table) {
176
+ $result[$table] = $this->dropBVTable($table);
177
+ }
178
+ return $result;
179
+ }
180
+
181
+ public function truncateTables($tables) {
182
+ $result = array();
183
+ foreach ($tables as $table) {
184
+ $result[$table] = $this->truncateBVTable($table);
185
+ }
186
+ return $result;
187
+ }
188
+
189
  public function deleteRowsFromtable($name, $count = 1) {
190
  $table = $this->getBVTable($name);
191
  if ($this->isTablePresent($table)) {
wp_dynsync.php CHANGED
@@ -294,11 +294,6 @@ class BVWPDynSync {
294
  $this->add_db_event('woocommerce_order_items', array('order_item_id' => $item_id, 'msg_type' => 'delete'));
295
  }
296
 
297
- function woocommerce_downloadable_product_permissions_delete_handler($bool, $download_id, $product_id, $order) {
298
- $this->add_db_event('woocommerce_downloadable_product_permissions', array('order_id' => $order->id, 'product_id' => $product_id, 'download_id' => $download_id));
299
- return true;
300
- }
301
-
302
  function woocommerce_attribute_added_handler($attribute_id, $attribute) {
303
  $this->add_db_event('woocommerce_attribute_taxonomies', array('attribute_id' => $attribute_id));
304
  }
@@ -641,7 +636,6 @@ class BVWPDynSync {
641
  add_action('woocommerce_grant_product_download_access', array($this, 'woocommerce_grant_product_download_access_handler'), 10, 1);
642
  add_action('woocommerce_ajax_revoke_access_to_product_download', array($this, 'woocommerce_revoke_access_to_product_download_handler'), 10, 4);
643
  add_action('woocommerce_deleted_order_downloadable_permissions', array($this, 'woocommerce_deleted_order_downloadable_permissions_handler'), 10, 1);
644
- add_filter('woocommerce_process_product_file_download_paths_remove_access_to_old_file', array($this, 'woocommerce_downloadable_product_permissions_delete_handler', 10, 4));
645
 
646
  add_action('woocommerce_new_payment_token', array($this, 'woocommerce_payment_token_handler'), 10, 1);
647
  add_action('woocommerce_payment_token_created', array($this, 'woocommerce_payment_token_handler'), 10, 1);
@@ -696,4 +690,4 @@ class BVWPDynSync {
696
  add_action('woocommerce_grant_product_download_permissions', array($this, 'woocommerce_grant_product_download_permissions_handler'), 10, 1);
697
  }
698
  }
699
- endif;
294
  $this->add_db_event('woocommerce_order_items', array('order_item_id' => $item_id, 'msg_type' => 'delete'));
295
  }
296
 
 
 
 
 
 
297
  function woocommerce_attribute_added_handler($attribute_id, $attribute) {
298
  $this->add_db_event('woocommerce_attribute_taxonomies', array('attribute_id' => $attribute_id));
299
  }
636
  add_action('woocommerce_grant_product_download_access', array($this, 'woocommerce_grant_product_download_access_handler'), 10, 1);
637
  add_action('woocommerce_ajax_revoke_access_to_product_download', array($this, 'woocommerce_revoke_access_to_product_download_handler'), 10, 4);
638
  add_action('woocommerce_deleted_order_downloadable_permissions', array($this, 'woocommerce_deleted_order_downloadable_permissions_handler'), 10, 1);
 
639
 
640
  add_action('woocommerce_new_payment_token', array($this, 'woocommerce_payment_token_handler'), 10, 1);
641
  add_action('woocommerce_payment_token_created', array($this, 'woocommerce_payment_token_handler'), 10, 1);
690
  add_action('woocommerce_grant_product_download_permissions', array($this, 'woocommerce_grant_product_download_permissions_handler'), 10, 1);
691
  }
692
  }
693
+ endif;