• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/eventmanager.php
  • Класс: BitrixMainEventManager
  • Вызов: EventManager::addEventHandlerInternal
protected function addEventHandlerInternal($fromModuleId, $eventType, $callback, $includeFile, $sort, $version)
{
	$arEvent = [
		'FROM_MODULE_ID' => $fromModuleId,
		'MESSAGE_ID' => $eventType,
		'CALLBACK' => $callback,
		'SORT' => $sort,
		'FULL_PATH' => $includeFile,
		'VERSION' => $version,
		'TO_NAME' => $this->formatEventName(['CALLBACK' => $callback]),
	];

	$fromModuleId = strtoupper($fromModuleId);
	$eventType = strtoupper($eventType);

	if (!isset($this->handlers[$fromModuleId]) || !is_array($this->handlers[$fromModuleId]))
	{
		$this->handlers[$fromModuleId] = [];
	}

	$arEvents = &$this->handlers[$fromModuleId];

	if (empty($arEvents[$eventType]) || !is_array($arEvents[$eventType]))
	{
		$arEvents[$eventType] = [$arEvent];
		$iEventHandlerKey = 0;
	}
	else
	{
		$newEvents = [];
		$iEventHandlerKey = max(array_keys($arEvents[$eventType])) + 1;

		foreach ($arEvents[$eventType] as $key => $value)
		{
			if ($value['SORT'] > $arEvent['SORT'])
			{
				$newEvents[$iEventHandlerKey] = $arEvent;
			}

			$newEvents[$key] = $value;
		}
		$newEvents[$iEventHandlerKey] = $arEvent;
		$arEvents[$eventType] = $newEvents;
	}

	return $iEventHandlerKey;
}