• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/template_manager.php
  • Класс: \CCrmTemplateManager
  • Вызов: CCrmTemplateManager::PrepareTemplate
static function PrepareTemplate($template, $entityTypeID, $entityID, $contentTypeID = 0, $senderId = 0)
{
	$template = strval($template);
	if($template === '')
	{
		return '';
	}

	$entityTypeName = \CCrmOwnerType::System == $entityTypeID ? 'SENDER' : \CCrmOwnerType::resolveName($entityTypeID);
	$entityID = intval($entityID);

	$contentTypeID = (int) $contentTypeID;
	if (!\CCrmContentType::isDefined($contentTypeID))
		$contentTypeID = \CCrmContentType::PlainText;

	if ($entityTypeName != '' && $entityID > 0)
	{
		if (preg_match_all(sprintf('/#%s\.[^#]+#/i', preg_quote($entityTypeName, '/')), $template))
		{
			$entityMapper = self::resolveMapper($entityTypeID, $entityID);
			$entityMapper->setContentType($contentTypeID);
		}
	}

	if (\CCrmOwnerType::System == $entityTypeID)
	{
		$senderMapper = $entityMapper;
	}
	else if ($senderId > 0)
	{
		if (preg_match_all('/#SENDER\.[^#]+#/i', $template))
		{
			$senderMapper = self::resolveMapper(\CCrmOwnerType::System, $senderId);
			$senderMapper->setContentType($contentTypeID);
		}
	}

	if (empty($entityMapper) && empty($senderMapper))
		return $template;

	preg_match_all(sprintf('/#(SENDER|%s)\.[^#]+#/i', preg_quote($entityTypeName, '/')), $template, $matches);

	$replacements = array();
	foreach ($matches[0] as $i => $key)
	{
		$mapper = $matches[1][$i] == 'SENDER' ? $senderMapper : $entityMapper;

		if (array_key_exists($key, $replacements) || empty($mapper))
			continue;

		$replacements[$key] = $mapper->mapPath(mb_substr($key, 1, -1));
	}

	return str_replace(array_keys($replacements), array_values($replacements), $template);
}