Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
QuickDeploy.php
Go to the documentation of this file.
1 <?php
7 
11 
16 {
20  private $packagePool;
21 
25  private $queue;
26 
30  private $baseLocalePackages = [];
31 
38  public function __construct(
39  PackagePool $packagePool,
40  Queue $queue
41  ) {
42  $this->packagePool = $packagePool;
43  $this->queue = $queue;
44  }
45 
49  public function deploy(array $options)
50  {
51  $groupedPackages = $deployPackages = [];
52  $packages = $this->packagePool->getPackagesForDeployment($options);
53  foreach ($packages as $package) {
55  if ($package->isVirtual()) {
56  // skip packages which can not be referenced directly
57  continue;
58  }
59  $level = $this->getInheritanceLevel($package);
60  $groupedPackages[$level][$package->getPath()] = $package;
61  }
62 
63  ksort($groupedPackages);
64 
65  foreach ($groupedPackages as $level => $levelPackages) {
66  $this->preparePackages($level, $levelPackages);
67  }
68 
69  foreach ($groupedPackages as $levelPackages) {
70  foreach ($levelPackages as $package) {
71  $this->queue->add($package);
72  $deployPackages[] = $package;
73  }
74  }
75 
76  $this->queue->process();
77 
78  return $deployPackages;
79  }
80 
86  private function preparePackages($level, array $levelPackages)
87  {
88  foreach ($levelPackages as $package) {
89  $package->aggregate();
90  if ($level > 1) {
91  $parentPackage = null;
92  $packageId = $package->getArea() . '/' . $package->getTheme();
93  // use base package if it is not the same as current
94  if (isset($this->baseLocalePackages[$packageId])
95  && $package !== $this->baseLocalePackages[$packageId]
96  ) {
97  $parentPackage = $this->baseLocalePackages[$packageId];
98  } else {
99  $parentPackages = $package->getParentPackages();
100  foreach (array_reverse($parentPackages) as $ancestorPackage) {
101  if (!$ancestorPackage->isVirtual()) {
102  $parentPackage = $ancestorPackage;
103  break;
104  }
105  if ($parentPackage === null) {
106  $parentPackage = $ancestorPackage;
107  }
108  }
109  }
110  if ($parentPackage) {
111  $package->setParent($parentPackage);
112  }
113  }
114  }
115  }
116 
123  private function getInheritanceLevel(Package $package)
124  {
125  $level = $package->getInheritanceLevel();
126  $packageId = $package->getArea() . '/' . $package->getTheme();
127  if (!isset($this->baseLocalePackages[$packageId])) {
128  $this->baseLocalePackages[$packageId] = $package;
129  } else {
130  ++$level;
131  }
132  return $level;
133  }
134 }
$queue
Definition: queue.php:21
__construct(PackagePool $packagePool, Queue $queue)
Definition: QuickDeploy.php:38