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