File: /var/www/vhost/disk-apps/magento.bikenow.co/vendor/magento/module-theme/Model/Design.php
<?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);
}
$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()];
}
}