• Модуль: sender
  • Путь к файлу: ~/bitrix/modules/sender/lib/connector/manager.php
  • Класс: BitrixSenderConnectorManager
  • Вызов: Manager::getConnectorClassList
static function getConnectorClassList(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', 'OnConnectorList', array($data), $moduleIdFilter);
	$event->send();

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

		$eventResultParameters = $eventResult->getParameters();

		if($eventResultParameters && array_key_exists('CONNECTOR', $eventResultParameters))
		{
			$connectorClassNameList = $eventResultParameters['CONNECTOR'];
			if (!is_array($eventResultParameters['CONNECTOR']))
			{
				$connectorClassNameList = array($connectorClassNameList);
			}
			foreach ($connectorClassNameList as $connectorClassName)
			{
				if(!is_subclass_of($connectorClassName,  'BitrixSenderConnector'))
				{
					continue;
				}

				/**
				 * @var BitrixSenderConnector $connectorInstance
				 */
				$connectorInstance = new $connectorClassName;

				$connectorCode = $connectorInstance->getCode();
				if($moduleConnectorFilter && !in_array($connectorCode, $moduleConnectorFilter[$eventResult->getModuleId()]))
				{
					continue;
				}

				$connectorName =  $connectorInstance->getName();
				$connectorRequireConfigure =$connectorInstance->requireConfigure();

				$resultList[] = array(
					'MODULE_ID' => $eventResult->getModuleId(),
					'CLASS_NAME' => $connectorClassName,
					'CODE' => $connectorCode,
					'NAME' => $connectorName,
					'REQUIRE_CONFIGURE' => $connectorRequireConfigure,
				);
			}
		}
	}

	if(!empty($resultList))
		usort($resultList, array(__CLASS__, 'sort'));

	return $resultList;
}