• Модуль: highloadblock
  • Путь к файлу: ~/bitrix/modules/highloadblock/classes/general/prop_directory.php
  • Класс: CIBlockPropertyDirectory
  • Вызов: CIBlockPropertyDirectory::GetUIEntityEditorProperty
static function GetUIEntityEditorProperty($settings, $value): array
{
	$hlTableName = (string)($settings['USER_TYPE_SETTINGS']['TABLE_NAME'] ?? '');

	if ($hlTableName === '')
	{
		return [
			'type' => 'custom',
		];
	}

	$gridMode = ($settings['GRID_MODE'] ?? false) === true;
	$hasImages = false;
	$items = [];

	foreach (static::getEntityFieldsForTable($hlTableName) as $data)
	{
		$item = [
			'NAME' => $data['UF_NAME'] ?? '',
			'TEXT' => $data['UF_NAME'] ?? '',
			'VALUE' => $data['UF_XML_ID'],
			'DESCRIPTION' => $data['UF_DESCRIPTION'] ?? '',
		];

		if (isset($data['UF_FILE']) && (int)$data['UF_FILE'] >= 0)
		{
			$hasImages = true;
			$item['IMAGE'] = $data['UF_FILE'];
		}

		if ($hasImages)
		{
			$image = CFile::GetFileArray($data['UF_FILE']) ?: null;
			$item['IMAGE_SRC'] = $image['SRC'];
			if ($image)
			{
				if ($settings['MULTIPLE'] === 'Y')
				{
					$item['HTML'] = " ".htmlspecialcharsbx($item['NAME']);
				}
				else
				{
					$item['NAME'] = " ".htmlspecialcharsbx($item['NAME']);
				}
			}
			else
			{
				if ($settings['MULTIPLE'] !== 'Y')
				{
					$item['NAME'] = htmlspecialcharsbx($item['NAME']);
				}
			}
		}

		$items[] = $item;
	}

	if ($settings['MULTIPLE'] === 'Y')
	{
		$type = 'multilist';
	}
	elseif ($hasImages && $gridMode)
	{
		$type = 'custom';
	}
	else
	{
		$type = 'list';
	}

	return [
		'type' => $type,
		'data' => [
			'userType' => 'directory',
			'isHtml' => $hasImages,
			'items' => $items,
			'enableEmptyItem' => $settings['IS_REQUIRED'] === 'N',
		],
	];
}