• Модуль: highloadblock
  • Путь к файлу: ~/bitrix/modules/highloadblock/classes/general/prop_directory.php
  • Класс: CIBlockPropertyDirectory
  • Вызов: CIBlockPropertyDirectory::GetExtendedValue
static function GetExtendedValue($arProperty, $value)
{
	if (!isset($value['VALUE']))
		return false;

	if (is_array($value['VALUE']) && count($value['VALUE']) == 0)
		return false;

	if (empty($arProperty['USER_TYPE_SETTINGS']['TABLE_NAME']))
		return false;

	$tableName = $arProperty['USER_TYPE_SETTINGS']['TABLE_NAME'];
	if (!isset(self::$arItemCache[$tableName]))
		self::$arItemCache[$tableName] = array();

	if (is_array($value['VALUE']) || !isset(self::$arItemCache[$tableName][$value['VALUE']]))
	{
		$data = self::getEntityFieldsByFilter(
			$arProperty['USER_TYPE_SETTINGS']['TABLE_NAME'],
			array(
				'select' => array('UF_XML_ID', 'UF_NAME'),
				'filter' => array('=UF_XML_ID' => $value['VALUE'])
			)
		);

		if (!empty($data))
		{
			foreach ($data as $item)
			{
				if (isset($item['UF_XML_ID']))
				{
					$item['VALUE'] = $item['UF_NAME'];
					if (isset($item['UF_FILE']))
					{
						$item['FILE_ID'] = $item['UF_FILE'];
					}
					self::$arItemCache[$tableName][$item['UF_XML_ID']] = $item;
				}
			}
		}
	}

	if (is_array($value['VALUE']))
	{
		$result = array();
		foreach ($value['VALUE'] as $prop)
		{
			if (isset(self::$arItemCache[$tableName][$prop]))
			{
				$result[$prop] = self::$arItemCache[$tableName][$prop];
			}
			else
			{
				$result[$prop] = false;
			}
		}
		return $result;
	}
	else
	{
		if (isset(self::$arItemCache[$tableName][$value['VALUE']]))
		{
			return self::$arItemCache[$tableName][$value['VALUE']];
		}
	}
	return false;
}