123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Newsletter\Model;
- /**
- * 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 <core@magentocommerce.com>
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- *
- * @api
- * @since 100.0.2
- */
- class Template extends \Magento\Email\Model\AbstractTemplate
- {
- /**
- * Mail object
- *
- * @deprecated 100.3.0 Unused property
- *
- */
- 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;
- /**
- * Filter factory
- *
- * @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' => [\Zend_Filter_Input::ALLOW_EMPTY => false],
- 'template_type' => 'Int',
- 'template_sender_email' => 'EmailAddress',
- 'template_sender_name' => [\Zend_Filter_Input::ALLOW_EMPTY => false],
- ];
- $data = [];
- foreach (array_keys($validators) as $validateField) {
- $data[$validateField] = $this->getDataUsingMethod($validateField);
- }
- $validateInput = new \Zend_Filter_Input([], $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;
- return $this->getTemplateFilter()
- ->setVariables($variables)
- ->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.getUnsubscriptionLink()}}">{{var subscriber.getUnsubscriptionLink()}}' .
- '</a>'
- )
- );
- }
- return $this->getData('template_text');
- }
- /**
- * @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();
- }
- }
|