![]() 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-cms/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Cms\Model; use Magento\Cms\Api\Data\BlockInterface; use Magento\Framework\App\ObjectManager; use Magento\Framework\DataObject\IdentityInterface; use Magento\Framework\Model\AbstractModel; use Magento\Framework\Validation\ValidationException; use Magento\Framework\Validator\HTML\WYSIWYGValidatorInterface; use Magento\Framework\Model\Context; use Magento\Framework\Registry; use Magento\Framework\Model\ResourceModel\AbstractResource; use Magento\Framework\Data\Collection\AbstractDb; use Magento\Backend\Model\Validator\UrlKey\CompositeUrlKey; use Magento\Framework\Exception\LocalizedException; /** * CMS block model * * @method Block setStoreId(int $storeId) * @method int getStoreId() */ class Block extends AbstractModel implements BlockInterface, IdentityInterface { /** * CMS block cache tag */ public const CACHE_TAG = 'cms_b'; /**#@+ * Block's statuses */ public const STATUS_ENABLED = 1; public const STATUS_DISABLED = 0; /** * @var string */ protected $_cacheTag = self::CACHE_TAG; /** * Prefix of model events names * * @var string */ protected $_eventPrefix = 'cms_block'; /** * @var WYSIWYGValidatorInterface */ private $wysiwygValidator; /** * @var CompositeUrlKey */ private $compositeUrlValidator; /** * @param Context $context * @param Registry $registry * @param AbstractResource|null $resource * @param AbstractDb|null $resourceCollection * @param array $data * @param WYSIWYGValidatorInterface|null $wysiwygValidator * @param CompositeUrlKey|null $compositeUrlValidator */ public function __construct( Context $context, Registry $registry, AbstractResource $resource = null, AbstractDb $resourceCollection = null, array $data = [], ?WYSIWYGValidatorInterface $wysiwygValidator = null, CompositeUrlKey $compositeUrlValidator = null ) { parent::__construct($context, $registry, $resource, $resourceCollection, $data); $this->wysiwygValidator = $wysiwygValidator ?? ObjectManager::getInstance()->get(WYSIWYGValidatorInterface::class); $this->compositeUrlValidator = $compositeUrlValidator ?? ObjectManager::getInstance()->get(CompositeUrlKey::class); } /** * Construct. * * @return void */ protected function _construct() { $this->_init(\Magento\Cms\Model\ResourceModel\Block::class); } /** * Prevent blocks recursion * * @return AbstractModel * @throws \Magento\Framework\Exception\LocalizedException */ public function beforeSave() { if ($this->hasDataChanges()) { $this->setUpdateTime(null); } $needle = 'block_id="' . $this->getId() . '"'; $content = ($this->getContent() !== null) ? $this->getContent() : ''; if (strpos($content, $needle) !== false) { throw new \Magento\Framework\Exception\LocalizedException( __('Make sure that static block content does not reference the block itself.') ); } $errors = $this->compositeUrlValidator->validate($this->getIdentifier()); if (!empty($errors)) { throw new LocalizedException($errors[0]); } parent::beforeSave(); //Validating HTML content. if ($content && $content !== $this->getOrigData(self::CONTENT)) { try { $this->wysiwygValidator->validate($content); } catch (ValidationException $exception) { throw new ValidationException( __('Content field contains restricted HTML elements. %1', $exception->getMessage()), $exception ); } } return $this; } /** * Get identities * * @return array */ public function getIdentities() { return [self::CACHE_TAG . '_' . $this->getId(), self::CACHE_TAG . '_' . $this->getIdentifier()]; } /** * Retrieve block id * * @return int */ public function getId() { return $this->getData(self::BLOCK_ID); } /** * Retrieve block identifier * * @return string */ public function getIdentifier() { return (string)$this->getData(self::IDENTIFIER); } /** * Retrieve block title * * @return string */ public function getTitle() { return $this->getData(self::TITLE); } /** * Retrieve block content * * @return string */ public function getContent() { return $this->getData(self::CONTENT); } /** * Retrieve block creation time * * @return string */ public function getCreationTime() { return $this->getData(self::CREATION_TIME); } /** * Retrieve block update time * * @return string */ public function getUpdateTime() { return $this->getData(self::UPDATE_TIME); } /** * Is active * * @return bool */ public function isActive() { return (bool)$this->getData(self::IS_ACTIVE); } /** * Set ID * * @param int $id * @return BlockInterface */ public function setId($id) { return $this->setData(self::BLOCK_ID, $id); } /** * Set identifier * * @param string $identifier * @return BlockInterface */ public function setIdentifier($identifier) { return $this->setData(self::IDENTIFIER, $identifier); } /** * Set title * * @param string $title * @return BlockInterface */ public function setTitle($title) { return $this->setData(self::TITLE, $title); } /** * Set content * * @param string $content * @return BlockInterface */ public function setContent($content) { return $this->setData(self::CONTENT, $content); } /** * Set creation time * * @param string $creationTime * @return BlockInterface */ public function setCreationTime($creationTime) { return $this->setData(self::CREATION_TIME, $creationTime); } /** * Set update time * * @param string $updateTime * @return BlockInterface */ public function setUpdateTime($updateTime) { return $this->setData(self::UPDATE_TIME, $updateTime); } /** * Set is active * * @param bool|int $isActive * @return BlockInterface */ public function setIsActive($isActive) { return $this->setData(self::IS_ACTIVE, $isActive); } /** * Receive page store ids * * @return int[] */ public function getStores() { return $this->hasData('stores') ? $this->getData('stores') : $this->getData('store_id'); } /** * Prepare block's statuses. * * @return array */ public function getAvailableStatuses() { return [self::STATUS_ENABLED => __('Enabled'), self::STATUS_DISABLED => __('Disabled')]; } }