- Модуль: sender
- Путь к файлу: ~/bitrix/modules/sender/lib/trigger/manager.php
- Класс: BitrixSenderTriggerManager
- Вызов: Manager::getClassList
static function getClassList(array $endpointList = null)
{
$resultList = array();
$moduleIdFilter = null;
$moduleConnectorFilter = null;
if($endpointList)
{
$moduleIdFilter = array();
foreach($endpointList as $endpoint)
{
$moduleIdFilter[] = $endpoint['MODULE_ID'];
$moduleConnectorFilter[$endpoint['MODULE_ID']][] = $endpoint['CODE'];
}
}
$data = array();
$event = new Event('sender', 'OnTriggerList', array($data), $moduleIdFilter);
$event->send();
foreach ($event->getResults() as $eventResult)
{
if ($eventResult->getType() == EventResult::ERROR)
{
continue;
}
$eventResultParameters = $eventResult->getParameters();
if($eventResultParameters && array_key_exists('TRIGGER', $eventResultParameters))
{
$connectorClassNameList = $eventResultParameters['TRIGGER'];
if(!is_array($connectorClassNameList))
$connectorClassNameList = array($connectorClassNameList);
foreach($connectorClassNameList as $connectorClassName)
{
if(!is_subclass_of($connectorClassName, 'BitrixSenderTrigger'))
{
continue;
}
$connector = new $connectorClassName;
$connectorCode = $connector->getCode();
if($moduleConnectorFilter && !in_array($connectorCode, $moduleConnectorFilter[$eventResult->getModuleId()]))
{
continue;
}
$isClosedTrigger = false;
if(is_subclass_of($connectorClassName, 'BitrixSenderTriggerConnectorClosed'))
$isClosedTrigger = true;
$connectorName = $connector->getName();
$connectorRequireConfigure = $connector->requireConfigure();
$resultList[] = array(
'MODULE_ID' => $eventResult->getModuleId(),
'CLASS_NAME' => $connectorClassName,
'CODE' => $connectorCode,
'NAME' => $connectorName,
'REQUIRE_CONFIGURE' => $connectorRequireConfigure,
'IS_CLOSED' => $isClosedTrigger,
);
}
}
}
if(!empty($resultList))
usort($resultList, array(__CLASS__, 'sort'));
return $resultList;
}