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