123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Theme\Model\Theme;
- use Magento\Framework\Model\AbstractModel;
- use Magento\Framework\View\Design\Theme\Customization\FileInterface as CustomizationFileInterface;
- use Magento\Framework\View\Design\Theme\FileInterface;
- /**
- * Theme files model class
- */
- class File extends AbstractModel implements FileInterface
- {
- /**
- * {@inheritdoc}
- *
- * @var string
- */
- protected $_eventPrefix = 'theme_file';
- /**
- * {@inheritdoc}
- *
- * @var string
- */
- protected $_eventObject = 'file';
- /**
- * @var \Magento\Framework\View\Design\ThemeInterface
- */
- protected $_theme;
- /**
- * @var \Magento\Framework\View\Design\Theme\Customization\FileServiceFactory
- */
- protected $_fileServiceFactory;
- /**
- * @var CustomizationFileInterface
- */
- protected $_fileService;
- /**
- * @var \Magento\Framework\View\Design\Theme\FlyweightFactory
- */
- protected $_themeFactory;
- /**
- * @param \Magento\Framework\Model\Context $context
- * @param \Magento\Framework\Registry $registry
- * @param \Magento\Framework\View\Design\Theme\FlyweightFactory $themeFactory
- * @param \Magento\Framework\View\Design\Theme\Customization\FileServiceFactory $fileServiceFactory
- * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
- * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
- * @param array $data
- */
- public function __construct(
- \Magento\Framework\Model\Context $context,
- \Magento\Framework\Registry $registry,
- \Magento\Framework\View\Design\Theme\FlyweightFactory $themeFactory,
- \Magento\Framework\View\Design\Theme\Customization\FileServiceFactory $fileServiceFactory,
- \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
- \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
- array $data = []
- ) {
- $this->_themeFactory = $themeFactory;
- $this->_fileServiceFactory = $fileServiceFactory;
- parent::__construct($context, $registry, $resource, $resourceCollection, $data);
- }
- /**
- * Theme files model initialization
- *
- * @return void
- */
- protected function _construct()
- {
- $this->_init(\Magento\Theme\Model\ResourceModel\Theme\File::class);
- }
- /**
- * {@inheritdoc}
- *
- * @return $this
- */
- public function setCustomizationService(CustomizationFileInterface $fileService)
- {
- $this->_fileService = $fileService;
- return $this;
- }
- /**
- * {@inheritdoc}
- *
- * @return CustomizationFileInterface
- * @throws \UnexpectedValueException
- */
- public function getCustomizationService()
- {
- if (!$this->_fileService && $this->hasData('file_type')) {
- $this->_fileService = $this->_fileServiceFactory->create($this->getData('file_type'));
- } elseif (!$this->_fileService) {
- throw new \UnexpectedValueException('Type of file is empty');
- }
- return $this->_fileService;
- }
- /**
- * {@inheritdoc}
- */
- public function setTheme(\Magento\Framework\View\Design\ThemeInterface $theme)
- {
- $this->_theme = $theme;
- $this->setData('theme_id', $theme->getId());
- $this->setData('theme_path', $theme->getThemePath());
- return $this;
- }
- /**
- * {@inheritdoc}
- *
- * @throws \Magento\Framework\Exception\LocalizedException
- */
- public function getTheme()
- {
- $theme = $this->_themeFactory->create($this->getData('theme_id'));
- if (!$theme) {
- throw new \Magento\Framework\Exception\LocalizedException(__('Theme id should be set'));
- }
- return $theme;
- }
- /**
- * {@inheritdoc}
- */
- public function setFileName($fileName)
- {
- $this->setData('file_name', $fileName);
- return $this;
- }
- /**
- * {@inheritdoc}
- */
- public function getFileName()
- {
- return $this->getData('file_name') ?: basename($this->getData('file_path'));
- }
- /**
- * {@inheritdoc}
- */
- public function getFullPath()
- {
- return $this->getCustomizationService()->getFullPath($this);
- }
- /**
- * @return string
- */
- public function getContent()
- {
- return $this->getData('content');
- }
- /**
- * {@inheritdoc}
- */
- public function getFileInfo()
- {
- return [
- 'id' => $this->getId(),
- 'name' => $this->getFileName(),
- 'temporary' => $this->getData('is_temporary') ? $this->getId() : 0
- ];
- }
- /**
- * Prepare file before it will be saved
- *
- * @return $this
- */
- public function beforeSave()
- {
- $fileService = $this->getCustomizationService();
- $fileService->prepareFile($this);
- $fileService->save($this);
- return parent::beforeSave();
- }
- /**
- * Prepare file before it will be deleted
- *
- * @return $this
- */
- public function beforeDelete()
- {
- $fileService = $this->getCustomizationService();
- $fileService->delete($this);
- return parent::beforeDelete();
- }
- }
|