PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backups, Restore, Migration & Clone / 4.11.0
WP STAGING – WordPress Backups, Restore, Migration & Clone v4.11.0
4.11.0 4.10.0 4.9.5 4.9.4 4.9.3 4.9.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 days ago JobRestore.php 2 days ago
JobBackup.php
299 lines
1 <?php
2
3
4
5
6
7
8
9
10 namespace WPStaging\Backup\Job\Jobs;
11
12 use WPStaging\Backup\Dto\Job\JobBackupDataDto;
13 use WPStaging\Backup\Exceptions\NothingToBackupException;
14 use WPStaging\Backup\Task\Tasks\JobBackup\BackupMuPluginsTask;
15 use WPStaging\Backup\Task\Tasks\JobBackup\BackupOtherFilesTask;
16 use WPStaging\Backup\Task\Tasks\JobBackup\BackupOtherWpRootFilesTask;
17 use WPStaging\Backup\Task\Tasks\JobBackup\BackupPluginsTask;
18 use WPStaging\Backup\Task\Tasks\JobBackup\BackupRequirementsCheckTask;
19 use WPStaging\Backup\Task\Tasks\JobBackup\CleanupValidationFilesTask;
20 use WPStaging\Backup\Task\Tasks\JobBackup\BackupThemesTask;
21 use WPStaging\Backup\Task\Tasks\JobBackup\BackupUploadsTask;
22 use WPStaging\Backup\Task\Tasks\JobBackup\DatabaseBackupTask;
23 use WPStaging\Backup\Task\Tasks\JobBackup\FilesystemScannerTask;
24 use WPStaging\Backup\Task\Tasks\JobBackup\FinalizeBackupTask;
25 use WPStaging\Backup\Task\Tasks\JobBackup\FinishBackupTask;
26 use WPStaging\Backup\Task\Tasks\JobBackup\IncludeDatabaseTask;
27 use WPStaging\Backup\Task\Tasks\JobBackup\RecalibrateFilesCountTask;
28 use WPStaging\Backup\Task\Tasks\JobBackup\ScheduleBackupTask;
29 use WPStaging\Backup\Task\Tasks\JobBackup\SignBackupTask;
30 use WPStaging\Backup\Task\Tasks\JobBackup\ValidateBackupTask;
31 use WPStaging\Core\WPStaging;
32 use WPStaging\Framework\Analytics\Actions\AnalyticsBackupCreate;
33 use WPStaging\Framework\Job\Dto\TaskResponseDto;
34 use WPStaging\Framework\Job\AbstractJob;
35 use WPStaging\Framework\Job\JobTransientCache;
36 use WPStaging\Framework\Job\Task\AbstractTask;
37
38 class JobBackup extends AbstractJob
39 {
40
41 const JOB_STATUS_NOTHING_TO_BACKUP = 'JOB_NOTHING_TO_BACKUP';
42
43
44 protected $jobDataDto;
45
46
47 protected $tasks = [];
48
49 public static function getJobName()
50 {
51 return 'backup_job';
52 }
53
54 protected function getJobTasks()
55 {
56 return $this->tasks;
57 }
58
59 protected function execute()
60 {
61
62
63 try {
64 $response = $this->getResponse($this->currentTask->execute());
65 } catch (NothingToBackupException $e) {
66 return $this->getNothingToBackupResponse($e->getMessage());
67 } catch (\Exception $e) {
68 $title = $this->currentTask->getTaskTitle();
69 if (empty($title)) {
70 $title = 'Backup job';
71 }
72
73 $this->currentTask->getLogger()->critical($title . ' failed! Error: ' . $e->getMessage());
74 $response = $this->getResponse($this->currentTask->generateResponse(false));
75 }
76
77
78
79 return $response;
80 }
81
82
83
84
85
86
87
88
89 protected function getNothingToBackupResponse(string $message): TaskResponseDto
90 {
91 $this->currentTask->getLogger()->warning($message);
92
93 WPStaging::make(AnalyticsBackupCreate::class)->enqueueFinishEvent($this->jobDataDto->getId(), $this->jobDataDto);
94
95 $this->jobDataDto->setFinished(true);
96 $this->persistJobDataDto();
97
98 $response = $this->currentTask->generateResponse(false);
99 $response->setIsRunning(false);
100 $response->setJobStatus(self::JOB_STATUS_NOTHING_TO_BACKUP);
101
102 $this->jobTransientCache->failJob(esc_html__('Nothing to backup', 'wp-staging'), $message, JobTransientCache::SEVERITY_NOTICE);
103
104 return $response;
105 }
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137 protected function getResponse(TaskResponseDto $response)
138 {
139 $response = parent::getResponse($response);
140
141 if ($this->currentTask instanceof AbstractTask) {
142 $this->jobDataDto->setQueueOffset($this->currentTask->getQueue()->getOffset());
143 $this->currentTask->persistStepsDto();
144 }
145
146 $this->persistJobDataDto();
147
148 return $response;
149 }
150
151
152
153
154 protected function init()
155 {
156 $this->setRequirementTask();
157
158 if ($this->jobDataDto->getRepeatBackupOnSchedule() && !$this->jobDataDto->getIsCreateScheduleBackupNow()) {
159 $this->addSchedulerTask();
160 $this->addFinishBackupTask();
161 return;
162 }
163
164 if ($this->jobDataDto->getIsCreateBackupInBackground()) {
165 if ($this->jobDataDto->getRepeatBackupOnSchedule()) {
166 $this->addSchedulerTask();
167 }
168
169 $this->addFinishBackupTask();
170 return;
171 }
172
173 $this->setScannerTask();
174 if ($this->jobDataDto->getIsExportingOtherWpContentFiles()) {
175 $this->tasks[] = BackupOtherFilesTask::class;
176 }
177
178 if ($this->jobDataDto->getIsExportingPlugins()) {
179 $this->tasks[] = BackupPluginsTask::class;
180 }
181
182 if ($this->jobDataDto->getIsExportingMuPlugins()) {
183 $this->tasks[] = BackupMuPluginsTask::class;
184 }
185
186 if ($this->jobDataDto->getIsExportingThemes()) {
187 $this->tasks[] = BackupThemesTask::class;
188 }
189
190 if ($this->jobDataDto->getIsExportingUploads()) {
191 $this->tasks[] = BackupUploadsTask::class;
192 }
193
194 $this->addBackupOtherWpRootFilesTasks();
195
196 $this->addDatabaseTasks();
197
198 $this->addFinalizeTask();
199 if ($this->jobDataDto->getRepeatBackupOnSchedule()) {
200 $this->addSchedulerTask();
201 }
202
203 if (!$this->jobDataDto->getIsMultipartBackup()) {
204 $this->tasks[] = RecalibrateFilesCountTask::class;
205 }
206
207
208
209
210
211
212 $this->addValidationTasks();
213
214 $this->tasks[] = SignBackupTask::class;
215
216 $this->addStoragesTasks();
217 $this->addFinishBackupTask();
218 }
219
220 protected function addDatabaseTasks()
221 {
222 if (!$this->jobDataDto->getIsExportingDatabase()) {
223 return;
224 }
225
226 $this->tasks[] = DatabaseBackupTask::class;
227 $this->tasks[] = IncludeDatabaseTask::class;
228 }
229
230 protected function addCompressionTask()
231 {
232
233 }
234
235
236
237
238 protected function addStoragesTasks()
239 {
240
241 }
242
243
244
245
246 protected function addBackupOtherWpRootFilesTasks()
247 {
248 if ($this->jobDataDto->getIsExportingOtherWpRootFiles()) {
249 $this->tasks[] = BackupOtherWpRootFilesTask::class;
250 }
251 }
252
253
254
255
256 protected function addFinalizeTask()
257 {
258 $this->tasks[] = FinalizeBackupTask::class;
259 }
260
261 protected function addValidationTasks()
262 {
263 $this->tasks[] = ValidateBackupTask::class;
264 $this->tasks[] = CleanupValidationFilesTask::class;
265 }
266
267
268
269
270 protected function addFinishBackupTask()
271 {
272 $this->tasks[] = FinishBackupTask::class;
273 }
274
275
276
277
278 protected function addSchedulerTask()
279 {
280 $this->tasks[] = ScheduleBackupTask::class;
281 }
282
283
284
285
286 protected function setRequirementTask()
287 {
288 $this->tasks[] = BackupRequirementsCheckTask::class;
289 }
290
291
292
293
294 protected function setScannerTask()
295 {
296 $this->tasks[] = FilesystemScannerTask::class;
297 }
298 }
299