PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 1.3.9
JetBackup – Backup, Restore & Migrate v1.3.9
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 5 years ago languages 5 years ago public 5 years ago BackupGuard.php 5 years ago README.txt 5 years ago backup.php 5 years ago index.php 5 years ago
BackupGuard.php
988 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 function sgBackupAdminInit() {
743 //load pro plugin updater
744 $pluginCapabilities = backupGuardGetCapabilities();
745 $isLoggedIn = is_user_logged_in();
746
747 if ($pluginCapabilities != BACKUP_GUARD_CAPABILITIES_FREE && $isLoggedIn) {
748 require_once(dirname(__FILE__).'/plugin-update-checker/plugin-update-checker.php');
749 require_once(dirname(__FILE__).'/plugin-update-checker/Puc/v4/Utils.php');
750 require_once(SG_LIB_PATH.'SGAuthClient.php');
751
752 $licenseKey = SGConfig::get('SG_LICENSE_KEY');
753
754 $updateChecker = Puc_v4_Factory::buildUpdateChecker(
755 BackupGuard\Config::URL.'/products/details/'.$licenseKey,
756 SG_BACKUP_GUARD_MAIN_FILE,
757 SG_PRODUCT_IDENTIFIER
758 );
759
760 $updateChecker->addHttpRequestArgFilter(array(
761 SGAuthClient::getInstance(),
762 'filterUpdateChecks'
763 ));
764 }
765 }
766
767 add_action('admin_init', 'sgBackupAdminInit');
768
769 if (SGBoot::isFeatureAvailable('ALERT_BEFORE_UPDATE')) {
770 add_filter('upgrader_pre_download', 'backupGuardOnBeforeUpdateDownload', 10, 3);
771 add_action('core_upgrade_preamble', 'backupGuardOnUpgradeScreenActivate');
772 add_action('current_screen', 'backupGuardOnScreenActivate');
773 }
774
775 // Register the new dashboard widget with the 'wp_dashboard_setup' action
776 add_action('wp_dashboard_setup', 'backup_guard_add_dashboard_widgets');
777
778 function backup_guard_add_dashboard_widgets()
779 {
780 require_once(SG_CORE_PATH.'SGConfig.php');
781
782 $userId = get_current_user_id();
783 $userData = get_userdata($userId);
784 $userRoles = $userData->roles;
785 $isAdminUser = false;
786 for($i = 0; $i < count($userRoles); $i++) {
787 if ($userRoles[$i] == "administrator") {
788 $isAdminUser = true;
789 break;
790 }
791 }
792
793 if (!$isAdminUser ) {
794 return;
795 }
796
797 $isShowStatisticsWidgetEnabled = SGConfig::get('SG_SHOW_STATISTICS_WIDGET');
798 if (!$isShowStatisticsWidgetEnabled) {
799 return;
800 }
801
802
803 require_once(plugin_dir_path( __FILE__ ).'public/dashboardWidget.php');
804 wp_add_dashboard_widget('backupGuardWidget', 'Backup Guard', 'backup_guard_dashboard_widget_function');
805 }
806
807 add_action('plugins_loaded', 'backupGuardloadTextDomain');
808 function backupGuardloadTextDomain()
809 {
810 $backupGuardLangDir = plugin_dir_path(__FILE__).'languages/';
811 $backupGuardLangDir = apply_filters('backupguardLanguagesDirectory', $backupGuardLangDir);
812
813 $locale = apply_filters('bg_plugin_locale', get_locale(), BACKUP_GUARD_TEXTDOMAIN);
814 $mofile = sprintf('%1$s-%2$s.mo', BACKUP_GUARD_TEXTDOMAIN, $locale);
815
816 $mofileLocal = $backupGuardLangDir.$mofile;
817
818 if (file_exists($mofileLocal)) {
819 // Look in local /wp-content/plugins/popup-builder/languages/ folder
820 load_textdomain(BACKUP_GUARD_TEXTDOMAIN, $mofileLocal);
821 }
822 else {
823 // Load the default language files
824 load_plugin_textdomain(BACKUP_GUARD_TEXTDOMAIN, false, $backupGuardLangDir);
825 }
826 }
827
828 if (backupGuardShouldShowDiscountNotice() && checkDueDateDiscount()) {
829 add_action('admin_notices', 'backup_guard_discount_notice');
830 }
831
832 function backup_guard_discount_notice()
833 {
834 $capabilities = backupGuardGetCapabilities();
835 $upgradeUrl = BG_UPGRADE_URL;
836 ?>
837 <div class="backup-guard-discount-notice updated notice is-dismissible">
838 <div class="sgbg-col sgbg-col1"></div>
839 <div class="sgbg-col sgbg-col2"></div>
840 <div class="sgbg-col sgbg-col3">
841 <div class="sgbg-text-col-1">
842 -50%
843 </div>
844 <div class="sgbg-text-col-2">
845 <div class="sgbg-discount-text-1">Discount</div>
846 <div class="sgbg-discount-text-2">All Backup Guard Solutions</div>
847 </div>
848 </div>
849 <div class="sgbg-col sgbg-col4">
850 <a href="https://backup-guard.com/products/backup-wordpress" target="_blank"><button class="sgbg-button">Click Here</button></a>
851 </div>
852 </div>
853 <style>
854 .backup-guard-discount-notice.updated.notice.is-dismissible {
855 padding: 0;
856 border-left-color: #FFFFFF !important;
857 background-color: #000000;
858 height: 160px;
859 }
860 .backup-guard-discount-notice button:before {
861 color: #ffffff !important;
862 }
863 .sgbg-col {
864 display: inline-block;
865 width: 25%;
866 height: 100%;
867 padding: 0 25px;
868 box-sizing: border-box;
869 }
870 .sgbg-col1 {
871 width: 10%;
872 background-color: #FFFFFF;
873 background-image: url("<?php echo SG_IMAGE_URL ?>BgBFLogo.jpg");
874 background-size: 80%;
875 background-repeat: no-repeat;
876 background-position: center;
877 }
878 .sgbg-col2 {
879 width: 20%;
880 background-image: url("<?php echo SG_IMAGE_URL ?>BF.png");
881 background-size: contain;
882 margin-left: 70px;
883 background-position: center;
884 background-repeat: no-repeat;
885 }
886 .sgbg-col3 {
887 vertical-align: top;
888 width: 45%;
889 margin-top: 55px;
890 }
891 .sgbg-col4 {
892 width: 10%;
893 }
894 .sgbg-text-col-1,
895 .sgbg-text-col-2 {
896 width: 49%;
897 display: inline-block;
898 color: #FFFFFF;
899 }
900 .sgbg-text-col-1 {
901 font-size: 100px;
902 line-height: 0;
903 font-weight: bold;
904 text-align: right;
905 padding-right: 26px;
906 box-sizing: border-box;
907 }
908 .sgbg-discount-text-2 {
909 font-size: 19px;
910 }
911 .sgbg-discount-text-1 {
912 font-size: 60px;
913 padding-bottom: 27px;
914 font-weight: bold;
915 }
916 .sgbg-col4 {
917 vertical-align: top;
918 }
919 .sgbg-button {
920 width: 183px;
921 height: 67px;
922 font-size: 20px;
923 border: #ffffff;
924 border-radius: 10px;
925 margin-top: 48px;
926 background-color: #FFFFFF;
927 color: #000000;
928 cursor: pointer !important;
929 }
930 .sgbg-button:hover {
931 background-color: #000000;
932 border: 1px solid #FFFFFF;
933 color: #FFFFFF;
934 }
935 .backup-guard-discount-notice .notice-dismiss::before {
936 content: "x";
937 font-weight: 300;
938 font-family: Arial, sans-serif;
939 }
940
941 @media (max-width: 1810px) {
942 .sgbg-text-col-1 {
943 font-size: 80px;
944 }
945 .sgbg-discount-text-1 {
946 font-size: 43px;
947 }
948 .sgbg-discount-text-2 {
949 font-size: 15px;
950 }
951 .sgbg-discount-text-1 {
952 padding-bottom: 18px;
953 }
954 .sgbg-col3 {
955 margin-top: 60px;
956 }
957 }
958 @media (max-width: 1477px) {
959 .sgbg-discount-text-2 {
960 font-size: 12px;
961 }
962 .sgbg-discount-text-1 {
963 font-size: 35px;
964 }
965 .sgbg-discount-text-1 {
966 padding-bottom: 13px;
967 }
968 .sgbg-col {
969 padding: 0;
970 }
971 .sgbg-col2 {
972 margin-left: 40px;
973 }
974 .sgbg-col2 {
975 margin-left: 0;
976 }
977 }
978 </style>
979 <?php
980 }
981
982 add_action('admin_notices', 'backup_guard_review_banner');
983 function backup_guard_review_banner()
984 {
985 require_once(SG_LIB_PATH.'SGReviewManager.php');
986 $reviewManager = new SGReviewManager();
987 $reviewManager->renderContent();
988 }