- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/app.php
- Класс: BitrixImApp
- Вызов: App::getListCache
static function getListCache($lang = LANGUAGE_ID)
{
$cache = BitrixMainDataCache::createInstance();
if($cache->initCache(self::CACHE_TTL, 'list_v3_'.$lang, self::CACHE_PATH))
{
$result = $cache->getVars();
}
else
{
$loadRestLang = false;
$result = Array();
$orm = BitrixImModelAppTable::getList();
while ($row = $orm->fetch())
{
if ($row['ICON_FILE_ID'])
{
$image = CFile::ResizeImageGet(
$row['ICON_FILE_ID'],
array('width' => 108, 'height' => 66),
BX_RESIZE_IMAGE_PROPORTIONAL,
false,
false,
true
);
$row['ICON_URL'] = empty($image['src'])? '': $image['src'];
}
else
{
$row['ICON_URL'] = '';
}
if (!empty($row['CLASS']) && !empty($row['METHOD_LANG_GET']))
{
if (BitrixMainLoader::includeModule($row['MODULE_ID']) && class_exists($row["CLASS"]) && method_exists($row["CLASS"], $row["METHOD_LANG_GET"]))
{
$localize = call_user_func_array(array($row["CLASS"], $row["METHOD_LANG_GET"]), Array($row['CODE'], $lang));
if ($localize)
{
$row['TITLE'] = $localize['TITLE'];
$row['DESCRIPTION'] = $localize['DESCRIPTION'];
$row['COPYRIGHT'] = $localize['COPYRIGHT'];
}
else
{
$row['METHOD_LANG_GET'] = '';
}
}
else
{
$row['METHOD_LANG_GET'] = '';
}
}
else
{
$row['TITLE'] = '';
$row['DESCRIPTION'] = '';
$row['COPYRIGHT'] = '';
if ($row['MODULE_ID'] == 'rest')
{
$loadRestLang = true;
}
}
$result[$row['ID']] = $row;
}
if ($loadRestLang)
{
$langSet = Array();
$orm = BitrixImModelAppLangTable::getList();
while ($row = $orm->fetch())
{
if (!isset($result[$row['APP_ID']]))
continue;
$langSet[$row['APP_ID']][$row['LANGUAGE_ID']]['TITLE'] = $row['TITLE'];
$langSet[$row['APP_ID']][$row['LANGUAGE_ID']]['DESCRIPTION'] = $row['DESCRIPTION'];
$langSet[$row['APP_ID']][$row['LANGUAGE_ID']]['COPYRIGHT'] = $row['COPYRIGHT'];
}
$langAlter = BitrixImBot::getDefaultLanguage();
foreach ($result as $appId => $commandData)
{
if (isset($langSet[$appId][$lang]))
{
$result[$appId]['TITLE'] = $langSet[$appId][$lang]['TITLE'];
$result[$appId]['DESCRIPTION'] = $langSet[$appId][$lang]['DESCRIPTION'];
$result[$appId]['COPYRIGHT'] = $langSet[$appId][$lang]['COPYRIGHT'];
}
else if (isset($langSet[$appId][$langAlter]))
{
$result[$appId]['TITLE'] = $langSet[$appId][$langAlter]['TITLE'];
$result[$appId]['DESCRIPTION'] = $langSet[$appId][$langAlter]['DESCRIPTION'];
$result[$appId]['COPYRIGHT'] = $langSet[$appId][$langAlter]['COPYRIGHT'];
}
else if (isset($langSet[$appId]))
{
$langSetCommand = array_values($langSet[$appId]);
$result[$appId]['TITLE'] = $langSetCommand[0]['TITLE'];
$result[$appId]['DESCRIPTION'] = $langSetCommand[0]['DESCRIPTION'];
$result[$appId]['COPYRIGHT'] = $langSetCommand[0]['COPYRIGHT'];
}
}
foreach ($result as $key => $value)
{
if (empty($value['TITLE']))
{
$row['METHOD_LANG_GET'] = '';
}
}
}
$cache->startDataCache();
$cache->endDataCache($result);
}
return $result;
}