• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/integration/rest/eventhandler.php
  • Класс: BitrixIntranetIntegrationRestEventHandler
  • Вызов: EventHandler::reloadPlacementLeftMenu
static function reloadPlacementLeftMenu()
{
	$menuList = [];
	$placementList = [];
	$option = Option::get('intranet', 'left_menu_items_marketplace_' . SITE_ID);
	if (!empty($option))
	{
		$menuList = unserialize($option, ['allowed_classes' => false]);
		foreach ($menuList as $key => $item)
		{
			if ((int)$item['PLACEMENT_ID'] > 0)
			{
				$placementList[$item['PLACEMENT_ID']] = $key;
			}
		}
	}

	$needSave = false;
	$res = PlacementTable::getList(
		[
			'filter' => [
				'=PLACEMENT' => CIntranetRestService::LEFT_MENU,
			],
			'select' => [
				'ID',
				'ICON_ID',
				'TITLE',
				'GROUP_NAME',
				'COMMENT',
				'APP_ID',
				'ADDITIONAL',
			],
		]
	);

	foreach ($res->fetchCollection() as $handler)
	{
		if ($placementList[$handler->getId()])
		{
			unset($placementList[$handler->getId()]);
			continue;
		}
		$title = $handler->getTitle();
		$data = [
			'TITLE' => '',
		];

		$handler->fillLangAll();
		if (!is_null($handler->getLangAll()))
		{
			foreach ($handler->getLangAll() as $lang)
			{
				$data['LANG_ALL'][$lang->getLanguageId()] = [
					'TITLE' => $lang->getTitle(),
					'DESCRIPTION' => $lang->getDescription(),
					'GROUP_NAME' => $lang->getGroupName(),
				];
			}
		}

		$data = Lang::mergeFromLangAll($data);
		if ($data['TITLE'] !== '')
		{
			$title = $data['TITLE'];
		}

		if ($title === '')
		{
			continue;
		}

		$url = Url::getApplicationPlacementUrl($handler->getId());
		$menuList[] = [
			'ID' => crc32($url),
			'LINK' => $url,
			'TEXT' => $title,
			'ADDITIONAL_LINKS' => [
				$url,
			],
			'PLACEMENT_ID' => $handler->getId(),
		];
		$needSave = true;
	}

	foreach ($placementList as $placementId => $key)
	{
		unset($menuList[$key]);
		$needSave = true;
	}

	if ($needSave)
	{
		Option::set(
			'intranet',
			'left_menu_items_marketplace_' . SITE_ID,
			serialize($menuList),
			SITE_ID
		);

		if (defined('BX_COMP_MANAGED_CACHE'))
		{
			global $CACHE_MANAGER;
			$CACHE_MANAGER->ClearByTag('bitrix24_left_menu');
		}

		return new EventResult(EventResult::SUCCESS);
	}

	return new EventResult(EventResult::ERROR);
}