Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
DeployStaticContent.php
Go to the documentation of this file.
1 <?php
6 namespace Magento\Deploy\Service;
7 
13 use Psr\Log\LoggerInterface;
14 
21 {
25  private $deployStrategyFactory;
26 
30  private $queueFactory;
31 
35  private $logger;
36 
40  private $objectManager;
41 
45  private $versionStorage;
46 
56  public function __construct(
57  ObjectManagerInterface $objectManager,
58  LoggerInterface $logger,
59  StorageInterface $versionStorage,
60  DeployStrategyFactory $deployStrategyFactory,
61  QueueFactory $queueFactory
62  ) {
63  $this->objectManager = $objectManager;
64  $this->logger = $logger;
65  $this->versionStorage = $versionStorage;
66  $this->deployStrategyFactory = $deployStrategyFactory;
67  $this->queueFactory = $queueFactory;
68  }
69 
76  public function deploy(array $options)
77  {
78  $version = !empty($options[Options::CONTENT_VERSION]) && is_string($options[Options::CONTENT_VERSION])
79  ? $options[Options::CONTENT_VERSION]
80  : (new \DateTime())->getTimestamp();
81  $this->versionStorage->save($version);
82 
83  if ($this->isRefreshContentVersionOnly($options)) {
84  $this->logger->warning("New content version: " . $version);
85  return;
86  }
87 
88  $queue = $this->queueFactory->create(
89  [
90  'logger' => $this->logger,
91  'options' => $options,
92  'maxProcesses' => $this->getProcessesAmount($options),
93  'deployPackageService' => $this->objectManager->create(
94  \Magento\Deploy\Service\DeployPackage::class,
95  [
96  'logger' => $this->logger
97  ]
98  )
99  ]
100  );
101 
102  $deployStrategy = $this->deployStrategyFactory->create(
103  $options[Options::STRATEGY],
104  [
105  'queue' => $queue
106  ]
107  );
108 
109  $packages = $deployStrategy->deploy($options);
110 
111  if ($options[Options::NO_JAVASCRIPT] !== true) {
112  $deployRjsConfig = $this->objectManager->create(DeployRequireJsConfig::class, [
113  'logger' => $this->logger
114  ]);
115  $deployI18n = $this->objectManager->create(DeployTranslationsDictionary::class, [
116  'logger' => $this->logger
117  ]);
118  $deployBundle = $this->objectManager->create(Bundle::class, [
119  'logger' => $this->logger
120  ]);
121  foreach ($packages as $package) {
122  if (!$package->isVirtual()) {
123  $deployRjsConfig->deploy($package->getArea(), $package->getTheme(), $package->getLocale());
124  $deployI18n->deploy($package->getArea(), $package->getTheme(), $package->getLocale());
125  $deployBundle->deploy($package->getArea(), $package->getTheme(), $package->getLocale());
126  }
127  }
128  }
129 
130  if ($options[Options::NO_HTML_MINIFY] !== true) {
131  $this->objectManager->get(MinifyTemplates::class)->minifyTemplates();
132  }
133  }
134 
139  private function getProcessesAmount(array $options)
140  {
141  return isset($options[Options::JOBS_AMOUNT]) ? (int)$options[Options::JOBS_AMOUNT] : 0;
142  }
143 
148  private function isRefreshContentVersionOnly(array $options)
149  {
150  return isset($options[Options::REFRESH_CONTENT_VERSION_ONLY])
151  && $options[Options::REFRESH_CONTENT_VERSION_ONLY];
152  }
153 }
$queue
Definition: queue.php:21
$queueFactory
$objectManager
Definition: bootstrap.php:17
$logger
__construct(ObjectManagerInterface $objectManager, LoggerInterface $logger, StorageInterface $versionStorage, DeployStrategyFactory $deployStrategyFactory, QueueFactory $queueFactory)