123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework;
- /**
- * Flag model
- *
- * @method string getFlagCode()
- * @method \Magento\Framework\Flag setFlagCode(string $value)
- * @method int getState()
- * @method \Magento\Framework\Flag setState(int $value)
- * @method string getLastUpdate()
- * @method \Magento\Framework\Flag setLastUpdate(string $value)
- */
- class Flag extends Model\AbstractModel
- {
- /**
- * Flag code
- *
- * @var string
- */
- protected $_flagCode = null;
- /**
- * Serializer for encode/decode string/data.
- *
- * @var \Magento\Framework\Serialize\Serializer\Json
- */
- private $json;
- /**
- * Serializer for encode/decode string/data.
- *
- * @var \Magento\Framework\Serialize\Serializer\Serialize
- */
- private $serialize;
- /**
- * @param \Magento\Framework\Model\Context $context
- * @param \Magento\Framework\Registry $registry
- * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
- * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
- * @param array $data
- * @param \Magento\Framework\Serialize\Serializer\Json $json
- * @param \Magento\Framework\Serialize\Serializer\Serialize $serialize
- */
- public function __construct(
- \Magento\Framework\Model\Context $context,
- \Magento\Framework\Registry $registry,
- \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
- \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
- array $data = [],
- \Magento\Framework\Serialize\Serializer\Json $json = null,
- \Magento\Framework\Serialize\Serializer\Serialize $serialize = null
- ) {
- $this->json = $json ?: \Magento\Framework\App\ObjectManager::getInstance()
- ->get(\Magento\Framework\Serialize\Serializer\Json::class);
- $this->serialize = $serialize ?: \Magento\Framework\App\ObjectManager::getInstance()
- ->get(\Magento\Framework\Serialize\Serializer\Serialize::class);
- parent::__construct(
- $context,
- $registry,
- $resource,
- $resourceCollection,
- $data
- );
- }
- /**
- * Init resource model
- * Set flag_code if it is specified in arguments
- *
- * @return void
- */
- protected function _construct()
- {
- if ($this->hasData('flag_code')) {
- $this->_flagCode = $this->getData('flag_code');
- }
- $this->_init(\Magento\Framework\Flag\FlagResource::class);
- }
- /**
- * Processing object before save data
- *
- * @throws \Magento\Framework\Exception\LocalizedException
- * @return $this
- */
- public function beforeSave()
- {
- if ($this->_flagCode === null) {
- throw new Exception\LocalizedException(new \Magento\Framework\Phrase('Please define flag code.'));
- }
- $this->setFlagCode($this->_flagCode);
- if (!$this->hasKeepUpdateDate()) {
- $this->setLastUpdate(date('Y-m-d H:i:s'));
- }
- return parent::beforeSave();
- }
- /**
- * Retrieve flag data
- *
- * @return mixed
- */
- public function getFlagData()
- {
- if ($this->hasFlagData()) {
- $flagData = $this->getData('flag_data');
- try {
- $data = $this->json->unserialize($flagData);
- } catch (\InvalidArgumentException $exception) {
- $data = $this->serialize->unserialize($flagData);
- }
- return $data;
- }
- }
- /**
- * Set flag data
- *
- * @param mixed $value
- * @return $this
- */
- public function setFlagData($value)
- {
- return $this->setData('flag_data', $this->json->serialize($value));
- }
- /**
- * load self (load by flag code)
- *
- * @throws \Magento\Framework\Exception\LocalizedException
- * @return $this
- */
- public function loadSelf()
- {
- if ($this->_flagCode === null) {
- throw new Exception\LocalizedException(new \Magento\Framework\Phrase('Please define flag code.'));
- }
- return $this->load($this->_flagCode, 'flag_code');
- }
- }
|