• Модуль: 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;
}