PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 1.4.2
JetBackup – Backup, Restore & Migrate v1.4.2
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
974 lines
1 <?php
2
3 // hook to wordpres widget
4 function backup_guard_register_widget()
5 {
6 if (!class_exists('SGWordPressWidget')) {
7 @include_once(SG_WIDGET_PATH.'SGWordPressWidget.php');
8 }
9
10 register_widget('SGWordPressWidget');
11 }
12 add_action('widgets_init', 'backup_guard_register_widget');
13
14 //The code that runs during plugin activation.
15 function activate_backup_guard()
16 {
17 //check if database should be updated
18 if (backupGuardShouldUpdate()) {
19 SGBoot::install();
20 SGBoot::didInstallForFirstTime();
21 }
22 }
23
24 // The code that runs during plugin deactivation.
25 function uninstall_backup_guard()
26 {
27 SGBoot::uninstall();
28 }
29
30 function deactivate_backup_guard()
31 {
32 $pluginCapabilities = backupGuardGetCapabilities();
33 if ($pluginCapabilities != BACKUP_GUARD_CAPABILITIES_FREE) {
34 require_once(SG_LIB_PATH.'SGAuthClient.php');
35 $res = SGAuthClient::getInstance()->logout();
36 SGConfig::set('SG_LICENSE_CHECK_TS', 0, true);
37 SGConfig::set('SG_LOGGED_USER', '', true);
38 }
39 }
40
41 function backupGuardMaybeShortenEddFilename($return, $package)
42 {
43 if (strpos($package, 'backup-guard') !== false) {
44 add_filter('wp_unique_filename', 'backupGuardShortenEddFilename', 10, 2);
45 }
46 return $return;
47 }
48
49 function backupGuardShortenEddFilename($filename, $ext)
50 {
51 $filename = substr($filename, 0, 20).$ext;
52 remove_filter('wp_unique_filename', 'backupGuardShortenEddFilename', 10);
53 return $filename;
54 }
55
56 add_filter('upgrader_pre_download', 'backupGuardMaybeShortenEddFilename', 10, 4);
57
58 register_activation_hook(SG_BACKUP_GUARD_MAIN_FILE, 'activate_backup_guard');
59 register_uninstall_hook(SG_BACKUP_GUARD_MAIN_FILE, 'uninstall_backup_guard');
60 register_deactivation_hook(SG_BACKUP_GUARD_MAIN_FILE, 'deactivate_backup_guard');
61 add_action('admin_footer', 'before_deactivate_backup_guard');
62
63 function before_deactivate_backup_guard()
64 {
65 wp_enqueue_style('before-deactivate-backup-guard-css', plugin_dir_url(__FILE__).'public/css/deactivationSurvey.css');
66 wp_enqueue_script('before-deactivate-backup-guard-js', plugin_dir_url(__FILE__).'public/js/deactivationSurvey.js', array('jquery'));
67
68 wp_localize_script('before-deactivate-backup-guard-js', 'BG_BACKUP_STRINGS', array(
69 'nonce' => wp_create_nonce('backupGuardAjaxNonce'),
70 'areYouSure' => _backupGuardT('Are you sure?', true)
71 ));
72
73 require_once(plugin_dir_path(__FILE__).'public/include/uninstallSurveyPopup.php');
74 }
75
76 // Register Admin Menus for single and multisite
77 if (is_multisite()) {
78 add_action('network_admin_menu', 'backup_guard_admin_menu');
79 }
80 else {
81 add_action('admin_menu', 'backup_guard_admin_menu');
82 }
83
84 function backup_guard_admin_menu()
85 {
86 add_menu_page('Backups', 'BackupGuard', 'manage_options', 'backup_guard_backups', 'backup_guard_backups_page', 'data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MzAuMzQgNjYzLjAzIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmZjt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPkFydGJvYXJkIDI8L3RpdGxlPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUzMC4xMSwxODUuNzljLTcxLjktOC44Mi0xMzcuNzMtNDAtMTkwLTg2LjU3djkyLjY1YTI4MC41OSwyODAuNTksMCwwLDAsMTE2LjUyLDUyYy05LjE0LDg5LjQzLTUyLDE2OS41NS0xMTYuNTIsMjI4Ljg3djkwLjRDNDU5Ljg0LDQ3Ny4xMyw1MzAuNiwzMzMuNDIsNTMwLjExLDE4NS43OVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNzQuMjksMjQ0YTI4MC40NiwyODAuNDYsMCwwLDAsMTE1Ljc3LTUxLjExVjEwMGMtNTIuNDQsNDYuMjgtMTE3LjYyLDc3LTE4OS44Myw4NS4xNUM5OS41NCwzMzMsMTcwLjIyLDQ3Ni44MiwyOTAuMDYsNTYzVjQ3Mi4wOUMyMjYsNDEyLjg2LDE4My40MiwzMzMuMDYsMTc0LjI5LDI0NFoiLz48L3N2Zz4=', 74);
87
88 add_submenu_page('backup_guard_backups', _backupGuardT('Backups', true), _backupGuardT('Backups', true), 'manage_options', 'backup_guard_backups', 'backup_guard_backups_page');
89 add_submenu_page('backup_guard_backups', _backupGuardT('Cloud', true), _backupGuardT('Cloud', true), 'manage_options', 'backup_guard_cloud', 'backup_guard_cloud_page');
90 add_submenu_page('backup_guard_backups', _backupGuardT('Schedule', true), _backupGuardT('Schedule', true), 'manage_options', 'backup_guard_schedule', 'backup_guard_schedule_page');
91
92 add_submenu_page('backup_guard_backups', _backupGuardT('Settings', true), _backupGuardT('Settings', true), 'manage_options', 'backup_guard_settings', 'backup_guard_settings_page');
93
94 add_submenu_page('backup_guard_backups', _backupGuardT('System Info.', true), _backupGuardT('System Info.', true), 'manage_options', 'backup_guard_system_info', 'backup_guard_system_info_page');
95
96 add_submenu_page('backup_guard_backups', _backupGuardT('Services', true), _backupGuardT('Services', true), 'manage_options', 'backup_guard_services', 'backup_guard_services_page');
97 add_submenu_page('backup_guard_backups', _backupGuardT('Support', true), _backupGuardT('Support', true), 'manage_options', 'backup_guard_support', 'backup_guard_support_page');
98
99 //Check if should show upgrade page
100 if (SGBoot::isFeatureAvailable('SHOW_UPGRADE_PAGE')) {
101 add_submenu_page('backup_guard_backups', _backupGuardT('Why upgrade?', true), _backupGuardT('Why upgrade?', true), 'manage_options', 'backup_guard_pro_features', 'backup_guard_pro_features_page');
102 }
103 }
104
105 function backup_guard_system_info_page()
106 {
107 if (backupGuardValidateLicense()) {
108 require_once(plugin_dir_path(__FILE__).'public/systemInfo.php');
109 }
110 }
111
112 function backup_guard_services_page()
113 {
114 if (backupGuardValidateLicense()) {
115 require_once(plugin_dir_path(__FILE__).'public/services.php');
116 }
117 }
118
119 //Pro features page
120 function backup_guard_pro_features_page()
121 {
122 require_once(plugin_dir_path(__FILE__).'public/proFeatures.php');
123 }
124
125 function backup_guard_security_page()
126 {
127 require_once(plugin_dir_path(__FILE__).'public/security.php');
128 }
129
130 //Support page
131 function backup_guard_support_page()
132 {
133 if (backupGuardValidateLicense()) {
134 require_once(plugin_dir_path(__FILE__).'public/support.php');
135 }
136 }
137
138 //Backups Page
139 function backup_guard_backups_page()
140 {
141 if (backupGuardValidateLicense()) {
142 wp_enqueue_script('backup-guard-iframe-transport-js', plugin_dir_url(__FILE__).'public/js/jquery.iframe-transport.js', array('jquery'));
143 wp_enqueue_script('backup-guard-fileupload-js', plugin_dir_url(__FILE__).'public/js/jquery.fileupload.js', array('jquery'));
144 wp_enqueue_script('backup-guard-jstree-js', plugin_dir_url(__FILE__).'public/js/jstree.min.js', array('jquery'));
145 wp_enqueue_script('backup-guard-jstree-checkbox-js', plugin_dir_url(__FILE__).'public/js/jstree.checkbox.js', array('jquery'));
146 wp_enqueue_script('backup-guard-jstree-wholerow-js', plugin_dir_url(__FILE__).'public/js/jstree.wholerow.js', array('jquery'));
147 wp_enqueue_script('backup-guard-jstree-types-js', plugin_dir_url(__FILE__).'public/js/jstree.types.js', array('jquery'));
148 wp_enqueue_style('backup-guard-jstree-css', plugin_dir_url(__FILE__).'public/css/default/style.min.css');
149 wp_enqueue_script('backup-guard-backups-js', plugin_dir_url(__FILE__).'public/js/sgbackup.js', array('jquery', 'jquery-effects-core', 'jquery-effects-transfer', 'jquery-ui-widget'));
150
151 // Localize the script with new data
152 wp_localize_script('backup-guard-backups-js', 'BG_BACKUP_STRINGS', array(
153 'confirm' => _backupGuardT('Are you sure you want to cancel import?', true),
154 'nonce' => wp_create_nonce('backupGuardAjaxNonce'),
155 'invalidBackupOption' => _backupGuardT('Please choose at least one option.', true),
156 'invalidDirectorySelected' => _backupGuardT('Please choose at least one directory.', true),
157 'invalidCloud' => _backupGuardT('Please choose at least one cloud.', true),
158 'backupInProgress' => _backupGuardT('Backing Up...', true),
159 'errorMessage' => _backupGuardT('Something went wrong. Please try again.', true),
160 'noBackupsAvailable' => _backupGuardT('No backups found.', true),
161 'invalidImportOption' => _backupGuardT('Please select one of the options.', true),
162 'invalidDownloadFile' => _backupGuardT('Please choose one of the files.', true),
163 'import' => _backupGuardT('Import', true),
164 'importInProgress' => _backupGuardT('Importing please wait...', true),
165 'fileUploadFailed' => _backupGuardT('File upload failed.', true)
166 ));
167
168 require_once(plugin_dir_path( __FILE__ ).'public/backups.php');
169 }
170 }
171
172 //Cloud Page
173 function backup_guard_cloud_page()
174 {
175 if (backupGuardValidateLicense()) {
176 wp_enqueue_style('backup-guard-switch-css', plugin_dir_url(__FILE__).'public/css/bootstrap-switch.min.css');
177 wp_enqueue_script('backup-guard-switch-js', plugin_dir_url(__FILE__).'public/js/bootstrap-switch.min.js', array('jquery'), '1.0.0', true);
178 wp_enqueue_script('backup-guard-cloud-js', plugin_dir_url(__FILE__).'public/js/sgcloud.js', array('jquery'), '1.0.0', true);
179
180 // Localize the script with new data
181 wp_localize_script('backup-guard-cloud-js', 'BG_CLOUD_STRINGS', array(
182 'invalidImportFile' => _backupGuardT('Please select a file.', true),
183 'invalidFileSize' => _backupGuardT('File is too large.', true),
184 'connectionInProgress' => _backupGuardT('Connecting...', true),
185 'invalidDestinationFolder' => _backupGuardT('Destination folder is required.', true),
186 'successMessage' => _backupGuardT('Successfully saved.', true)
187 ));
188
189 require_once(plugin_dir_path(__FILE__).'public/cloud.php');
190 }
191 }
192
193 //Schedule Page
194 function backup_guard_schedule_page()
195 {
196 if (backupGuardValidateLicense()) {
197 wp_enqueue_style('backup-guard-switch-css', plugin_dir_url(__FILE__).'public/css/bootstrap-switch.min.css');
198 wp_enqueue_script('backup-guard-switch-js', plugin_dir_url(__FILE__).'public/js/bootstrap-switch.min.js', array('jquery'), '1.0.0', true);
199 wp_enqueue_script('backup-guard-schedule-js', plugin_dir_url(__FILE__).'public/js/sgschedule.js', array('jquery'), '1.0.0', true);
200
201 // Localize the script with new data
202 wp_localize_script('backup-guard-schedule-js', 'BG_SCHEDULE_STRINGS', array(
203 'deletionError' => _backupGuardT('Unable to delete schedule', true),
204 'confirm' => _backupGuardT('Are you sure?', true),
205 'invalidBackupOption' => _backupGuardT('Please choose at least one option.', true),
206 'invalidDirectorySelected' => _backupGuardT('Please choose at least one directory.', true),
207 'invalidCloud' => _backupGuardT('Please choose at least one cloud.', true),
208 'savingInProgress' => _backupGuardT('Saving...', true),
209 'successMessage' => _backupGuardT('You have successfully activated schedule.', true),
210 'saveButtonText' => _backupGuardT('Save', true)
211 ));
212
213 require_once(plugin_dir_path( __FILE__ ).'public/schedule.php');
214 }
215 }
216
217 //Settings Page
218 function backup_guard_settings_page()
219 {
220 if (backupGuardValidateLicense()) {
221 wp_enqueue_style('backup-guard-switch-css', plugin_dir_url(__FILE__).'public/css/bootstrap-switch.min.css');
222 wp_enqueue_script('backup-guard-switch-js', plugin_dir_url(__FILE__).'public/js/bootstrap-switch.min.js', array('jquery'), '1.0.0', true);
223 wp_enqueue_script('backup-guard-settings-js', plugin_dir_url(__FILE__).'public/js/sgsettings.js', array('jquery'), '1.0.0', true );
224
225 // Localize the script with new data
226 wp_localize_script('backup-guard-settings-js', 'BG_SETTINGS_STRINGS', array(
227 'invalidEmailAddress' => _backupGuardT('Please enter valid email.', true),
228 'invalidFileName' => _backupGuardT('Please enter valid file name.', true),
229 'invalidRetentionNumber' => _backupGuardT('Please enter a valid retention number.', true),
230 'successMessage' => _backupGuardT('Successfully saved.', true),
231 'savingInProgress' => _backupGuardT('Saving...', true),
232 'retentionConfirmationFirstPart' => _backupGuardT('Are you sure you want to keep the latest', true),
233 'retentionConfirmationSecondPart' => _backupGuardT('backups? All older backups will be deleted.', true),
234 'saveButtonText' => _backupGuardT('Save', true)
235 ));
236
237 require_once(plugin_dir_path(__FILE__).'public/settings.php');
238 }
239 }
240
241 function backup_guard_login_page()
242 {
243 wp_enqueue_script('backup-guard-login-js', plugin_dir_url(__FILE__).'public/js/sglogin.js', array('jquery'), '1.0.0', true);
244
245 require_once(plugin_dir_path(__FILE__).'public/login.php');
246 }
247
248 function backup_guard_link_license_page()
249 {
250 wp_enqueue_script('backup-guard-license-js', plugin_dir_url(__FILE__).'public/js/sglicense.js', array('jquery'), '1.0.0', true);
251 // Localize the script with new data
252 wp_localize_script('backup-guard-license-js', 'BG_LICENSE_STRINGS', array(
253 'invalidLicense' => _backupGuardT('Please choose a license first', true),
254 'availableLicenses' => _backupGuardT('There are no available licenses for using the selected product', true)
255 ));
256
257 require_once(plugin_dir_path(__FILE__).'public/link_license.php');
258 }
259
260 add_action('admin_enqueue_scripts', 'enqueue_backup_guard_scripts');
261 function enqueue_backup_guard_scripts($hook)
262 {
263 wp_enqueue_script('backup-guard-discount-notice', plugin_dir_url(__FILE__).'public/js/sgNoticeDismiss.js', array('jquery'), '1.0', true);
264
265 if (!strpos($hook,'backup_guard')) {
266 if($hook == "index.php"){
267 wp_enqueue_script('backup-guard-chart-manager', plugin_dir_url(__FILE__).'public/js/Chart.bundle.min.js');
268 }
269 return;
270 }
271
272 wp_enqueue_style('backup-guard-spinner', plugin_dir_url(__FILE__).'public/css/spinner.css');
273 wp_enqueue_style('backup-guard-wordpress', plugin_dir_url(__FILE__).'public/css/bgstyle.wordpress.css');
274 wp_enqueue_style('backup-guard-less', plugin_dir_url(__FILE__).'public/css/bgstyle.less.css');
275 wp_enqueue_style('backup-guard-styles', plugin_dir_url(__FILE__).'public/css/styles.css');
276
277 echo '<script type="text/javascript">sgBackup={};';
278 $sgAjaxRequestFrequency = SGConfig::get('SG_AJAX_REQUEST_FREQUENCY');
279 if (!$sgAjaxRequestFrequency) {
280 $sgAjaxRequestFrequency = SG_AJAX_DEFAULT_REQUEST_FREQUENCY;
281 }
282 echo 'SG_AJAX_REQUEST_FREQUENCY = "'.$sgAjaxRequestFrequency.'";';
283 echo 'function getAjaxUrl(url) {'.
284 'if (url==="cloudDropbox" || url==="cloudGdrive" || url==="cloudOneDrive") return "'.admin_url('admin-post.php?action=backup_guard_').'"+url+"&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 (current_user_can( 'activate_plugins' )) {
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
408 $pluginCapabilities = backupGuardGetCapabilities();
409 if ($pluginCapabilities != BACKUP_GUARD_CAPABILITIES_FREE) {
410 require_once dirname(__FILE__).'/BackupGuardPro.php';
411 }
412 add_action('wp_ajax_backup_guard_curlChecker', 'backup_guard_curl_checker');
413 add_action('wp_ajax_backup_guard_deleteBackup', 'backup_guard_delete_backup');
414 add_action('wp_ajax_backup_guard_getAction', 'backup_guard_get_action');
415 add_action('wp_ajax_backup_guard_getRunningActions', 'backup_guard_get_running_actions');
416 add_action('wp_ajax_backup_guard_importBackup', 'backup_guard_get_import_backup');
417 add_action('wp_ajax_backup_guard_resetStatus', 'backup_guard_reset_status');
418 add_action('wp_ajax_backup_guard_restore', 'backup_guard_restore');
419 add_action('wp_ajax_backup_guard_saveCloudFolder', 'backup_guard_save_cloud_folder');
420 add_action('wp_ajax_backup_guard_schedule', 'backup_guard_schedule');
421 add_action('wp_ajax_backup_guard_settings', 'backup_guard_settings');
422 add_action('wp_ajax_backup_guard_setReviewPopupState', 'backup_guard_set_review_popup_state');
423 add_action('wp_ajax_backup_guard_sendUsageStatistics', 'backup_guard_send_usage_statistics');
424 add_action('wp_ajax_backup_guard_hideNotice', 'backup_guard_hide_notice');
425 add_action('wp_ajax_backup_guard_downloadFromCloud', 'backup_guard_download_from_cloud');
426 add_action('wp_ajax_backup_guard_listStorage', 'backup_guard_list_storage');
427 add_action('wp_ajax_backup_guard_cancelDownload', 'backup_guard_cancel_download');
428 add_action('wp_ajax_backup_guard_awake', 'backup_guard_awake');
429 add_action('wp_ajax_backup_guard_manualBackup', 'backup_guard_manual_backup');
430 add_action('admin_post_backup_guard_downloadBackup', 'backup_guard_download_backup');
431 add_action('wp_ajax_backup_guard_login', 'backup_guard_login');
432 add_action('wp_ajax_backup_guard_logout', 'backup_guard_logout');
433 add_action('wp_ajax_backup_guard_link_license', 'backup_guard_link_license');
434 add_action('wp_ajax_backup_guard_importKeyFile', 'backup_guard_import_key_file');
435 add_action('wp_ajax_backup_guard_isFeatureAvailable', 'backup_guard_is_feature_available');
436 add_action('wp_ajax_backup_guard_dismiss_discount_notice', 'backup_guard_dismiss_discount_notice');
437 add_action('wp_ajax_backup_guard_checkPHPVersionCompatibility', 'backup_guard_check_php_version_compatibility');
438 add_action('wp_ajax_backup_guard_setUserInfoVerificationPopupState', 'backup_guard_set_user_info_verification_popup_state');
439 add_action('wp_ajax_backup_guard_storeSubscriberInfo', 'backup_guard_store_subscriber_info');
440 add_action('wp_ajax_backup_guard_storeSurveyResult', 'backup_guard_store_survey_result');
441 add_action('wp_ajax_backup_guard_reviewDontShow', 'backup_guard_review_dont_show');
442 add_action('wp_ajax_backup_guard_review_later', 'backup_guard_review_later');
443 add_action('wp_ajax_backup_guard_closeFreeBanner', 'closeFreeBanner');
444 }
445 }
446
447 function closeFreeBanner()
448 {
449 check_ajax_referer('backupGuardAjaxNonce', 'token');
450 SGConfig::set('SG_CLOSE_FREE_BANNER', 1);
451 wp_die();
452 }
453
454 function backup_guard_review_dont_show()
455 {
456 check_ajax_referer('backupGuardAjaxNonce', 'token');
457 SGConfig::set('closeReviewBanner', 1);
458 wp_die();
459 }
460
461 function backup_guard_review_later()
462 {
463 check_ajax_referer('backupGuardAjaxNonce', 'token');
464 require_once(SG_PUBLIC_AJAX_PATH.'reviewBannerActions.php');
465 wp_die();
466 }
467
468 function backup_guard_store_survey_result()
469 {
470 check_ajax_referer('backupGuardAjaxNonce', 'token');
471 require_once(SG_PUBLIC_AJAX_PATH.'storeSurveyResult.php');
472 }
473
474 function backup_guard_store_subscriber_info()
475 {
476 check_ajax_referer('backupGuardAjaxNonce', 'token');
477 require_once(SG_PUBLIC_AJAX_PATH.'storeSubscriberInfo.php');
478 }
479
480 function backup_guard_set_user_info_verification_popup_state()
481 {
482 check_ajax_referer('backupGuardAjaxNonce', 'token');
483 require_once(SG_PUBLIC_AJAX_PATH.'setUserInfoVerificationPopupState.php');
484 }
485
486 function backup_guard_dismiss_discount_notice()
487 {
488 check_ajax_referer('backupGuardAjaxNonce', 'token');
489 require_once(SG_PUBLIC_AJAX_PATH.'dismissDiscountNotice.php');
490 }
491
492 function backup_guard_is_feature_available()
493 {
494 require_once(SG_PUBLIC_AJAX_PATH.'isFeatureAvailable.php');
495 }
496
497 function backup_guard_check_php_version_compatibility()
498 {
499 check_ajax_referer('backupGuardAjaxNonce', 'token');
500 require_once(SG_PUBLIC_AJAX_PATH.'checkPHPVersionCompatibility.php');
501 }
502
503 add_action('init', 'backup_guard_init');
504 add_action('wp_ajax_nopriv_backup_guard_awake', 'backup_guard_awake_nopriv');
505 add_action('admin_post_backup_guard_cloudDropbox', 'backup_guard_cloud_dropbox');
506
507 function backup_guard_import_key_file()
508 {
509 check_ajax_referer('backupGuardAjaxNonce', 'token');
510 require_once(SG_PUBLIC_AJAX_PATH.'importKeyFile.php');
511 }
512
513 function backup_guard_awake()
514 {
515 $method = SG_RELOAD_METHOD_AJAX;
516 require_once(SG_PUBLIC_AJAX_PATH.'awake.php');
517 }
518
519 function backup_guard_awake_nopriv()
520 {
521 $token = @$_GET['token'];
522 $method = @$_GET['method'];
523
524 if (backupGuardValidateApiCall($token)) {
525 require_once(SG_PUBLIC_AJAX_PATH.'awake.php');
526 }
527 }
528
529 function backup_guard_cancel_download()
530 {
531 check_ajax_referer('backupGuardAjaxNonce', 'token');
532 require_once(SG_PUBLIC_AJAX_PATH.'cancelDownload.php');
533 }
534
535 function backup_guard_list_storage()
536 {
537 check_ajax_referer('backupGuardAjaxNonce', 'token');
538 require_once(SG_PUBLIC_AJAX_PATH.'listStorage.php');
539 }
540
541 function backup_guard_download_from_cloud()
542 {
543 check_ajax_referer('backupGuardAjaxNonce', 'token');
544 require_once(SG_PUBLIC_AJAX_PATH.'downloadFromCloud.php');
545 }
546
547 function backup_guard_hide_notice()
548 {
549 check_ajax_referer('backupGuardAjaxNonce', 'token');
550 require_once(SG_PUBLIC_AJAX_PATH.'hideNotice.php');
551 }
552
553 function backup_guard_cancel_backup()
554 {
555 check_ajax_referer('backupGuardAjaxNonce', 'token');
556 require_once(SG_PUBLIC_AJAX_PATH.'cancelBackup.php');
557 }
558
559 function backup_guard_check_backup_creation()
560 {
561 check_ajax_referer('backupGuardAjaxNonce', 'token');
562 require_once(SG_PUBLIC_AJAX_PATH.'checkBackupCreation.php');
563 }
564
565 function backup_guard_check_restore_creation()
566 {
567 check_ajax_referer('backupGuardAjaxNonce', 'token');
568 require_once(SG_PUBLIC_AJAX_PATH.'checkRestoreCreation.php');
569 }
570
571 function backup_guard_cloud_dropbox()
572 {
573 if (current_user_can('activate_plugins')) {
574 check_ajax_referer('backupGuardAjaxNonce', 'token');
575 require_once(SG_PUBLIC_AJAX_PATH . 'cloudDropbox.php');
576 }
577 }
578
579 function backup_guard_curl_checker()
580 {
581 check_ajax_referer('backupGuardAjaxNonce', 'token');
582 require_once(SG_PUBLIC_AJAX_PATH.'curlChecker.php');
583 }
584
585 function backup_guard_delete_backup()
586 {
587 check_ajax_referer('backupGuardAjaxNonce', 'token');
588 require_once(SG_PUBLIC_AJAX_PATH.'deleteBackup.php');
589 }
590
591 function backup_guard_download_backup()
592 {
593 require_once(SG_PUBLIC_AJAX_PATH.'downloadBackup.php');
594 }
595
596 function backup_guard_get_action()
597 {
598 check_ajax_referer('backupGuardAjaxNonce', 'token');
599 require_once(SG_PUBLIC_AJAX_PATH.'getAction.php');
600 }
601
602 function backup_guard_get_running_actions()
603 {
604 require_once(SG_PUBLIC_AJAX_PATH.'getRunningActions.php');
605 }
606
607 function backup_guard_get_import_backup()
608 {
609 check_ajax_referer('backupGuardAjaxNonce', 'token');
610 require_once(SG_PUBLIC_AJAX_PATH.'importBackup.php');
611 }
612
613 function backup_guard_manual_backup()
614 {
615 check_ajax_referer('backupGuardAjaxNonce', 'token');
616 require_once(SG_PUBLIC_AJAX_PATH.'manualBackup.php');
617 }
618
619 function backup_guard_reset_status()
620 {
621 check_ajax_referer('backupGuardAjaxNonce', 'token');
622 require_once(SG_PUBLIC_AJAX_PATH.'resetStatus.php');
623 }
624
625 function backup_guard_restore()
626 {
627 require_once(SG_PUBLIC_AJAX_PATH.'restore.php');
628 }
629
630 function backup_guard_save_cloud_folder()
631 {
632 check_ajax_referer('backupGuardAjaxNonce', 'token');
633 require_once(SG_PUBLIC_AJAX_PATH.'saveCloudFolder.php');
634 }
635
636 function backup_guard_schedule()
637 {
638 require_once(SG_PUBLIC_AJAX_PATH.'schedule.php');
639 }
640
641 function backup_guard_settings()
642 {
643 require_once(SG_PUBLIC_AJAX_PATH.'settings.php');
644 }
645
646 function backup_guard_set_review_popup_state()
647 {
648 check_ajax_referer('backupGuardAjaxNonce', 'token');
649 require_once(SG_PUBLIC_AJAX_PATH.'setReviewPopupState.php');
650 }
651
652 function backup_guard_send_usage_statistics()
653 {
654 require_once(SG_PUBLIC_AJAX_PATH.'sendUsageStatistics.php');
655 }
656
657 function backup_guard_login()
658 {
659 check_ajax_referer('backupGuardAjaxNonce', 'token');
660 require_once(SG_PUBLIC_AJAX_PATH.'login.php');
661 }
662
663 function backup_guard_logout()
664 {
665 check_ajax_referer('backupGuardAjaxNonce', 'token');
666 require_once(SG_PUBLIC_AJAX_PATH.'logout.php');
667 }
668
669 function backup_guard_link_license()
670 {
671 check_ajax_referer('backupGuardAjaxNonce', 'token');
672 require_once(SG_PUBLIC_AJAX_PATH.'linkLicense.php');
673 }
674
675 //adds once weekly to the existing schedules.
676 add_filter('cron_schedules', 'backup_guard_cron_add_weekly');
677 function backup_guard_cron_add_weekly($schedules)
678 {
679 $schedules['weekly'] = array(
680 'interval' => 60*60*24*7,
681 'display' => 'Once weekly'
682 );
683 return $schedules;
684 }
685
686 //adds once monthly to the existing schedules.
687 add_filter('cron_schedules', 'backup_guard_cron_add_monthly');
688 function backup_guard_cron_add_monthly($schedules)
689 {
690 $schedules['monthly'] = array(
691 'interval' => 60*60*24*30,
692 'display' => 'Once monthly'
693 );
694 return $schedules;
695 }
696
697 //adds once yearly to the existing schedules.
698 add_filter('cron_schedules', 'backup_guard_cron_add_yearly');
699 function backup_guard_cron_add_yearly($schedules)
700 {
701 $schedules['yearly'] = array(
702 'interval' => 60*60*24*30*12,
703 'display' => 'Once yearly'
704 );
705 return $schedules;
706 }
707
708 function backup_guard_init()
709 {
710 backup_guard_register_ajax_callbacks();
711 // backupGuardPluginRedirect();
712
713 //check if database should be updated
714 if (backupGuardShouldUpdate()) {
715 SGBoot::install();
716 }
717
718 backupGuardSymlinksCleanup(SG_SYMLINK_PATH);
719 }
720
721 add_action(SG_SCHEDULE_ACTION, 'backup_guard_schedule_action', 10, 1);
722
723 function backup_guard_schedule_action($id)
724 {
725 require_once(SG_PUBLIC_PATH.'cron/sg_backup.php');
726 }
727
728 function sgBackupAdminInit() {
729 //load pro plugin updater
730 $pluginCapabilities = backupGuardGetCapabilities();
731 $isLoggedIn = is_user_logged_in();
732
733 if ($pluginCapabilities != BACKUP_GUARD_CAPABILITIES_FREE && $isLoggedIn) {
734 require_once(dirname(__FILE__).'/plugin-update-checker/plugin-update-checker.php');
735 require_once(dirname(__FILE__).'/plugin-update-checker/Puc/v4/Utils.php');
736 require_once(SG_LIB_PATH.'SGAuthClient.php');
737
738 $licenseKey = SGConfig::get('SG_LICENSE_KEY');
739
740 $updateChecker = Puc_v4_Factory::buildUpdateChecker(
741 BackupGuard\Config::URL.'/products/details/'.$licenseKey,
742 SG_BACKUP_GUARD_MAIN_FILE,
743 SG_PRODUCT_IDENTIFIER
744 );
745
746 $updateChecker->addHttpRequestArgFilter(array(
747 SGAuthClient::getInstance(),
748 'filterUpdateChecks'
749 ));
750 }
751 }
752
753 add_action('admin_init', 'sgBackupAdminInit');
754
755 if (SGBoot::isFeatureAvailable('ALERT_BEFORE_UPDATE')) {
756 add_filter('upgrader_pre_download', 'backupGuardOnBeforeUpdateDownload', 10, 3);
757 add_action('core_upgrade_preamble', 'backupGuardOnUpgradeScreenActivate');
758 add_action('current_screen', 'backupGuardOnScreenActivate');
759 }
760
761 // Register the new dashboard widget with the 'wp_dashboard_setup' action
762 add_action('wp_dashboard_setup', 'backup_guard_add_dashboard_widgets');
763
764 function backup_guard_add_dashboard_widgets()
765 {
766 require_once(SG_CORE_PATH.'SGConfig.php');
767
768 $userId = get_current_user_id();
769 $userData = get_userdata($userId);
770 $userRoles = $userData->roles;
771 $isAdminUser = false;
772 for($i = 0; $i < count($userRoles); $i++) {
773 if ($userRoles[$i] == "administrator") {
774 $isAdminUser = true;
775 break;
776 }
777 }
778
779 if (!$isAdminUser ) {
780 return;
781 }
782
783 $isShowStatisticsWidgetEnabled = SGConfig::get('SG_SHOW_STATISTICS_WIDGET');
784 if (!$isShowStatisticsWidgetEnabled) {
785 return;
786 }
787
788
789 require_once(plugin_dir_path( __FILE__ ).'public/dashboardWidget.php');
790 wp_add_dashboard_widget('backupGuardWidget', 'Backup Guard', 'backup_guard_dashboard_widget_function');
791 }
792
793 add_action('plugins_loaded', 'backupGuardloadTextDomain');
794 function backupGuardloadTextDomain()
795 {
796 $backupGuardLangDir = plugin_dir_path(__FILE__).'languages/';
797 $backupGuardLangDir = apply_filters('backupguardLanguagesDirectory', $backupGuardLangDir);
798
799 $locale = apply_filters('bg_plugin_locale', get_locale(), BACKUP_GUARD_TEXTDOMAIN);
800 $mofile = sprintf('%1$s-%2$s.mo', BACKUP_GUARD_TEXTDOMAIN, $locale);
801
802 $mofileLocal = $backupGuardLangDir.$mofile;
803
804 if (file_exists($mofileLocal)) {
805 // Look in local /wp-content/plugins/popup-builder/languages/ folder
806 load_textdomain(BACKUP_GUARD_TEXTDOMAIN, $mofileLocal);
807 }
808 else {
809 // Load the default language files
810 load_plugin_textdomain(BACKUP_GUARD_TEXTDOMAIN, false, $backupGuardLangDir);
811 }
812 }
813
814 if (backupGuardShouldShowDiscountNotice() && checkDueDateDiscount()) {
815 add_action('admin_notices', 'backup_guard_discount_notice');
816 }
817
818 function backup_guard_discount_notice()
819 {
820 $capabilities = backupGuardGetCapabilities();
821 $upgradeUrl = BG_UPGRADE_URL;
822 ?>
823 <div class="backup-guard-discount-notice updated notice is-dismissible">
824 <div class="sgbg-col sgbg-col1"></div>
825 <div class="sgbg-col sgbg-col2"></div>
826 <div class="sgbg-col sgbg-col3">
827 <div class="sgbg-text-col-1">
828 -50%
829 </div>
830 <div class="sgbg-text-col-2">
831 <div class="sgbg-discount-text-1">Discount</div>
832 <div class="sgbg-discount-text-2">All Backup Guard Solutions</div>
833 </div>
834 </div>
835 <div class="sgbg-col sgbg-col4">
836 <a href="https://backup-guard.com/products/backup-wordpress" target="_blank"><button class="sgbg-button">Click Here</button></a>
837 </div>
838 </div>
839 <style>
840 .backup-guard-discount-notice.updated.notice.is-dismissible {
841 padding: 0;
842 border-left-color: #FFFFFF !important;
843 background-color: #000000;
844 height: 160px;
845 }
846 .backup-guard-discount-notice button:before {
847 color: #ffffff !important;
848 }
849 .sgbg-col {
850 display: inline-block;
851 width: 25%;
852 height: 100%;
853 padding: 0 25px;
854 box-sizing: border-box;
855 }
856 .sgbg-col1 {
857 width: 10%;
858 background-color: #FFFFFF;
859 background-image: url("<?php echo SG_IMAGE_URL ?>BgBFLogo.jpg");
860 background-size: 80%;
861 background-repeat: no-repeat;
862 background-position: center;
863 }
864 .sgbg-col2 {
865 width: 20%;
866 background-image: url("<?php echo SG_IMAGE_URL ?>BF.png");
867 background-size: contain;
868 margin-left: 70px;
869 background-position: center;
870 background-repeat: no-repeat;
871 }
872 .sgbg-col3 {
873 vertical-align: top;
874 width: 45%;
875 margin-top: 55px;
876 }
877 .sgbg-col4 {
878 width: 10%;
879 }
880 .sgbg-text-col-1,
881 .sgbg-text-col-2 {
882 width: 49%;
883 display: inline-block;
884 color: #FFFFFF;
885 }
886 .sgbg-text-col-1 {
887 font-size: 100px;
888 line-height: 0;
889 font-weight: bold;
890 text-align: right;
891 padding-right: 26px;
892 box-sizing: border-box;
893 }
894 .sgbg-discount-text-2 {
895 font-size: 19px;
896 }
897 .sgbg-discount-text-1 {
898 font-size: 60px;
899 padding-bottom: 27px;
900 font-weight: bold;
901 }
902 .sgbg-col4 {
903 vertical-align: top;
904 }
905 .sgbg-button {
906 width: 183px;
907 height: 67px;
908 font-size: 20px;
909 border: #ffffff;
910 border-radius: 10px;
911 margin-top: 48px;
912 background-color: #FFFFFF;
913 color: #000000;
914 cursor: pointer !important;
915 }
916 .sgbg-button:hover {
917 background-color: #000000;
918 border: 1px solid #FFFFFF;
919 color: #FFFFFF;
920 }
921 .backup-guard-discount-notice .notice-dismiss::before {
922 content: "x";
923 font-weight: 300;
924 font-family: Arial, sans-serif;
925 }
926
927 @media (max-width: 1810px) {
928 .sgbg-text-col-1 {
929 font-size: 80px;
930 }
931 .sgbg-discount-text-1 {
932 font-size: 43px;
933 }
934 .sgbg-discount-text-2 {
935 font-size: 15px;
936 }
937 .sgbg-discount-text-1 {
938 padding-bottom: 18px;
939 }
940 .sgbg-col3 {
941 margin-top: 60px;
942 }
943 }
944 @media (max-width: 1477px) {
945 .sgbg-discount-text-2 {
946 font-size: 12px;
947 }
948 .sgbg-discount-text-1 {
949 font-size: 35px;
950 }
951 .sgbg-discount-text-1 {
952 padding-bottom: 13px;
953 }
954 .sgbg-col {
955 padding: 0;
956 }
957 .sgbg-col2 {
958 margin-left: 40px;
959 }
960 .sgbg-col2 {
961 margin-left: 0;
962 }
963 }
964 </style>
965 <?php
966 }
967
968 add_action('admin_notices', 'backup_guard_review_banner');
969 function backup_guard_review_banner()
970 {
971 require_once(SG_LIB_PATH.'SGReviewManager.php');
972 $reviewManager = new SGReviewManager();
973 $reviewManager->renderContent();
974 }