PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backup, Restore, Migration & Clone / 3.0.4
WP STAGING – WordPress Backup, Restore, Migration & Clone v3.0.4
4.9.1 4.9.0 4.8.1 trunk 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.10.0 3.2.0 3.3.1 3.3.2 3.3.3 3.4.1 3.4.3 3.5.0 3.6.0 3.7.1 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4 4.0.0 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.8.0
wp-staging / Backup / BackupServiceProvider.php
wp-staging / Backup Last commit date
Ajax 2 years ago BackgroundProcessing 2 years ago Dto 2 years ago Entity 2 years ago Exceptions 3 years ago Job 2 years ago Request 2 years ago Service 2 years ago Storage 2 years ago Task 2 years ago AfterRestore.php 3 years ago BackupDeleter.php 3 years ago BackupDownload.php 3 years ago BackupProcessLock.php 3 years ago BackupRepairer.php 3 years ago BackupScheduler.php 2 years ago BackupServiceProvider.php 2 years ago BackupValidator.php 2 years ago WithBackupIdentifier.php 2 years ago wpstgBackupHeader.txt 3 years ago
BackupServiceProvider.php
126 lines
1 <?php
2
3 namespace WPStaging\Backup;
4
5 use WPStaging\Framework\DI\FeatureServiceProvider;
6 use WPStaging\Framework\Filesystem\Filesystem;
7 use WPStaging\Framework\Queue\FileSeekableQueue;
8 use WPStaging\Framework\Queue\SeekableQueueInterface;
9 use WPStaging\Backup\Ajax\Backup\PrepareBackup;
10 use WPStaging\Backup\Ajax\Restore\LoginUrl;
11 use WPStaging\Backup\Ajax\Restore\PrepareRestore;
12 use WPStaging\Backup\Ajax\Restore\ReadBackupMetadata;
13 use WPStaging\Backup\Ajax\ScheduleList;
14 use WPStaging\Backup\Ajax\Cancel;
15 use WPStaging\Backup\Ajax\Backup;
16 use WPStaging\Backup\Ajax\Delete;
17 use WPStaging\Backup\Ajax\Edit;
18 use WPStaging\Backup\Ajax\Listing;
19 use WPStaging\Backup\Ajax\Restore;
20 use WPStaging\Backup\Ajax\FileInfo;
21 use WPStaging\Backup\Ajax\FileList;
22 use WPStaging\Backup\Ajax\MemoryExhaust;
23 use WPStaging\Backup\Ajax\Parts;
24 use WPStaging\Backup\Ajax\Status;
25 use WPStaging\Backup\Ajax\Upload;
26 use WPStaging\Backup\Request\Logs;
27 use WPStaging\Backup\Service\BackupAssets;
28 use WPStaging\Backup\Service\BackupsFinder;
29 use WPStaging\Backup\Service\Database\Importer\Insert\ExtendedInserterWithoutTransaction;
30 use WPStaging\Backup\Service\Database\Importer\Insert\QueryInserter;
31 use WPStaging\Backup\Task\AbstractTask;
32
33 class BackupServiceProvider extends FeatureServiceProvider
34 {
35 /**
36 * Toggle the experimental backup feature on/off.
37 * Used only for developers of WP STAGING while the backups feature is being developed.
38 * Do not turn this on unless you know what you're doing, as it might irreversibly delete
39 * files, databases, etc.
40 */
41 /* public static function getFeatureTrigger()
42 {
43 return 'WPSTG_FEATURE_ENABLE_BACKUP';
44 }*/
45
46 public function createBackupsDirectory()
47 {
48 $backupsDirectory = $this->container->make(BackupsFinder::class)->getBackupsDirectory();
49 $this->container->make(Filesystem::class)->mkdir($backupsDirectory, true);
50 }
51
52 protected function registerClasses()
53 {
54 $this->container->bind(SeekableQueueInterface::class, function () {
55 return $this->container->make(FileSeekableQueue::class);
56 });
57
58 $this->container->when(AbstractTask::class)
59 ->needs(SeekableQueueInterface::class)
60 ->give(FileSeekableQueue::class);
61
62 $this->container->make(BackupDownload::class)->listenDownload();
63
64 $this->hookDatabaseImporterQueryInserter();
65 }
66
67 protected function addHooks()
68 {
69 $this->enqueueAjaxListeners();
70
71 $this->enqueueBackupScripts();
72
73 add_action('wpstg_weekly_event', [$this, 'createBackupsDirectory'], 25, 0);
74
75 add_action('wp_login', $this->container->callback(AfterRestore::class, 'loginAfterRestore'), 10, 0);
76 }
77
78 protected function enqueueAjaxListeners()
79 {
80 add_action('wp_ajax_wpstg--backups--prepare-backup', $this->container->callback(PrepareBackup::class, 'ajaxPrepare')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
81 add_action('wp_ajax_wpstg--backups--create', $this->container->callback(Backup::class, 'render')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
82
83 add_action('wp_ajax_wpstg--backups--prepare-restore', $this->container->callback(PrepareRestore::class, 'ajaxPrepare')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
84 add_action('wp_ajax_wpstg--backups--restore', $this->container->callback(Restore::class, 'render')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
85
86 add_action('wp_ajax_wpstg--backups--read-backup-metadata', $this->container->callback(ReadBackupMetadata::class, 'ajaxPrepare')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
87
88 add_action('wp_ajax_wpstg--backups--listing', $this->container->callback(Listing::class, 'render')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
89 add_action('wp_ajax_wpstg--backups--delete', $this->container->callback(Delete::class, 'render')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
90 add_action('wp_ajax_wpstg--backups--cancel', $this->container->callback(Cancel::class, 'render')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
91 add_action('wp_ajax_wpstg--backups--edit', $this->container->callback(Edit::class, 'render')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
92 add_action('wp_ajax_wpstg--backups--parts', $this->container->callback(Parts::class, 'render')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
93 add_action('wp_ajax_wpstg--backups--status', $this->container->callback(Status::class, 'render')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
94 add_action('wp_ajax_wpstg--backups--restore--file-list', $this->container->callback(FileList::class, 'render')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
95 add_action('wp_ajax_wpstg--backups--restore--file-info', $this->container->callback(FileInfo::class, 'render')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
96 add_action('wp_ajax_wpstg--backups--restore--file-upload', $this->container->callback(Upload::class, 'render')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
97 add_action('wp_ajax_wpstg--backups--uploads-delete-unfinished', $this->container->callback(Upload::class, 'ajaxDeleteIncompleteUploads')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
98 add_action('wp_ajax_raw_wpstg--backups--login-url', $this->container->callback(LoginUrl::class, 'getLoginUrl')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
99 add_action('wp_ajax_wpstg--detect-memory-exhaust', $this->container->callback(MemoryExhaust::class, 'ajaxResponse')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
100
101 // Nopriv
102 add_action('wp_ajax_nopriv_wpstg--backups--restore', $this->container->callback(Restore::class, 'render')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
103 add_action('wp_ajax_nopriv_wpstg--backups--status', $this->container->callback(Status::class, 'render')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
104 add_action('wp_ajax_nopriv_raw_wpstg--backups--login-url', $this->container->callback(LoginUrl::class, 'getLoginUrl')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
105
106 add_action('wpstg_create_cron_backup', $this->container->callback(BackupScheduler::class, 'createCronBackup'), 10, 1);
107 add_action('wp_ajax_wpstg--backups-dismiss-schedule', $this->container->callback(BackupScheduler::class, 'dismissSchedule'), 10, 1); // phpcs:ignore WPStaging.Security.AuthorizationChecked
108 add_action('wp_ajax_wpstg--backups-fetch-schedules', $this->container->callback(ScheduleList::class, 'renderScheduleList'), 10, 1); // phpcs:ignore WPStaging.Security.AuthorizationChecked
109
110 add_action("admin_post_wpstg--backups--logs", $this->container->callback(Logs::class, 'download')); // phpcs:ignore WPStaging.Security.AuthorizationChecked
111
112 // Event that we can run on daily basis to repair any corrupted backup create cron jobs
113 add_action('wpstg_daily_event', $this->container->callback(BackupScheduler::class, 'reCreateCron'), 10, 0);
114 }
115
116 protected function hookDatabaseImporterQueryInserter()
117 {
118 $this->container->bind(QueryInserter::class, ExtendedInserterWithoutTransaction::class);
119 }
120
121 protected function enqueueBackupScripts()
122 {
123 add_action('wpstg_enqueue_backup_scripts', $this->container->callback(BackupAssets::class, 'register'));
124 }
125 }
126