PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backups, Restore, Migration & Clone / 4.10.0
WP STAGING – WordPress Backups, Restore, Migration & Clone v4.10.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 / Staging / Jobs / StagingSiteCreate.php
wp-staging / Staging / Jobs Last commit date
StagingJobsProvider.php 7 months ago StagingSiteCreate.php 4 days ago StagingSiteDelete.php 1 year ago StagingSiteReset.php 1 month ago StagingSiteUpdate.php 1 month ago
StagingSiteCreate.php
117 lines
1 <?php
2
3 namespace WPStaging\Staging\Jobs;
4
5 use WPStaging\Framework\Job\AbstractJob;
6 use WPStaging\Staging\Dto\Job\StagingSiteJobsDataDto;
7 use WPStaging\Staging\Tasks\StagingSite\Database\CreateDatabaseTablesTask;
8 use WPStaging\Staging\Tasks\StagingSite\Database\ImportDatabaseRowsTask;
9 use WPStaging\Staging\Tasks\StagingSite\Database\PrepareDatabaseRowsTask;
10 use WPStaging\Staging\Tasks\StagingSite\Filesystem\CopyMuPluginsTask;
11 use WPStaging\Staging\Tasks\StagingSite\Filesystem\CopyPluginsTask;
12 use WPStaging\Staging\Tasks\StagingSite\Filesystem\CopyThemesTask;
13 use WPStaging\Staging\Tasks\StagingSite\Filesystem\CopyUploadsTask;
14 use WPStaging\Staging\Tasks\StagingSite\Filesystem\CopyWpAdminTask;
15 use WPStaging\Staging\Tasks\StagingSite\Filesystem\CopyWpContentTask;
16 use WPStaging\Staging\Tasks\StagingSite\Filesystem\CopyWpIncludesTask;
17 use WPStaging\Staging\Tasks\StagingSite\Filesystem\CopyWpRootDirectoriesTask;
18 use WPStaging\Staging\Tasks\StagingSite\Filesystem\CopyWpRootFilesTask;
19 use WPStaging\Staging\Tasks\StagingSite\Filesystem\FilesystemScannerTask;
20 use WPStaging\Staging\Tasks\StagingSiteCreate\CreateRequirementsCheckTask;
21 use WPStaging\Staging\Tasks\StagingSiteCreate\FinishStagingSiteCreateTask;
22 use WPStaging\Staging\Traits\WithDataAdjustmentTasks;
23
24 class StagingSiteCreate extends AbstractJob
25 {
26 use WithDataAdjustmentTasks;
27
28 /** @var string */
29 const ACTION_CLONING_COMPLETE = 'wpstg_cloning_complete';
30
31 /**
32 * Fires only when a staging site was newly created. ACTION_CLONING_COMPLETE
33 * cannot be used for that: update and reset broadcast the same name.
34 * @var string
35 */
36 const ACTION_STAGING_SITE_CREATED = 'wpstg_staging_site_created';
37
38 /** @var StagingSiteJobsDataDto $jobDataDto */
39 protected $jobDataDto;
40
41 /** @var array The array of tasks to execute for this job. Populated at init(). */
42 protected $tasks = [];
43
44 public static function getJobName()
45 {
46 return 'staging_site_create';
47 }
48
49 protected function getJobTasks()
50 {
51 return $this->tasks;
52 }
53
54 protected function execute()
55 {
56 try {
57 $response = $this->getResponse($this->currentTask->execute());
58 } catch (\Exception $e) {
59 $this->currentTask->getLogger()->critical($e->getMessage());
60 $response = $this->getResponse($this->currentTask->generateResponse(false));
61 }
62
63 return $response;
64 }
65
66 protected function init()
67 {
68 $this->addRequirementsCheckTask();
69 $this->addDatabaseTasks();
70 $this->addFilesystemTasks();
71 $this->addAdvanceTasks();
72 $this->addDataAdjustmentTasks();
73 $this->addFinishStagingSiteCreateTask();
74 }
75
76 protected function addRequirementsCheckTask()
77 {
78 $this->tasks[] = CreateRequirementsCheckTask::class;
79 }
80
81 protected function addDatabaseTasks()
82 {
83 // Early return if all tables are excluded
84 if ($this->jobDataDto->getAllTablesExcluded() && empty($this->jobDataDto->getNonSiteTables())) {
85 return;
86 }
87
88 $this->tasks[] = CreateDatabaseTablesTask::class;
89 $this->tasks[] = PrepareDatabaseRowsTask::class;
90 $this->tasks[] = ImportDatabaseRowsTask::class;
91 }
92
93 protected function addFilesystemTasks()
94 {
95 $this->tasks[] = FilesystemScannerTask::class;
96 $this->tasks[] = CopyWpRootFilesTask::class;
97 $this->tasks[] = CopyWpAdminTask::class;
98 $this->tasks[] = CopyWpIncludesTask::class;
99 $this->tasks[] = CopyPluginsTask::class;
100 $this->tasks[] = CopyMuPluginsTask::class;
101 $this->tasks[] = CopyThemesTask::class;
102 $this->tasks[] = CopyUploadsTask::class;
103 $this->tasks[] = CopyWpContentTask::class;
104 $this->tasks[] = CopyWpRootDirectoriesTask::class;
105 }
106
107 protected function addFinishStagingSiteCreateTask()
108 {
109 $this->tasks[] = FinishStagingSiteCreateTask::class;
110 }
111
112 protected function addAdvanceTasks()
113 {
114 // no-op, used in PRO
115 }
116 }
117