• Модуль: sender
  • Путь к файлу: ~/bitrix/modules/sender/lib/templates/selector.php
  • Класс: BitrixSenderTemplatesSelector
  • Вызов: Selector::getTemplates
private function getTemplates($limit = 0)
{
	$result = array();
	$parameters = array(
		Type::getCode($this->typeId),
		$this->id,
		$this->messageCode
	);
	$event = new Event(
		'sender',
		'OnPresetTemplateList',
		$parameters
	);
	$event->send();

	foreach ($event->getResults() as $eventResult)
	{
		if ($eventResult->getType() == EventResult::ERROR)
		{
			continue;
		}

		$eventResultParameters = $eventResult->getParameters();
		if (!is_array($eventResultParameters))
		{
			continue;
		}

		foreach ($eventResultParameters as $template)
		{
			$template = $this->prepareTemplate($template);
			if (!$this->checkTemplate($template))
			{
				continue;
			}

			$result[] = $template;

			if ($limit && count($result) >= $limit)
			{
				return $result;
			}
		}
	}

	$providers = array(
		array('BitrixSenderTemplatesRecent', 'onPresetTemplateList'),
		array('BitrixSenderPresetTemplatesMail', 'onPresetTemplateList'),
		array('BitrixSenderPresetTemplatesSms', 'onPresetTemplateList'),
		array('BitrixSenderPresetTemplatesRc', 'onPresetTemplateList'),
		array('BitrixSenderPresetTemplatesToloka', 'onPresetTemplateList'),
		array('BitrixSenderPresetTemplatesAudioCall', 'onPresetTemplateList')
	);
	foreach ($providers as $provider)
	{
		if (!is_callable($provider))
		{
			continue;
		}

		$eventResult = call_user_func_array($provider, $parameters);
		if (!is_array($eventResult))
		{
			continue;
		}
		foreach ($eventResult as $template)
		{
			$template = $this->prepareTemplate($template);
			if (!$this->checkTemplate($template))
			{
				continue;
			}

			$result[] = $template;
			if ($limit && count($result) >= $limit)
			{
				return $result;
			}
		}
	}

	return $result;

}