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