PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 1.3.6
JetBackup – Backup, Restore & Migrate v1.3.6
3.1.22.3 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.8.1 1.4.9 1.5.0 1.5.1 1.5.1.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.10 1.6.11 1.6.12 1.6.13 1.6.15 1.6.5.1 1.6.8.8 1.6.9 1.6.9.1 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7.5 2.0.8.7 2.0.9.11 2.0.9.14 2.0.9.15 2.0.9.6 2.0.9.7 2.0.9.9 3.1.10.7 3.1.11.1 3.1.12.3 3.1.13.4 3.1.14.17 3.1.15.4 3.1.16.1 3.1.17.5 3.1.18.10 3.1.18.8 3.1.18.9 3.1.19.8 3.1.20.3 3.1.21.3 3.1.7.9 3.1.9.2 trunk 1.1.90 1.1.91 1.2.0 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2
backup / BackupGuard.php
backup Last commit date
com 6 years ago languages 6 years ago public 6 years ago BackupGuard.php 6 years ago README.txt 6 years ago backup.php 6 years ago index.php 6 years ago
BackupGuard.php
982 lines
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 wp_localize_script('before-deactivate-backup-guard-js', 'BG_BACKUP_STRINGS', array(
69 'nonce' => wp_create_nonce('backupGuardAjaxNonce'),
70 'areYouSure' => _backupGuardT('Are you sure?', true)
71 ));
72
73 require_once(plugin_dir_path(__FILE__).'public/include/uninstallSurveyPopup.php');
74 }
75
76 // Register Admin Menus for single and multisite
77 if (is_multisite()) {
78 add_action('network_admin_menu', 'backup_guard_admin_menu');
79 }
80 else {
81 add_action('admin_menu', 'backup_guard_admin_menu');
82 }
83
84 function backup_guard_admin_menu()
85 {
86 add_menu_page('Backups', 'BackupGuard', 'manage_options', 'backup_guard_backups', 'backup_guard_backups_page', 'data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MzAuMzQgNjYzLjAzIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmZjt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPkFydGJvYXJkIDI8L3RpdGxlPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUzMC4xMSwxODUuNzljLTcxLjktOC44Mi0xMzcuNzMtNDAtMTkwLTg2LjU3djkyLjY1YTI4MC41OSwyODAuNTksMCwwLDAsMTE2LjUyLDUyYy05LjE0LDg5LjQzLTUyLDE2OS41NS0xMTYuNTIsMjI4Ljg3djkwLjRDNDU5Ljg0LDQ3Ny4xMyw1MzAuNiwzMzMuNDIsNTMwLjExLDE4NS43OVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNzQuMjksMjQ0YTI4MC40NiwyODAuNDYsMCwwLDAsMTE1Ljc3LTUxLjExVjEwMGMtNTIuNDQsNDYuMjgtMTE3LjYyLDc3LTE4OS44Myw4NS4xNUM5OS41NCwzMzMsMTcwLjIyLDQ3Ni44MiwyOTAuMDYsNTYzVjQ3Mi4wOUMyMjYsNDEyLjg2LDE4My40MiwzMzMuMDYsMTc0LjI5LDI0NFoiLz48L3N2Zz4=', 74);
87
88 add_submenu_page('backup_guard_backups', _backupGuardT('Backups', true), _backupGuardT('Backups', true), 'manage_options', 'backup_guard_backups', 'backup_guard_backups_page');
89 add_submenu_page('backup_guard_backups', _backupGuardT('Cloud', true), _backupGuardT('Cloud', true), 'manage_options', 'backup_guard_cloud', 'backup_guard_cloud_page');
90 add_submenu_page('backup_guard_backups', _backupGuardT('Schedule', true), _backupGuardT('Schedule', true), 'manage_options', 'backup_guard_schedule', 'backup_guard_schedule_page');
91
92 add_submenu_page('backup_guard_backups', _backupGuardT('Settings', true), _backupGuardT('Settings', true), 'manage_options', 'backup_guard_settings', 'backup_guard_settings_page');
93
94 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');
95
96 add_submenu_page('backup_guard_backups', _backupGuardT('Services', true), _backupGuardT('Services', true), 'manage_options', 'backup_guard_services', 'backup_guard_services_page');
97 add_submenu_page('backup_guard_backups', _backupGuardT('Support', true), _backupGuardT('Support', true), 'manage_options', 'backup_guard_support', 'backup_guard_support_page');
98
99 //Check if should show upgrade page
100 if (SGBoot::isFeatureAvailable('SHOW_UPGRADE_PAGE')) {
101 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');
102 }
103 }
104
105 function backup_guard_system_info_page()
106 {
107 if (backupGuardValidateLicense()) {
108 require_once(plugin_dir_path(__FILE__).'public/systemInfo.php');
109 }
110 }
111
112 function backup_guard_services_page()
113 {
114 if (backupGuardValidateLicense()) {
115 require_once(plugin_dir_path(__FILE__).'public/services.php');
116 }
117 }
118
119 //Pro features page
120 function backup_guard_pro_features_page()
121 {
122 require_once(plugin_dir_path(__FILE__).'public/proFeatures.php');
123 }
124
125 function backup_guard_security_page()
126 {
127 require_once(plugin_dir_path(__FILE__).'public/security.php');
128 }
129
130 //Support page
131 function backup_guard_support_page()
132 {
133 if (backupGuardValidateLicense()) {
134 require_once(plugin_dir_path(__FILE__).'public/support.php');
135 }
136 }
137
138 //Backups Page
139 function backup_guard_backups_page()
140 {
141 if (backupGuardValidateLicense()) {
142 wp_enqueue_script('backup-guard-iframe-transport-js', plugin_dir_url(__FILE__).'public/js/jquery.iframe-transport.js', array('jquery'));
143 wp_enqueue_script('backup-guard-fileupload-js', plugin_dir_url(__FILE__).'public/js/jquery.fileupload.js', array('jquery'));
144 wp_enqueue_script('backup-guard-jstree-js', plugin_dir_url(__FILE__).'public/js/jstree.min.js', array('jquery'));
145 wp_enqueue_script('backup-guard-jstree-checkbox-js', plugin_dir_url(__FILE__).'public/js/jstree.checkbox.js', array('jquery'));
146 wp_enqueue_script('backup-guard-jstree-wholerow-js', plugin_dir_url(__FILE__).'public/js/jstree.wholerow.js', array('jquery'));
147 wp_enqueue_script('backup-guard-jstree-types-js', plugin_dir_url(__FILE__).'public/js/jstree.types.js', array('jquery'));
148 wp_enqueue_style('backup-guard-jstree-css', plugin_dir_url(__FILE__).'public/css/default/style.min.css');
149 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'));
150
151 // Localize the script with new data
152 wp_localize_script('backup-guard-backups-js', 'BG_BACKUP_STRINGS', array(
153 'confirm' => _backupGuardT('Are you sure you want to cancel import?', true),
154 'nonce' => wp_create_nonce('backupGuardAjaxNonce'),
155 'invalidBackupOption' => _backupGuardT('Please choose at least one option.', true),
156 'invalidDirectorySelected' => _backupGuardT('Please choose at least one directory.', true),
157 'invalidCloud' => _backupGuardT('Please choose at least one cloud.', true),
158 'backupInProgress' => _backupGuardT('Backing Up...', true),
159 'errorMessage' => _backupGuardT('Something went wrong. Please try again.', true),
160 'noBackupsAvailable' => _backupGuardT('No backups found.', true),
161 'invalidImportOption' => _backupGuardT('Please select one of the options.', true),
162 'invalidDownloadFile' => _backupGuardT('Please choose one of the files.', true),
163 'import' => _backupGuardT('Import', true),
164 'importInProgress' => _backupGuardT('Importing please wait...', true),
165 'fileUploadFailed' => _backupGuardT('File upload failed.', true)
166 ));
167
168 require_once(plugin_dir_path( __FILE__ ).'public/backups.php');
169 }
170 }
171
172 //Cloud Page
173 function backup_guard_cloud_page()
174 {
175 if (backupGuardValidateLicense()) {
176 wp_enqueue_style('backup-guard-switch-css', plugin_dir_url(__FILE__).'public/css/bootstrap-switch.min.css');
177 wp_enqueue_script('backup-guard-switch-js', plugin_dir_url(__FILE__).'public/js/bootstrap-switch.min.js', array('jquery'), '1.0.0', true);
178 wp_enqueue_script('backup-guard-cloud-js', plugin_dir_url(__FILE__).'public/js/sgcloud.js', array('jquery'), '1.0.0', true);
179
180 // Localize the script with new data
181 wp_localize_script('backup-guard-cloud-js', 'BG_CLOUD_STRINGS', array(
182 'invalidImportFile' => _backupGuardT('Please select a file.', true),
183 'invalidFileSize' => _backupGuardT('File is too large.', true),
184 'connectionInProgress' => _backupGuardT('Connecting...', true),
185 'invalidDestinationFolder' => _backupGuardT('Destination folder is required.', true),
186 'successMessage' => _backupGuardT('Successfully saved.', true)
187 ));
188
189 require_once(plugin_dir_path(__FILE__).'public/cloud.php');
190 }
191 }
192
193 //Schedule Page
194 function backup_guard_schedule_page()
195 {
196 if (backupGuardValidateLicense()) {
197 wp_enqueue_style('backup-guard-switch-css', plugin_dir_url(__FILE__).'public/css/bootstrap-switch.min.css');
198 wp_enqueue_script('backup-guard-switch-js', plugin_dir_url(__FILE__).'public/js/bootstrap-switch.min.js', array('jquery'), '1.0.0', true);
199 wp_enqueue_script('backup-guard-schedule-js', plugin_dir_url(__FILE__).'public/js/sgschedule.js', array('jquery'), '1.0.0', true);
200
201 // Localize the script with new data
202 wp_localize_script('backup-guard-schedule-js', 'BG_SCHEDULE_STRINGS', array(
203 'deletionError' => _backupGuardT('Unable to delete schedule', true),
204 'confirm' => _backupGuardT('Are you sure?', true),
205 'invalidBackupOption' => _backupGuardT('Please choose at least one option.', true),
206 'invalidDirectorySelected' => _backupGuardT('Please choose at least one directory.', true),
207 'invalidCloud' => _backupGuardT('Please choose at least one cloud.', true),
208 'savingInProgress' => _backupGuardT('Saving...', true),
209 'successMessage' => _backupGuardT('You have successfully activated schedule.', true),
210 'saveButtonText' => _backupGuardT('Save', true)
211 ));
212
213 require_once(plugin_dir_path( __FILE__ ).'public/schedule.php');
214 }
215 }
216
217 //Settings Page
218 function backup_guard_settings_page()
219 {
220 if (backupGuardValidateLicense()) {
221 wp_enqueue_style('backup-guard-switch-css', plugin_dir_url(__FILE__).'public/css/bootstrap-switch.min.css');
222 wp_enqueue_script('backup-guard-switch-js', plugin_dir_url(__FILE__).'public/js/bootstrap-switch.min.js', array('jquery'), '1.0.0', true);
223 wp_enqueue_script('backup-guard-settings-js', plugin_dir_url(__FILE__).'public/js/sgsettings.js', array('jquery'), '1.0.0', true );
224
225 // Localize the script with new data
226 wp_localize_script('backup-guard-settings-js', 'BG_SETTINGS_STRINGS', array(
227 'invalidEmailAddress' => _backupGuardT('Please enter valid email.', true),
228 'invalidFileName' => _backupGuardT('Please enter valid file name.', true),
229 'invalidRetentionNumber' => _backupGuardT('Please enter a valid retention number.', true),
230 'successMessage' => _backupGuardT('Successfully saved.', true),
231 'savingInProgress' => _backupGuardT('Saving...', true),
232 'retentionConfirmationFirstPart' => _backupGuardT('Are you sure you want to keep the latest', true),
233 'retentionConfirmationSecondPart' => _backupGuardT('backups? All older backups will be deleted.', true),
234 'saveButtonText' => _backupGuardT('Save', true)
235 ));
236
237 require_once(plugin_dir_path(__FILE__).'public/settings.php');
238 }
239 }
240
241 function backup_guard_login_page()
242 {
243 wp_enqueue_script('backup-guard-login-js', plugin_dir_url(__FILE__).'public/js/sglogin.js', array('jquery'), '1.0.0', true);
244
245 require_once(plugin_dir_path(__FILE__).'public/login.php');
246 }
247
248 function backup_guard_link_license_page()
249 {
250 wp_enqueue_script('backup-guard-license-js', plugin_dir_url(__FILE__).'public/js/sglicense.js', array('jquery'), '1.0.0', true);
251 // Localize the script with new data
252 wp_localize_script('backup-guard-license-js', 'BG_LICENSE_STRINGS', array(
253 'invalidLicense' => _backupGuardT('Please choose a license first', true),
254 'availableLicenses' => _backupGuardT('There are no available licenses for using the selected product', true)
255 ));
256
257 require_once(plugin_dir_path(__FILE__).'public/link_license.php');
258 }
259
260 add_action('admin_enqueue_scripts', 'enqueue_backup_guard_scripts');
261 function enqueue_backup_guard_scripts($hook)
262 {
263 wp_enqueue_script('backup-guard-discount-notice', plugin_dir_url(__FILE__).'public/js/sgNoticeDismiss.js', array('jquery'), '1.0', true);
264
265 if (!strpos($hook,'backup_guard')) {
266 if($hook == "index.php"){
267 wp_enqueue_script('backup-guard-chart-manager', plugin_dir_url(__FILE__).'public/js/Chart.bundle.min.js');
268 }
269 return;
270 }
271
272 wp_enqueue_style('backup-guard-spinner', plugin_dir_url(__FILE__).'public/css/spinner.css');
273 wp_enqueue_style('backup-guard-wordpress', plugin_dir_url(__FILE__).'public/css/bgstyle.wordpress.css');
274 wp_enqueue_style('backup-guard-less', plugin_dir_url(__FILE__).'public/css/bgstyle.less.css');
275 wp_enqueue_style('backup-guard-styles', plugin_dir_url(__FILE__).'public/css/styles.css');
276
277 echo '<script type="text/javascript">sgBackup={};';
278 $sgAjaxRequestFrequency = SGConfig::get('SG_AJAX_REQUEST_FREQUENCY');
279 if (!$sgAjaxRequestFrequency) {
280 $sgAjaxRequestFrequency = SG_AJAX_DEFAULT_REQUEST_FREQUENCY;
281 }
282 echo 'SG_AJAX_REQUEST_FREQUENCY = "'.$sgAjaxRequestFrequency.'";';
283 echo 'function getAjaxUrl(url) {'.
284 'if (url==="cloudDropbox" || url==="cloudGdrive" || url==="cloudOneDrive") return "'.admin_url('admin-post.php?action=backup_guard_').'"+url;'.
285 'return "'.admin_url('admin-ajax.php').'";}</script>';
286
287 wp_enqueue_media();
288 wp_enqueue_script('backup-guard-less-framework', plugin_dir_url(__FILE__).'public/js/less.min.js', array('jquery'), '1.0.0', true);
289 wp_enqueue_script('backup-guard-bootstrap-framework', plugin_dir_url(__FILE__).'public/js/bootstrap.min.js', array('jquery'), '1.0.0', true);
290 wp_enqueue_script('backup-guard-sgrequest-js', plugin_dir_url(__FILE__).'public/js/sgrequesthandler.js', array('jquery'), '1.0.0', true);
291 wp_enqueue_script('backup-guard-sgwprequest-js', plugin_dir_url(__FILE__).'public/js/sgrequesthandler.wordpress.js', array('jquery'), '1.0.0', true);
292
293 wp_enqueue_style('backup-guard-rateyo-css', plugin_dir_url(__FILE__).'public/css/jquery.rateyo.css');
294 wp_enqueue_script('backup-guard-rateyo-js', plugin_dir_url(__FILE__).'public/js/jquery.rateyo.js');
295
296 wp_enqueue_script('backup-guard-main-js', plugin_dir_url(__FILE__).'public/js/main.js', array('jquery'), '1.0.0', true);
297 wp_enqueue_script('backup-popup.js', plugin_dir_url(__FILE__).'public/js/popup.js', array('jquery'), '1.0.0', true);
298 wp_enqueue_style('popupTheme.css', plugin_dir_url(__FILE__).'public/css/popupTheme.css');
299
300 // Localize the script with new data
301 wp_localize_script('backup-guard-main-js', 'BG_MAIN_STRINGS', array(
302 'confirmCancel' => _backupGuardT('Are you sure you want to cancel?', true)
303 ));
304
305 wp_localize_script('backup-guard-main-js', 'BG_BACKUP_STRINGS', array(
306 'nonce' => wp_create_nonce('backupGuardAjaxNonce')
307 ));
308 }
309
310 // adding actions to handle modal ajax requests
311 add_action( 'wp_ajax_backup_guard_modalManualBackup', 'backup_guard_get_manual_modal');
312 add_action( 'wp_ajax_backup_guard_modalManualRestore', 'backup_guard_get_manual_restore_modal');
313 add_action( 'wp_ajax_backup_guard_modalImport', 'backup_guard_get_import_modal');
314 add_action( 'wp_ajax_backup_guard_modalFtpSettings', 'backup_guard_get_ftp_modal');
315 add_action( 'wp_ajax_backup_guard_modalAmazonSettings', 'backup_guard_get_amazon_modal');
316 add_action( 'wp_ajax_backup_guard_modalPrivacy', 'backup_guard_get_privacy_modal');
317 add_action( 'wp_ajax_backup_guard_modalTerms', 'backup_guard_get_terms_modal');
318 add_action( 'wp_ajax_backup_guard_modalReview', 'backup_guard_get_review_modal');
319 add_action( 'wp_ajax_backup_guard_getFileDownloadProgress', 'backup_guard_get_file_download_progress');
320 add_action( 'wp_ajax_backup_guard_modalCreateSchedule', 'backup_guard_create_schedule');
321 add_action( 'wp_ajax_backup_guard_getBackupContent', 'backup_guard_get_backup_content');
322
323 function backup_guard_get_file_download_progress()
324 {
325 check_ajax_referer('backupGuardAjaxNonce', 'token');
326 require_once(SG_PUBLIC_AJAX_PATH.'getFileDownloadProgress.php');
327 exit();
328 }
329
330 function backup_guard_create_schedule()
331 {
332 check_ajax_referer('backupGuardAjaxNonce', 'token');
333 require_once(SG_PUBLIC_AJAX_PATH.'modalCreateSchedule.php');
334 exit();
335 }
336
337 function backup_guard_get_manual_modal()
338 {
339 check_ajax_referer('backupGuardAjaxNonce', 'token');
340 require_once(SG_PUBLIC_AJAX_PATH.'modalManualBackup.php');
341 exit();
342 }
343
344 function backup_guard_get_manual_restore_modal()
345 {
346 check_ajax_referer('backupGuardAjaxNonce', 'token');
347 require_once(SG_PUBLIC_AJAX_PATH.'modalManualRestore.php');
348 exit();
349 }
350
351 function backup_guard_get_backup_content()
352 {
353 check_ajax_referer('backupGuardAjaxNonce', 'token');
354 require_once (SG_PUBLIC_AJAX_PATH.'getBackupContent.php');
355 exit();
356 }
357
358 function backup_guard_get_import_modal()
359 {
360 check_ajax_referer('backupGuardAjaxNonce', 'token');
361 require_once(SG_PUBLIC_AJAX_PATH.'modalImport.php');
362 exit();
363 }
364
365 function backup_guard_get_ftp_modal()
366 {
367 check_ajax_referer('backupGuardAjaxNonce', 'token');
368 require_once(SG_PUBLIC_AJAX_PATH.'modalFtpSettings.php');
369 exit();
370 }
371
372 function backup_guard_get_amazon_modal()
373 {
374 check_ajax_referer('backupGuardAjaxNonce', 'token');
375 require_once(SG_PUBLIC_AJAX_PATH.'modalAmazonSettings.php');
376 exit();
377 }
378
379 function backup_guard_get_privacy_modal()
380 {
381 require_once(SG_PUBLIC_AJAX_PATH.'modalPrivacy.php');
382 }
383
384 function backup_guard_get_terms_modal()
385 {
386 require_once(SG_PUBLIC_AJAX_PATH.'modalTerms.php');
387 exit();
388 }
389
390 function backup_guard_get_review_modal()
391 {
392 check_ajax_referer('backupGuardAjaxNonce', 'token');
393 require_once(SG_PUBLIC_AJAX_PATH.'modalReview.php');
394 exit();
395 }
396
397 function backup_guard_register_ajax_callbacks()
398 {
399 if (is_super_admin()) {
400 // adding actions to handle ajax and post requests
401 add_action('wp_ajax_backup_guard_cancelBackup', 'backup_guard_cancel_backup');
402 add_action('wp_ajax_backup_guard_checkBackupCreation', 'backup_guard_check_backup_creation');
403 add_action('wp_ajax_backup_guard_checkRestoreCreation', 'backup_guard_check_restore_creation');
404 add_action('wp_ajax_backup_guard_cloudDropbox', 'backup_guard_cloud_dropbox');
405 add_action('wp_ajax_backup_guard_cloudGdrive', 'backup_guard_cloud_gdrive');
406 add_action('wp_ajax_backup_guard_cloudOneDrive', 'backup_guard_cloud_oneDrive');
407 add_action('wp_ajax_backup_guard_cloudFtp', 'backup_guard_cloud_ftp');
408 add_action('wp_ajax_backup_guard_cloudAmazon', 'backup_guard_cloud_amazon');
409 add_action('wp_ajax_backup_guard_curlChecker', 'backup_guard_curl_checker');
410 add_action('wp_ajax_backup_guard_deleteBackup', 'backup_guard_delete_backup');
411 add_action('wp_ajax_backup_guard_getAction', 'backup_guard_get_action');
412 add_action('wp_ajax_backup_guard_getRunningActions', 'backup_guard_get_running_actions');
413 add_action('wp_ajax_backup_guard_importBackup', 'backup_guard_get_import_backup');
414 add_action('wp_ajax_backup_guard_resetStatus', 'backup_guard_reset_status');
415 add_action('wp_ajax_backup_guard_restore', 'backup_guard_restore');
416 add_action('wp_ajax_backup_guard_saveCloudFolder', 'backup_guard_save_cloud_folder');
417 add_action('wp_ajax_backup_guard_schedule', 'backup_guard_schedule');
418 add_action('wp_ajax_backup_guard_settings', 'backup_guard_settings');
419 add_action('wp_ajax_backup_guard_setReviewPopupState', 'backup_guard_set_review_popup_state');
420 add_action('wp_ajax_backup_guard_sendUsageStatistics', 'backup_guard_send_usage_statistics');
421 add_action('wp_ajax_backup_guard_hideNotice', 'backup_guard_hide_notice');
422 add_action('wp_ajax_backup_guard_downloadFromCloud', 'backup_guard_download_from_cloud');
423 add_action('wp_ajax_backup_guard_listStorage', 'backup_guard_list_storage');
424 add_action('wp_ajax_backup_guard_cancelDownload', 'backup_guard_cancel_download');
425 add_action('wp_ajax_backup_guard_awake', 'backup_guard_awake');
426 add_action('wp_ajax_backup_guard_manualBackup', 'backup_guard_manual_backup');
427 add_action('admin_post_backup_guard_downloadBackup', 'backup_guard_download_backup');
428 add_action('wp_ajax_backup_guard_login', 'backup_guard_login');
429 add_action('wp_ajax_backup_guard_logout', 'backup_guard_logout');
430 add_action('wp_ajax_backup_guard_link_license', 'backup_guard_link_license');
431 add_action('wp_ajax_backup_guard_importKeyFile', 'backup_guard_import_key_file');
432 add_action('wp_ajax_backup_guard_isFeatureAvailable', 'backup_guard_is_feature_available');
433 add_action('wp_ajax_backup_guard_dismiss_discount_notice', 'backup_guard_dismiss_discount_notice');
434 add_action('wp_ajax_backup_guard_checkPHPVersionCompatibility', 'backup_guard_check_php_version_compatibility');
435 add_action('wp_ajax_backup_guard_setUserInfoVerificationPopupState', 'backup_guard_set_user_info_verification_popup_state');
436 add_action('wp_ajax_backup_guard_storeSubscriberInfo', 'backup_guard_store_subscriber_info');
437 add_action('wp_ajax_backup_guard_storeSurveyResult', 'backup_guard_store_survey_result');
438 add_action('wp_ajax_backup_guard_reviewDontShow', 'backup_guard_review_dont_show');
439 add_action('wp_ajax_backup_guard_review_later', 'backup_guard_review_later');
440 add_action('wp_ajax_backup_guard_closeFreeBanner', 'closeFreeBanner');
441 }
442 }
443
444 function closeFreeBanner()
445 {
446 check_ajax_referer('backupGuardAjaxNonce', 'token');
447 SGConfig::set('SG_CLOSE_FREE_BANNER', 1);
448 wp_die();
449 }
450
451 function backup_guard_review_dont_show()
452 {
453 check_ajax_referer('backupGuardAjaxNonce', 'token');
454 SGConfig::set('closeReviewBanner', 1);
455 wp_die();
456 }
457
458 function backup_guard_review_later()
459 {
460 check_ajax_referer('backupGuardAjaxNonce', 'token');
461 require_once(SG_PUBLIC_AJAX_PATH.'reviewBannerActions.php');
462 wp_die();
463 }
464
465 function backup_guard_store_survey_result()
466 {
467 check_ajax_referer('backupGuardAjaxNonce', 'token');
468 require_once(SG_PUBLIC_AJAX_PATH.'storeSurveyResult.php');
469 }
470
471 function backup_guard_store_subscriber_info()
472 {
473 check_ajax_referer('backupGuardAjaxNonce', 'token');
474 require_once(SG_PUBLIC_AJAX_PATH.'storeSubscriberInfo.php');
475 }
476
477 function backup_guard_set_user_info_verification_popup_state()
478 {
479 check_ajax_referer('backupGuardAjaxNonce', 'token');
480 require_once(SG_PUBLIC_AJAX_PATH.'setUserInfoVerificationPopupState.php');
481 }
482
483 function backup_guard_dismiss_discount_notice()
484 {
485 check_ajax_referer('backupGuardAjaxNonce', 'token');
486 require_once(SG_PUBLIC_AJAX_PATH.'dismissDiscountNotice.php');
487 }
488
489 function backup_guard_is_feature_available()
490 {
491 require_once(SG_PUBLIC_AJAX_PATH.'isFeatureAvailable.php');
492 }
493
494 function backup_guard_check_php_version_compatibility()
495 {
496 check_ajax_referer('backupGuardAjaxNonce', 'token');
497 require_once(SG_PUBLIC_AJAX_PATH.'checkPHPVersionCompatibility.php');
498 }
499
500 add_action('init', 'backup_guard_init');
501 add_action('wp_ajax_nopriv_backup_guard_awake', 'backup_guard_awake_nopriv');
502 add_action('admin_post_backup_guard_cloudDropbox', 'backup_guard_cloud_dropbox');
503 add_action('admin_post_backup_guard_cloudGdrive', 'backup_guard_cloud_gdrive');
504 add_action('admin_post_backup_guard_cloudOneDrive', 'backup_guard_cloud_oneDrive');
505
506 function backup_guard_cloud_oneDrive()
507 {
508 require_once(SG_PUBLIC_AJAX_PATH.'cloudOneDrive.php');
509 }
510
511 function backup_guard_import_key_file()
512 {
513 require_once(SG_PUBLIC_AJAX_PATH.'importKeyFile.php');
514 }
515
516 function backup_guard_awake()
517 {
518 $method = SG_RELOAD_METHOD_AJAX;
519 require_once(SG_PUBLIC_AJAX_PATH.'awake.php');
520 }
521
522 function backup_guard_awake_nopriv()
523 {
524 $token = @$_GET['token'];
525 $method = @$_GET['method'];
526
527 if (backupGuardValidateApiCall($token)) {
528 require_once(SG_PUBLIC_AJAX_PATH.'awake.php');
529 }
530 }
531
532 function backup_guard_cancel_download()
533 {
534 check_ajax_referer('backupGuardAjaxNonce', 'token');
535 require_once(SG_PUBLIC_AJAX_PATH.'cancelDownload.php');
536 }
537
538 function backup_guard_list_storage()
539 {
540 check_ajax_referer('backupGuardAjaxNonce', 'token');
541 require_once(SG_PUBLIC_AJAX_PATH.'listStorage.php');
542 }
543
544 function backup_guard_download_from_cloud()
545 {
546 check_ajax_referer('backupGuardAjaxNonce', 'token');
547 require_once(SG_PUBLIC_AJAX_PATH.'downloadFromCloud.php');
548 }
549
550 function backup_guard_hide_notice()
551 {
552 check_ajax_referer('backupGuardAjaxNonce', 'token');
553 require_once(SG_PUBLIC_AJAX_PATH.'hideNotice.php');
554 }
555
556 function backup_guard_cancel_backup()
557 {
558 check_ajax_referer('backupGuardAjaxNonce', 'token');
559 require_once(SG_PUBLIC_AJAX_PATH.'cancelBackup.php');
560 }
561
562 function backup_guard_check_backup_creation()
563 {
564 check_ajax_referer('backupGuardAjaxNonce', 'token');
565 require_once(SG_PUBLIC_AJAX_PATH.'checkBackupCreation.php');
566 }
567
568 function backup_guard_check_restore_creation()
569 {
570 check_ajax_referer('backupGuardAjaxNonce', 'token');
571 require_once(SG_PUBLIC_AJAX_PATH.'checkRestoreCreation.php');
572 }
573
574 function backup_guard_cloud_dropbox()
575 {
576 require_once(SG_PUBLIC_AJAX_PATH.'cloudDropbox.php');
577 }
578
579 function backup_guard_cloud_ftp()
580 {
581 require_once(SG_PUBLIC_AJAX_PATH.'cloudFtp.php');
582 }
583
584 function backup_guard_cloud_amazon()
585 {
586 require_once(SG_PUBLIC_AJAX_PATH.'cloudAmazon.php');
587 }
588
589 function backup_guard_cloud_gdrive()
590 {
591 require_once(SG_PUBLIC_AJAX_PATH.'cloudGdrive.php');
592 }
593
594 function backup_guard_curl_checker()
595 {
596 check_ajax_referer('backupGuardAjaxNonce', 'token');
597 require_once(SG_PUBLIC_AJAX_PATH.'curlChecker.php');
598 }
599
600 function backup_guard_delete_backup()
601 {
602 check_ajax_referer('backupGuardAjaxNonce', 'token');
603 require_once(SG_PUBLIC_AJAX_PATH.'deleteBackup.php');
604 }
605
606 function backup_guard_download_backup()
607 {
608 require_once(SG_PUBLIC_AJAX_PATH.'downloadBackup.php');
609 }
610
611 function backup_guard_get_action()
612 {
613 check_ajax_referer('backupGuardAjaxNonce', 'token');
614 require_once(SG_PUBLIC_AJAX_PATH.'getAction.php');
615 }
616
617 function backup_guard_get_running_actions()
618 {
619 require_once(SG_PUBLIC_AJAX_PATH.'getRunningActions.php');
620 }
621
622 function backup_guard_get_import_backup()
623 {
624 require_once(SG_PUBLIC_AJAX_PATH.'importBackup.php');
625 }
626
627 function backup_guard_manual_backup()
628 {
629 check_ajax_referer('backupGuardAjaxNonce', 'token');
630 require_once(SG_PUBLIC_AJAX_PATH.'manualBackup.php');
631 }
632
633 function backup_guard_reset_status()
634 {
635 check_ajax_referer('backupGuardAjaxNonce', 'token');
636 require_once(SG_PUBLIC_AJAX_PATH.'resetStatus.php');
637 }
638
639 function backup_guard_restore()
640 {
641 require_once(SG_PUBLIC_AJAX_PATH.'restore.php');
642 }
643
644 function backup_guard_save_cloud_folder()
645 {
646 check_ajax_referer('backupGuardAjaxNonce', 'token');
647 require_once(SG_PUBLIC_AJAX_PATH.'saveCloudFolder.php');
648 }
649
650 function backup_guard_schedule()
651 {
652 require_once(SG_PUBLIC_AJAX_PATH.'schedule.php');
653 }
654
655 function backup_guard_settings()
656 {
657 require_once(SG_PUBLIC_AJAX_PATH.'settings.php');
658 }
659
660 function backup_guard_set_review_popup_state()
661 {
662 check_ajax_referer('backupGuardAjaxNonce', 'token');
663 require_once(SG_PUBLIC_AJAX_PATH.'setReviewPopupState.php');
664 }
665
666 function backup_guard_send_usage_statistics()
667 {
668 require_once(SG_PUBLIC_AJAX_PATH.'sendUsageStatistics.php');
669 }
670
671 function backup_guard_login()
672 {
673 check_ajax_referer('backupGuardAjaxNonce', 'token');
674 require_once(SG_PUBLIC_AJAX_PATH.'login.php');
675 }
676
677 function backup_guard_logout()
678 {
679 check_ajax_referer('backupGuardAjaxNonce', 'token');
680 require_once(SG_PUBLIC_AJAX_PATH.'logout.php');
681 }
682
683 function backup_guard_link_license()
684 {
685 check_ajax_referer('backupGuardAjaxNonce', 'token');
686 require_once(SG_PUBLIC_AJAX_PATH.'linkLicense.php');
687 }
688
689 //adds once weekly to the existing schedules.
690 add_filter('cron_schedules', 'backup_guard_cron_add_weekly');
691 function backup_guard_cron_add_weekly($schedules)
692 {
693 $schedules['weekly'] = array(
694 'interval' => 60*60*24*7,
695 'display' => 'Once weekly'
696 );
697 return $schedules;
698 }
699
700 //adds once monthly to the existing schedules.
701 add_filter('cron_schedules', 'backup_guard_cron_add_monthly');
702 function backup_guard_cron_add_monthly($schedules)
703 {
704 $schedules['monthly'] = array(
705 'interval' => 60*60*24*30,
706 'display' => 'Once monthly'
707 );
708 return $schedules;
709 }
710
711 //adds once yearly to the existing schedules.
712 add_filter('cron_schedules', 'backup_guard_cron_add_yearly');
713 function backup_guard_cron_add_yearly($schedules)
714 {
715 $schedules['yearly'] = array(
716 'interval' => 60*60*24*30*12,
717 'display' => 'Once yearly'
718 );
719 return $schedules;
720 }
721
722 function backup_guard_init()
723 {
724 backup_guard_register_ajax_callbacks();
725 // backupGuardPluginRedirect();
726
727 //check if database should be updated
728 if (backupGuardShouldUpdate()) {
729 SGBoot::install();
730 }
731
732 backupGuardSymlinksCleanup(SG_SYMLINK_PATH);
733 }
734
735 add_action(SG_SCHEDULE_ACTION, 'backup_guard_schedule_action', 10, 1);
736
737 function backup_guard_schedule_action($id)
738 {
739 require_once(SG_PUBLIC_PATH.'cron/sg_backup.php');
740 }
741
742 //load pro plugin updater
743 $pluginCapabilities = backupGuardGetCapabilities();
744 if ($pluginCapabilities != BACKUP_GUARD_CAPABILITIES_FREE) {
745 require_once(dirname(__FILE__).'/plugin-update-checker/plugin-update-checker.php');
746 require_once(dirname(__FILE__).'/plugin-update-checker/Puc/v4/Utils.php');
747 require_once(SG_LIB_PATH.'SGAuthClient.php');
748
749 $licenseKey = SGConfig::get('SG_LICENSE_KEY');
750
751 $updateChecker = Puc_v4_Factory::buildUpdateChecker(
752 BackupGuard\Config::URL.'/products/details/'.$licenseKey,
753 SG_BACKUP_GUARD_MAIN_FILE,
754 SG_PRODUCT_IDENTIFIER
755 );
756
757 $updateChecker->addHttpRequestArgFilter(array(
758 SGAuthClient::getInstance(),
759 'filterUpdateChecks'
760 ));
761 }
762
763 if (SGBoot::isFeatureAvailable('ALERT_BEFORE_UPDATE')) {
764 add_filter('upgrader_pre_download', 'backupGuardOnBeforeUpdateDownload', 10, 3);
765 add_action('core_upgrade_preamble', 'backupGuardOnUpgradeScreenActivate');
766 add_action('current_screen', 'backupGuardOnScreenActivate');
767 }
768
769 // Register the new dashboard widget with the 'wp_dashboard_setup' action
770 add_action('wp_dashboard_setup', 'backup_guard_add_dashboard_widgets');
771
772 function backup_guard_add_dashboard_widgets()
773 {
774 require_once(SG_CORE_PATH.'SGConfig.php');
775
776 $userId = get_current_user_id();
777 $userData = get_userdata($userId);
778 $userRoles = $userData->roles;
779 $isAdminUser = false;
780 for($i = 0; $i < count($userRoles); $i++) {
781 if ($userRoles[$i] == "administrator") {
782 $isAdminUser = true;
783 break;
784 }
785 }
786
787 if (!$isAdminUser ) {
788 return;
789 }
790
791 $isShowStatisticsWidgetEnabled = SGConfig::get('SG_SHOW_STATISTICS_WIDGET');
792 if (!$isShowStatisticsWidgetEnabled) {
793 return;
794 }
795
796
797 require_once(plugin_dir_path( __FILE__ ).'public/dashboardWidget.php');
798 wp_add_dashboard_widget('backupGuardWidget', 'Backup Guard', 'backup_guard_dashboard_widget_function');
799 }
800
801 add_action('plugins_loaded', 'backupGuardloadTextDomain');
802 function backupGuardloadTextDomain()
803 {
804 $backupGuardLangDir = plugin_dir_path(__FILE__).'languages/';
805 $backupGuardLangDir = apply_filters('backupguardLanguagesDirectory', $backupGuardLangDir);
806
807 $locale = apply_filters('bg_plugin_locale', get_locale(), BACKUP_GUARD_TEXTDOMAIN);
808 $mofile = sprintf('%1$s-%2$s.mo', BACKUP_GUARD_TEXTDOMAIN, $locale);
809
810 $mofileLocal = $backupGuardLangDir.$mofile;
811
812 if (file_exists($mofileLocal)) {
813 // Look in local /wp-content/plugins/popup-builder/languages/ folder
814 load_textdomain(BACKUP_GUARD_TEXTDOMAIN, $mofileLocal);
815 }
816 else {
817 // Load the default language files
818 load_plugin_textdomain(BACKUP_GUARD_TEXTDOMAIN, false, $backupGuardLangDir);
819 }
820 }
821
822 if (backupGuardShouldShowDiscountNotice() && checkDueDateDiscount()) {
823 add_action('admin_notices', 'backup_guard_discount_notice');
824 }
825
826 function backup_guard_discount_notice()
827 {
828 $capabilities = backupGuardGetCapabilities();
829 $upgradeUrl = BG_UPGRADE_URL;
830 ?>
831 <div class="backup-guard-discount-notice updated notice is-dismissible">
832 <div class="sgbg-col sgbg-col1"></div>
833 <div class="sgbg-col sgbg-col2"></div>
834 <div class="sgbg-col sgbg-col3">
835 <div class="sgbg-text-col-1">
836 -50%
837 </div>
838 <div class="sgbg-text-col-2">
839 <div class="sgbg-discount-text-1">Discount</div>
840 <div class="sgbg-discount-text-2">All Backup Guard Solutions</div>
841 </div>
842 </div>
843 <div class="sgbg-col sgbg-col4">
844 <a href="https://backup-guard.com/products/backup-wordpress" target="_blank"><button class="sgbg-button">Click Here</button></a>
845 </div>
846 </div>
847 <style>
848 .backup-guard-discount-notice.updated.notice.is-dismissible {
849 padding: 0;
850 border-left-color: #FFFFFF !important;
851 background-color: #000000;
852 height: 160px;
853 }
854 .backup-guard-discount-notice button:before {
855 color: #ffffff !important;
856 }
857 .sgbg-col {
858 display: inline-block;
859 width: 25%;
860 height: 100%;
861 padding: 0 25px;
862 box-sizing: border-box;
863 }
864 .sgbg-col1 {
865 width: 10%;
866 background-color: #FFFFFF;
867 background-image: url("<?php echo SG_IMAGE_URL ?>BgBFLogo.jpg");
868 background-size: 80%;
869 background-repeat: no-repeat;
870 background-position: center;
871 }
872 .sgbg-col2 {
873 width: 20%;
874 background-image: url("<?php echo SG_IMAGE_URL ?>BF.png");
875 background-size: contain;
876 margin-left: 70px;
877 background-position: center;
878 background-repeat: no-repeat;
879 }
880 .sgbg-col3 {
881 vertical-align: top;
882 width: 45%;
883 margin-top: 55px;
884 }
885 .sgbg-col4 {
886 width: 10%;
887 }
888 .sgbg-text-col-1,
889 .sgbg-text-col-2 {
890 width: 49%;
891 display: inline-block;
892 color: #FFFFFF;
893 }
894 .sgbg-text-col-1 {
895 font-size: 100px;
896 line-height: 0;
897 font-weight: bold;
898 text-align: right;
899 padding-right: 26px;
900 box-sizing: border-box;
901 }
902 .sgbg-discount-text-2 {
903 font-size: 19px;
904 }
905 .sgbg-discount-text-1 {
906 font-size: 60px;
907 padding-bottom: 27px;
908 font-weight: bold;
909 }
910 .sgbg-col4 {
911 vertical-align: top;
912 }
913 .sgbg-button {
914 width: 183px;
915 height: 67px;
916 font-size: 20px;
917 border: #ffffff;
918 border-radius: 10px;
919 margin-top: 48px;
920 background-color: #FFFFFF;
921 color: #000000;
922 cursor: pointer !important;
923 }
924 .sgbg-button:hover {
925 background-color: #000000;
926 border: 1px solid #FFFFFF;
927 color: #FFFFFF;
928 }
929 .backup-guard-discount-notice .notice-dismiss::before {
930 content: "x";
931 font-weight: 300;
932 font-family: Arial, sans-serif;
933 }
934
935 @media (max-width: 1810px) {
936 .sgbg-text-col-1 {
937 font-size: 80px;
938 }
939 .sgbg-discount-text-1 {
940 font-size: 43px;
941 }
942 .sgbg-discount-text-2 {
943 font-size: 15px;
944 }
945 .sgbg-discount-text-1 {
946 padding-bottom: 18px;
947 }
948 .sgbg-col3 {
949 margin-top: 60px;
950 }
951 }
952 @media (max-width: 1477px) {
953 .sgbg-discount-text-2 {
954 font-size: 12px;
955 }
956 .sgbg-discount-text-1 {
957 font-size: 35px;
958 }
959 .sgbg-discount-text-1 {
960 padding-bottom: 13px;
961 }
962 .sgbg-col {
963 padding: 0;
964 }
965 .sgbg-col2 {
966 margin-left: 40px;
967 }
968 .sgbg-col2 {
969 margin-left: 0;
970 }
971 }
972 </style>
973 <?php
974 }
975
976 add_action('admin_notices', 'backup_guard_review_banner');
977 function backup_guard_review_banner()
978 {
979 require_once(SG_LIB_PATH.'SGReviewManager.php');
980 $reviewManager = new SGReviewManager();
981 $reviewManager->renderContent();
982 }