mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 09:17:35 +00:00
156 lines
3.9 KiB
PHP
156 lines
3.9 KiB
PHP
<?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);
|
|
}
|
|
}
|