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