/**
  * Create an instance of directory with write permissions
  *
  * @param string $directoryCode
  * @param string $driverCode
  * @return \Magento\Framework\Filesystem\Directory\WriteInterface
  * @throws \Magento\Framework\Exception\FileSystemException
  */
 public function getDirectoryWrite($directoryCode, $driverCode = DriverPool::FILE)
 {
     $code = $directoryCode . '_' . $driverCode;
     if (!array_key_exists($code, $this->writeInstances)) {
         $this->writeInstances[$code] = $this->writeFactory->create($this->getDirPath($directoryCode), $driverCode);
     }
     return $this->writeInstances[$code];
 }
示例#2
0
 /**
  * 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);
 }
示例#3
0
 /**
  * Create required directories
  *
  * @return void
  */
 protected function createDirectories()
 {
     $directories = [dirname(dirname(__DIR__)) . '/var'];
     foreach ($directories as $path) {
         $writer = $this->directoryWriteFactory->create($path);
         if (!$writer->isDirectory()) {
             $writer->create();
         }
     }
 }
示例#4
0
 /**
  * Create an instance of directory with read permissions
  *
  * @param string $code
  * @return \Magento\Framework\Filesystem\Directory\WriteInterface
  * @throws \Magento\Framework\Filesystem\FilesystemException
  */
 public function getDirectoryWrite($code)
 {
     if (!array_key_exists($code, $this->writeInstances)) {
         $config = $this->directoryList->getConfig($code);
         if (isset($config['read_only']) && $config['read_only']) {
             throw new FilesystemException(sprintf('The "%s" directory doesn\'t allow write operations', $code));
         }
         $this->writeInstances[$code] = $this->writeFactory->create($config, $this->driverFactory);
     }
     return $this->writeInstances[$code];
 }
示例#5
0
 /**
  * Constructor
  *
  * @param DirectoryList $directoryList
  * @param WriteFactory $writeFactory
  */
 public function __construct(DirectoryList $directoryList, WriteFactory $writeFactory)
 {
     $this->directoryList = $directoryList;
     $this->write = $writeFactory->create(BP);
 }