• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/textareaicon.php
  • Класс: BitrixImTextareaIcon
  • Вызов: TextareaIcon::getListCache
static function getListCache($lang = LANGUAGE_ID)
{
	$cache = BitrixMainDataCache::createInstance();
	if($cache->initCache(self::CACHE_TTL, 'list_v2_'.$lang, self::CACHE_PATH))
	{
		$result = $cache->getVars();
	}
	else
	{
		$loadRestLang = false;
		$result = Array();
		$orm = BitrixImModelTextareaIconTable::getList();
		while ($row = $orm->fetch())
		{
			$row['ICON_ID'] = $row['ID'];
			
			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['ICON_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['ICON_ID']] = $row;
		}

		if ($loadRestLang)
		{
			$langSet = Array();
			$orm = BitrixImModelTextareaIconLangTable::getList();
			while ($row = $orm->fetch())
			{
				if (!isset($result[$row['ICON_ID']]))
					continue;

				$langSet[$row['ICON_ID']][$row['LANGUAGE_ID']]['TITLE'] = $row['TITLE'];
				$langSet[$row['ICON_ID']][$row['LANGUAGE_ID']]['DESCRIPTION'] = $row['DESCRIPTION'];
				$langSet[$row['ICON_ID']][$row['LANGUAGE_ID']]['COPYRIGHT'] = $row['COPYRIGHT'];
			}

			$langAlter = BitrixImBot::getDefaultLanguage();
			foreach ($result as $iconId => $commandData)
			{
				if (isset($langSet[$iconId][$lang]))
				{
					$result[$iconId]['TITLE'] = $langSet[$iconId][$lang]['TITLE'];
					$result[$iconId]['DESCRIPTION'] = $langSet[$iconId][$lang]['DESCRIPTION'];
					$result[$iconId]['COPYRIGHT'] = $langSet[$iconId][$lang]['COPYRIGHT'];
				}
				else if (isset($langSet[$iconId][$langAlter]))
				{
					$result[$iconId]['TITLE'] = $langSet[$iconId][$langAlter]['TITLE'];
					$result[$iconId]['DESCRIPTION'] = $langSet[$iconId][$langAlter]['DESCRIPTION'];
					$result[$iconId]['COPYRIGHT'] = $langSet[$iconId][$langAlter]['COPYRIGHT'];
				}
				else if (isset($langSet[$iconId]))
				{
					$langSetCommand = array_values($langSet[$iconId]);
					$result[$iconId]['TITLE'] = $langSetCommand[0]['TITLE'];
					$result[$iconId]['DESCRIPTION'] = $langSetCommand[0]['DESCRIPTION'];
					$result[$iconId]['COPYRIGHT'] = $langSetCommand[0]['COPYRIGHT'];
				}
			}

			foreach ($result as $key => $value)
			{
				if (empty($value['TITLE']))
				{
					$row['METHOD_LANG_GET'] = '';
				}
			}
		}
		
		$cache->startDataCache();
		$cache->endDataCache($result);
	}


	return $result;
}