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