123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\App\View\Asset;
- use Magento\Framework\App\Filesystem\DirectoryList;
- use Magento\Framework\Filesystem\Directory\WriteFactory;
- use Magento\Framework\View\Asset;
- /**
- * A publishing service for view assets
- *
- * @api
- * @since 100.0.2
- */
- class Publisher
- {
- /**
- * @var \Magento\Framework\Filesystem
- */
- protected $filesystem;
- /**
- * @var MaterializationStrategy\Factory
- */
- private $materializationStrategyFactory;
- /**
- * @var WriteFactory
- */
- private $writeFactory;
- /**
- * @param \Magento\Framework\Filesystem $filesystem
- * @param MaterializationStrategy\Factory $materializationStrategyFactory
- * @param WriteFactory $writeFactory
- */
- public function __construct(
- \Magento\Framework\Filesystem $filesystem,
- MaterializationStrategy\Factory $materializationStrategyFactory,
- WriteFactory $writeFactory
- ) {
- $this->filesystem = $filesystem;
- $this->materializationStrategyFactory = $materializationStrategyFactory;
- $this->writeFactory = $writeFactory;
- }
- /**
- * @param Asset\LocalInterface $asset
- * @return bool
- */
- public function publish(Asset\LocalInterface $asset)
- {
- $dir = $this->filesystem->getDirectoryRead(DirectoryList::STATIC_VIEW);
- if ($dir->isExist($asset->getPath())) {
- return true;
- }
- return $this->publishAsset($asset);
- }
- /**
- * Publish the asset
- *
- * @param Asset\LocalInterface $asset
- * @return bool
- */
- private function publishAsset(Asset\LocalInterface $asset)
- {
- $targetDir = $this->filesystem->getDirectoryWrite(DirectoryList::STATIC_VIEW);
- $fullSource = $asset->getSourceFile();
- $source = basename($fullSource);
- $sourceDir = $this->writeFactory->create(dirname($fullSource));
- $destination = $asset->getPath();
- $strategy = $this->materializationStrategyFactory->create($asset);
- return $strategy->publishFile($sourceDir, $targetDir, $source, $destination);
- }
- }
|