Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/yandex.market/lib/export/entity/template/ |
Upload File : |
<?php namespace Yandex\Market\Export\Entity\Template; use Bitrix\Main; use Bitrix\Iblock; use Yandex\Market; Main\Localization\Loc::loadMessages(__FILE__); class Source extends Market\Export\Entity\Reference\Source { protected $templateCache = []; public function getOrder() { return 1000; // last } public function initializeQueryContext($select, &$queryContext, &$sourceSelect) { if (Market\Template\Engine::load()) { $templateToKeyMap = []; foreach ($select as $templateKey => $template) { $templateNode = Market\Template\Engine::compileTemplate($template); $templateSourceSelect = $templateNode->getSourceSelect(); foreach ($templateSourceSelect as $sourceType => $sourceFields) { if (!isset($sourceSelect[$sourceType])) { $sourceSelect[$sourceType] = $sourceFields; } else { $sourceSelect[$sourceType] = array_merge( $sourceSelect[$sourceType], $sourceFields ); } } $this->setTemplateCache($templateKey, $templateNode); $templateToKeyMap[$template] = $templateKey; } if (!isset($queryContext['SELECT_MAP'])) { $queryContext['SELECT_MAP'] = []; } $queryContext['SELECT_MAP'][$this->getType()] = $templateToKeyMap; } } public function releaseQueryContext($select, $queryContext, $sourceSelect) { $this->releaseTemplateCache(); } public function getElementListValues($elementList, $parentList, $selectFields, $queryContext, $sourceValues) { $result = []; if (Market\Template\Engine::load()) { foreach ($elementList as $elementId => $element) { $entity = new Market\Template\Entity\SourceValue($elementId); $result[$elementId] = []; if (isset($sourceValues[$elementId])) { $entity->setFields($sourceValues[$elementId]); } foreach ($selectFields as $templateKey => $template) { /** @var Market\Template\Node\Root $templateNode */ $templateNode = $this->getTemplateCache($templateKey); $templateResult = ''; if ($templateNode) { $templateResult = $templateNode->processValue($entity); } $result[$elementId][$templateKey] = $templateResult; } } } return $result; } public function getFields(array $context = []) { return null; } public function getControl() { return Market\Export\Entity\Manager::CONTROL_TEMPLATE; } protected function getLangPrefix() { return 'TEMPLATE_'; } protected function setTemplateCache($template, Market\Template\Node\Root $node) { $this->templateCache[$template] = $node; } protected function getTemplateCache($template) { return (isset($this->templateCache[$template]) ? $this->templateCache[$template] : null); } protected function releaseTemplateCache() { $this->templateCache = []; } }