123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Deploy\Collector;
- use Magento\Deploy\Source\SourcePool;
- use Magento\Deploy\Package\Package;
- use Magento\Deploy\Package\PackageFactory;
- use Magento\Deploy\Package\PackageFile;
- use Magento\Framework\Module\Manager;
- use Magento\Framework\View\Asset\PreProcessor\FileNameResolver;
- /**
- * Deployable files collector
- *
- * Default implementation uses Source Pool object (@see SourcePool)
- */
- class Collector implements CollectorInterface
- {
- /**
- * Source Pool object
- *
- * Provides the list of source objects
- *
- * @var SourcePool
- */
- private $sourcePool;
- /**
- * Resolver for deployed static file name
- *
- * A given file could be an alternative source for the real static file which needs to be deployed. In such case
- * resolver provides the final static file name
- *
- * @var FileNameResolver
- */
- private $fileNameResolver;
- /**
- * Factory class for Package object
- *
- * @see Package
- * @var PackageFactory
- */
- private $packageFactory;
-
- /** @var \Magento\Framework\Module\Manager */
- private $moduleManager;
- /**
- * Default values for package primary identifiers
- *
- * @var array
- */
- private $packageDefaultValues = [
- 'area' => Package::BASE_AREA,
- 'theme' => Package::BASE_THEME,
- 'locale' => Package::BASE_LOCALE
- ];
- /**
- * Collector constructor
- *
- * @param SourcePool $sourcePool
- * @param FileNameResolver $fileNameResolver
- * @param PackageFactory $packageFactory
- * @param Manager|null $moduleManager
- */
- public function __construct(
- SourcePool $sourcePool,
- FileNameResolver $fileNameResolver,
- PackageFactory $packageFactory,
- Manager $moduleManager = null
- ) {
- $this->sourcePool = $sourcePool;
- $this->fileNameResolver = $fileNameResolver;
- $this->packageFactory = $packageFactory;
- $this->moduleManager = $moduleManager ?: \Magento\Framework\App\ObjectManager::getInstance()
- ->get(\Magento\Framework\Module\Manager::class);
- }
- /**
- * @inheritdoc
- */
- public function collect()
- {
- $packages = [];
- foreach ($this->sourcePool->getAll() as $source) {
- $files = $source->get();
- foreach ($files as $file) {
- if ($file->getModule() && !$this->moduleManager->isEnabled($file->getModule())) {
- continue;
- }
- $file->setDeployedFileName($this->fileNameResolver->resolve($file->getFileName()));
- $params = $this->getParams($file);
- $packagePath = "{$params['area']}/{$params['theme']}/{$params['locale']}";
- if (!isset($packages[$packagePath])) {
- $packages[$packagePath] = $this->packageFactory->create($params);
- }
- if ($file->getFilePath()) {
- $file->setPackage($packages[$packagePath]);
- }
- }
- }
- return $packages;
- }
- /**
- * Retrieve package params
- *
- * @param PackageFile $file
- * @return array
- */
- private function getParams(PackageFile $file)
- {
- $params = [
- 'area' => $file->getArea(),
- 'theme' => $file->getTheme(),
- 'locale' => $file->getLocale(),
- 'module' => $file->getModule(),
- 'isVirtual' => (!$file->getLocale() || !$file->getTheme() || !$file->getArea())
- ];
- foreach ($this->packageDefaultValues as $name => $value) {
- if (!isset($params[$name])) {
- $params[$name] = $value;
- }
- }
- return $params;
- }
- }
|