9 use \Magento\Framework\Exception\LocalizedException;
10 use \Magento\Theme\Api\Data\DesignConfigInterface;
11 use \Magento\Theme\Api\Data\DesignConfigDataInterface;
12 use \Magento\Framework\Mail\TemplateInterfaceFactory as TemplateFactory;
13 use \Magento\Framework\Filter\Template;
14 use \Magento\Framework\Filter\Template\Tokenizer\Parameter as ParameterTokenizer;
29 private $templateFactory;
37 public function __construct(TemplateFactory $templateFactory, $fields = [])
39 $this->templateFactory = $templateFactory;
40 $this->fields = $fields;
56 foreach ($designConfigData as $designElement) {
57 if (!in_array($designElement->getFieldConfig()[
'field'], $this->fields)) {
61 $elements[$designElement->getFieldConfig()[
'field']] = [
62 'config_path' => $designElement->getPath(),
63 'value' => $designElement->getValue()
71 if (preg_match_all(Template::CONSTRUCTION_TEMPLATE_PATTERN,
$text, $constructions, PREG_SET_ORDER)) {
72 foreach ($constructions as $construction) {
73 $configPath = isset($construction[2]) ? $construction[2] :
'';
74 $params = $this->getParameters($configPath);
78 'The "%templateName" template contains an incorrect configuration, with a reference ' 79 .
'to itself. Remove or change the reference, then try again.',
80 [
"templateName" =>
$name]
95 private function getScopeId(DesignConfigInterface $designConfig)
97 if ($designConfig->getScope() ==
'stores') {
98 return $designConfig->getScopeId();
109 private function getTemplateText(
$templateId, DesignConfigInterface $designConfig)
112 $template = $this->templateFactory->create();
113 $template->emulateDesign($this->getScopeId($designConfig));
131 private function getParameters(
$value)
133 $tokenizer =
new ParameterTokenizer();
134 $tokenizer->setString(
$value);
135 $params = $tokenizer->tokenize();
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE]
__construct(TemplateFactory $templateFactory, $fields=[])
if(!isset($_GET['name'])) $name