_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()]; } }