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