![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-theme/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Theme\Model; use Magento\Framework\App\DesignInterface; use Magento\Framework\App\ObjectManager; use Magento\Framework\Model\AbstractModel; use Magento\Framework\Model\ResourceModel\AbstractResource; use Magento\Framework\DataObject\IdentityInterface; use Magento\Framework\Serialize\SerializerInterface; /** * Design settings change model * * @method int getStoreId() * @method \Magento\Theme\Model\Design setStoreId(int $value) * @method string getDesign() * @method \Magento\Theme\Model\Design setDesign(string $value) * @method string getDateFrom() * @method \Magento\Theme\Model\Design setDateFrom(string $value) * @method string getDateTo() * @method \Magento\Theme\Model\Design setDateTo(string $value) */ class Design extends AbstractModel implements IdentityInterface, DesignInterface { /** * Cache tag */ const CACHE_TAG = 'CORE_DESIGN'; /** * Prefix of model events names * * @var string */ protected $_eventPrefix = 'core_design'; /** * Model cache tag for clear cache in after save and after delete * * When you use true - all cache will be clean * * @var string|bool */ protected $_cacheTag = self::CACHE_TAG; /** * @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface */ protected $_localeDate; /** * @var \Magento\Framework\Stdlib\DateTime */ protected $_dateTime; /** * @var SerializerInterface */ private $serializer; /** * @param \Magento\Framework\Model\Context $context * @param \Magento\Framework\Registry $registry * @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate * @param \Magento\Framework\Stdlib\DateTime $dateTime * @param AbstractResource $resource * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection * @param array $data * @param SerializerInterface $serializer */ public function __construct( \Magento\Framework\Model\Context $context, \Magento\Framework\Registry $registry, \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate, \Magento\Framework\Stdlib\DateTime $dateTime, AbstractResource $resource = null, \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null, array $data = [], SerializerInterface $serializer = null ) { $this->_localeDate = $localeDate; $this->_dateTime = $dateTime; $this->serializer = $serializer ?: ObjectManager::getInstance()->get(SerializerInterface::class); parent::__construct($context, $registry, $resource, $resourceCollection, $data); } /** * Initialize resource model * * @return void */ protected function _construct() { $this->_init(\Magento\Theme\Model\ResourceModel\Design::class); } /** * Load custom design settings for specified store and date * * @param string $storeId * @param string|null $date * @return $this */ public function loadChange($storeId, $date = null) { if ($date === null) { $date = $this->_dateTime->formatDate($this->_localeDate->scopeTimeStamp($storeId), false); } // md5() here is not for cryptographic use. // phpcs:ignore Magento2.Security.InsecureFunction $changeCacheId = 'design_change_' . md5($storeId . $date); $result = $this->_cacheManager->load($changeCacheId); if ($result === false) { $result = $this->getResource()->loadChange($storeId, $date); if (!$result) { $result = []; } $this->_cacheManager->save($this->serializer->serialize($result), $changeCacheId, [self::CACHE_TAG], 86400); } else { $result = $this->serializer->unserialize($result); } if ($result) { $this->setData($result); } return $this; } /** * Apply design change from self data into specified design package instance * * @param \Magento\Framework\View\DesignInterface $packageInto * @return $this */ public function changeDesign(\Magento\Framework\View\DesignInterface $packageInto) { $design = $this->getDesign(); if ($design) { $packageInto->setDesignTheme($design); } return $this; } /** * Get identities * * @return array */ public function getIdentities() { return [self::CACHE_TAG . '_' . $this->getId()]; } }