- Модуль: 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;
}