public static function makeFileName(\Freetrix\Iblock\InheritedProperty\BaseTemplate $ipropTemplates, $templateName, $arFields, $arFile) { if (preg_match("/^(.+)(\\.[a-zA-Z0-9]+)\$/", $arFile["name"], $fileName)) { if (!isset($arFields["IPROPERTY_TEMPLATES"]) || $arFields["IPROPERTY_TEMPLATES"][$templateName] == "") { $templates = $ipropTemplates->findTemplates(); $TEMPLATE = $templates[$templateName]["TEMPLATE"]; } else { $TEMPLATE = $arFields["IPROPERTY_TEMPLATES"][$templateName]; } if ($TEMPLATE != "") { list($template, $modifiers) = Helper::splitTemplate($TEMPLATE); if ($template != "") { $values = $ipropTemplates->getValuesEntity(); $entity = $values->createTemplateEntity(); $entity->setFields($arFields); return \Freetrix\Iblock\Template\Engine::process($entity, $TEMPLATE) . $fileName[2]; } elseif ($modifiers != "") { $simpleTemplate = new NodeRoot(); $simpleTemplate->addChild(new NodeText($fileName[1])); $simpleTemplate->setModifiers($modifiers); $baseEntity = new Entity\Base(0); return $simpleTemplate->process($baseEntity) . $fileName[2]; } } } return $arFile["name"]; }
/** * Splits template by tokens and builds execution tree. * * @param string $template * @param NodeRoot $parent * @return NodeRoot */ protected static function parseTemplateTree($template, NodeRoot $parent) { list($template, $modifiers) = Helper::splitTemplate($template); if ($modifiers != "") { $parent->setModifiers($modifiers); } $parsedTemplate = preg_split('/({=|})/', $template, -1, PREG_SPLIT_DELIM_CAPTURE); while (list(, $token) = each($parsedTemplate)) { $node = null; if ($token === "{=") { $node = self::parseFormula($parsedTemplate); } elseif ($token !== "") { $node = new NodeText($token); } if ($node) { $parent->addChild($node); } } return $parent; }