PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 1.6.9.1
JetBackup – Backup, Restore & Migrate v1.6.9.1
3.1.22.4 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 / public / js / sgbackup.js
backup / public / js Last commit date
Chart.bundle.min.js 8 years ago bootstrap-switch.min.js 10 years ago bootstrap.min.js 5 years ago deactivationSurvey.js 5 years ago jquery-ui.js 9 years ago jquery.fileupload.js 8 years ago jquery.iframe-transport.js 8 years ago jquery.rateyo.js 6 years ago jquery.validate.min.js 5 years ago jstree.checkbox.js 8 years ago jstree.min.js 8 years ago jstree.types.js 8 years ago jstree.wholerow.js 8 years ago less.min.js 10 years ago main.js 4 years ago popup.js 5 years ago sgNoticeDismiss.js 6 years ago sgbackup.js 3 years ago sgcloud.js 3 years ago sglicense.js 6 years ago sglogin.js 6 years ago sgrequesthandler.js 10 years ago sgrequesthandler.wordpress.js 10 years ago sgschedule.js 3 years ago sgsettings.js 3 years ago
sgbackup.js
1018 lines
1 /* phpcs:disable */
2
3 BG_BACKUP_STRINGS_DEACTIVATE = [];
4 SG_DOWNLOAD_PROGRESS = '';
5 SG_ACTIVE_DOWNLOAD_AJAX = '';
6 SG_CHECK_ACTION_STATUS_REQUEST_FREQUENCY = 10000;
7
8 SG_STORAGE_FTP = 1;
9 SG_STORAGE_DROPBOX = 2;
10 SG_STORAGE_GOOGLE_DRIVE = 3;
11 SG_STORAGE_AMAZON = 4;
12 SG_STORAGE_ONE_DRIVE = 5;
13 SG_STORAGE_BACKUP_GUARD = 6;
14 SG_STORAGE_P_CLOUD = 7;
15 SG_STORAGE_BOX = 8;
16
17 BG_BACKUP_STRINGS_DEACTIVATE.areYouSure = "Are you sure?";
18
19
20 jQuery(document).on(
21 'change',
22 '.btn-file :file',
23 function () {
24 var input = jQuery(this);
25
26 if (input.get(0).files) {
27 var numFile = input.get(0).files.length
28 } else {
29 var numFiles = 1;
30 }
31
32 var label = input.val().replace(/\\/g, '/').replace(/.*\//, '');
33 input.trigger('fileselect', [numFiles, label]);
34 }
35 );
36
37 jQuery(document).ready(
38 function () {
39 sgBackup.initTablePagination('sg-backups');
40 sgBackup.initActiveAction();
41 sgBackup.initBackupDeletion();
42 sgBackup.toggleMultiDeleteButton();
43 sgBackup.closeFreeBanner();
44
45 jQuery('span[data-toggle=tooltip]').tooltip();
46
47 jQuery('#sg-checkbox-select-all').on(
48 'change',
49 function () {
50 var checkAll = jQuery('#sg-checkbox-select-all');
51 jQuery('tbody input[type="checkbox"]:not(:disabled):visible').prop('checked', checkAll.prop('checked'));
52 sgBackup.toggleMultiDeleteButton();
53 }
54 );
55
56 jQuery('#sg-delete-multi-backups').on(
57 'click',
58 function () {
59 if (!confirm(BG_BACKUP_STRINGS_DEACTIVATE.areYouSure)) {
60 return false;
61 }
62
63 var backups = jQuery('tbody input[type="checkbox"]:checked');
64 var backupNames = [];
65 backups.each(
66 function (i) {
67 backupNames[i] = jQuery(this).val();
68 }
69 );
70
71 if (backupNames.length) {
72 sgBackup.deleteMultiBackups(backupNames);
73 }
74 }
75 );
76
77 jQuery('tbody input[type="checkbox"]').on(
78 'change',
79 function () {
80 var numberOfBackups = jQuery('tbody input[type="checkbox"]').length;
81 var numberOfChoosenBackups = sgBackup.getSelectedBackupsNumber();
82 var isCheked = jQuery(this).is(':checked');
83 sgBackup.toggleMultiDeleteButton();
84
85 if (!isCheked) {
86 jQuery('#sg-checkbox-select-all').prop('checked', false);
87 } else {
88 if (numberOfBackups === numberOfChoosenBackups) {
89 jQuery('#sg-checkbox-select-all').prop('checked', true);
90 }
91 }
92 }
93 );
94
95 var surveyClose = function (e) {
96 e.preventDefault();
97
98 jQuery('.bg-verify-user-info-container').slideUp();
99 jQuery('.bg-verify-user-info-overlay').hide();
100
101 var ajaxHandler = new sgRequestHandler('setUserInfoVerificationPopupState', {token: BG_BACKUP_STRINGS.nonce});
102 ajaxHandler.run();
103 };
104
105 jQuery('.bg-verify-user-info-overlay').bind('click', surveyClose);
106
107 jQuery('.bg-verify-user-info-cancel').click(surveyClose);
108
109 jQuery('#bg-verify-user-prioraty').on(
110 'change',
111 function () {
112 if (jQuery(this).val() === "other") {
113 jQuery('#bg-verify-user-priorati-custom').show();
114 } else {
115 jQuery('#bg-verify-user-priorati-custom').hide();
116 }
117 }
118 );
119
120 jQuery('.bg-verify-user-info-verify-email').click(
121 function (e) {
122 e.preventDefault();
123
124 var email = jQuery('#bg-verify-user-info-email').val();
125 var fname = jQuery('#bg-verify-user-info-name').val();
126 var lname = jQuery('#bg-verify-user-info-last-name').val();
127 var priority = jQuery('#bg-verify-user-prioraty').val();
128
129 var sendData = true;
130 jQuery('.bg-verify-user-info-error-message').hide();
131
132 if (priority === "other") {
133 priority = jQuery('#bg-verify-user-priorati-custom').val();
134
135 if (!priority) {
136 jQuery('#bg-verify-user-info-priority-custom-error').show()
137 sendData = false;
138 }
139 } else if (!priority) {
140 jQuery('#bg-verify-user-info-priority-error').show()
141 sendData = false;
142 }
143
144 if (fname === '') {
145 jQuery('#bg-verify-user-info-name-error').show();
146 sendData = false;
147 }
148
149 if (lname === '') {
150 jQuery('#bg-verify-user-info-last-name-error').show();
151 sendData = false;
152 }
153
154 if (!sgBackup.isValidEmailAddress(email)) {
155 jQuery('#bg-verify-user-info-email-error').show();
156 sendData = false;
157 }
158
159 if (sendData) {
160 jQuery('.bg-verify-user-info-container').slideUp();
161 jQuery('.bg-verify-user-info-overlay').hide();
162 var currentStatus = jQuery('.backup-send-usage-data-status').is(':checked');
163
164 var ajaxHandler = new sgRequestHandler(
165 'storeSubscriberInfo',
166 {
167 email: email,
168 fname: fname,
169 lname: lname,
170 priority: priority,
171 currentStatus: currentStatus,
172 token: BG_BACKUP_STRINGS.nonce
173 }
174 );
175
176 ajaxHandler.run();
177 }
178 }
179 );
180 }
181 );
182
183 sgBackup.isValidEmailAddress = function (emailAddress) {
184 var pattern = new RegExp(/^(("[\w-+\s]+")|([\w-+]+(?:\.[\w-+]+)*)|("[\w-+\s]+")([\w-+]+(?:\.[\w-+]+)*))(@((?:[\w-+]+\.)*\w[\w-+]{0,66})\.([a-z]{2,10}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][\d]\.|1[\d]{2}\.|[\d]{1,2}\.))((25[0-5]|2[0-4][\d]|1[\d]{2}|[\d]{1,2})\.){2}(25[0-5]|2[0-4][\d]|1[\d]{2}|[\d]{1,2})\]?$)/i);
185 return pattern.test(emailAddress);
186
187 };
188
189 sgBackup.getSelectedBackupsNumber = function () {
190 return jQuery('tbody input[type="checkbox"]:checked').length
191
192 };
193
194 sgBackup.toggleMultiDeleteButton = function () {
195 var numberOfChoosenBackups = sgBackup.getSelectedBackupsNumber();
196 var target = jQuery('#sg-delete-multi-backups');
197 if (numberOfChoosenBackups > 0) {
198 target.removeAttr('disabled');
199 } else {
200 target.attr('disabled', 'disabled');
201 }
202
203 };
204
205 sgBackup.closeFreeBanner = function () {
206 jQuery('.sg-close-free-banner').bind(
207 'click',
208 function () {
209 var ajaxHandler = new sgRequestHandler(
210 'closeFreeBanner',
211 {
212 token: BG_BACKUP_STRINGS.nonce
213 }
214 );
215 ajaxHandler.callback = function (response, error) {
216 jQuery('#sg-banner').remove();
217 };
218 ajaxHandler.run();
219 }
220 );
221 };
222
223 sgBackup.deleteMultiBackups = function (backupNames) {
224 var ajaxHandler = new sgRequestHandler('deleteBackup', {backupName: backupNames, token: BG_BACKUP_STRINGS.nonce});
225 ajaxHandler.callback = function (response) {
226 location.reload();
227 };
228 ajaxHandler.run();
229
230 };
231
232 // SGManual Backup AJAX callback.
233 sgBackup.manualBackup = function (checkedStatus) {
234 var error = [];
235 // Validation.
236 jQuery('.alert').remove();
237 if (jQuery('input[type=radio][name=backupType]:checked').val() === 2) {
238 if (jQuery('.sg-custom-option:checked').length <= 0) {
239 error.push(BG_BACKUP_STRINGS.invalidBackupOption);
240 }
241
242 // Check if any file is selected.
243 if (jQuery('input[type=checkbox][name=backupFiles]:checked').length > 0) {
244 if (jQuery('.sg-custom-backup-files input:checkbox:checked').length <= 0) {
245 error.push(BG_BACKUP_STRINGS.invalidDirectorySelected);
246 }
247 }
248 }
249
250 // Check if any cloud is selected.
251 if (jQuery('input[type=checkbox][name=backupCloud]:checked').length > 0) {
252 if (jQuery('.sg-custom-backup-cloud input:checkbox:checked').length <= 0) {
253 error.push(BG_BACKUP_STRINGS.invalidCloud);
254 }
255 }
256
257 // If any error show it and abort ajax.
258 if (error.length) {
259 var sgAlert = sgBackup.alertGenerator(error, 'alert-danger');
260 jQuery('#sg-modal .modal-header').prepend(sgAlert);
261 return false;
262 }
263
264 if (!checkedStatus) {
265 sgBackup.checkBackupCreation();
266 }
267
268 // Before all disable buttons.
269 jQuery('.alert').remove();
270 jQuery('.modal-footer .btn-primary').attr('disabled', 'disabled');
271 jQuery('.modal-footer .btn-primary').html(BG_BACKUP_STRINGS.backupInProgress);
272
273 // Reset Status!
274 var backupName = jQuery("#sg-custom-backup-name").val();
275 var resetStatusHandler = new sgRequestHandler(
276 'resetStatus',
277 {
278 backupName: backupName,
279 token: BG_BACKUP_STRINGS.nonce
280 }
281 );
282 resetStatusHandler.callback = function (response, error) {
283 var manualBackupForm = jQuery('#manualBackup');
284 var manualBackupHandler = new sgRequestHandler('manualBackup', manualBackupForm.serialize() + '&token=' + BG_BACKUP_STRINGS.nonce);
285
286 manualBackupHandler.dataIsObject = false;
287 // If error!
288 if (typeof response.success === 'undefined') {
289 var sgAlert = sgBackup.alertGenerator(response, 'alert-danger');
290 jQuery('#sg-modal .modal-header').prepend(sgAlert);
291
292 if (response === 0 || response === false || response === '0' || response === 'false') {
293 response = BG_BACKUP_STRINGS.errorMessage;
294 }
295
296 sgBackup.restManualBackupModal();
297 return false;
298 }
299
300 if (checkedStatus) {
301 sgBackup.hideAndReload();
302 }
303
304 manualBackupHandler.run();
305 };
306 resetStatusHandler.run();
307
308 };
309
310 sgBackup.hideAndReload = function () {
311 jQuery('#sg-modal').modal('hide');
312 location.reload();
313
314 };
315
316 sgBackup.restManualBackupModal = function () {
317 jQuery('.modal-footer .btn-primary').removeAttr('disabled');
318 jQuery('.modal-footer .btn-primary').html('Backup');
319
320 };
321
322 sgBackup.cancelDonwload = function (name) {
323 var cancelDonwloadHandler = new sgRequestHandler('cancelDownload', {name: name, token: BG_BACKUP_STRINGS.nonce});
324 cancelDonwloadHandler.callback = function (response) {
325 sgBackup.hideAjaxSpinner();
326 location.reload();
327 };
328 cancelDonwloadHandler.run();
329
330 };
331
332 sgBackup.listStorage = function (importFrom) {
333 var listStorage = new sgRequestHandler('listStorage', {storage: importFrom, token: BG_BACKUP_STRINGS.nonce});
334 sgBackup.showAjaxSpinner('#sg-modal-inport-from');
335 jQuery('#sg-archive-list-table tbody').empty();
336
337 jQuery('#sg-modal').off('hide.bs.modal').on(
338 'hide.bs.modal',
339 function (e) {
340 if (SG_ACTIVE_DOWNLOAD_AJAX) {
341 if (!confirm(BG_BACKUP_STRINGS.confirm)) {
342 e.preventDefault();
343 return false;
344 }
345
346 var target = jQuery('input[name="select-archive-to-download"]:checked');
347 var name = target.attr('file-name');
348
349 sgBackup.cancelDonwload(name);
350 }
351 }
352 );
353
354 listStorage.callback = function (response, error) {
355 var cloudName = '';
356 var cloudId = parseInt(importFrom, 10);
357
358 switch (cloudId) {
359 case SG_STORAGE_AMAZON:
360 cloudName = "S3";
361 break;
362
363 case SG_STORAGE_DROPBOX:
364 cloudName = "Dropbox";
365 break;
366
367 case SG_STORAGE_GOOGLE_DRIVE:
368 cloudName = "Google Drive";
369 break;
370
371 case SG_STORAGE_FTP:
372 cloudName = "FTP";
373 break;
374
375 case SG_STORAGE_ONE_DRIVE:
376 cloudName = "OneDrive";
377 break;
378
379 case SG_STORAGE_P_CLOUD:
380 cloudName = "pCloud";
381 break;
382
383 case SG_STORAGE_BOX:
384 cloudName = "box.com";
385 break;
386
387 case SG_STORAGE_BACKUP_GUARD:
388 cloudName = "BackupGuard";
389 break;
390
391 default:
392 cloudName = '';
393 break;
394 }//end switch
395
396 jQuery('.modal-title').html('Import from ' + cloudName);
397
398 sgBackup.hideAjaxSpinner();
399 var content = '';
400 if ((typeof response.error !== "undefined") || response.length === 0 || response === undefined) {
401 content = '<tr><td colspan="4">' + BG_BACKUP_STRINGS.noBackupsAvailable + '</td></tr>';
402 } else {
403 jQuery.each(
404 response,
405 function (key, value) {
406 var backupId = 0;
407
408 if (typeof value.id !== 'undefined') {
409 backupId = value.id;
410 value.path = value.name;
411 }
412
413 content += '<tr>';
414 content += '<td class="file-select-radio"><input type="radio" file-name="' + value.name + '" name="select-archive-to-download" size="' + value.size + '" backup-id="' + backupId + '" storage="' + importFrom + '" value="' + value.path + '"></td>';
415 content += '<td>' + value.name + '</td>';
416 content += '<td>' + sgBackup.convertBytesToMegabytes(value.size) + '</td>';
417 content += '<td>' + value.date + '</td>';
418 content += '</tr>';
419 }
420 );
421 }//end if
422
423 jQuery('#sg-archive-list-table tbody').append(content);
424 sgBackup.toggleDownloadFromCloudPage();
425 };
426
427 listStorage.run();
428
429 };
430
431
432 sgBackup.convertBytesToMegabytes = function ($bytes) {
433 return ($bytes / (1024 * 1024)).toFixed(2);
434
435 };
436
437 // Init file upload!
438 sgBackup.initFileUpload = function () {
439 sgBackup.downloadFromPC();
440
441 jQuery('#uploadSgbpFile').click(
442 function () {
443 if (jQuery('#modal-import-3').is(":visible")) {
444 var target = jQuery('input[name="select-archive-to-download"]:checked');
445 var path = target.val();
446 var name = target.attr('file-name');
447 var storage = target.attr('storage');
448 var size = target.attr('size');
449 var backupId = target.attr('backup-id');
450 sgBackup.downloadFromCloud(path, name, storage, size, backupId);
451 }
452 }
453 );
454
455 };
456
457 sgBackup.nextPage = function () {
458 var importFrom = jQuery('input[name="storage-radio"]:checked').val();
459 jQuery('.alert').remove();
460
461 if (!importFrom) {
462 var alert = sgBackup.alertGenerator(BG_BACKUP_STRINGS.invalidImportOption, 'alert-danger');
463 jQuery('#sg-modal .modal-header').prepend(alert);
464 } else {
465 if (importFrom === 'local-pc') {
466 sgBackup.toggleDownloadFromPCPage();
467 } else {
468 var isFeatureAvailable = new sgRequestHandler('isFeatureAvailable', {sgFeature: "DOWNLOAD_FROM_CLOUD"});
469 isFeatureAvailable.callback = function (response) {
470 if (typeof response.success !== 'undefined') {
471 sgBackup.listStorage(importFrom);
472 } else {
473 var alert = sgBackup.alertGenerator(response.error, 'alert-danger');
474 jQuery('#sg-modal .modal-header').prepend(alert);
475 }
476 };
477
478 isFeatureAvailable.run();
479 }
480 }
481
482 };
483
484 sgBackup.previousPage = function () {
485 if (jQuery('#modal-import-2').is(":visible")) {
486 jQuery('#modal-import-2').hide();
487 } else {
488 jQuery('#modal-import-3').hide();
489 }
490
491 sgBackup.toggleNavigationButtons();
492
493 jQuery('#modal-import-1').show();
494 jQuery('#uploadSgbpFile').hide();
495
496 jQuery('.modal-title').html('Import from');
497
498 };
499
500 sgBackup.toggleNavigationButtons = function () {
501 jQuery('#switch-modal-import-pages-next').toggle();
502 jQuery('#switch-modal-import-pages-back').toggle();
503
504 };
505
506 sgBackup.toggleDownloadFromPCPage = function () {
507 sgBackup.toggleNavigationButtons();
508 jQuery('#modal-import-1').toggle();
509 jQuery('#modal-import-2').toggle();
510 jQuery('#uploadSgbpFile').toggle();
511
512 };
513
514 sgBackup.toggleDownloadFromCloudPage = function () {
515 sgBackup.toggleNavigationButtons();
516 jQuery('#modal-import-1').toggle();
517 jQuery('#modal-import-3').toggle();
518 jQuery('#uploadSgbpFile').toggle();
519
520 };
521
522 sgBackup.downloadFromCloud = function (path, name, storage, size, backupId) {
523 sgBackup.showAjaxSpinner('.modal-dialog');
524 var error = [];
525 if (!path) {
526 error.push(BG_BACKUP_STRINGS.invalidDownloadFile);
527 }
528
529 jQuery('.alert').remove();
530
531 if (error.length) {
532 sgBackup.hideAjaxSpinner();
533 var sgAlert = sgBackup.alertGenerator(error, 'alert-danger');
534 jQuery('#sg-modal .modal-header').prepend(sgAlert);
535 return false;
536 }
537
538 var downloadFromCloudHandler = new sgRequestHandler(
539 'downloadFromCloud',
540 {
541 path: path,
542 storage: storage,
543 size: size,
544 backupId: backupId,
545 token: BG_BACKUP_STRINGS.nonce
546 }
547 );
548
549 jQuery('#switch-modal-import-pages-back').hide();
550 jQuery('#uploadSgbpFile').attr('disabled', 'disabled');
551
552 downloadFromCloudHandler.callback = function (response, error) {
553 if (typeof response.success !== 'undefined') {
554 location.reload();
555 } else if (typeof response.error !== 'undefined') {
556 sgBackup.hideAjaxSpinner();
557 jQuery('.alert').remove();
558
559 clearTimeout(SG_DOWNLOAD_PROGRESS);
560
561 jQuery('#uploadSgbpFile').html(BG_BACKUP_STRINGS.import);
562
563 var sgAlert = sgBackup.alertGenerator(response.error, 'alert-danger');
564
565 jQuery('#uploadSgbpFile').attr('disabled', false);
566 jQuery('#switch-modal-import-pages-back').toggle();
567 jQuery('#sg-modal .modal-header').prepend(sgAlert);
568 SG_ACTIVE_DOWNLOAD_AJAX = false;
569
570 return false;
571 }
572 };
573
574 SG_ACTIVE_DOWNLOAD_AJAX = true;
575 downloadFromCloudHandler.run();
576 sgBackup.fileDownloadProgress(name, size);
577
578 };
579
580 sgBackup.downloadFromPC = function () {
581 var sgData = null;
582 jQuery('#sg-modal').off('hide.bs.modal').on(
583 'hide.bs.modal',
584 function (e) {
585 if (SG_ACTIVE_DOWNLOAD_AJAX) {
586 if (!confirm(BG_BACKUP_STRINGS.confirm)) {
587 e.preventDefault();
588 return false;
589 }
590
591 sgData.abort();
592 sgBackup.cancelDonwload(sgData.files[0].name);
593 }
594 }
595 );
596
597 jQuery('.sg-backup-upload-input').fileupload(
598 {
599 dataType: 'json',
600 maxChunkSize: 2000000,
601 add: function (e, data) {
602 if (data.originalFiles.length) {
603 var fileName = data.originalFiles[0].name;
604 jQuery('#sg-import-file-name').val(fileName);
605 }
606
607 jQuery('#uploadSgbpFile').click(
608 function () {
609 if (jQuery('#modal-import-2').is(":visible")) {
610 sgData = data;
611 SG_ACTIVE_DOWNLOAD_AJAX = true;
612 jQuery('#uploadSgbpFile').attr('disabled', 'disabled');
613 jQuery('#switch-modal-import-pages-back').hide();
614 jQuery('#uploadSgbpFile').html(BG_BACKUP_STRINGS.importInProgress);
615 data.submit();
616 }
617 }
618 );
619 },
620 done: function (e, data) {
621 location.reload();
622 },
623 progress: function (e, data) {
624 var progress = parseInt(((data.loaded / data.total) * 100), 10);
625 jQuery('#uploadSgbpFile').html('Importing (' + Math.round(progress) + '%)');
626 }
627 }
628 ).on(
629 'fileuploadfail',
630 function (e, data) {
631 var alert = sgBackup.alertGenerator(BG_BACKUP_STRINGS.fileUploadFailed, 'alert-danger');
632 jQuery('#sg-modal .modal-header').prepend(alert);
633 }
634 );
635
636 };
637
638 sgBackup.fileDownloadProgress = function (file, size) {
639 var getFileDownloadProgress = new sgRequestHandler(
640 'getFileDownloadProgress',
641 {
642 file: file,
643 size: size,
644 token: BG_BACKUP_STRINGS.nonce
645 }
646 );
647
648 getFileDownloadProgress.callback = function (response) {
649 if (response.progress === 100) {
650 location.reload();
651 }
652
653 if (typeof response.progress !== 'undefined') {
654 jQuery('#uploadSgbpFile').html('Importing (' + Math.round(response.progress) + '%)');
655 SG_DOWNLOAD_PROGRESS = setTimeout(
656 function () {
657 getFileDownloadProgress.run();
658 },
659 SG_AJAX_REQUEST_FREQUENCY
660 );
661 }
662 };
663
664 getFileDownloadProgress.run();
665
666 };
667
668 sgBackup.fileUploadProgress = function (e) {
669 if (e.lengthComputable) {
670 jQuery('#uploadSgbpFile').html('Importing (' + Math.round((e.loaded * 100.0) / e.total) + '%)');
671 }
672
673 };
674
675 sgBackup.checkBackupCreation = function () {
676 jQuery('#manualBackup .btn-success').attr('disabled', true);
677 var sgBackupCreationHandler = new sgRequestHandler('checkBackupCreation', {token: BG_BACKUP_STRINGS.nonce});
678 sgBackupCreationHandler.dataType = 'html';
679 sgBackupCreationHandler.callback = function (response) {
680 var hideAndReload = function () {
681 jQuery('#sg-modal').modal('hide');
682 location.reload();
683 };
684 if (response.length) {
685 var result = jQuery.parseJSON(response);
686 if (result && result.status === 'cleaned') {
687 sgBackup.manualBackup('cleaned');
688 } else {
689 hideAndReload();
690 }
691 } else {
692 hideAndReload();
693 }
694 };
695 sgBackupCreationHandler.run();
696
697 };
698
699 sgBackup.checkRestoreCreation = function () {
700 jQuery('#manualBackup .btn-success').attr('disabled', true);
701 var sgRestoreCreationHandler = new sgRequestHandler('checkRestoreCreation', {token: BG_BACKUP_STRINGS.nonce});
702 sgRestoreCreationHandler.callback = function (response) {
703 if (response.status === 0 && response.external_enabled === 1) {
704 location.href = response.external_url;
705 } else if (response.status === 'cleaned') {
706 jQuery('#manualBackup .btn-success').click();
707 } else {
708 location.reload();
709 }
710 };
711 sgRestoreCreationHandler.run();
712
713 };
714
715 sgBackup.initManulBackupRadioInputs = function () {
716 jQuery('input[type=radio][name=backupType]').off('change').on(
717 'change',
718 function () {
719 jQuery('.sg-custom-backup').fadeToggle();
720 }
721 );
722 jQuery('input[type=radio][name=restoreType]').off('change').on(
723 'change',
724 function () {
725 if (jQuery('input[type=radio][name=restoreType]:checked').val() === "files") {
726 jQuery('.sg-restore-files-options').fadeIn();
727 } else {
728 jQuery('.sg-restore-files-options').fadeOut();
729 }
730 }
731 );
732
733 jQuery('input[type=radio][name=restoreFilesType]').off('change').on(
734 'change',
735 function () {
736 jQuery('.sg-file-selective-restore').fadeToggle();
737 }
738 );
739
740 jQuery('input[type=checkbox][name=backupFiles], input[type=checkbox][name=backupDatabase], input[type=checkbox][name=backupCloud]').off('change').on(
741 'change',
742 function () {
743 var sgCheckBoxWrapper = jQuery(this).closest('.checkbox').find('.sg-checkbox');
744 sgCheckBoxWrapper.fadeToggle();
745 if (jQuery(this).attr('name') === 'backupFiles') {
746 sgCheckBoxWrapper.find('input[type=checkbox]').attr('checked', 'checked');
747 }
748 }
749 );
750 jQuery('input[type=radio][name=backupDBType]').off('change').on(
751 'change',
752 function () {
753 var sgCheckBoxWrapper = jQuery(this).closest('.checkbox').find('.sg-custom-backup-tables');
754 if (jQuery('input[type=radio][name=backupDBType]:checked').val() === '2') {
755 sgCheckBoxWrapper.find('input[type=checkbox]').not("[disabled]").prop('checked', true)
756 sgCheckBoxWrapper.fadeIn();
757 } else {
758 sgCheckBoxWrapper.fadeOut();
759 sgCheckBoxWrapper.find('input[type=checkbox][current="true"]').not("[disabled]").prop('checked', true)
760 sgCheckBoxWrapper.find('input[type=checkbox][current="false"]').prop('checked', false)
761 }
762 }
763 )
764
765 };
766
767 sgBackup.initImportTooltips = function () {
768 jQuery('a[data-toggle=tooltip]').tooltip();
769
770 };
771
772 sgBackup.initManualBackupTooltips = function () {
773 jQuery('[for=cloud-ftp]').tooltip();
774 jQuery('[for=cloud-dropbox]').tooltip();
775 jQuery('[for=cloud-gdrive]').tooltip();
776 jQuery('[for=cloud-one-drive]').tooltip();
777 jQuery('[for=cloud-p-cloud]').tooltip();
778 jQuery('[for=cloud-box]').tooltip();
779 jQuery('[for=cloud-amazon]').tooltip();
780 jQuery('[for=cloud-backup-guard]').tooltip();
781
782 jQuery('a[data-toggle=tooltip]').tooltip();
783
784 };
785
786 sgBackup.startRestore = function (bname) {
787 var checkIsItMigration = new sgRequestHandler('checkFreeMigration', {bname: bname, token: BG_BACKUP_STRINGS.nonce});
788
789 checkIsItMigration.callback = function (response) {
790 if (response) {
791 jQuery('.modal-body.sg-modal-body').html(response);
792 return false;
793 }
794
795 sgBackup.startRestoreAction(bname);
796 };
797 checkIsItMigration.dataType = '';
798 checkIsItMigration.run();
799
800 };
801
802 sgBackup.startRestoreAction = function (bname) {
803 jQuery('.alert').remove();
804 var type = jQuery('input[type=radio][name=restoreType]:checked').val();
805 var restoreFilesType = jQuery('input[type=radio][name=restoreFilesType]:checked').val() || "0";
806
807 if (restoreFilesType === "0") {
808 var paths = "/";
809 } else {
810 var paths = jQuery("#fileSystemTreeContainer").jstree("get_selected");
811 }
812
813 var checkPHPVersionCompatibility = new sgRequestHandler(
814 'checkPHPVersionCompatibility',
815 {
816 bname: bname,
817 token: BG_BACKUP_STRINGS.nonce
818 }
819 );
820
821 checkPHPVersionCompatibility.callback = function (response) {
822 if (typeof response.error !== 'undefined') {
823 alert(response.error);
824 return false;
825 } else if (typeof response.warning !== 'undefined') {
826 if (!confirm(response.warning)) {
827 return false;
828 }
829 }
830
831 sgBackup.showAjaxSpinner('#sg-content-wrapper');
832 var resetStatusHandler = new sgRequestHandler('resetStatus', {token: BG_BACKUP_STRINGS.nonce});
833 resetStatusHandler.callback = function (response) {
834 // If error!
835 if (typeof response.success === 'undefined') {
836 alert(response);
837 location.reload();
838 return false;
839 }
840
841 var restoreHandler = new sgRequestHandler('restore', {bname: bname, type: type, paths: paths});
842 restoreHandler.run();
843 sgBackup.checkRestoreCreation();
844 };
845 resetStatusHandler.run();
846 };
847
848 if (type === "files" && restoreFilesType === 1) {
849 var isFeatureAvailable = new sgRequestHandler('isFeatureAvailable', {sgFeature: "SLECTIVE_RESTORE"});
850 isFeatureAvailable.callback = function (response) {
851 if (typeof response.success !== 'undefined') {
852 checkPHPVersionCompatibility.run();
853 } else {
854 var alert = sgBackup.alertGenerator(response.error, 'alert-warning');
855 jQuery('#sg-modal .modal-header').prepend(alert);
856 return false;
857 }
858 };
859
860 isFeatureAvailable.run();
861 } else {
862 checkPHPVersionCompatibility.run();
863 }
864
865 };
866
867 sgBackup.initActiveAction = function () {
868 if (jQuery('.sg-active-action-id').length <= 0) {
869 return;
870 }
871
872 var activeActionsIds = [];
873 jQuery('.sg-active-action-id').each(
874 function () {
875 activeActionsIds.push(jQuery(this).val());
876 }
877 );
878
879 // Cancel Button!
880 jQuery('.sg-cancel-backup').click(
881 function () {
882 if (confirm('Are you sure?')) {
883 var actionId = jQuery(this).attr('sg-data-backup-id');
884 var sgCancelHandler = new sgRequestHandler(
885 'cancelBackup',
886 {
887 actionId: actionId,
888 token: BG_BACKUP_STRINGS.nonce
889 }
890 );
891 sgCancelHandler.run();
892 }
893 }
894 );
895
896 var activeActionsIdsLength = activeActionsIds.length;
897 for (var i = 0; i < activeActionsIdsLength; i++) {
898 // GetProgress!
899 sgBackup.getActionProgress(activeActionsIds[i]);
900 }
901
902 };
903
904 sgBackup.getActionProgress = function (actionId) {
905 var progressBar = jQuery('.sg-progress .progress-bar', '#sg-status-tabe-data-' + actionId);
906
907 var sgActionHandler = new sgRequestHandler('getAction', {actionId: actionId, token: BG_BACKUP_STRINGS.nonce});
908 // Init tooltip!
909 var statusTooltip = jQuery('#sg-status-tabe-data-' + actionId + '[data-toggle=tooltip]').tooltip();
910
911 sgActionHandler.callback = function (response) {
912 if (response) {
913 sgBackup.disableUi();
914 var progressInPercents = response.progress + '%';
915 progressBar.width(progressInPercents);
916 sgBackup.statusUpdate(statusTooltip, response, progressInPercents);
917 setTimeout(
918 function () {
919 sgActionHandler.run();
920 },
921 SG_CHECK_ACTION_STATUS_REQUEST_FREQUENCY
922 );
923 } else {
924 jQuery('[class*=sg-status]').addClass('active');
925 jQuery('.sg-progress').remove();
926 jQuery('.sg-active-action-id').remove();
927 location.reload();
928 }
929 };
930 sgActionHandler.run();
931
932 };
933
934 sgBackup.statusUpdate = function (tooltip, response, progressInPercents) {
935 var tooltipText = '';
936 if (response.type === '1') {
937 var currentAction = 'Backup';
938 if (response.status === '1') {
939 tooltipText = currentAction + ' database - ' + progressInPercents;
940 } else if (response.status === '2') {
941 tooltipText = currentAction + ' files - ' + progressInPercents;
942 }
943
944 jQuery('.sg-status-' + response.status).prevAll('[class*=sg-status]').addClass('active');
945 } else if (response.type === '2') {
946 var currentAction = 'Restore';
947 if (response.status === '1') {
948 tooltipText = currentAction + ' database - ' + progressInPercents;
949 } else if (response.status === '2') {
950 tooltipText = currentAction + ' files - ' + progressInPercents;
951 }
952
953 jQuery('.sg-status-' + response.type + response.status).prevAll('[class*=sg-status]').addClass('active');
954 } else if (response.type === '3') {
955 var cloudIcon = jQuery('.sg-status-' + response.type + response.subtype);
956 if (response.subtype === SG_STORAGE_FTP) {
957 tooltipText = 'Uploading to FTP - ' + progressInPercents;
958 } else if (response.subtype === SG_STORAGE_DROPBOX) {
959 tooltipText = 'Uploading to Dropbox - ' + progressInPercents;
960 } else if (response.subtype === SG_STORAGE_GOOGLE_DRIVE) {
961 tooltipText = 'Uploading to Google Drive - ' + progressInPercents;
962 } else if (response.subtype === SG_STORAGE_AMAZON) {
963 tooltipText = 'Uploading to Amazon S3 - ' + progressInPercents;
964 } else if (response.subtype === SG_STORAGE_ONE_DRIVE) {
965 tooltipText = 'Uploading to OneDrive - ' + progressInPercents;
966 } else if (response.subtype === SG_STORAGE_P_CLOUD) {
967 tooltipText = 'Uploading to pCloud - ' + progressInPercents;
968 } else if (response.subtype === SG_STORAGE_BOX) {
969 tooltipText = 'Uploading to box.com - ' + progressInPercents;
970 } else if (response.subtype === SG_STORAGE_BACKUP_GUARD) {
971 tooltipText = 'Uploading to BackupGuard - ' + progressInPercents;
972 }
973
974 cloudIcon.prevAll('[class*=sg-status]').addClass('active');
975 }//end if
976
977 tooltip.attr('data-original-title', tooltipText);
978
979 };
980
981 sgBackup.disableUi = function () {
982 jQuery('#sg-manual-backup').attr('disabled', 'disabled');
983 jQuery('#sg-backup-with-migration').attr('disabled', 'disabled');
984 jQuery('#sg-import').attr('disabled', 'disabled');
985 jQuery('.sg-restore').attr('disabled', 'disabled');
986 jQuery('.sg-restore-button').attr('disabled', 'disabled');
987
988 };
989
990 sgBackup.enableUi = function () {
991 jQuery('#sg-manual-backup').removeAttr('disabled');
992 jQuery('#sg-backup-with-migration').removeAttr('disabled');
993 jQuery('#sg-import').removeAttr('disabled');
994 jQuery('.sg-restore').removeAttr('disabled');
995 jQuery('.sg-restore-button').removeAttr('disabled');
996
997 };
998
999 sgBackup.initBackupDeletion = function () {
1000 jQuery('.sg-remove-backup').click(
1001 function () {
1002 var btn = jQuery(this),
1003 url = btn.attr('data-remote'),
1004 backupName = [btn.attr('data-sgbackup-name')];
1005 if (confirm('Are you sure?')) {
1006 var ajaxHandler = new sgRequestHandler(url, {backupName: backupName, token: BG_BACKUP_STRINGS.nonce});
1007 ajaxHandler.callback = function (response) {
1008 location.reload();
1009 };
1010 ajaxHandler.run();
1011 }
1012 }
1013 );
1014
1015 };
1016
1017 /* phpcs:enable */
1018