• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/connector/intranet.php
  • Класс: BitrixLandingConnectorIntranet
  • Вызов: Intranet::onBuildBindingMenu
static function onBuildBindingMenu(BitrixMainEvent $event): array
{
	CJSCore::init('sidepanel');
	BitrixLandingSiteType::setScope(
		BitrixLandingSiteType::SCOPE_CODE_KNOWLEDGE
	);

	$bindings = BindingMenu::getList(null);

	// associate different bindings
	$bindingsAssoc = [];
	foreach ($bindings as $binding)
	{
		if (!isset($bindingsAssoc[$binding['BINDING_ID']]))
		{
			$bindingsAssoc[$binding['BINDING_ID']] = [];
		}
		$bindingsAssoc[$binding['BINDING_ID']][] = $binding;
	}
	$bindings = $bindingsAssoc;
	unset($bindingsAssoc);

	// init vars
	$items = [];
	$bindingMap = Menu::getMap();

	// build binding map
	foreach ($bindingMap as $sectionCode => $bindingSection)
	{
		foreach ($bindingSection['items'] as $itemCode => $foo)
		{
			$menuItems = [];
			$unbindItems = [];
			$bindingCode = $sectionCode . ':' . $itemCode;
			if (isset($bindings[$bindingCode]))
			{
				foreach ($bindings[$bindingCode] as $bindingItem)
				{
					$menuItems[] = [
						'id' => 'landing_' . $bindingItem['ENTITY_TYPE'] . $bindingItem['ENTITY_ID'],
			  			'text' => htmlspecialcharsbx($bindingItem['TITLE']),
			  			'href' => $bindingItem['PUBLIC_URL'],
			  			'sectionCode' => Menu::SECTIONS['knowledge']
					];
					$unbindItems[] = self::getMenuItemUnbind(
						$bindingCode,
						$bindingItem['ENTITY_TYPE'] . '_' . $bindingItem['ENTITY_ID'],
						$bindingItem['TITLE']
					);
				}
			}
			$menuItems = array_merge(
				$menuItems,
				self::getMenuItemBind($bindingCode)
			);
			if (isset($bindings[$bindingCode]) && Rights::hasAdditionalRight('extension', null, false, true))
			{
				$menuItems[] = [
					'id' => 'landing_unbind',
					'extension' => 'landing.connector.intranet',
					'text' => Loc::getMessage('LANDING_CONNECTOR_INTRANET_MENU_HIDE_TITLE'),
					'items' => $unbindItems
				];
			}
			$items[] = [
				'bindings' => [
					$sectionCode => [
						'include' => [
							$itemCode
						]
					]
				],
				'items' => $menuItems
			];
		}
	}

	BitrixLandingSiteType::clearScope();

	return $items;
}