PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 1.3.1
JetBackup – Backup, Restore & Migrate v1.3.1
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
974 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 }
441 }
442
443 function backup_guard_review_dont_show()
444 {
445 check_ajax_referer('backupGuardAjaxNonce', 'token');
446 SGConfig::set('closeReviewBanner', 1);
447 wp_die();
448 }
449
450 function backup_guard_review_later()
451 {
452 check_ajax_referer('backupGuardAjaxNonce', 'token');
453 require_once(SG_PUBLIC_AJAX_PATH.'reviewBannerActions.php');
454 wp_die();
455 }
456
457 function backup_guard_store_survey_result()
458 {
459 check_ajax_referer('backupGuardAjaxNonce', 'token');
460 require_once(SG_PUBLIC_AJAX_PATH.'storeSurveyResult.php');
461 }
462
463 function backup_guard_store_subscriber_info()
464 {
465 check_ajax_referer('backupGuardAjaxNonce', 'token');
466 require_once(SG_PUBLIC_AJAX_PATH.'storeSubscriberInfo.php');
467 }
468
469 function backup_guard_set_user_info_verification_popup_state()
470 {
471 check_ajax_referer('backupGuardAjaxNonce', 'token');
472 require_once(SG_PUBLIC_AJAX_PATH.'setUserInfoVerificationPopupState.php');
473 }
474
475 function backup_guard_dismiss_discount_notice()
476 {
477 check_ajax_referer('backupGuardAjaxNonce', 'token');
478 require_once(SG_PUBLIC_AJAX_PATH.'dismissDiscountNotice.php');
479 }
480
481 function backup_guard_is_feature_available()
482 {
483 require_once(SG_PUBLIC_AJAX_PATH.'isFeatureAvailable.php');
484 }
485
486 function backup_guard_check_php_version_compatibility()
487 {
488 check_ajax_referer('backupGuardAjaxNonce', 'token');
489 require_once(SG_PUBLIC_AJAX_PATH.'checkPHPVersionCompatibility.php');
490 }
491
492 add_action('init', 'backup_guard_init');
493 add_action('wp_ajax_nopriv_backup_guard_awake', 'backup_guard_awake_nopriv');
494 add_action('admin_post_backup_guard_cloudDropbox', 'backup_guard_cloud_dropbox');
495 add_action('admin_post_backup_guard_cloudGdrive', 'backup_guard_cloud_gdrive');
496 add_action('admin_post_backup_guard_cloudOneDrive', 'backup_guard_cloud_oneDrive');
497
498 function backup_guard_cloud_oneDrive()
499 {
500 require_once(SG_PUBLIC_AJAX_PATH.'cloudOneDrive.php');
501 }
502
503 function backup_guard_import_key_file()
504 {
505 require_once(SG_PUBLIC_AJAX_PATH.'importKeyFile.php');
506 }
507
508 function backup_guard_awake()
509 {
510 $method = SG_RELOAD_METHOD_AJAX;
511 require_once(SG_PUBLIC_AJAX_PATH.'awake.php');
512 }
513
514 function backup_guard_awake_nopriv()
515 {
516 $token = @$_GET['token'];
517 $method = @$_GET['method'];
518
519 if (backupGuardValidateApiCall($token)) {
520 require_once(SG_PUBLIC_AJAX_PATH.'awake.php');
521 }
522 }
523
524 function backup_guard_cancel_download()
525 {
526 check_ajax_referer('backupGuardAjaxNonce', 'token');
527 require_once(SG_PUBLIC_AJAX_PATH.'cancelDownload.php');
528 }
529
530 function backup_guard_list_storage()
531 {
532 check_ajax_referer('backupGuardAjaxNonce', 'token');
533 require_once(SG_PUBLIC_AJAX_PATH.'listStorage.php');
534 }
535
536 function backup_guard_download_from_cloud()
537 {
538 check_ajax_referer('backupGuardAjaxNonce', 'token');
539 require_once(SG_PUBLIC_AJAX_PATH.'downloadFromCloud.php');
540 }
541
542 function backup_guard_hide_notice()
543 {
544 check_ajax_referer('backupGuardAjaxNonce', 'token');
545 require_once(SG_PUBLIC_AJAX_PATH.'hideNotice.php');
546 }
547
548 function backup_guard_cancel_backup()
549 {
550 check_ajax_referer('backupGuardAjaxNonce', 'token');
551 require_once(SG_PUBLIC_AJAX_PATH.'cancelBackup.php');
552 }
553
554 function backup_guard_check_backup_creation()
555 {
556 check_ajax_referer('backupGuardAjaxNonce', 'token');
557 require_once(SG_PUBLIC_AJAX_PATH.'checkBackupCreation.php');
558 }
559
560 function backup_guard_check_restore_creation()
561 {
562 check_ajax_referer('backupGuardAjaxNonce', 'token');
563 require_once(SG_PUBLIC_AJAX_PATH.'checkRestoreCreation.php');
564 }
565
566 function backup_guard_cloud_dropbox()
567 {
568 require_once(SG_PUBLIC_AJAX_PATH.'cloudDropbox.php');
569 }
570
571 function backup_guard_cloud_ftp()
572 {
573 require_once(SG_PUBLIC_AJAX_PATH.'cloudFtp.php');
574 }
575
576 function backup_guard_cloud_amazon()
577 {
578 require_once(SG_PUBLIC_AJAX_PATH.'cloudAmazon.php');
579 }
580
581 function backup_guard_cloud_gdrive()
582 {
583 require_once(SG_PUBLIC_AJAX_PATH.'cloudGdrive.php');
584 }
585
586 function backup_guard_curl_checker()
587 {
588 check_ajax_referer('backupGuardAjaxNonce', 'token');
589 require_once(SG_PUBLIC_AJAX_PATH.'curlChecker.php');
590 }
591
592 function backup_guard_delete_backup()
593 {
594 check_ajax_referer('backupGuardAjaxNonce', 'token');
595 require_once(SG_PUBLIC_AJAX_PATH.'deleteBackup.php');
596 }
597
598 function backup_guard_download_backup()
599 {
600 require_once(SG_PUBLIC_AJAX_PATH.'downloadBackup.php');
601 }
602
603 function backup_guard_get_action()
604 {
605 check_ajax_referer('backupGuardAjaxNonce', 'token');
606 require_once(SG_PUBLIC_AJAX_PATH.'getAction.php');
607 }
608
609 function backup_guard_get_running_actions()
610 {
611 require_once(SG_PUBLIC_AJAX_PATH.'getRunningActions.php');
612 }
613
614 function backup_guard_get_import_backup()
615 {
616 require_once(SG_PUBLIC_AJAX_PATH.'importBackup.php');
617 }
618
619 function backup_guard_manual_backup()
620 {
621 check_ajax_referer('backupGuardAjaxNonce', 'token');
622 require_once(SG_PUBLIC_AJAX_PATH.'manualBackup.php');
623 }
624
625 function backup_guard_reset_status()
626 {
627 check_ajax_referer('backupGuardAjaxNonce', 'token');
628 require_once(SG_PUBLIC_AJAX_PATH.'resetStatus.php');
629 }
630
631 function backup_guard_restore()
632 {
633 require_once(SG_PUBLIC_AJAX_PATH.'restore.php');
634 }
635
636 function backup_guard_save_cloud_folder()
637 {
638 check_ajax_referer('backupGuardAjaxNonce', 'token');
639 require_once(SG_PUBLIC_AJAX_PATH.'saveCloudFolder.php');
640 }
641
642 function backup_guard_schedule()
643 {
644 require_once(SG_PUBLIC_AJAX_PATH.'schedule.php');
645 }
646
647 function backup_guard_settings()
648 {
649 require_once(SG_PUBLIC_AJAX_PATH.'settings.php');
650 }
651
652 function backup_guard_set_review_popup_state()
653 {
654 check_ajax_referer('backupGuardAjaxNonce', 'token');
655 require_once(SG_PUBLIC_AJAX_PATH.'setReviewPopupState.php');
656 }
657
658 function backup_guard_send_usage_statistics()
659 {
660 require_once(SG_PUBLIC_AJAX_PATH.'sendUsageStatistics.php');
661 }
662
663 function backup_guard_login()
664 {
665 check_ajax_referer('backupGuardAjaxNonce', 'token');
666 require_once(SG_PUBLIC_AJAX_PATH.'login.php');
667 }
668
669 function backup_guard_logout()
670 {
671 check_ajax_referer('backupGuardAjaxNonce', 'token');
672 require_once(SG_PUBLIC_AJAX_PATH.'logout.php');
673 }
674
675 function backup_guard_link_license()
676 {
677 check_ajax_referer('backupGuardAjaxNonce', 'token');
678 require_once(SG_PUBLIC_AJAX_PATH.'linkLicense.php');
679 }
680
681 //adds once weekly to the existing schedules.
682 add_filter('cron_schedules', 'backup_guard_cron_add_weekly');
683 function backup_guard_cron_add_weekly($schedules)
684 {
685 $schedules['weekly'] = array(
686 'interval' => 60*60*24*7,
687 'display' => 'Once weekly'
688 );
689 return $schedules;
690 }
691
692 //adds once monthly to the existing schedules.
693 add_filter('cron_schedules', 'backup_guard_cron_add_monthly');
694 function backup_guard_cron_add_monthly($schedules)
695 {
696 $schedules['monthly'] = array(
697 'interval' => 60*60*24*30,
698 'display' => 'Once monthly'
699 );
700 return $schedules;
701 }
702
703 //adds once yearly to the existing schedules.
704 add_filter('cron_schedules', 'backup_guard_cron_add_yearly');
705 function backup_guard_cron_add_yearly($schedules)
706 {
707 $schedules['yearly'] = array(
708 'interval' => 60*60*24*30*12,
709 'display' => 'Once yearly'
710 );
711 return $schedules;
712 }
713
714 function backup_guard_init()
715 {
716 backup_guard_register_ajax_callbacks();
717 // backupGuardPluginRedirect();
718
719 //check if database should be updated
720 if (backupGuardShouldUpdate()) {
721 SGBoot::install();
722 }
723
724 backupGuardSymlinksCleanup(SG_SYMLINK_PATH);
725 }
726
727 add_action(SG_SCHEDULE_ACTION, 'backup_guard_schedule_action', 10, 1);
728
729 function backup_guard_schedule_action($id)
730 {
731 require_once(SG_PUBLIC_PATH.'cron/sg_backup.php');
732 }
733
734 //load pro plugin updater
735 $pluginCapabilities = backupGuardGetCapabilities();
736 if ($pluginCapabilities != BACKUP_GUARD_CAPABILITIES_FREE) {
737 require_once(dirname(__FILE__).'/plugin-update-checker/plugin-update-checker.php');
738 require_once(dirname(__FILE__).'/plugin-update-checker/Puc/v4/Utils.php');
739 require_once(SG_LIB_PATH.'SGAuthClient.php');
740
741 $licenseKey = SGConfig::get('SG_LICENSE_KEY');
742
743 $updateChecker = Puc_v4_Factory::buildUpdateChecker(
744 BackupGuard\Config::URL.'/products/details/'.$licenseKey,
745 SG_BACKUP_GUARD_MAIN_FILE,
746 SG_PRODUCT_IDENTIFIER
747 );
748
749 $updateChecker->addHttpRequestArgFilter(array(
750 SGAuthClient::getInstance(),
751 'filterUpdateChecks'
752 ));
753 }
754
755 if (SGBoot::isFeatureAvailable('ALERT_BEFORE_UPDATE')) {
756 add_filter('upgrader_pre_download', 'backupGuardOnBeforeUpdateDownload', 10, 3);
757 add_action('core_upgrade_preamble', 'backupGuardOnUpgradeScreenActivate');
758 add_action('current_screen', 'backupGuardOnScreenActivate');
759 }
760
761 // Register the new dashboard widget with the 'wp_dashboard_setup' action
762 add_action('wp_dashboard_setup', 'backup_guard_add_dashboard_widgets');
763
764 function backup_guard_add_dashboard_widgets()
765 {
766 require_once(SG_CORE_PATH.'SGConfig.php');
767
768 $userId = get_current_user_id();
769 $userData = get_userdata($userId);
770 $userRoles = $userData->roles;
771 $isAdminUser = false;
772 for($i = 0; $i < count($userRoles); $i++) {
773 if ($userRoles[$i] == "administrator") {
774 $isAdminUser = true;
775 break;
776 }
777 }
778
779 if (!$isAdminUser ) {
780 return;
781 }
782
783 $isShowStatisticsWidgetEnabled = SGConfig::get('SG_SHOW_STATISTICS_WIDGET');
784 if (!$isShowStatisticsWidgetEnabled) {
785 return;
786 }
787
788
789 require_once(plugin_dir_path( __FILE__ ).'public/dashboardWidget.php');
790 wp_add_dashboard_widget('backupGuardWidget', 'Backup Guard', 'backup_guard_dashboard_widget_function');
791 }
792
793 add_action('plugins_loaded', 'backupGuardloadTextDomain');
794 function backupGuardloadTextDomain()
795 {
796 $backupGuardLangDir = plugin_dir_path(__FILE__).'languages/';
797 $backupGuardLangDir = apply_filters('backupguardLanguagesDirectory', $backupGuardLangDir);
798
799 $locale = apply_filters('bg_plugin_locale', get_locale(), BACKUP_GUARD_TEXTDOMAIN);
800 $mofile = sprintf('%1$s-%2$s.mo', BACKUP_GUARD_TEXTDOMAIN, $locale);
801
802 $mofileLocal = $backupGuardLangDir.$mofile;
803
804 if (file_exists($mofileLocal)) {
805 // Look in local /wp-content/plugins/popup-builder/languages/ folder
806 load_textdomain(BACKUP_GUARD_TEXTDOMAIN, $mofileLocal);
807 }
808 else {
809 // Load the default language files
810 load_plugin_textdomain(BACKUP_GUARD_TEXTDOMAIN, false, $backupGuardLangDir);
811 }
812 }
813
814 if (backupGuardShouldShowDiscountNotice() && checkDueDateDiscount()) {
815 add_action('admin_notices', 'backup_guard_discount_notice');
816 }
817
818 function backup_guard_discount_notice()
819 {
820 $capabilities = backupGuardGetCapabilities();
821 $upgradeUrl = BG_UPGRADE_URL;
822 ?>
823 <div class="backup-guard-discount-notice updated notice is-dismissible">
824 <div class="sgbg-col sgbg-col1"></div>
825 <div class="sgbg-col sgbg-col2"></div>
826 <div class="sgbg-col sgbg-col3">
827 <div class="sgbg-text-col-1">
828 -50%
829 </div>
830 <div class="sgbg-text-col-2">
831 <div class="sgbg-discount-text-1">Discount</div>
832 <div class="sgbg-discount-text-2">All Backup Guard Solutions</div>
833 </div>
834 </div>
835 <div class="sgbg-col sgbg-col4">
836 <a href="https://backup-guard.com/products/backup-wordpress" target="_blank"><button class="sgbg-button">Click Here</button></a>
837 </div>
838 </div>
839 <style>
840 .backup-guard-discount-notice.updated.notice.is-dismissible {
841 padding: 0;
842 border-left-color: #FFFFFF !important;
843 background-color: #000000;
844 height: 160px;
845 }
846 .backup-guard-discount-notice button:before {
847 color: #ffffff !important;
848 }
849 .sgbg-col {
850 display: inline-block;
851 width: 25%;
852 height: 100%;
853 padding: 0 25px;
854 box-sizing: border-box;
855 }
856 .sgbg-col1 {
857 width: 10%;
858 background-color: #FFFFFF;
859 background-image: url("<?php echo SG_IMAGE_URL ?>BgBFLogo.jpg");
860 background-size: 80%;
861 background-repeat: no-repeat;
862 background-position: center;
863 }
864 .sgbg-col2 {
865 width: 20%;
866 background-image: url("<?php echo SG_IMAGE_URL ?>BF.png");
867 background-size: contain;
868 margin-left: 70px;
869 background-position: center;
870 background-repeat: no-repeat;
871 }
872 .sgbg-col3 {
873 vertical-align: top;
874 width: 45%;
875 margin-top: 55px;
876 }
877 .sgbg-col4 {
878 width: 10%;
879 }
880 .sgbg-text-col-1,
881 .sgbg-text-col-2 {
882 width: 49%;
883 display: inline-block;
884 color: #FFFFFF;
885 }
886 .sgbg-text-col-1 {
887 font-size: 100px;
888 line-height: 0;
889 font-weight: bold;
890 text-align: right;
891 padding-right: 26px;
892 box-sizing: border-box;
893 }
894 .sgbg-discount-text-2 {
895 font-size: 19px;
896 }
897 .sgbg-discount-text-1 {
898 font-size: 60px;
899 padding-bottom: 27px;
900 font-weight: bold;
901 }
902 .sgbg-col4 {
903 vertical-align: top;
904 }
905 .sgbg-button {
906 width: 183px;
907 height: 67px;
908 font-size: 20px;
909 border: #ffffff;
910 border-radius: 10px;
911 margin-top: 48px;
912 background-color: #FFFFFF;
913 color: #000000;
914 cursor: pointer !important;
915 }
916 .sgbg-button:hover {
917 background-color: #000000;
918 border: 1px solid #FFFFFF;
919 color: #FFFFFF;
920 }
921 .backup-guard-discount-notice .notice-dismiss::before {
922 content: "x";
923 font-weight: 300;
924 font-family: Arial, sans-serif;
925 }
926
927 @media (max-width: 1810px) {
928 .sgbg-text-col-1 {
929 font-size: 80px;
930 }
931 .sgbg-discount-text-1 {
932 font-size: 43px;
933 }
934 .sgbg-discount-text-2 {
935 font-size: 15px;
936 }
937 .sgbg-discount-text-1 {
938 padding-bottom: 18px;
939 }
940 .sgbg-col3 {
941 margin-top: 60px;
942 }
943 }
944 @media (max-width: 1477px) {
945 .sgbg-discount-text-2 {
946 font-size: 12px;
947 }
948 .sgbg-discount-text-1 {
949 font-size: 35px;
950 }
951 .sgbg-discount-text-1 {
952 padding-bottom: 13px;
953 }
954 .sgbg-col {
955 padding: 0;
956 }
957 .sgbg-col2 {
958 margin-left: 40px;
959 }
960 .sgbg-col2 {
961 margin-left: 0;
962 }
963 }
964 </style>
965 <?php
966 }
967
968 add_action('admin_notices', 'backup_guard_review_banner');
969 function backup_guard_review_banner()
970 {
971 require_once(SG_LIB_PATH.'SGReviewManager.php');
972 $reviewManager = new SGReviewManager();
973 $reviewManager->renderContent();
974 }