- Модуль: intranet
- Путь к файлу: ~/bitrix/modules/intranet/classes/general/handlers.php
- Класс: CIntranetEventHandlers
- Вызов: CIntranetEventHandlers::onRestAppInstall
static function onRestAppInstall($params)
{
if (!isset($params['APP_ID']) || !BitrixMainLoader::includeModule('rest'))
{
return;
}
$text = '';
$dbRes = BitrixRestAppTable::getList(
[
'filter' => [
'=ID' => $params['APP_ID'],
],
'select' => [
'ID',
'CODE',
'CLIENT_ID',
'MENU_NAME' => 'LANG.MENU_NAME',
'MENU_NAME_DEFAULT' => 'LANG_DEFAULT.MENU_NAME',
'MENU_NAME_LICENSE' => 'LANG_LICENSE.MENU_NAME',
],
]
);
foreach ($dbRes->fetchCollection() as $app)
{
$appInfo = [
'ID' => $app->getId(),
'CODE' => $app->getCode(),
'CLIENT_ID' => $app->getClientId(),
'MENU_NAME' => !is_null($app->getLang()) ? $app->getLang()->getMenuName() : '',
'MENU_NAME_DEFAULT' => !is_null($app->getLangDefault()) ? $app->getLangDefault()->getMenuName() : '',
'MENU_NAME_LICENSE' => !is_null($app->getLangLicense()) ? $app->getLangLicense()->getMenuName() : '',
];
if ($appInfo['CODE'] === CRestUtil::BITRIX_1C_APP_CODE)
{
return;
}
if (
$appInfo['MENU_NAME'] === ''
&& $appInfo['MENU_NAME_DEFAULT'] === ''
&& $appInfo['MENU_NAME_LICENSE'] === ''
)
{
$app->fillLangAll();
if (!is_null($app->getLangAll()))
{
$langList = [];
foreach ($app->getLangAll() as $appLang)
{
if ($appLang->getMenuName() !== '')
{
$langList[$appLang->getLanguageId()] = $appLang->getMenuName();
}
}
$defaultLang = BitrixMainLocalizationLoc::getDefaultLang(LANGUAGE_ID);
if (!empty($langList[LANGUAGE_ID]))
{
$text = $langList[LANGUAGE_ID];
}
elseif (!empty($langList[$defaultLang]))
{
$text = $langList[$defaultLang];
}
elseif (!empty($langList['en']))
{
$text = $langList['en'];
}
elseif (count($langList) > 0)
{
$text = reset($langList);
}
}
}
else
{
$text = $appInfo['MENU_NAME'];
if ($text == '')
{
$text = $appInfo['MENU_NAME_DEFAULT'];
}
if ($text == '')
{
$text = $appInfo['MENU_NAME_LICENSE'];
}
}
if ($text === '')
{
return;
}
$menuItem = array(
"LINK" => CRestUtil::getApplicationPage($appInfo['ID']),
"TEXT" => $text,
"ADDITIONAL_LINKS" => array(
CRestUtil::getApplicationPage($appInfo['ID'], 'CODE'),
),
);
$menuItem["ID"] = crc32($menuItem["LINK"]);
$adminOption = COption::GetOptionString("intranet", "left_menu_items_marketplace_".SITE_ID);
if (!empty($adminOption))
{
$itemExists = false;
$adminOption = unserialize($adminOption, ["allowed_classes" => false]);
foreach ($adminOption as $key => $item)
{
if ($item["ID"] == $menuItem["ID"])
{
if ($item["TEXT"] == $menuItem["TEXT"])
{
return;
}
else
{
$itemExists = true;
$adminOption[$key]["TEXT"] = $menuItem["TEXT"];
break;
}
}
}
if (!$itemExists && (!isset($params["IS_NEW_APP"]) || !$params["IS_NEW_APP"]))
{
$adminOption[] = $menuItem;
}
}
else
{
$adminOption = array($menuItem);
}
COption::SetOptionString("intranet", "left_menu_items_marketplace_".SITE_ID, serialize($adminOption), false, SITE_ID);
if (defined("BX_COMP_MANAGED_CACHE"))
{
global $CACHE_MANAGER;
$CACHE_MANAGER->ClearByTag("bitrix24_left_menu");
}
}
}