123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- <?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;
- }
- }
|