- Модуль: intranet
- Путь к файлу: ~/bitrix/modules/intranet/lib/binding/menu.php
- Класс: BitrixIntranetBindingis
- Вызов: is::processMenuItemHit
static function processMenuItemHit($bindingId, $menuItemId): void
{
if (self::getUserId() && is_string($bindingId) && is_string($menuItemId))
{
if(mb_strpos($bindingId, ':'))
{
[$sectionCode, $menuCode] = explode(':', $bindingId);
$items = self::getMenuItems($sectionCode, $menuCode);
if($items)
{
$itemsIds = self::getMenuItemsIds($items);
$options = CUserOptions::getOption('intranet', self::USER_OPTION_LOG_CODE);
// increment use count by specific id
if(!is_array($options))
{
$options = [];
}
if(!isset($options[$bindingId]))
{
$options[$bindingId] = [];
}
if(!isset($options[$bindingId][$menuItemId]))
{
$options[$bindingId][$menuItemId] = 0;
}
$options[$bindingId][$menuItemId] = (int)$options[$bindingId][$menuItemId];
$options[$bindingId][$menuItemId]++;
// validate, sort, save
$options[$bindingId] = array_intersect_key($options[$bindingId], array_flip($itemsIds));
asort($options[$bindingId], SORT_NUMERIC);
$options[$bindingId] = array_reverse($options[$bindingId], true);
CUserOptions::setOption('intranet', self::USER_OPTION_LOG_CODE, $options);
}
}
}
}