• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/lib/url/adminpage/buildermanager.php
  • Класс: BitrixIblockUrlAdminPageBuilderManager
  • Вызов: BuilderManager::__construct
protected function __construct()
{
	$this->builders = [];
	$this->map = [];
	$counter = 0;

	$item = new IblockBuilder();
	$id = $item->getId();

	$this->builders[$id] = $item;
	$this->map[] = [
		'ID' => $id,
		'WEIGHT' => (int)$item->getWeight(),
		'COUNTER' => $counter
	];
	$counter++;
	unset($item);

	$event = new MainEvent('iblock', self::EVENT_ID, []);
	$event->send();
	$resultList = $event->getResults();
	if (empty($resultList) || !is_array($resultList))
	{
		return;
	}
	foreach ($resultList as $eventResult)
	{
		if ($eventResult->getType() != MainEventResult::SUCCESS)
		{
			continue;
		}
		$row = $eventResult->getParameters();
		if (empty($row) || !is_array($row))
		{
			continue;
		}
		foreach ($row as $className)
		{
			/** @var BaseBuilder $item */
			$item = new $className();
			if ($item instanceof BaseBuilder)
			{
				$id = $item->getId();
				if (!isset($this->builders[$id]))
				{
					$this->builders[$id] = $item;
					$this->map[] = [
						'ID' => $id,
						'WEIGHT' => (int)$item->getWeight(),
						'COUNTER' => $counter
					];
					$counter++;
				}
			}
			unset($item);
		}
	}
	unset($eventResult, $resultList);

	if (!empty($this->map))
	{
		MainTypeCollection::sortByColumn(
			$this->map,
			['WEIGHT' => SORT_DESC, 'COUNTER' => SORT_ASC]
		);
	}
}