123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\MediaStorage\Helper\File;
- /**
- * File storage helper
- *
- * @api
- * @since 100.0.2
- */
- class Storage extends \Magento\Framework\App\Helper\AbstractHelper
- {
- /**
- * Current storage code
- *
- * @var int
- */
- protected $_currentStorage = null;
- /**
- * List of internal storages
- *
- * @var int[]
- */
- protected $_internalStorageList = [\Magento\MediaStorage\Model\File\Storage::STORAGE_MEDIA_FILE_SYSTEM];
- /**
- * Core file storage database
- *
- * @var \Magento\MediaStorage\Helper\File\Storage\Database
- */
- protected $_coreFileStorageDb = null;
- /**
- * @var \Magento\MediaStorage\Model\File\Storage
- */
- protected $_storage;
- /**
- * File system storage model
- *
- * @var \Magento\MediaStorage\Model\File\Storage\File
- */
- protected $_filesystemStorage;
- /**
- * @param \Magento\Framework\App\Helper\Context $context
- * @param \Magento\MediaStorage\Helper\File\Storage\Database $coreFileStorageDb
- * @param \Magento\MediaStorage\Model\File\Storage $storage
- * @param \Magento\MediaStorage\Model\File\Storage\File $filesystemStorage
- */
- public function __construct(
- \Magento\Framework\App\Helper\Context $context,
- \Magento\MediaStorage\Helper\File\Storage\Database $coreFileStorageDb,
- \Magento\MediaStorage\Model\File\Storage $storage,
- \Magento\MediaStorage\Model\File\Storage\File $filesystemStorage
- ) {
- $this->_filesystemStorage = $filesystemStorage;
- $this->_coreFileStorageDb = $coreFileStorageDb;
- $this->_storage = $storage;
- parent::__construct($context);
- }
- /**
- * Return saved storage code
- *
- * @return int
- */
- public function getCurrentStorageCode()
- {
- if ($this->_currentStorage === null) {
- $this->_currentStorage = (int)$this->scopeConfig->getValue(
- \Magento\MediaStorage\Model\File\Storage::XML_PATH_STORAGE_MEDIA,
- 'default'
- );
- }
- return $this->_currentStorage;
- }
- /**
- * Retrieve file system storage model
- *
- * @return \Magento\MediaStorage\Model\File\Storage\File
- */
- public function getStorageFileModel()
- {
- return $this->_filesystemStorage;
- }
- /**
- * Check if storage is internal
- *
- * @param int|null $storage
- * @return bool
- */
- public function isInternalStorage($storage = null)
- {
- $storage = $storage !== null ? (int)$storage : $this->getCurrentStorageCode();
- return in_array($storage, $this->_internalStorageList);
- }
- /**
- * Retrieve storage model
- *
- * @param int|null $storage
- * @param array $params
- * @return \Magento\Framework\Model\AbstractModel|bool
- */
- public function getStorageModel($storage = null, $params = [])
- {
- return $this->_storage->getStorageModel($storage, $params);
- }
- /**
- * Check if needed to copy file from storage to file system and
- * if file exists in the storage
- *
- * @param string $filename
- * @return bool|int
- */
- public function processStorageFile($filename)
- {
- if ($this->isInternalStorage()) {
- return false;
- }
- $dbHelper = $this->_coreFileStorageDb;
- $relativePath = $dbHelper->getMediaRelativePath($filename);
- $file = $this->getStorageModel()->loadByFilename($relativePath);
- if (!$file->getId()) {
- return false;
- }
- return $this->saveFileToFileSystem($file);
- }
- /**
- * Save file to file system
- *
- * @param \Magento\MediaStorage\Model\File\Storage\Database $file
- * @return bool|int
- */
- public function saveFileToFileSystem($file)
- {
- return $this->getStorageFileModel()->saveFile($file, true);
- }
- }
|