PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backup, Restore, Migration & Clone / 3.8.2
WP STAGING – WordPress Backup, Restore, Migration & Clone v3.8.2
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 / Job / Jobs / JobBackup.php
wp-staging / Backup / Job / Jobs Last commit date
JobBackup.php 2 years ago JobCancel.php 3 years ago JobRestore.php 2 years ago
JobBackup.php
200 lines
1 <?php
2
3 namespace WPStaging\Backup\Job\Jobs;
4
5 use WPStaging\Backup\Dto\Job\JobBackupDataDto;
6 use WPStaging\Backup\Job\AbstractJob;
7 use WPStaging\Backup\Task\Tasks\JobBackup\BackupMuPluginsTask;
8 use WPStaging\Backup\Task\Tasks\JobBackup\BackupOtherFilesTask;
9 use WPStaging\Backup\Task\Tasks\JobBackup\BackupPluginsTask;
10 use WPStaging\Backup\Task\Tasks\JobBackup\BackupRequirementsCheckTask;
11 use WPStaging\Backup\Task\Tasks\JobBackup\BackupThemesTask;
12 use WPStaging\Backup\Task\Tasks\JobBackup\BackupUploadsTask;
13 use WPStaging\Backup\Task\Tasks\JobBackup\DatabaseBackupTask;
14 use WPStaging\Backup\Task\Tasks\JobBackup\FilesystemScannerTask;
15 use WPStaging\Backup\Task\Tasks\JobBackup\FinalizeBackupTask;
16 use WPStaging\Backup\Task\Tasks\JobBackup\FinishBackupTask;
17 use WPStaging\Backup\Task\Tasks\JobBackup\IncludeDatabaseTask;
18 use WPStaging\Backup\Task\Tasks\JobBackup\ScheduleBackupTask;
19 use WPStaging\Backup\Task\Tasks\JobBackup\SignBackupTask;
20 use WPStaging\Backup\Task\Tasks\JobBackup\ValidateBackupTask;
21
22 class JobBackup extends AbstractJob
23 {
24 /** @var JobBackupDataDto $jobDataDto */
25 protected $jobDataDto;
26
27 /** @var array The array of tasks to execute for this job. Populated at init(). */
28 protected $tasks = [];
29
30 public static function getJobName()
31 {
32 return 'backup_job';
33 }
34
35 protected function getJobTasks()
36 {
37 return $this->tasks;
38 }
39
40 protected function execute()
41 {
42 //$this->startBenchmark();
43
44 try {
45 $response = $this->getResponse($this->currentTask->execute());
46 } catch (\Exception $e) {
47 $this->currentTask->getLogger()->critical('Backup job failed! Error: ' . $e->getMessage());
48 $response = $this->getResponse($this->currentTask->generateResponse(false));
49 }
50
51 //$this->finishBenchmark(get_class($this->currentTask));
52
53 return $response;
54 }
55
56 /**
57 * @return void
58 */
59 protected function init()
60 {
61 $this->setRequirementTask();
62
63 if ($this->jobDataDto->getRepeatBackupOnSchedule() && !$this->jobDataDto->getIsCreateScheduleBackupNow()) {
64 $this->addSchedulerTask();
65 $this->addFinishBackupTask();
66 return;
67 }
68
69 if ($this->jobDataDto->getIsCreateBackupInBackground()) {
70 if ($this->jobDataDto->getRepeatBackupOnSchedule()) {
71 $this->addSchedulerTask();
72 }
73
74 $this->addFinishBackupTask();
75 return;
76 }
77
78 $this->setScannerTask();
79 if ($this->jobDataDto->getIsExportingOtherWpContentFiles()) {
80 $this->tasks[] = BackupOtherFilesTask::class;
81 }
82
83 if ($this->jobDataDto->getIsExportingPlugins()) {
84 $this->tasks[] = BackupPluginsTask::class;
85 }
86
87 if ($this->jobDataDto->getIsExportingMuPlugins()) {
88 $this->tasks[] = BackupMuPluginsTask::class;
89 }
90
91 if ($this->jobDataDto->getIsExportingThemes()) {
92 $this->tasks[] = BackupThemesTask::class;
93 }
94
95 if ($this->jobDataDto->getIsExportingUploads()) {
96 $this->tasks[] = BackupUploadsTask::class;
97 }
98
99 $this->addBackupOtherWpRootFilesTasks();
100
101 $this->addDatabaseTasks();
102
103 $this->addCompressionTask();
104 $this->addFinalizeTask();
105 if ($this->jobDataDto->getRepeatBackupOnSchedule()) {
106 $this->addSchedulerTask();
107 }
108
109 /**
110 * Validation is a must to ensure the backup is valid.
111 * But it cannot be done during backup listing otherwise it will consume a lot of memory and may result in timeout.
112 * So validation should be done before signing of backup. So we can stop the process and keep backup invalid state in case if validation fails.
113 */
114 if ($this->jobDataDto->getIsValidateBackupFiles()) {
115 $this->addValidationTasks();
116 }
117
118 $this->tasks[] = SignBackupTask::class;
119
120 $this->addStoragesTasks();
121 $this->addFinishBackupTask();
122 }
123
124 protected function addDatabaseTasks()
125 {
126 if (!$this->jobDataDto->getIsExportingDatabase()) {
127 return;
128 }
129
130 $this->tasks[] = DatabaseBackupTask::class;
131 $this->tasks[] = IncludeDatabaseTask::class;
132 }
133
134 protected function addCompressionTask()
135 {
136 // Used in PRO version
137 }
138
139 /**
140 * @return void
141 */
142 protected function addStoragesTasks()
143 {
144 // Used in PRO version
145 }
146
147 /**
148 * @return void
149 */
150 protected function addBackupOtherWpRootFilesTasks()
151 {
152 // Used in PRO version
153 }
154
155 /**
156 * @return void
157 */
158 protected function addFinalizeTask()
159 {
160 $this->tasks[] = FinalizeBackupTask::class;
161 }
162
163 protected function addValidationTasks()
164 {
165 $this->tasks[] = ValidateBackupTask::class;
166 }
167
168 /**
169 * @return void
170 */
171 protected function addFinishBackupTask()
172 {
173 $this->tasks[] = FinishBackupTask::class;
174 }
175
176 /**
177 * @return void
178 */
179 protected function addSchedulerTask()
180 {
181 $this->tasks[] = ScheduleBackupTask::class;
182 }
183
184 /**
185 * @return void
186 */
187 protected function setRequirementTask()
188 {
189 $this->tasks[] = BackupRequirementsCheckTask::class;
190 }
191
192 /**
193 * @return void
194 */
195 protected function setScannerTask()
196 {
197 $this->tasks[] = FilesystemScannerTask::class;
198 }
199 }
200