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 / Staging / Tasks / StagingSiteUpdate / FinishStagingSiteUpdateTask.php
wp-staging / Staging / Tasks / StagingSiteUpdate Last commit date
FinishStagingSiteUpdateTask.php 1 day ago UpdateRequirementsCheckTask.php 1 day ago
FinishStagingSiteUpdateTask.php
126 lines
1 <?php
2
3 namespace WPStaging\Staging\Tasks\StagingSiteUpdate;
4
5 use WPStaging\Core\WPStaging;
6 use WPStaging\Framework\Facades\Hooks;
7 use WPStaging\Framework\Queue\SeekableQueueInterface;
8 use WPStaging\Framework\Job\Dto\StepsDto;
9 use WPStaging\Framework\Job\Dto\TaskResponseDto;
10 use WPStaging\Framework\Utils\Cache\Cache;
11 use WPStaging\Staging\Dto\Job\StagingSiteJobsDataDto;
12 use WPStaging\Staging\Dto\StagingSiteDto;
13 use WPStaging\Staging\Dto\Task\Response\FinishStagingSiteResponseDto;
14 use WPStaging\Staging\Jobs\StagingSiteCreate;
15 use WPStaging\Staging\Sites;
16 use WPStaging\Staging\Tasks\StagingTask;
17 use WPStaging\Vendor\Psr\Log\LoggerInterface;
18
19 use function WPStaging\functions\debug_log;
20
21 class FinishStagingSiteUpdateTask extends StagingTask
22 {
23
24 protected $jobDataDto;
25
26
27 private $sites;
28
29
30
31
32
33
34
35
36 public function __construct(LoggerInterface $logger, Cache $cache, StepsDto $stepsDto, SeekableQueueInterface $taskQueue, Sites $sites)
37 {
38 parent::__construct($logger, $cache, $stepsDto, $taskQueue);
39 $this->sites = $sites;
40 }
41
42
43
44
45 public static function getTaskName()
46 {
47 return 'staging_site_update_finish';
48 }
49
50
51
52
53 public static function getTaskTitle()
54 {
55 return 'Finishing Staging Site Update';
56 }
57
58
59
60
61 public function execute()
62 {
63 $this->getJobTransientCache()->completeJob();
64 $stagingSites = $this->sites->tryGettingStagingSites();
65 $stagingSite = $this->buildStagingSite();
66 $stagingSites[$this->jobDataDto->getCloneId()] = $stagingSite->toArray();
67 $this->sites->updateStagingSites($stagingSites);
68 $this->logFinishHeader($stagingSite->getSiteName());
69 $this->triggerOnStagingSiteCreatedEvent($stagingSite);
70
71 return $this->overrideGenerateResponse();
72 }
73
74
75
76
77
78 protected function logFinishHeader(string $stagingSiteName)
79 {
80 $this->logger->info(sprintf(
81 'Staging Site "%s" updated.',
82 $stagingSiteName
83 ));
84 }
85
86 protected function buildStagingSite(): StagingSiteDto
87 {
88 $stagingSite = $this->jobDataDto->getStagingSite();
89 $stagingSite->setStatus(StagingSiteDto::STATUS_FINISHED);
90 $stagingSite->setDatetime(time());
91 $stagingSite->setVersion(WPStaging::getVersion());
92 $stagingSite->setOwnerId(get_current_user_id());
93
94 return $stagingSite;
95 }
96
97 protected function triggerOnStagingSiteCreatedEvent(StagingSiteDto $stagingSite)
98 {
99 Hooks::doAction(StagingSiteCreate::ACTION_CLONING_COMPLETE, $stagingSite->toArray());
100 }
101
102 protected function getResponseDto()
103 {
104 return new FinishStagingSiteResponseDto();
105 }
106
107
108
109
110 private function overrideGenerateResponse()
111 {
112 add_filter('wpstg.task.response', function ($response) {
113 if ($response instanceof FinishStagingSiteResponseDto) {
114 $response->setCloneId($this->jobDataDto->getCloneId());
115 $response->setStagingSiteUrl($this->jobDataDto->getStagingSiteUrl());
116 } else {
117 debug_log('Fail to finalize response for staging site update process! Response content: ' . print_r($response, true));
118 }
119
120 return $response;
121 });
122
123 return $this->generateResponse();
124 }
125 }
126