123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\MediaStorage\Model\File;
- /**
- * Core file uploader model
- *
- * @api
- * @since 100.0.2
- */
- class Uploader extends \Magento\Framework\File\Uploader
- {
- /**
- * Flag, that defines should DB processing be skipped
- *
- * @var bool
- */
- protected $_skipDbProcessing = false;
- /**
- * Core file storage
- *
- * @var \Magento\MediaStorage\Helper\File\Storage
- */
- protected $_coreFileStorage = null;
- /**
- * Core file storage database
- *
- * @var \Magento\MediaStorage\Helper\File\Storage\Database
- */
- protected $_coreFileStorageDb = null;
- /**
- * @var \Magento\MediaStorage\Model\File\Validator\NotProtectedExtension
- */
- protected $_validator;
- /**
- * @param string $fileId
- * @param \Magento\MediaStorage\Helper\File\Storage\Database $coreFileStorageDb
- * @param \Magento\MediaStorage\Helper\File\Storage $coreFileStorage
- * @param \Magento\MediaStorage\Model\File\Validator\NotProtectedExtension $validator
- */
- public function __construct(
- $fileId,
- \Magento\MediaStorage\Helper\File\Storage\Database $coreFileStorageDb,
- \Magento\MediaStorage\Helper\File\Storage $coreFileStorage,
- \Magento\MediaStorage\Model\File\Validator\NotProtectedExtension $validator
- ) {
- $this->_coreFileStorageDb = $coreFileStorageDb;
- $this->_coreFileStorage = $coreFileStorage;
- $this->_validator = $validator;
- parent::__construct($fileId);
- }
- /**
- * Save file to storage
- *
- * @param array $result
- * @return $this
- */
- protected function _afterSave($result)
- {
- if (empty($result['path']) || empty($result['file'])) {
- return $this;
- }
- if ($this->_coreFileStorage->isInternalStorage() || $this->skipDbProcessing()) {
- return $this;
- }
- $this->_result['file'] = $this->_coreFileStorageDb->saveUploadedFile($result);
- return $this;
- }
- /**
- * Getter/Setter for _skipDbProcessing flag
- *
- * @param null|bool $flag
- * @return bool|\Magento\MediaStorage\Model\File\Uploader
- */
- public function skipDbProcessing($flag = null)
- {
- if ($flag === null) {
- return $this->_skipDbProcessing;
- }
- $this->_skipDbProcessing = (bool)$flag;
- return $this;
- }
- /**
- * Check protected/allowed extension
- *
- * @param string $extension
- * @return boolean
- */
- public function checkAllowedExtension($extension)
- {
- //validate with protected file types
- if (!$this->_validator->isValid($extension)) {
- return false;
- }
- return parent::checkAllowedExtension($extension);
- }
- /**
- * Get file size
- *
- * @return int
- */
- public function getFileSize()
- {
- return $this->_file['size'];
- }
- /**
- * Validate file
- *
- * @return array
- */
- public function validateFile()
- {
- $this->_validateFile();
- return $this->_file;
- }
- }
|