123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\View\File\Collector;
- use Magento\Framework\Component\ComponentRegistrar;
- use Magento\Framework\Component\ComponentRegistrarInterface;
- use Magento\Framework\Filesystem\Directory\ReadFactory;
- use Magento\Framework\View\Design\ThemeInterface;
- use Magento\Framework\View\File\CollectorInterface;
- use Magento\Framework\View\File\Factory as FileFactory;
- /**
- * Source of view files introduced by a theme
- */
- class Theme implements CollectorInterface
- {
- /**
- * @var FileFactory
- */
- private $fileFactory;
- /**
- * @var ReadFactory
- */
- private $readDirFactory;
- /**
- * @var ComponentRegistrarInterface
- */
- private $componentRegistrar;
- /**
- * @var string
- */
- private $subDir;
- /**
- * Constructor
- *
- * @param FileFactory $fileFactory
- * @param ReadFactory $readDirFactory
- * @param ComponentRegistrarInterface $componentRegistrar
- * @param string $subDir
- */
- public function __construct(
- FileFactory $fileFactory,
- ReadFactory $readDirFactory,
- ComponentRegistrarInterface $componentRegistrar,
- $subDir = ''
- ) {
- $this->fileFactory = $fileFactory;
- $this->readDirFactory = $readDirFactory;
- $this->componentRegistrar = $componentRegistrar;
- $this->subDir = $subDir ? $subDir . '/' : '';
- }
- /**
- * Retrieve files
- *
- * @param ThemeInterface $theme
- * @param string $filePath
- * @return \Magento\Framework\View\File[]
- * @throws \UnexpectedValueException
- */
- public function getFiles(ThemeInterface $theme, $filePath)
- {
- $themePath = $theme->getFullPath();
- if (empty($themePath)) {
- return [];
- }
- $themeAbsolutePath = $this->componentRegistrar->getPath(ComponentRegistrar::THEME, $themePath);
- if (!$themeAbsolutePath) {
- return [];
- }
- $themeDir = $this->readDirFactory->create($themeAbsolutePath);
- $files = $themeDir->search($this->subDir . $filePath);
- $result = [];
- foreach ($files as $file) {
- $filename = $themeDir->getAbsolutePath($file);
- $result[] = $this->fileFactory->create($filename, null, $theme);
- }
- return $result;
- }
- }
|