mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 09:17:35 +00:00
254 lines
8.0 KiB
PHP
254 lines
8.0 KiB
PHP
<?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 <core@magentocommerce.com>
|
|
* @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();
|
|
}
|
|
}
|