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