- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/UI/PropertyProduct.php
- Класс: BitrixCatalogUIPropertyProduct
- Вызов: PropertyProduct::getIblockProperties
static function getIblockProperties(int $iblockId, int $productId, array $filter = []): array
{
$result = [];
$filter['ACTIVE'] = 'Y';
$props = CIBlockElement::GetProperty($iblockId, $productId, 'id', 'asc', $filter);
while ($prop = $props->GetNext())
{
if (empty($prop['VALUE'])
&& !($prop['PROPERTY_TYPE'] === 'L' && $prop['LIST_TYPE'] === 'C')
)
{
continue;
}
$code = 'PROPERTY_' . $prop['ID'];
switch ($prop['PROPERTY_TYPE'])
{
case PropertyTable::TYPE_STRING:
case PropertyTable::TYPE_NUMBER:
if ($prop['USER_TYPE'] === PropertyTable::USER_TYPE_DIRECTORY
&& isset($prop['USER_TYPE_SETTINGS']['TABLE_NAME'])
&& Loader::includeModule('highloadblock')
)
{
$value = self::getDirectoryValue($prop);
}
else if ($prop['USER_TYPE'] === PropertyTable::USER_TYPE_HTML)
{
$value = (new CBXSanitizer())->SanitizeHtml($prop['~VALUE']['TEXT']);
}
else
{
$value = $prop['VALUE'];
}
if (!isset($result[$code]))
{
$result[$code] = $value;
}
else
{
$result[$code] .= ', ' . $value;
}
break;
case PropertyTable::TYPE_LIST:
if ($prop['LIST_TYPE'] === PropertyTable::CHECKBOX)
{
switch ($prop['VALUE_ENUM'])
{
case 'Y':
$value = Loc::getMessage('CRM_ENTITY_PRODUCT_LIST_COLUMN_CHECKBOX_YES');
break;
case 'N':
case '':
$value = Loc::getMessage('CRM_ENTITY_PRODUCT_LIST_COLUMN_CHECKBOX_NO');
break;
default:
$value = htmlspecialcharsbx($prop['VALUE_ENUM']);
}
$result[$code] = $value;
break;
}
if ($prop['MULTIPLE'] !== 'Y')
{
$result[$code] = $prop['VALUE_ENUM'];
break;
}
if (!isset($result[$code]))
{
$result[$code] = $prop['VALUE_ENUM'];
}
else
{
$result[$code] .= ', ' . $prop['VALUE_ENUM'];
}
break;
case PropertyTable::TYPE_FILE:
Loader::includeModule('fileman'); // always exists
$listImageSize = (int)Option::get('iblock', 'list_image_size');
$minImageSize = [
'W' => 1,
'H' => 1,
];
$maxImageSize = [
'W' => $listImageSize,
'H' => $listImageSize,
];
$result[$code] ??= '';
$result[$code] .= CFileInput::Show(
'NO_FIELDS[' . $productId . ']',
$prop['VALUE'],
[
'IMAGE' => 'Y',
'PATH' => 'Y',
'FILE_SIZE' => 'Y',
'DIMENSIONS' => 'Y',
'IMAGE_POPUP' => 'N',
'MAX_SIZE' => $maxImageSize,
'MIN_SIZE' => $minImageSize,
],
[
'upload' => false,
'medialib' => false,
'file_dialog' => false,
'cloud' => false,
'del' => false,
'description' => false,
]
);
break;
default:
$result[$code] = htmlspecialcharsbx($prop['VALUE']);
}
}
return $result;
}