WordPress Backup and Migrate Plugin – Backup Guard - Version 1.1.90

Version Description

  • Halloween campaign
Download this release

Release Info

Developer BackupGuard
Plugin Icon 128x128 WordPress Backup and Migrate Plugin – Backup Guard
Version 1.1.90
Comparing to
See all releases

Version 1.1.90

Files changed (168) hide show
  1. BackupGuard.php +777 -0
  2. README.txt +528 -0
  3. backup.php +36 -0
  4. com/.htaccess +1 -0
  5. com/boot.php +6 -0
  6. com/config/config.php +204 -0
  7. com/config/config.wordpress.free.php +42 -0
  8. com/config/config.wordpress.php +119 -0
  9. com/core/SGBoot.php +284 -0
  10. com/core/SGConfig.php +67 -0
  11. com/core/SGPing.php +37 -0
  12. com/core/backup/SGBackup.php +1408 -0
  13. com/core/backup/SGBackupDatabase.php +643 -0
  14. com/core/backup/SGBackupFiles.php +510 -0
  15. com/core/backup/SGBackupLog.php +58 -0
  16. com/core/backup/SGBackupSchedule.php +77 -0
  17. com/core/backup/SGBackupStorage.php +436 -0
  18. com/core/backup/SGIBackupDelegate.php +8 -0
  19. com/core/database/SGDatabase.php +34 -0
  20. com/core/database/SGDatabaseAdapterWordpress.php +131 -0
  21. com/core/database/SGIDatabaseAdapter.php +48 -0
  22. com/core/exception/SGException.php +90 -0
  23. com/core/extension/SGExtension.php +33 -0
  24. com/core/extension/SGExtensionAdapterWordpress.php +79 -0
  25. com/core/extension/SGIExtensionAdapter.php +11 -0
  26. com/core/functions.php +692 -0
  27. com/core/log/SGFileLogHandler.php +71 -0
  28. com/core/log/SGILogHandler.php +10 -0
  29. com/core/log/SGLog.php +94 -0
  30. com/core/notice/SGINoticeAdapter.php +8 -0
  31. com/core/notice/SGNotice.php +33 -0
  32. com/core/notice/SGNoticeAdapterWordpress.php +50 -0
  33. com/core/notice/SGNoticeHandler.php +56 -0
  34. com/core/restore/SGExternalRestore.php +162 -0
  35. com/core/restore/SGExternalRestoreWordpress.php +80 -0
  36. com/core/schedule/SGIScheduleAdapter.php +8 -0
  37. com/core/schedule/SGSchedule.php +37 -0
  38. com/core/schedule/SGScheduleAdapterWordpress.php +124 -0
  39. com/core/storage/SGDropbox.php +38 -0
  40. com/core/storage/SGDropboxStorage.php +371 -0
  41. com/core/storage/SGStorage.php +103 -0
  42. com/core/widget/SGWordPressWidget.php +166 -0
  43. com/lib/BackupGuard/Client.php +297 -0
  44. com/lib/BackupGuard/Config.php +9 -0
  45. com/lib/BackupGuard/Curl.php +99 -0
  46. com/lib/BackupGuard/Exception/BadRequest.php +10 -0
  47. com/lib/BackupGuard/Exception/Exception.php +8 -0
  48. com/lib/BackupGuard/Exception/Forbidden.php +10 -0
  49. com/lib/BackupGuard/Exception/InternalServerError.php +10 -0
  50. com/lib/BackupGuard/Exception/MethodNotAllowed.php +10 -0
  51. com/lib/BackupGuard/Exception/NotFound.php +10 -0
  52. com/lib/BackupGuard/Exception/Unauthorized.php +10 -0
  53. com/lib/BackupGuard/Helper.php +105 -0
  54. com/lib/BackupGuard/RequestHandler.php +71 -0
  55. com/lib/BackupGuard/Response.php +56 -0
  56. com/lib/BackupGuard/Stream.php +115 -0
  57. com/lib/Dropbox/AppInfo.php +238 -0
  58. com/lib/Dropbox/AppInfoLoadException.php +18 -0
  59. com/lib/Dropbox/ArrayEntryStore.php +61 -0
  60. com/lib/Dropbox/AuthBase.php +75 -0
  61. com/lib/Dropbox/AuthInfo.php +85 -0
  62. com/lib/Dropbox/AuthInfoLoadException.php +18 -0
  63. com/lib/Dropbox/Checker.php +95 -0
  64. com/lib/Dropbox/Client.php +1700 -0
  65. com/lib/Dropbox/Curl.php +131 -0
  66. com/lib/Dropbox/CurlStreamRelay.php +45 -0
  67. com/lib/Dropbox/DeserializeException.php +19 -0
  68. com/lib/Dropbox/DropboxMetadataHeaderCatcher.php +83 -0
  69. com/lib/Dropbox/Exception.php +16 -0
  70. com/lib/Dropbox/Exception/BadRequest.php +17 -0
  71. com/lib/Dropbox/Exception/BadResponse.php +17 -0
  72. com/lib/Dropbox/Exception/BadResponseCode.php +33 -0
  73. com/lib/Dropbox/Exception/InvalidAccessToken.php +18 -0
  74. com/lib/Dropbox/Exception/NetworkIO.php +16 -0
  75. com/lib/Dropbox/Exception/ProtocolError.php +17 -0
  76. com/lib/Dropbox/Exception/RetryLater.php +17 -0
  77. com/lib/Dropbox/Exception/ServerError.php +15 -0
  78. com/lib/Dropbox/Host.php +100 -0
  79. com/lib/Dropbox/HttpResponse.php +17 -0
  80. com/lib/Dropbox/OAuth1AccessToken.php +61 -0
  81. com/lib/Dropbox/OAuth1Upgrader.php +142 -0
  82. com/lib/Dropbox/Path.php +171 -0
  83. com/lib/Dropbox/RequestUtil.php +347 -0
  84. com/lib/Dropbox/RootCertificates.php +144 -0
  85. com/lib/Dropbox/SSLTester.php +128 -0
  86. com/lib/Dropbox/Security.php +67 -0
  87. com/lib/Dropbox/StreamReadException.php +16 -0
  88. com/lib/Dropbox/Util.php +33 -0
  89. com/lib/Dropbox/ValueStore.php +61 -0
  90. com/lib/Dropbox/WebAuth.php +273 -0
  91. com/lib/Dropbox/WebAuthBase.php +119 -0
  92. com/lib/Dropbox/WebAuthException/BadRequest.php +20 -0
  93. com/lib/Dropbox/WebAuthException/BadState.php +19 -0
  94. com/lib/Dropbox/WebAuthException/Csrf.php +21 -0
  95. com/lib/Dropbox/WebAuthException/NotApproved.php +18 -0
  96. com/lib/Dropbox/WebAuthException/Provider.php +18 -0
  97. com/lib/Dropbox/WebAuthNoRedirect.php +82 -0
  98. com/lib/Dropbox/WriteMode.php +116 -0
  99. com/lib/Dropbox/autoload.php +32 -0
  100. com/lib/Dropbox/certs/trusted-certs.crt +1396 -0
  101. com/lib/Dropbox/strict.php +13 -0
  102. com/lib/Request/SGIRequestAdapter.php +14 -0
  103. com/lib/Request/SGRequest.php +33 -0
  104. com/lib/Request/SGRequestAdapterWordpress.php +190 -0
  105. com/lib/Request/SGResponse.php +54 -0
  106. com/lib/SGArchive.php +793 -0
  107. com/lib/SGAuthClient.php +268 -0
  108. com/lib/SGCallback.php +53 -0
  109. com/lib/SGCdrEntry.php +78 -0
  110. com/lib/SGCharsetHandler.php +93 -0
  111. com/lib/SGDBState.php +122 -0
  112. com/lib/SGEntry.php +12 -0
  113. com/lib/SGFileEntry.php +54 -0
  114. com/lib/SGFileState.php +181 -0
  115. com/lib/SGMigrateState.php +58 -0
  116. com/lib/SGMysqldump.php +1558 -0
  117. com/lib/SGReloadHandler.php +35 -0
  118. com/lib/SGReloader.php +86 -0
  119. com/lib/SGReloaderState.php +59 -0
  120. com/lib/SGState.php +189 -0
  121. com/lib/SGUploadHandler.php +38 -0
  122. com/lib/SGUploadState.php +124 -0
  123. index.php +1 -0
  124. languages/backup-guard-pro-es_ES.mo +0 -0
  125. languages/backup-guard-pro-es_ES.po +1154 -0
  126. public/ajax/awake.php +9 -0
  127. public/ajax/cancelBackup.php +10 -0
  128. public/ajax/cancelDownload.php +6 -0
  129. public/ajax/checkBackupCreation.php +17 -0
  130. public/ajax/checkPHPVersionCompatibility.php +33 -0
  131. public/ajax/checkRestoreCreation.php +27 -0
  132. public/ajax/cloudDropbox.php +25 -0
  133. public/ajax/curlChecker.php +14 -0
  134. public/ajax/deleteBackup.php +11 -0
  135. public/ajax/dismissDiscountNotice.php +5 -0
  136. public/ajax/downloadBackup.php +22 -0
  137. public/ajax/getAction.php +26 -0
  138. public/ajax/getBackupContent.php +56 -0
  139. public/ajax/getRunningActions.php +10 -0
  140. public/ajax/hideNotice.php +16 -0
  141. public/ajax/importBackup.php +17 -0
  142. public/ajax/isFeatureAvailable.php +9 -0
  143. public/ajax/manualBackup.php +38 -0
  144. public/ajax/modalImport.php +100 -0
  145. public/ajax/modalManualBackup.php +138 -0
  146. public/ajax/modalManualRestore.php +72 -0
  147. public/ajax/modalPrivacy.php +32 -0
  148. public/ajax/modalReview.php +31 -0
  149. public/ajax/modalTerms.php +31 -0
  150. public/ajax/resetStatus.php +25 -0
  151. public/ajax/restore.php +23 -0
  152. public/ajax/schedule.php +143 -0
  153. public/ajax/setReviewPopupState.php +8 -0
  154. public/ajax/setUserInfoVerificationPopupState.php +19 -0
  155. public/ajax/settings.php +143 -0
  156. public/ajax/storeSubscriberInfo.php +26 -0
  157. public/ajax/storeSurveyResult.php +35 -0
  158. public/backups.php +197 -0
  159. public/boot.php +4 -0
  160. public/cloud.php +131 -0
  161. public/config/config.php +25 -0
  162. public/config/config.wordpress.php +22 -0
  163. public/cron/sg_backup.php +17 -0
  164. public/cron/sg_storage_upload.php +5 -0
  165. public/css/bgstyle.less.css +7893 -0
  166. public/css/bgstyle.wordpress.css +204 -0
  167. public/css/bootstrap-switch.min.css +22 -0
  168. public/css/bootstrap.css +4226 -0
