<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Email\Model;
use Magento\Framework\App\Config\ScopeConfigInterface;
/**
* Adminhtml email template model
*
* @api
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @since 100.0.2
*/
class BackendTemplate extends Template
{
/**
* @var \Magento\Config\Model\Config\Structure
*/
private $structure;
/**
* @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
* @param \Magento\Framework\Filter\FilterManager $filterManager
* @param \Magento\Framework\UrlInterface $urlModel
* @param \Magento\Email\Model\Template\FilterFactory $filterFactory
* @param \Magento\Config\Model\Config\Structure $structure
* @param array $data
* @param \Magento\Framework\Serialize\Serializer\Json|null $serializer
*
* @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\Email\Model\Template\FilterFactory $filterFactory,
\Magento\Config\Model\Config\Structure $structure,
array $data = [],
\Magento\Framework\Serialize\Serializer\Json $serializer = null
) {
$this->structure = $structure;
parent::__construct(
$context,
$design,
$registry,
$appEmulation,
$storeManager,
$assetRepo,
$filesystem,
$scopeConfig,
$emailConfig,
$templateFactory,
$filterManager,
$urlModel,
$filterFactory,
$data,
$serializer
);
}
/**
* Collect all system config paths where current template is currently used
*
* @return array
*/
public function getSystemConfigPathsWhereCurrentlyUsed()
{
$templateId = $this->getId();
if (!$templateId) {
return [];
}
$templatePaths = $this->structure->getFieldPathsByAttribute(
'source_model',
\Magento\Config\Model\Config\Source\Email\Template::class
);
if (!count($templatePaths)) {
return [];
}
$configData = $this->_getResource()->getSystemConfigByPathsAndTemplateId($templatePaths, $templateId);
foreach ($templatePaths as $path) {
if ($this->scopeConfig->getValue($path, ScopeConfigInterface::SCOPE_TYPE_DEFAULT) == $templateId) {
foreach ($configData as $data) {
if ($data['path'] == $path) {
continue 2; // don't add final fallback value if it was found in stored config
}
}
$configData[] = [
'scope' => ScopeConfigInterface::SCOPE_TYPE_DEFAULT,
'path' => $path
];
}
}
return $configData;
}
}
|