Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
UpdaterTaskCreator.php
Go to the documentation of this file.
1 <?php
7 namespace Magento\Setup\Model;
8 
11 use Zend\Json\Json;
12 
17 {
21  const KEY_POST_PACKAGE_NAME = 'name';
22  const KEY_POST_PACKAGE_VERSION = 'version';
23  const KEY_POST_JOB_TYPE = 'type';
24  const KEY_POST_PACKAGES = 'packages';
25  const KEY_POST_HEADER_TITLE = 'headerTitle';
26  const KEY_POST_DATA_OPTION = 'dataOption';
32  private $filesystem;
33 
37  private $navigation;
38 
42  private $updater;
43 
47  private $objectManagerProvider;
48 
55  public function __construct(
56  \Magento\Framework\Filesystem $filesystem,
57  \Magento\Setup\Model\Navigation $navigation,
58  \Magento\Setup\Model\Updater $updater,
59  \Magento\Setup\Model\ObjectManagerProvider $objectManagerProvider
60  ) {
61  $this->filesystem = $filesystem;
62  $this->navigation = $navigation;
63  $this->updater = $updater;
64  $this->objectManagerProvider = $objectManagerProvider;
65  }
66 
74  private function createTypeFlag($type, $title)
75  {
76  $data = [];
79 
80  $menuItems = $this->navigation->getMenuItems();
81  $titles = [];
82  foreach ($menuItems as $menuItem) {
83  if (isset($menuItem['type']) && $menuItem['type'] === $type) {
84  $titles[] = str_replace("\n", '<br />', $menuItem['title']);
85  }
86  }
87  $data['titles'] = $titles;
88  $directoryWrite = $this->filesystem->getDirectoryWrite(DirectoryList::VAR_DIR);
89  $directoryWrite->writeFile('.type.json', Json::encode($data));
90  }
91 
98  public function createUpdaterTasks(array $postPayload)
99  {
100  $errorMessage = '';
101  $packages = $postPayload[self::KEY_POST_PACKAGES];
102  $jobType = $postPayload[self::KEY_POST_JOB_TYPE];
103  $this->createTypeFlag($jobType, $postPayload[self::KEY_POST_HEADER_TITLE]);
104 
105  $additionalOptions = [];
106  $cronTaskType = '';
107  $this->getCronTaskConfigInfo($jobType, $postPayload, $additionalOptions, $cronTaskType);
108 
109  $errorMessage .= $this->updater->createUpdaterTask(
110  [],
111  \Magento\Setup\Model\Cron\JobFactory::JOB_MAINTENANCE_MODE_ENABLE
112  );
113 
117  $cacheManager = $this->objectManagerProvider->get()->get(\Magento\Framework\App\Cache\Manager::class);
118  $cacheStatus = $cacheManager->getStatus();
119 
120  $errorMessage .= $this->updater->createUpdaterTask(
121  [],
122  \Magento\Setup\Model\Cron\JobFactory::JOB_DISABLE_CACHE,
123  []
124  );
125 
126  $errorMessage .= $this->updater->createUpdaterTask(
127  $packages,
128  $cronTaskType,
129  $additionalOptions
130  );
131 
132  // for module enable job types, we need to follow up with 'setup:upgrade' task to
133  // make sure enabled modules are properly registered
134  if ($jobType == 'enable') {
135  $errorMessage .= $this->updater->createUpdaterTask(
136  [],
137  \Magento\Setup\Model\Cron\JobFactory::JOB_UPGRADE,
138  []
139  );
140  }
141 
142  $enabledCaches = [];
143  foreach ($cacheStatus as $cacheName => $value) {
144  if ($value === 1) {
145  $enabledCaches[] = $cacheName;
146  }
147  }
148 
149  if (!empty($enabledCaches)) {
150  $errorMessage .= $this->updater->createUpdaterTask(
151  [],
152  \Magento\Setup\Model\Cron\JobFactory::JOB_ENABLE_CACHE,
153  [implode(' ', $enabledCaches)]
154  );
155  }
156 
157  if ($jobType == 'disable') {
158  $errorMessage .= $this->updater->createUpdaterTask(
159  [],
160  \Magento\Setup\Model\Cron\JobFactory::JOB_MAINTENANCE_MODE_DISABLE
161  );
162  }
163 
164  return $errorMessage;
165  }
166 
176  private function getCronTaskConfigInfo($jobType, $postPayload, &$additionalOptions, &$cronTaskType)
177  {
178  $additionalOptions = [];
179  switch ($jobType) {
180  case 'uninstall':
181  $additionalOptions = [
183  ];
185  break;
186 
187  case 'upgrade':
188  case 'update':
189  case 'install':
191  break;
192 
193  case 'enable':
195  break;
196 
197  case 'disable':
199  break;
200  }
201  }
202 }
$title
Definition: default.phtml:14
__construct(\Magento\Framework\Filesystem $filesystem, \Magento\Setup\Model\Navigation $navigation, \Magento\Setup\Model\Updater $updater, \Magento\Setup\Model\ObjectManagerProvider $objectManagerProvider)
$type
Definition: item.phtml:13
$value
Definition: gender.phtml:16
$filesystem