BackupGuard.php ADDED
@@ -0,0 +1,777 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // hook to wordpres widget
4
+ function backup_guard_register_widget()
5
+ {
6
+ if (!class_exists('SGWordPressWidget')) {
7
+ @include_once(SG_WIDGET_PATH.'SGWordPressWidget.php');
8
+ }
9
+
10
+ register_widget('SGWordPressWidget');
11
+ }
12
+ add_action('widgets_init', 'backup_guard_register_widget');
13
+
14
+ //The code that runs during plugin activation.
15
+ function activate_backup_guard()
16
+ {
17
+ //check if database should be updated
18
+ if (backupGuardShouldUpdate()) {
19
+ SGBoot::install();
20
+ SGBoot::didInstallForFirstTime();
21
+ }
22
+ }
23
+
24
+ // The code that runs during plugin deactivation.
25
+ function uninstall_backup_guard()
26
+ {
27
+ SGBoot::uninstall();
28
+ }
29
+
30
+ function deactivate_backup_guard()
31
+ {
32
+ $pluginCapabilities = backupGuardGetCapabilities();
33
+ if ($pluginCapabilities != BACKUP_GUARD_CAPABILITIES_FREE) {
34
+ require_once(SG_LIB_PATH.'SGAuthClient.php');
35
+ $res = SGAuthClient::getInstance()->logout();
36
+ SGConfig::set('SG_LICENSE_CHECK_TS', 0, true);
37
+ SGConfig::set('SG_LOGGED_USER', '', true);
38
+ }
39
+ }
40
+
41
+ function backupGuardMaybeShortenEddFilename($return, $package)
42
+ {
43
+ if (strpos($package, 'backup-guard') !== false) {
44
+ add_filter('wp_unique_filename', 'backupGuardShortenEddFilename', 10, 2);
45
+ }
46
+ return $return;
47
+ }
48
+
49
+ function backupGuardShortenEddFilename($filename, $ext)
50
+ {
51
+ $filename = substr($filename, 0, 20).$ext;
52
+ remove_filter('wp_unique_filename', 'backupGuardShortenEddFilename', 10);
53
+ return $filename;
54
+ }
55
+
56
+ add_filter('upgrader_pre_download', 'backupGuardMaybeShortenEddFilename', 10, 4);
57
+
58
+ register_activation_hook(SG_BACKUP_GUARD_MAIN_FILE, 'activate_backup_guard');
59
+ register_uninstall_hook(SG_BACKUP_GUARD_MAIN_FILE, 'uninstall_backup_guard');
60
+ register_deactivation_hook(SG_BACKUP_GUARD_MAIN_FILE, 'deactivate_backup_guard');
61
+ add_action('admin_footer', 'before_deactivate_backup_guard');
62
+
63
+ function before_deactivate_backup_guard()
64
+ {
65
+ wp_enqueue_style('before-deactivate-backup-guard-css', plugin_dir_url(__FILE__).'public/css/deactivationSurvey.css');
66
+ wp_enqueue_script('before-deactivate-backup-guard-js', plugin_dir_url(__FILE__).'public/js/deactivationSurvey.js', array('jquery'));
67
+
68
+ require_once(plugin_dir_path(__FILE__).'public/include/uninstallSurveyPopup.php');
69
+ }
70
+
71
+ // Register Admin Menus for single and multisite
72
+ if (is_multisite()) {
73
+ add_action('network_admin_menu', 'backup_guard_admin_menu');
74
+ }
75
+ else {
76
+ add_action('admin_menu', 'backup_guard_admin_menu');
77
+ }
78
+
79
+ function backup_guard_admin_menu()
80
+ {
81
+ add_menu_page('Backups', 'BackupGuard', 'manage_options', 'backup_guard_backups', 'backup_guard_backups_page', 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCA0NjIuOSA1MDEuNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNDYyLjkgNTAxLjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwYXRoIGZpbGw9IiNhMGE1YWEiIGQ9Ik00MjYuOSwxOTkuNmgtMTk4bDAuNCwzNEgyNDZoMTYyLjdjLTAuNSwzLjMtMS4xLDYuNi0xLjcsOS45Yy02LjEsMzMtMTUuMyw2Mi4yLTI3LjcsODcuNkg3OS40Yy0xMi4zLTI1LjQtMjEuNi01NC42LTI3LjctODcuNkMzOS4zLDE3Ni4xLDQ0LDExMS41LDQ3LjIsODMuN0M2Ny43LDkwLjUsODguMyw5NCwxMDguNiw5NGM2MC43LDAsMTAzLjMtMzAuMiwxMjAuOC00NS4xQzI0Ni43LDYzLjgsMjg5LjQsOTQsMzUwLjEsOTRoMGMyMC4zLDAsNDAuOS0zLjUsNjEuNC0xMC4zYzEuNiwxMy45LDMuNSwzNy4xLDMuNiw2NS4xaDIzLjdjMC00Ny40LTUuNS04MS4xLTUuOC04My4zbC0yLjQtMTQuNmwtMTMuNyw1LjZjLTIyLjQsOS4yLTQ0LjgsMTMuOC02Ni43LDEzLjhjMCwwLDAsMCwwLDBjLTY4LjMsMC0xMTEuNy00NS4zLTExMi4xLTQ1LjdsLTguNi05LjJsLTguNyw5LjJjLTAuNCwwLjUtNDMuOCw0NS43LTExMi4xLDQ1LjdjLTIxLjksMC00NC40LTQuNi02Ni43LTEzLjhsLTEzLjctNS42bC0yLjQsMTQuNmMtMC42LDMuNi0xNC40LDg4LjcsMi42LDE4MS42QzM4LjUsMzAyLjQsNTcuNSwzNDguOCw4NC44LDM4NWMzNC42LDQ1LjgsODIuNCw3NS4zLDE0Mi4xLDg3LjdsMi40LDAuNWwyLjQtMC41YzU5LjctMTIuMywxMDcuNS00MS44LDE0Mi4xLTg3LjdjMjcuNC0zNi4zLDQ2LjQtODIuNyw1Ni41LTEzNy45YzMtMTYuMiw1LTMyLjIsNi4zLTQ3LjVMNDI2LjksMTk5LjZMNDI2LjksMTk5LjZ6Ii8+PC9zdmc+', 74);
82
+
83
+ add_submenu_page('backup_guard_backups', _backupGuardT('Backups', true), _backupGuardT('Backups', true), 'manage_options', 'backup_guard_backups', 'backup_guard_backups_page');
84
+ add_submenu_page('backup_guard_backups', _backupGuardT('Cloud', true), _backupGuardT('Cloud', true), 'manage_options', 'backup_guard_cloud', 'backup_guard_cloud_page');
85
+ add_submenu_page('backup_guard_backups', _backupGuardT('Schedule', true), _backupGuardT('Schedule', true), 'manage_options', 'backup_guard_schedule', 'backup_guard_schedule_page');
86
+
87
+ add_submenu_page('backup_guard_backups', _backupGuardT('Settings', true), _backupGuardT('Settings', true), 'manage_options', 'backup_guard_settings', 'backup_guard_settings_page');
88
+
89
+ add_submenu_page('backup_guard_backups', _backupGuardT('System Info.', true), _backupGuardT('System Info.', true), 'manage_options', 'backup_guard_system_info', 'backup_guard_system_info_page');
90
+
91
+ add_submenu_page('backup_guard_backups', _backupGuardT('Services', true), _backupGuardT('Services', true), 'manage_options', 'backup_guard_services', 'backup_guard_services_page');
92
+ add_submenu_page('backup_guard_backups', _backupGuardT('Support', true), _backupGuardT('Support', true), 'manage_options', 'backup_guard_support', 'backup_guard_support_page');
93
+
94
+ //Check if should show upgrade page
95
+ if (SGBoot::isFeatureAvailable('SHOW_UPGRADE_PAGE')) {
96
+ add_submenu_page('backup_guard_backups', _backupGuardT('Why upgrade?', true), _backupGuardT('Why upgrade?', true), 'manage_options', 'backup_guard_pro_features', 'backup_guard_pro_features_page');
97
+ }
98
+ }
99
+
100
+ function backup_guard_system_info_page()
101
+ {
102
+ if (backupGuardValidateLicense()) {
103
+ require_once(plugin_dir_path(__FILE__).'public/systemInfo.php');
104
+ }
105
+ }
106
+
107
+ function backup_guard_services_page()
108
+ {
109
+ if (backupGuardValidateLicense()) {
110
+ require_once(plugin_dir_path(__FILE__).'public/services.php');
111
+ }
112
+ }
113
+
114
+ //Pro features page
115
+ function backup_guard_pro_features_page()
116
+ {
117
+ require_once(plugin_dir_path(__FILE__).'public/proFeatures.php');
118
+ }
119
+
120
+ function backup_guard_security_page()
121
+ {
122
+ require_once(plugin_dir_path(__FILE__).'public/security.php');
123
+ }
124
+
125
+ //Support page
126
+ function backup_guard_support_page()
127
+ {
128
+ if (backupGuardValidateLicense()) {
129
+ require_once(plugin_dir_path(__FILE__).'public/support.php');
130
+ }
131
+ }
132
+
133
+ //Backups Page
134
+ function backup_guard_backups_page()
135
+ {
136
+ if (backupGuardValidateLicense()) {
137
+ wp_enqueue_script('backup-guard-iframe-transport-js', plugin_dir_url(__FILE__).'public/js/jquery.iframe-transport.js', array('jquery'));
138
+ wp_enqueue_script('backup-guard-fileupload-js', plugin_dir_url(__FILE__).'public/js/jquery.fileupload.js', array('jquery'));
139
+ wp_enqueue_script('backup-guard-jstree-js', plugin_dir_url(__FILE__).'public/js/jstree.min.js', array('jquery'));
140
+ wp_enqueue_script('backup-guard-jstree-checkbox-js', plugin_dir_url(__FILE__).'public/js/jstree.checkbox.js', array('jquery'));
141
+ wp_enqueue_script('backup-guard-jstree-wholerow-js', plugin_dir_url(__FILE__).'public/js/jstree.wholerow.js', array('jquery'));
142
+ wp_enqueue_script('backup-guard-jstree-types-js', plugin_dir_url(__FILE__).'public/js/jstree.types.js', array('jquery'));
143
+ wp_enqueue_style('backup-guard-jstree-css', plugin_dir_url(__FILE__).'public/css/default/style.min.css');
144
+ wp_enqueue_script('backup-guard-backups-js', plugin_dir_url(__FILE__).'public/js/sgbackup.js', array('jquery', 'jquery-effects-core', 'jquery-effects-transfer', 'jquery-ui-widget'));
145
+
146
+ // Localize the script with new data
147
+ wp_localize_script('backup-guard-backups-js', 'BG_BACKUP_STRINGS', array(
148
+ 'confirm' => _backupGuardT('Are you sure you want to cancel import?', true),
149
+ 'invalidBackupOption' => _backupGuardT('Please choose at least one option.', true),
150
+ 'invalidDirectorySelected' => _backupGuardT('Please choose at least one directory.', true),
151
+ 'invalidCloud' => _backupGuardT('Please choose at least one cloud.', true),
152
+ 'backupInProgress' => _backupGuardT('Backing Up...', true),
153
+ 'errorMessage' => _backupGuardT('Something went wrong. Please try again.', true),
154
+ 'noBackupsAvailable' => _backupGuardT('No backups found.', true),
155
+ 'invalidImportOption' => _backupGuardT('Please select one of the options.', true),
156
+ 'invalidDownloadFile' => _backupGuardT('Please choose one of the files.', true),
157
+ 'import' => _backupGuardT('Import', true),
158
+ 'importInProgress' => _backupGuardT('Importing please wait...', true),
159
+ 'fileUploadFailed' => _backupGuardT('File upload failed.', true)
160
+ ));
161
+
162
+ require_once(plugin_dir_path( __FILE__ ).'public/backups.php');
163
+ }
164
+ }
165
+
166
+ //Cloud Page
167
+ function backup_guard_cloud_page()
168
+ {
169
+ if (backupGuardValidateLicense()) {
170
+ wp_enqueue_style('backup-guard-switch-css', plugin_dir_url(__FILE__).'public/css/bootstrap-switch.min.css');
171
+ wp_enqueue_script('backup-guard-switch-js', plugin_dir_url(__FILE__).'public/js/bootstrap-switch.min.js', array('jquery'), '1.0.0', true);
172
+ wp_enqueue_script('backup-guard-cloud-js', plugin_dir_url(__FILE__).'public/js/sgcloud.js', array('jquery'), '1.0.0', true);
173
+
174
+ // Localize the script with new data
175
+ wp_localize_script('backup-guard-cloud-js', 'BG_CLOUD_STRINGS', array(
176
+ 'invalidImportFile' => _backupGuardT('Please select a file.', true),
177
+ 'invalidFileSize' => _backupGuardT('File is too large.', true),
178
+ 'connectionInProgress' => _backupGuardT('Connecting...', true),
179
+ 'invalidDestinationFolder' => _backupGuardT('Destination folder is required.', true),
180
+ 'successMessage' => _backupGuardT('Successfully saved.', true)
181
+ ));
182
+
183
+ require_once(plugin_dir_path(__FILE__).'public/cloud.php');
184
+ }
185
+ }
186
+
187
+ //Schedule Page
188
+ function backup_guard_schedule_page()
189
+ {
190
+ if (backupGuardValidateLicense()) {
191
+ wp_enqueue_style('backup-guard-switch-css', plugin_dir_url(__FILE__).'public/css/bootstrap-switch.min.css');
192
+ wp_enqueue_script('backup-guard-switch-js', plugin_dir_url(__FILE__).'public/js/bootstrap-switch.min.js', array('jquery'), '1.0.0', true);
193
+ wp_enqueue_script('backup-guard-schedule-js', plugin_dir_url(__FILE__).'public/js/sgschedule.js', array('jquery'), '1.0.0', true);
194
+
195
+ // Localize the script with new data
196
+ wp_localize_script('backup-guard-schedule-js', 'BG_SCHEDULE_STRINGS', array(
197
+ 'deletionError' => _backupGuardT('Unable to delete schedule', true),
198
+ 'confirm' => _backupGuardT('Are you sure?', true),
199
+ 'invalidBackupOption' => _backupGuardT('Please choose at least one option.', true),
200
+ 'invalidDirectorySelected' => _backupGuardT('Please choose at least one directory.', true),
201
+ 'invalidCloud' => _backupGuardT('Please choose at least one cloud.', true),
202
+ 'savingInProgress' => _backupGuardT('Saving...', true),
203
+ 'successMessage' => _backupGuardT('You have successfully activated schedule.', true),
204
+ 'saveButtonText' => _backupGuardT('Save', true)
205
+ ));
206
+
207
+ require_once(plugin_dir_path( __FILE__ ).'public/schedule.php');
208
+ }
209
+ }
210
+
211
+ //Settings Page
212
+ function backup_guard_settings_page()
213
+ {
214
+ if (backupGuardValidateLicense()) {
215
+ wp_enqueue_style('backup-guard-switch-css', plugin_dir_url(__FILE__).'public/css/bootstrap-switch.min.css');
216
+ wp_enqueue_script('backup-guard-switch-js', plugin_dir_url(__FILE__).'public/js/bootstrap-switch.min.js', array('jquery'), '1.0.0', true);
217
+ wp_enqueue_script('backup-guard-settings-js', plugin_dir_url(__FILE__).'public/js/sgsettings.js', array('jquery'), '1.0.0', true );
218
+
219
+ // Localize the script with new data
220
+ wp_localize_script('backup-guard-settings-js', 'BG_SETTINGS_STRINGS', array(
221
+ 'invalidEmailAddress' => _backupGuardT('Please enter valid email.', true),
222
+ 'invalidFileName' => _backupGuardT('Please enter valid file name.', true),
223
+ 'invalidRetentionNumber' => _backupGuardT('Please enter a valid retention number.', true),
224
+ 'successMessage' => _backupGuardT('Successfully saved.', true),
225
+ 'savingInProgress' => _backupGuardT('Saving...', true),
226
+ 'retentionConfirmationFirstPart' => _backupGuardT('Are you sure you want to keep the latest', true),
227
+ 'retentionConfirmationSecondPart' => _backupGuardT('backups? All older backups will be deleted.', true),
228
+ 'saveButtonText' => _backupGuardT('Save', true)
229
+ ));
230
+
231
+ require_once(plugin_dir_path(__FILE__).'public/settings.php');
232
+ }
233
+ }
234
+
235
+ function backup_guard_login_page()
236
+ {
237
+ wp_enqueue_script('backup-guard-login-js', plugin_dir_url(__FILE__).'public/js/sglogin.js', array('jquery'), '1.0.0', true);
238
+
239
+ require_once(plugin_dir_path(__FILE__).'public/login.php');
240
+ }
241
+
242
+ function backup_guard_link_license_page()
243
+ {
244
+ wp_enqueue_script('backup-guard-license-js', plugin_dir_url(__FILE__).'public/js/sglicense.js', array('jquery'), '1.0.0', true);
245
+ // Localize the script with new data
246
+ wp_localize_script('backup-guard-license-js', 'BG_LICENSE_STRINGS', array(
247
+ 'invalidLicense' => _backupGuardT('Please choose a license first', true),
248
+ 'availableLicenses' => _backupGuardT('There are no available licenses for using the selected product', true)
249
+ ));
250
+
251
+ require_once(plugin_dir_path(__FILE__).'public/link_license.php');
252
+ }
253
+
254
+ add_action('admin_enqueue_scripts', 'enqueue_backup_guard_scripts');
255
+ function enqueue_backup_guard_scripts($hook)
256
+ {
257
+ wp_enqueue_script('backup-guard-discount-notice', plugin_dir_url(__FILE__).'public/js/sgNoticeDismiss.js', array('jquery'), '1.0', true);
258
+
259
+ if (!strpos($hook,'backup_guard')) {
260
+ if($hook == "index.php"){
261
+ wp_enqueue_script('backup-guard-chart-manager', plugin_dir_url(__FILE__).'public/js/Chart.bundle.min.js');
262
+ }
263
+ return;
264
+ }
265
+
266
+ wp_enqueue_style('backup-guard-spinner', plugin_dir_url(__FILE__).'public/css/spinner.css');
267
+ wp_enqueue_style('backup-guard-wordpress', plugin_dir_url(__FILE__).'public/css/bgstyle.wordpress.css');
268
+ wp_enqueue_style('backup-guard-less', plugin_dir_url(__FILE__).'public/css/bgstyle.less.css');
269
+ wp_enqueue_style('backup-guard-styles', plugin_dir_url(__FILE__).'public/css/styles.css');
270
+
271
+ echo '<script type="text/javascript">sgBackup={};';
272
+ $sgAjaxRequestFrequency = SGConfig::get('SG_AJAX_REQUEST_FREQUENCY');
273
+ if (!$sgAjaxRequestFrequency) {
274
+ $sgAjaxRequestFrequency = SG_AJAX_DEFAULT_REQUEST_FREQUENCY;
275
+ }
276
+ echo 'SG_AJAX_REQUEST_FREQUENCY = "'.$sgAjaxRequestFrequency.'";';
277
+ echo 'function getAjaxUrl(url) {'.
278
+ 'if (url==="cloudDropbox" || url==="cloudGdrive" || url==="cloudOneDrive") return "'.admin_url('admin-post.php?action=backup_guard_').'"+url;'.
279
+ 'return "'.admin_url('admin-ajax.php').'";}</script>';
280
+
281
+ wp_enqueue_media();
282
+ wp_enqueue_script('backup-guard-less-framework', plugin_dir_url(__FILE__).'public/js/less.min.js', array('jquery'), '1.0.0', true);
283
+ wp_enqueue_script('backup-guard-bootstrap-framework', plugin_dir_url(__FILE__).'public/js/bootstrap.min.js', array('jquery'), '1.0.0', true);
284
+ wp_enqueue_script('backup-guard-sgrequest-js', plugin_dir_url(__FILE__).'public/js/sgrequesthandler.js', array('jquery'), '1.0.0', true);
285
+ wp_enqueue_script('backup-guard-sgwprequest-js', plugin_dir_url(__FILE__).'public/js/sgrequesthandler.wordpress.js', array('jquery'), '1.0.0', true);
286
+
287
+ wp_enqueue_style('backup-guard-rateyo-css', plugin_dir_url(__FILE__).'public/css/jquery.rateyo.css');
288
+ wp_enqueue_script('backup-guard-rateyo-js', plugin_dir_url(__FILE__).'public/js/jquery.rateyo.js');
289
+
290
+ wp_enqueue_script('backup-guard-main-js', plugin_dir_url(__FILE__).'public/js/main.js', array('jquery'), '1.0.0', true);
291
+
292
+ // Localize the script with new data
293
+ wp_localize_script('backup-guard-main-js', 'BG_MAIN_STRINGS', array(
294
+ 'confirmCancel' => _backupGuardT('Are you sure you want to cancel?', true)
295
+ ));
296
+ }
297
+
298
+ // adding actions to handle modal ajax requests
299
+ add_action( 'wp_ajax_backup_guard_modalManualBackup', 'backup_guard_get_manual_modal');
300
+ add_action( 'wp_ajax_backup_guard_modalManualRestore', 'backup_guard_get_manual_restore_modal');
301
+ add_action( 'wp_ajax_backup_guard_modalImport', 'backup_guard_get_import_modal');
302
+ add_action( 'wp_ajax_backup_guard_modalFtpSettings', 'backup_guard_get_ftp_modal');
303
+ add_action( 'wp_ajax_backup_guard_modalAmazonSettings', 'backup_guard_get_amazon_modal');
304
+ add_action( 'wp_ajax_backup_guard_modalPrivacy', 'backup_guard_get_privacy_modal');
305
+ add_action( 'wp_ajax_backup_guard_modalTerms', 'backup_guard_get_terms_modal');
306
+ add_action( 'wp_ajax_backup_guard_modalReview', 'backup_guard_get_review_modal');
307
+ add_action( 'wp_ajax_backup_guard_getFileDownloadProgress', 'backup_guard_get_file_download_progress');
308
+ add_action( 'wp_ajax_backup_guard_modalCreateSchedule', 'backup_guard_create_schedule');
309
+ add_action( 'wp_ajax_backup_guard_getBackupContent', 'backup_guard_get_backup_content');
310
+
311
+ function backup_guard_get_file_download_progress()
312
+ {
313
+ require_once(SG_PUBLIC_AJAX_PATH.'getFileDownloadProgress.php');
314
+ exit();
315
+ }
316
+
317
+ function backup_guard_create_schedule()
318
+ {
319
+ require_once(SG_PUBLIC_AJAX_PATH.'modalCreateSchedule.php');
320
+ exit();
321
+ }
322
+
323
+ function backup_guard_get_manual_modal()
324
+ {
325
+ require_once(SG_PUBLIC_AJAX_PATH.'modalManualBackup.php');
326
+ exit();
327
+ }
328
+
329
+ function backup_guard_get_manual_restore_modal()
330
+ {
331
+ require_once(SG_PUBLIC_AJAX_PATH.'modalManualRestore.php');
332
+ exit();
333
+ }
334
+
335
+ function backup_guard_get_backup_content()
336
+ {
337
+ require_once (SG_PUBLIC_AJAX_PATH.'getBackupContent.php');
338
+ exit();
339
+ }
340
+
341
+ function backup_guard_get_import_modal()
342
+ {
343
+ require_once(SG_PUBLIC_AJAX_PATH.'modalImport.php');
344
+ exit();
345
+ }
346
+
347
+ function backup_guard_get_ftp_modal()
348
+ {
349
+ require_once(SG_PUBLIC_AJAX_PATH.'modalFtpSettings.php');
350
+ exit();
351
+ }
352
+
353
+ function backup_guard_get_amazon_modal()
354
+ {
355
+ require_once(SG_PUBLIC_AJAX_PATH.'modalAmazonSettings.php');
356
+ exit();
357
+ }
358
+
359
+ function backup_guard_get_privacy_modal()
360
+ {
361
+ require_once(SG_PUBLIC_AJAX_PATH.'modalPrivacy.php');
362
+ }
363
+
364
+ function backup_guard_get_terms_modal()
365
+ {
366
+ require_once(SG_PUBLIC_AJAX_PATH.'modalTerms.php');
367
+ exit();
368
+ }
369
+
370
+ function backup_guard_get_review_modal()
371
+ {
372
+ require_once(SG_PUBLIC_AJAX_PATH.'modalReview.php');
373
+ exit();
374
+ }
375
+
376
+ function backup_guard_register_ajax_callbacks()
377
+ {
378
+ if (is_super_admin()) {
379
+ // adding actions to handle ajax and post requests
380
+ add_action('wp_ajax_backup_guard_cancelBackup', 'backup_guard_cancel_backup');
381
+ add_action('wp_ajax_backup_guard_checkBackupCreation', 'backup_guard_check_backup_creation');
382
+ add_action('wp_ajax_backup_guard_checkRestoreCreation', 'backup_guard_check_restore_creation');
383
+ add_action('wp_ajax_backup_guard_cloudDropbox', 'backup_guard_cloud_dropbox');
384
+ add_action('wp_ajax_backup_guard_cloudGdrive', 'backup_guard_cloud_gdrive');
385
+ add_action('wp_ajax_backup_guard_cloudOneDrive', 'backup_guard_cloud_oneDrive');
386
+ add_action('wp_ajax_backup_guard_cloudFtp', 'backup_guard_cloud_ftp');
387
+ add_action('wp_ajax_backup_guard_cloudAmazon', 'backup_guard_cloud_amazon');
388
+ add_action('wp_ajax_backup_guard_curlChecker', 'backup_guard_curl_checker');
389
+ add_action('wp_ajax_backup_guard_deleteBackup', 'backup_guard_delete_backup');
390
+ add_action('wp_ajax_backup_guard_getAction', 'backup_guard_get_action');
391
+ add_action('wp_ajax_backup_guard_getRunningActions', 'backup_guard_get_running_actions');
392
+ add_action('wp_ajax_backup_guard_importBackup', 'backup_guard_get_import_backup');
393
+ add_action('wp_ajax_backup_guard_resetStatus', 'backup_guard_reset_status');
394
+ add_action('wp_ajax_backup_guard_restore', 'backup_guard_restore');
395
+ add_action('wp_ajax_backup_guard_saveCloudFolder', 'backup_guard_save_cloud_folder');
396
+ add_action('wp_ajax_backup_guard_schedule', 'backup_guard_schedule');
397
+ add_action('wp_ajax_backup_guard_settings', 'backup_guard_settings');
398
+ add_action('wp_ajax_backup_guard_setReviewPopupState', 'backup_guard_set_review_popup_state');
399
+ add_action('wp_ajax_backup_guard_sendUsageStatistics', 'backup_guard_send_usage_statistics');
400
+ add_action('wp_ajax_backup_guard_hideNotice', 'backup_guard_hide_notice');
401
+ add_action('wp_ajax_backup_guard_downloadFromCloud', 'backup_guard_download_from_cloud');
402
+ add_action('wp_ajax_backup_guard_listStorage', 'backup_guard_list_storage');
403
+ add_action('wp_ajax_backup_guard_cancelDownload', 'backup_guard_cancel_download');
404
+ add_action('wp_ajax_backup_guard_awake', 'backup_guard_awake');
405
+ add_action('wp_ajax_backup_guard_manualBackup', 'backup_guard_manual_backup');
406
+ add_action('admin_post_backup_guard_downloadBackup', 'backup_guard_download_backup');
407
+ add_action('wp_ajax_backup_guard_login', 'backup_guard_login');
408
+ add_action('wp_ajax_backup_guard_logout', 'backup_guard_logout');
409
+ add_action('wp_ajax_backup_guard_link_license', 'backup_guard_link_license');
410
+ add_action('wp_ajax_backup_guard_importKeyFile', 'backup_guard_import_key_file');
411
+ add_action('wp_ajax_backup_guard_isFeatureAvailable', 'backup_guard_is_feature_available');
412
+ add_action('wp_ajax_backup_guard_dismiss_discount_notice', 'backup_guard_dismiss_discount_notice');
413
+ add_action('wp_ajax_backup_guard_checkPHPVersionCompatibility', 'backup_guard_check_php_version_compatibility');
414
+ add_action('wp_ajax_backup_guard_setUserInfoVerificationPopupState', 'backup_guard_set_user_info_verification_popup_state');
415
+ add_action('wp_ajax_backup_guard_storeSubscriberInfo', 'backup_guard_store_subscriber_info');
416
+ add_action('wp_ajax_backup_guard_storeSurveyResult', 'backup_guard_store_survey_result');
417
+ }
418
+ }
419
+
420
+ function backup_guard_store_survey_result()
421
+ {
422
+ require_once(SG_PUBLIC_AJAX_PATH.'storeSurveyResult.php');
423
+ }
424
+
425
+ function backup_guard_store_subscriber_info()
426
+ {
427
+ require_once(SG_PUBLIC_AJAX_PATH.'storeSubscriberInfo.php');
428
+ }
429
+
430
+ function backup_guard_set_user_info_verification_popup_state()
431
+ {
432
+ require_once(SG_PUBLIC_AJAX_PATH.'setUserInfoVerificationPopupState.php');
433
+ }
434
+
435
+ function backup_guard_dismiss_discount_notice()
436
+ {
437
+ require_once(SG_PUBLIC_AJAX_PATH.'dismissDiscountNotice.php');
438
+ }
439
+
440
+ function backup_guard_is_feature_available()
441
+ {
442
+ require_once(SG_PUBLIC_AJAX_PATH.'isFeatureAvailable.php');
443
+ }
444
+
445
+ function backup_guard_check_php_version_compatibility()
446
+ {
447
+ require_once(SG_PUBLIC_AJAX_PATH.'checkPHPVersionCompatibility.php');
448
+ }
449
+
450
+ add_action('init', 'backup_guard_init');
451
+ add_action('wp_ajax_nopriv_backup_guard_awake', 'backup_guard_awake_nopriv');
452
+ add_action('admin_post_backup_guard_cloudDropbox', 'backup_guard_cloud_dropbox');
453
+ add_action('admin_post_backup_guard_cloudGdrive', 'backup_guard_cloud_gdrive');
454
+ add_action('admin_post_backup_guard_cloudOneDrive', 'backup_guard_cloud_oneDrive');
455
+
456
+ function backup_guard_cloud_oneDrive()
457
+ {
458
+ require_once(SG_PUBLIC_AJAX_PATH.'cloudOneDrive.php');
459
+ }
460
+
461
+ function backup_guard_import_key_file()
462
+ {
463
+ require_once(SG_PUBLIC_AJAX_PATH.'importKeyFile.php');
464
+ }
465
+
466
+ function backup_guard_awake()
467
+ {
468
+ $method = SG_RELOAD_METHOD_AJAX;
469
+ require_once(SG_PUBLIC_AJAX_PATH.'awake.php');
470
+ }
471
+
472
+ function backup_guard_awake_nopriv()
473
+ {
474
+ $token = @$_GET['token'];
475
+ $method = @$_GET['method'];
476
+
477
+ if (backupGuardValidateApiCall($token)) {
478
+ require_once(SG_PUBLIC_AJAX_PATH.'awake.php');
479
+ }
480
+ }
481
+
482
+ function backup_guard_cancel_download()
483
+ {
484
+ require_once(SG_PUBLIC_AJAX_PATH.'cancelDownload.php');
485
+ }
486
+
487
+ function backup_guard_list_storage()
488
+ {
489
+ require_once(SG_PUBLIC_AJAX_PATH.'listStorage.php');
490
+ }
491
+
492
+ function backup_guard_download_from_cloud()
493
+ {
494
+ require_once(SG_PUBLIC_AJAX_PATH.'downloadFromCloud.php');
495
+ }
496
+
497
+ function backup_guard_hide_notice()
498
+ {
499
+ require_once(SG_PUBLIC_AJAX_PATH.'hideNotice.php');
500
+ }
501
+
502
+ function backup_guard_cancel_backup()
503
+ {
504
+ require_once(SG_PUBLIC_AJAX_PATH.'cancelBackup.php');
505
+ }
506
+
507
+ function backup_guard_check_backup_creation()
508
+ {
509
+ require_once(SG_PUBLIC_AJAX_PATH.'checkBackupCreation.php');
510
+ }
511
+
512
+ function backup_guard_check_restore_creation()
513
+ {
514
+ require_once(SG_PUBLIC_AJAX_PATH.'checkRestoreCreation.php');
515
+ }
516
+
517
+ function backup_guard_cloud_dropbox()
518
+ {
519
+ require_once(SG_PUBLIC_AJAX_PATH.'cloudDropbox.php');
520
+ }
521
+
522
+ function backup_guard_cloud_ftp()
523
+ {
524
+ require_once(SG_PUBLIC_AJAX_PATH.'cloudFtp.php');
525
+ }
526
+
527
+ function backup_guard_cloud_amazon()
528
+ {
529
+ require_once(SG_PUBLIC_AJAX_PATH.'cloudAmazon.php');
530
+ }
531
+
532
+ function backup_guard_cloud_gdrive()
533
+ {
534
+ require_once(SG_PUBLIC_AJAX_PATH.'cloudGdrive.php');
535
+ }
536
+
537
+ function backup_guard_curl_checker()
538
+ {
539
+ require_once(SG_PUBLIC_AJAX_PATH.'curlChecker.php');
540
+ }
541
+
542
+ function backup_guard_delete_backup()
543
+ {
544
+ require_once(SG_PUBLIC_AJAX_PATH.'deleteBackup.php');
545
+ }
546
+
547
+ function backup_guard_download_backup()
548
+ {
549
+ require_once(SG_PUBLIC_AJAX_PATH.'downloadBackup.php');
550
+ }
551
+
552
+ function backup_guard_get_action()
553
+ {
554
+ require_once(SG_PUBLIC_AJAX_PATH.'getAction.php');
555
+ }
556
+
557
+ function backup_guard_get_running_actions()
558
+ {
559
+ require_once(SG_PUBLIC_AJAX_PATH.'getRunningActions.php');
560
+ }
561
+
562
+ function backup_guard_get_import_backup()
563
+ {
564
+ require_once(SG_PUBLIC_AJAX_PATH.'importBackup.php');
565
+ }
566
+
567
+ function backup_guard_manual_backup()
568
+ {
569
+ require_once(SG_PUBLIC_AJAX_PATH.'manualBackup.php');
570
+ }
571
+
572
+ function backup_guard_reset_status()
573
+ {
574
+ require_once(SG_PUBLIC_AJAX_PATH.'resetStatus.php');
575
+ }
576
+
577
+ function backup_guard_restore()
578
+ {
579
+ require_once(SG_PUBLIC_AJAX_PATH.'restore.php');
580
+ }
581
+
582
+ function backup_guard_save_cloud_folder()
583
+ {
584
+ require_once(SG_PUBLIC_AJAX_PATH.'saveCloudFolder.php');
585
+ }
586
+
587
+ function backup_guard_schedule()
588
+ {
589
+ require_once(SG_PUBLIC_AJAX_PATH.'schedule.php');
590
+ }
591
+
592
+ function backup_guard_settings()
593
+ {
594
+ require_once(SG_PUBLIC_AJAX_PATH.'settings.php');
595
+ }
596
+
597
+ function backup_guard_set_review_popup_state()
598
+ {
599
+ require_once(SG_PUBLIC_AJAX_PATH.'setReviewPopupState.php');
600
+ }
601
+
602
+ function backup_guard_send_usage_statistics()
603
+ {
604
+ require_once(SG_PUBLIC_AJAX_PATH.'sendUsageStatistics.php');
605
+ }
606
+
607
+ function backup_guard_login()
608
+ {
609
+ require_once(SG_PUBLIC_AJAX_PATH.'login.php');
610
+ }
611
+
612
+ function backup_guard_logout()
613
+ {
614
+ require_once(SG_PUBLIC_AJAX_PATH.'logout.php');
615
+ }
616
+
617
+ function backup_guard_link_license()
618
+ {
619
+ require_once(SG_PUBLIC_AJAX_PATH.'linkLicense.php');
620
+ }
621
+
622
+ //adds once weekly to the existing schedules.
623
+ add_filter('cron_schedules', 'backup_guard_cron_add_weekly');
624
+ function backup_guard_cron_add_weekly($schedules)
625
+ {
626
+ $schedules['weekly'] = array(
627
+ 'interval' => 60*60*24*7,
628
+ 'display' => 'Once weekly'
629
+ );
630
+ return $schedules;
631
+ }
632
+
633
+ //adds once monthly to the existing schedules.
634
+ add_filter('cron_schedules', 'backup_guard_cron_add_monthly');
635
+ function backup_guard_cron_add_monthly($schedules)
636
+ {
637
+ $schedules['monthly'] = array(
638
+ 'interval' => 60*60*24*30,
639
+ 'display' => 'Once monthly'
640
+ );
641
+ return $schedules;
642
+ }
643
+
644
+ //adds once yearly to the existing schedules.
645
+ add_filter('cron_schedules', 'backup_guard_cron_add_yearly');
646
+ function backup_guard_cron_add_yearly($schedules)
647
+ {
648
+ $schedules['yearly'] = array(
649
+ 'interval' => 60*60*24*30*12,
650
+ 'display' => 'Once yearly'
651
+ );
652
+ return $schedules;
653
+ }
654
+
655
+ function backup_guard_init()
656
+ {
657
+ backup_guard_register_ajax_callbacks();
658
+ // backupGuardPluginRedirect();
659
+
660
+ //check if database should be updated
661
+ if (backupGuardShouldUpdate()) {
662
+ SGBoot::install();
663
+ }
664
+
665
+ backupGuardSymlinksCleanup(SG_SYMLINK_PATH);
666
+ }
667
+
668
+ add_action(SG_SCHEDULE_ACTION, 'backup_guard_schedule_action', 10, 1);
669
+
670
+ function backup_guard_schedule_action($id)
671
+ {
672
+ require_once(SG_PUBLIC_PATH.'cron/sg_backup.php');
673
+ }
674
+
675
+ //load pro plugin updater
676
+ $pluginCapabilities = backupGuardGetCapabilities();
677
+ if ($pluginCapabilities != BACKUP_GUARD_CAPABILITIES_FREE) {
678
+ require_once(dirname(__FILE__).'/plugin-update-checker/plugin-update-checker.php');
679
+ require_once(dirname(__FILE__).'/plugin-update-checker/Puc/v4/Utils.php');
680
+ require_once(SG_LIB_PATH.'SGAuthClient.php');
681
+
682
+ $licenseKey = SGConfig::get('SG_LICENSE_KEY');
683
+
684
+ $updateChecker = Puc_v4_Factory::buildUpdateChecker(
685
+ BackupGuard\Config::URL.'/products/details/'.$licenseKey,
686
+ SG_BACKUP_GUARD_MAIN_FILE,
687
+ SG_PRODUCT_IDENTIFIER
688
+ );
689
+
690
+ $updateChecker->addHttpRequestArgFilter(array(
691
+ SGAuthClient::getInstance(),
692
+ 'filterUpdateChecks'
693
+ ));
694
+ }
695
+
696
+ if (SGBoot::isFeatureAvailable('ALERT_BEFORE_UPDATE')) {
697
+ add_filter('upgrader_pre_download', 'backupGuardOnBeforeUpdateDownload', 10, 3);
698
+ add_action('core_upgrade_preamble', 'backupGuardOnUpgradeScreenActivate');
699
+ add_action('current_screen', 'backupGuardOnScreenActivate');
700
+ }
701
+
702
+ // Register the new dashboard widget with the 'wp_dashboard_setup' action
703
+ add_action('wp_dashboard_setup', 'backup_guard_add_dashboard_widgets');
704
+
705
+ function backup_guard_add_dashboard_widgets()
706
+ {
707
+ require_once(SG_CORE_PATH.'SGConfig.php');
708
+
709
+ $userId = get_current_user_id();
710
+ $userData = get_userdata($userId);
711
+ $userRoles = $userData->roles;
712
+ $isAdminUser = false;
713
+ for($i = 0; $i < count($userRoles); $i++) {
714
+ if ($userRoles[$i] == "administrator") {
715
+ $isAdminUser = true;
716
+ break;
717
+ }
718
+ }
719
+
720
+ if (!$isAdminUser ) {
721
+ return;
722
+ }
723
+
724
+ $isShowStatisticsWidgetEnabled = SGConfig::get('SG_SHOW_STATISTICS_WIDGET');
725
+ if (!$isShowStatisticsWidgetEnabled) {
726
+ return;
727
+ }
728
+
729
+
730
+ require_once(plugin_dir_path( __FILE__ ).'public/dashboardWidget.php');
731
+ wp_add_dashboard_widget('backupGuardWidget', 'Backup Guard', 'backup_guard_dashboard_widget_function');
732
+ }
733
+
734
+ add_action('plugins_loaded', 'backupGuardloadTextDomain');
735
+ function backupGuardloadTextDomain()
736
+ {
737
+ $backupGuardLangDir = plugin_dir_path(__FILE__).'languages/';
738
+ $backupGuardLangDir = apply_filters('backupguardLanguagesDirectory', $backupGuardLangDir);
739
+
740
+ $locale = apply_filters('bg_plugin_locale', get_locale(), BACKUP_GUARD_TEXTDOMAIN);
741
+ $mofile = sprintf('%1$s-%2$s.mo', BACKUP_GUARD_TEXTDOMAIN, $locale);
742
+
743
+ $mofileLocal = $backupGuardLangDir.$mofile;
744
+
745
+ if (file_exists($mofileLocal)) {
746
+ // Look in local /wp-content/plugins/popup-builder/languages/ folder
747
+ load_textdomain(BACKUP_GUARD_TEXTDOMAIN, $mofileLocal);
748
+ }
749
+ else {
750
+ // Load the default language files
751
+ load_plugin_textdomain(BACKUP_GUARD_TEXTDOMAIN, false, $backupGuardLangDir);
752
+ }
753
+ }
754
+
755
+ if (backupGuardShouldShowDiscountNotice() && checkDueDateDiscount()) {
756
+ add_action('admin_notices', 'backup_guard_discount_notice');
757
+ }
758
+
759
+ function backup_guard_discount_notice()
760
+ {
761
+ $capabilities = backupGuardGetCapabilities();
762
+ $upgradeUrl = BG_UPGRADE_URL;
763
+ ?>
764
+ <div class="backup-guard-discount-notice updated notice is-dismissible">
765
+ <a href="<?php echo BG_UPGRADE_URL; ?>" target="_blank"><div class="discount-banner" style="background-image: url('<?php echo SG_IMAGE_URL ?>halloween.jpg');background-repeat: no-repeat; background-position: center; height: 200px;"></div></a>
766
+ </div>
767
+ <style>
768
+ .backup-guard-discount-notice.updated.notice.is-dismissible {
769
+ padding: 0;
770
+ border-left-color: #fea500 !important;
771
+ }
772
+ .backup-guard-discount-notice button:before {
773
+ color: #fea500 !important;
774
+ }
775
+ </style>
776
+ <?php
777
+ }
README.txt ADDED
@@ -0,0 +1,528 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === WordPress Backup and Migrate Plugin - Backup Guard ===
2
+ Plugin Name: WordPress Backup and Migrate Plugin - Backup Guard
3
+ Contributors: Backup Guard, Backup Guard Support
4
+ Author: Backup Guard
5
+ 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.3
9
+ Stable tag: trunk
10
+ License: GPLv2 or later
11
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html
12
+
13
+ Backup site, restore or migrate it wherever you need it. Backup to Dropbox, Google Drive, Amazon, OneDrive, FTP / SFTP to restore or migrate WordPress.
14
+
15
+ == Description ==
16
+
17
+ Backup Guard is the most complete WordPress backup plugin. We offer the easiest way to <strong>Backup</strong>, <strong>Restore</strong> and <strong>Migrate</strong> your WordPress website. You can backup and restore your WordPress files, database or both.
18
+
19
+ <p>Download <strong>BackupGuard Pro</strong> here: <a href="https://backup-guard.com/products/backup-wordpress">https://backup-guard.com/products/backup-wordpress</a></p>
20
+
21
+ https://www.youtube.com/watch?v=HCz4mkMMXos
22
+
23
+ <h4>Free backup features</h4>
24
+ <ul>
25
+ <li>Backup site - backup site as many times as you want</li>
26
+ <li>Backup files, database or both</li>
27
+ <li>Choose which folders to backup</li>
28
+ <li>Choose which database tables to backup</li>
29
+ <li>Restore site - restore backups whenever needed</li>
30
+ <li>Selective files or database restoration</li>
31
+ <li>Download backups - download your backups on your computer</li>
32
+ <li>Import backups - upload your backups to restore (no FTP required)</li>
33
+ <li>Multisite WordPress Network is supported</li>
34
+ <li>Backup cancellation - cancel the backup process</li>
35
+ <li>Explore backup or restore log files</li>
36
+ <li>Ability to specify custom exclude paths</li>
37
+ <li>Ability to exclude database tables</li>
38
+ <li>Live progress - precise progress of the current backup or restore</li>
39
+ <li>Upload to Dropbox</li>
40
+ <li>Scheduled site backups - setup automatic site backups</li>
41
+ </ul>
42
+
43
+ See <strong>BackupGuard Free</strong> in action here: <a href="https://www.youtube.com/watch?v=nt6XoP69c0M">https://www.youtube.com/watch?v=nt6XoP69c0M</a>
44
+
45
+ <h4>Pro backup features</h4>
46
+ <ul>
47
+ <li><strong>Migrate site</strong> - migrate site from one domain to another</li>
48
+ <li>Fully automatic migration - no any <strong>find & replace</strong> rules are required for migration</li>
49
+ <li>Multiple scheduled backups - schedule your database and files to backup with different frequencies</li>
50
+ <li>Upload to Dropbox, G Drive, Amazon S3, OneDrive & SFTP/FTP</li>
51
+ <li>Import from Dropbox, G Drive, Amazon S3, OneDrive & SFTP/FTP</li>
52
+ <li>Mail notifications - get email when backup or restore gets finished</li>
53
+ <li>Alert before updating - get an alert to backup the website before updating</li>
54
+ <li>Customize backup naming - specify your custom backup prefix</li>
55
+ <li>Backups retention - specify the number of backups you want to keep on your server</li>
56
+ <li>Backups cloud path - specify a custom cloud path where your site backups should be uploaded</li>
57
+ <li>Background backup mode - backup site in low priority mode</li>
58
+ <li>Emergency support - up to 24 hours</li>
59
+ </ul>
60
+
61
+ See <strong>BackupGuard Pro</strong> in action here: <a href="https://www.youtube.com/watch?v=TSPgmrSu-ls">https://www.youtube.com/watch?v=TSPgmrSu-ls</a>
62
+
63
+ <h4>A special note on WordPress migration</h4>
64
+
65
+ A WordPress site migration is an easy task if performed properly. There are three different migration scenarios:
66
+ <ul>
67
+ <li>Migrate site from a subdirectory of a domain to the root directory</li>
68
+ <li>Migrate site from a local installation to a remote installation</li>
69
+ <li>Migrate site between domains or hosts</li>
70
+ </ul>
71
+
72
+ Backup Guard Pro helps you to migrate in all of these cases in the smoothest possible way. You just have to Backup your site and Restore it in the new location. No additional work will be required, since we handle all changes for you.
73
+
74
+ The issues that users always deal with are: wrong site url, images don't load, dashboard not accessible, permalinks don't work and more.
75
+
76
+ Backup Guard Pro will help you to skip all these problems, because of its advanced refactoring and migrating engine.
77
+
78
+ <h4>Documentation</h4>
79
+ The documentation can be found here: <a href="https://backup-guard.com/products/backup-wordpress/doc">https://backup-guard.com/products/backup-wordpress/doc</a>
80
+
81
+ <h4>This is how backup operates</h4>
82
+ <ul>
83
+ <li>No extra libraries required</li>
84
+ <li>Support of large websites</li>
85
+ <li>New archive format: faster and smaller than Zip or Tar</li>
86
+ <li>Works in low memory & shared hosting environments</li>
87
+ <li>Serialized data refactoring for proper migration</li>
88
+ </ul>
89
+
90
+ <h4>Backup Guard min. requirements</h4>
91
+ <ul>
92
+ <li><strong>Free</strong> requires - PHP 5.3.3, zlib, WordPress 3.8</li>
93
+ <li><strong>Pro</strong> requires - PHP 5.3.3, zlib, curl, WordPress 3.8</li>
94
+ <li><strong>Note:</strong> Dropbox SDK requires 64-bit system. Backup Guard will also require 64-bit system if the website is larger than 2GB.</li>
95
+ </ul>
96
+
97
+ <p>More info at: <a href="https://backup-guard.com/products/backup-wordpress">https://backup-guard.com/products/backup-wordpress</a></p>
98
+
99
+ <h4>Support</h4>
100
+ <p><a href="https://backup-guard.com/products/backup-wordpress/support">https://backup-guard.com/products/backup-wordpress/support</a></p>
101
+
102
+ == Frequently Asked Questions ==
103
+
104
+ = How to install? =
105
+
106
+ <ul>
107
+ <li>Install <strong>Free</strong> version: <a href="https://backup-guard.com/products/backup-wordpress/doc/install-backupguard-free">here</a></li>
108
+ <li>Install <strong>Pro</strong> version: <a href="https://backup-guard.com/products/backup-wordpress/doc/install-backupguard-pro">here</a></li>
109
+ </ul>
110
+
111
+ = Can I use BackupGuard to migrate a website? =
112
+
113
+ The answer is Yes, you can! Backup Guard Pro supports advanced migration functionality which will help you easily migrate your website from one domain to another. All urls, images and other domain-dependent data will be properly refactored and deployed for the new domain.
114
+
115
+ = What is included in the basic (free) plan? =
116
+
117
+ Backup Guard Free gives you the ability to backup or restore your website as many times as you want. You can also download your backups and import them in other websites where Backup Guard is installed and running.
118
+
119
+ = Why should I purchase Backup Guard Pro? =
120
+
121
+ Although Backup Guard Free gives you the ability to backup and restore your website as many times as you want, your backups will only reside on your server. With our Pro plans you can upload your backups to the cloud of your preference, schedule your backups, receive notifications, and many other features.
122
+
123
+ That's not all, if you are a paid user, you will receive priority/emergency support and finally, only with our Platinum plan, you will receive "unlimited plans" license which will allow you to install Backup Guard on as many websites as you want.
124
+
125
+ <a href="https://backup-guard.com/products/backup-wordpress">Backup Guard PRO</a>
126
+
127
+ = How to fix “MySQL server has gone away” error? =
128
+
129
+ While restoring your database you may encounter “MySQL server has gone away” warning. There are generally two main causes for this error: 1) the server timed out and closed the connection and 2) server dropped an incorrect or too large packet.
130
+ To fix the issue you will have to contact your hosting provider and ask them increase the size of these two values: max_allowed_packet & wait_timeout
131
+
132
+ = How do I Restore my Backup? =
133
+
134
+ This documentation describes the basic steps you should follow for proper restoration: <a href="https://backup-guard.com/products/backup-wordpress/doc/restore-website">https://backup-guard.com/products/backup-wordpress/doc/restore-website</a>
135
+
136
+ = How do I download my Backup archive? =
137
+
138
+ This documentation describes the basic steps you should follow for downloading your backup archives: <a href="https://backup-guard.com/products/backup-wordpress/doc/download-backup">https://backup-guard.com/products/backup-wordpress/doc/download-backup</a>
139
+
140
+ = How do I extract my Backup archive? =
141
+
142
+ This documentation describes the basic steps you should follow for extracting your backup archives: <a href="https://backup-guard.com/products/backup-wordpress/doc/extract-sgbp">https://backup-guard.com/products/backup-wordpress/doc/extract-sgbp</a>
143
+
144
+ = Something is not working, what should I do? =
145
+
146
+ No software is perfect and we are not the exception. There are tons of different servers and configurations and something may go wrong in one of them.
147
+
148
+ When you are facing an issue of any kind with any of our products, the first thing to do is <a href="https://backup-guard.com/products/backup-wordpress/support">contacting us</a>. We are here to help you, give you tips, advices and even create fixes/patches or features whenever needed.
149
+
150
+ == Screenshots ==
151
+
152
+ 1. Backup WordPress
153
+ 2. Website backup and migration
154
+ 3. Schedule a site backup
155
+ 4. Backup cloud integrations
156
+ 5. Backup status mail notifications
157
+ 6. Site backup customization
158
+
159
+ == Changelog ==
160
+
161
+ = 1.1.90 =
162
+ * Halloween campaign
163
+
164
+ = 1.1.89 =
165
+ * Conflicts were resolved
166
+
167
+ = 1.1.88 =
168
+ * Issue with restore have been fixed
169
+
170
+ = 1.1.87 =
171
+ * Minor bug fixes and improvements
172
+
173
+ = 1.1.86 =
174
+ * Users now can specify custom name for manual backups
175
+ * PHP7 compatibility issues fixed
176
+
177
+ = 1.1.85 =
178
+ * Migration removed from free package
179
+ * Other minor bug fixes and improvements
180
+
181
+ = 1.1.84 =
182
+ * Now you can perform migration with free version
183
+
184
+ = 1.1.83 =
185
+ * Spanish translation added
186
+ * System information section added
187
+
188
+ = 1.1.82 =
189
+ * Bug fixes and improvements
190
+
191
+ = 1.1.81 =
192
+ * PHP7 compatibility issues fixed
193
+ * Other minor bug fixes and improvements
194
+
195
+ = 1.1.80 =
196
+ * Direct curl calls removed
197
+
198
+ = 1.1.79 =
199
+ * Christmas campaign
200
+
201
+ = 1.1.78 =
202
+ * Previous update bug fix
203
+
204
+ = 1.1.77 =
205
+ * Minor bug fixes and improvements
206
+ * Deactivation survey
207
+
208
+ = 1.1.76 =
209
+ * End Black Friday campaign
210
+
211
+ = 1.1.75 =
212
+ * Black Friday campaign
213
+
214
+ = 1.1.74 =
215
+ * Bug fixes & improvements
216
+
217
+ = 1.1.73 =
218
+ * Scheduling option added to free version
219
+ * Other bug fixes & improvements
220
+
221
+ = 1.1.72 =
222
+ * Discount notice removed
223
+
224
+ = 1.1.71 =
225
+ * Bug fixes & improvements
226
+
227
+ = 1.1.70 =
228
+ * Now user will see alert about not saved settings.
229
+ * Other bug fixes & improvements
230
+
231
+ = 1.1.69 =
232
+ * Issue with migration error notice solved
233
+
234
+ = 1.1.68 =
235
+ * Pro markers removed from plugin
236
+
237
+ = 1.1.67 =
238
+ * Bug fixes and improvements
239
+
240
+ = 1.1.66 =
241
+ * Minor bug fixes and improvements
242
+
243
+ = 1.1.65 =
244
+ * Now you can upload your backups to Dropbox with free version.
245
+
246
+ = 1.1.64 =
247
+ * Symlink folder backup issue fixed
248
+ * Other bug fixes & improvements
249
+
250
+ = 1.1.63 =
251
+ * Support link has been updated
252
+
253
+ = 1.1.62 =
254
+ * Minor bug fixes and improvements
255
+
256
+ = 1.1.61 =
257
+ * New exclude paths were added
258
+ * Minor bug fixes and improvements
259
+
260
+ = 1.1.60 =
261
+ * Minor bug fixes and improvements
262
+
263
+ = 1.1.59 =
264
+ * External restore detection improved
265
+ * Minor bug fixes and improvements
266
+
267
+ = 1.1.58 =
268
+ * Restore related bug was resolved
269
+ * Minor bug fixes and improvements
270
+
271
+ = 1.1.57 =
272
+ * UI improvements
273
+ * BackupGuard seal widget added
274
+
275
+ = 1.1.56 =
276
+ * BackupGuard UI improvements
277
+ * Minor bug fixes and improvements
278
+
279
+ = 1.1.55 =
280
+ * cURL & Stream supported for external restoration
281
+ * Conflicts were resolved with update checker
282
+ * New option to show/hide statistics
283
+ * Database restoration related bug resolved
284
+
285
+ = 1.1.54 =
286
+ * New option added to specify reload method
287
+
288
+ = 1.1.53 =
289
+ * WordPress dashboard widget added
290
+ * BackupGuard GUI improvements
291
+ * Other security & core improvements
292
+
293
+ = 1.1.52 =
294
+ * Selective restoration is supported for files or database
295
+ * Selective database tables backup is supported now
296
+ * External restoration improved
297
+ * Other UI improvements and fixes
298
+
299
+ = 1.1.51 =
300
+ * New option added in the settings to specify number of rows dumped at once
301
+
302
+ = 1.1.50 =
303
+ * Database Restore with reloads
304
+ * New option for excluding database tables
305
+ * Backup log was improved
306
+ * Other bug fixes & improvements
307
+
308
+ = 1.1.49 =
309
+ * External restoration related bugs resolved
310
+ * “wp-content” directory detection related bug resolved
311
+
312
+ = 1.1.48 =
313
+ * cURL & Sockets are supported for reloads
314
+ * Chunk by chunk import is supported
315
+ * New migration service is available now
316
+ * Alert about php migration
317
+
318
+ = 1.1.47 =
319
+ * XSS security issues were resolved
320
+ * Protocol detection related issues were resolved
321
+ * UI improvements
322
+
323
+ = 1.1.46 =
324
+ * Disk free space related issue resolved
325
+ * Archive size is being written in the backup/restore log files
326
+ * Tracking reloads and writing a respective log in case method is being changed
327
+ * Other minor improvements
328
+
329
+ = 1.1.45 =
330
+ * Disk free space detection detection related bug was resolved
331
+
332
+ = 1.1.44 =
333
+ * UI related bug fixes and improvements
334
+
335
+ = 1.1.43 =
336
+ * Bug fixes and improvements
337
+
338
+ = 1.1.42 =
339
+ * Restoration was improved to override the files which were successfully extracted
340
+ * The issue related to the root directory was resolved
341
+
342
+ = 1.1.41 =
343
+ * Custom exclude paths are supported
344
+ * The bug related to warning indicator was resolved
345
+ * Other improvements & fixes
346
+
347
+ = 1.1.40 =
348
+ * The blank page issue was resolved
349
+ * Other optimizations and improvements
350
+
351
+ = 1.1.39 =
352
+ * Uninstall related bug was resolved
353
+ * Upload path related bug was resolved
354
+ * Authentication related issues were resolved
355
+ * New exclude paths were added
356
+
357
+ = 1.1.38 =
358
+ * Security bug fixes
359
+ * Proper PHP version validation
360
+ * Fixed bug that reseted db after every update
361
+ * Removed restore method from backup log
362
+
363
+ = 1.1.37 =
364
+ * Database related bug was resolved for full backups
365
+ * New backup exclude paths were added
366
+
367
+ = 1.1.36 =
368
+ * Minor bug fixes and improvements
369
+
370
+ = 1.1.35 =
371
+ * Memory usage improved & optimized for restoration
372
+
373
+ = 1.1.34 =