![]() 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-newsletter/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Newsletter\Model; use Magento\Framework\Filter\FilterInput; use Magento\Framework\Validator\EmailAddress; use Magento\Framework\Validator\IntUtils; /** * Template model * * @method string getTemplateCode() * @method \Magento\Newsletter\Model\Template setTemplateCode(string $value) * @method \Magento\Newsletter\Model\Template setTemplateText(string $value) * @method \Magento\Newsletter\Model\Template setTemplateTextPreprocessed(string $value) * @method string getTemplateStyles() * @method \Magento\Newsletter\Model\Template setTemplateStyles(string $value) * @method int getTemplateType() * @method \Magento\Newsletter\Model\Template setTemplateType(int $value) * @method string getTemplateSubject() * @method \Magento\Newsletter\Model\Template setTemplateSubject(string $value) * @method string getTemplateSenderName() * @method \Magento\Newsletter\Model\Template setTemplateSenderName(string $value) * @method string getTemplateSenderEmail() * @method \Magento\Newsletter\Model\Template setTemplateSenderEmail(string $value) * @method int getTemplateActual() * @method \Magento\Newsletter\Model\Template setTemplateActual(int $value) * @method string getAddedAt() * @method \Magento\Newsletter\Model\Template setAddedAt(string $value) * @method string getModifiedAt() * @method \Magento\Newsletter\Model\Template setModifiedAt(string $value) * * @author Magento Core Team <[email protected]> * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * * @api * @since 100.0.2 */ class Template extends \Magento\Email\Model\AbstractTemplate { /** * Mail object * * @var string * @deprecated 100.3.0 Unused property * @see no alternatives */ protected $_mail; /** * Store manager to emulate design * * @var \Magento\Store\Model\StoreManagerInterface */ protected $_storeManager; /** * Http-request, used to determine current store in multi-store mode * * @var \Magento\Framework\App\RequestInterface */ protected $_request; /** * @var \Magento\Newsletter\Model\Template\FilterFactory */ protected $_filterFactory; /** * @param \Magento\Framework\Model\Context $context * @param \Magento\Framework\View\DesignInterface $design * @param \Magento\Framework\Registry $registry * @param \Magento\Store\Model\App\Emulation $appEmulation * @param \Magento\Store\Model\StoreManagerInterface $storeManager * @param \Magento\Framework\View\Asset\Repository $assetRepo * @param \Magento\Framework\Filesystem $filesystem * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig * @param \Magento\Email\Model\Template\Config $emailConfig * @param \Magento\Email\Model\TemplateFactory $templateFactory The template directive requires an email * template model, not newsletter model, as templates overridden in backend are loaded from email table. * @param \Magento\Framework\Filter\FilterManager $filterManager * @param \Magento\Framework\Url|\Magento\Framework\UrlInterface $urlModel * @param \Magento\Framework\App\RequestInterface $request * @param \Magento\Newsletter\Model\Template\FilterFactory $filterFactory , * @param array $data * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( \Magento\Framework\Model\Context $context, \Magento\Framework\View\DesignInterface $design, \Magento\Framework\Registry $registry, \Magento\Store\Model\App\Emulation $appEmulation, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Framework\View\Asset\Repository $assetRepo, \Magento\Framework\Filesystem $filesystem, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Email\Model\Template\Config $emailConfig, \Magento\Email\Model\TemplateFactory $templateFactory, \Magento\Framework\Filter\FilterManager $filterManager, \Magento\Framework\UrlInterface $urlModel, \Magento\Framework\App\RequestInterface $request, \Magento\Newsletter\Model\Template\FilterFactory $filterFactory, array $data = [] ) { parent::__construct( $context, $design, $registry, $appEmulation, $storeManager, $assetRepo, $filesystem, $scopeConfig, $emailConfig, $templateFactory, $filterManager, $urlModel, $data ); $this->_storeManager = $storeManager; $this->_request = $request; $this->_filterFactory = $filterFactory; } /** * Initialize resource model * * @return void */ protected function _construct() { $this->_init(\Magento\Newsletter\Model\ResourceModel\Template::class); } /** * Validate Newsletter template * * @return void * @throws \Magento\Framework\Exception\LocalizedException */ public function validate() { $validators = [ 'template_code' => [FilterInput::ALLOW_EMPTY => false], 'template_type' => IntUtils::class, 'template_sender_email' => EmailAddress::class, 'template_sender_name' => [FilterInput::ALLOW_EMPTY => false], ]; $data = []; foreach (array_keys($validators) as $validateField) { $data[$validateField] = $this->getDataUsingMethod($validateField); } $validateInput = new FilterInput([], $validators, $data); if (!$validateInput->isValid()) { $errorMessages = []; foreach ($validateInput->getMessages() as $messages) { if (is_array($messages)) { foreach ($messages as $message) { $errorMessages[] = $message; } } else { $errorMessages[] = $messages; } } throw new \Magento\Framework\Exception\LocalizedException(__(join("\n", $errorMessages))); } } /** * Processing object before save data * * @return $this */ public function beforeSave() { $this->validate(); parent::beforeSave(); return $this; } /** * Getter for template type * * @return int|string */ public function getType() { return $this->getTemplateType(); } /** * Retrieve processed template subject * * @param array $variables * @return string */ public function getProcessedTemplateSubject(array $variables) { $variables['this'] = $this; $filter = $this->getTemplateFilter(); $filter->setVariables($variables); return $filter->filter($this->getTemplateSubject()); } /** * Retrieve template text wrapper * * @return string */ public function getTemplateText() { if (!$this->getData('template_text') && !$this->getId()) { $this->setData( 'template_text', __( 'Follow this link to unsubscribe <!-- This tag is for unsubscribe link -->' . '<a href="{{var subscriber_data.unsubscription_link}}"> {{var subscriber_data.unsubscription_link}}' . '</a>' ) ); } return $this->getData('template_text'); } /** * Return the filter factory * * @return \Magento\Newsletter\Model\Template\FilterFactory */ protected function getFilterFactory() { return $this->_filterFactory; } /** * Check if template can be added to newsletter queue * * @return boolean */ public function isValidForSend() { return $this->getTemplateSenderName() && $this->getTemplateSenderEmail() && $this->getTemplateSubject(); } }