• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/prop_element_list.php
  • Класс: CIBlockPropertyElementList
  • Вызов: CIBlockPropertyElementList::GetPublicViewHTML
static function GetPublicViewHTML($arProperty, $arValue, $strHTMLControlName)
{
	static $cache = array();

	$strResult = '';
	$arValue['VALUE'] = intval($arValue['VALUE']);
	if (0 < $arValue['VALUE'])
	{
		$viewMode = '';
		$resultKey = '';
		if (!empty($strHTMLControlName['MODE']))
		{
			switch ($strHTMLControlName['MODE'])
			{
				case 'CSV_EXPORT':
					$viewMode = 'CSV_EXPORT';
					$resultKey = 'ID';
					break;
				case 'EXTERNAL_ID':
					$viewMode = 'EXTERNAL_ID';
					$resultKey = '~XML_ID';
					break;
				case 'SIMPLE_TEXT':
					$viewMode = 'SIMPLE_TEXT';
					$resultKey = '~NAME';
					break;
				case 'ELEMENT_TEMPLATE':
					$viewMode = 'ELEMENT_TEMPLATE';
					$resultKey = '~NAME';
					break;
			}
		}

		if (!isset($cache[$arValue['VALUE']]))
		{
			$arFilter = [];
			$intIBlockID = (int)$arProperty['LINK_IBLOCK_ID'];
			if ($intIBlockID > 0)
				$arFilter['IBLOCK_ID'] = $intIBlockID;
			$arFilter['ID'] = $arValue['VALUE'];
			if ($viewMode === '')
			{
				$arFilter['ACTIVE'] = 'Y';
				$arFilter['ACTIVE_DATE'] = 'Y';
				$arFilter['CHECK_PERMISSIONS'] = 'Y';
				$arFilter['MIN_PERMISSION'] = 'R';
			}
			$rsElements = CIBlockElement::GetList(
				array(),
				$arFilter,
				false,
				false,
				array("ID","IBLOCK_ID","NAME","DETAIL_PAGE_URL")
			);
			if (isset($strHTMLControlName['DETAIL_URL']))
			{
				$rsElements->SetUrlTemplates($strHTMLControlName['DETAIL_URL']);
			}
			$cache[$arValue['VALUE']] = $rsElements->GetNext(true, true);
			unset($rsElements);
		}
		if (!empty($cache[$arValue['VALUE']]) && is_array($cache[$arValue['VALUE']]))
		{
			if ($viewMode !== '' && $resultKey !== '')
			{
				$strResult = $cache[$arValue['VALUE']][$resultKey];
			}
			else
			{
				$strResult = ''.$cache[$arValue['VALUE']]['NAME'].'';
			}
		}
	}
	return $strResult;
}