- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/discount/discountmanager.php
- Класс: BitrixCatalogDiscountDiscountManager
- Вызов: DiscountManager::fillEmptyProperties
static function fillEmptyProperties(array &$propertyValues, int $iblockId, array $itemIds, array $propertyIds): void
{
if ($iblockId <= 0 || empty($itemIds) || empty($propertyIds))
{
return;
}
$propertyList = [];
$iterator = IblockPropertyTable::getList([
'select' => ['ID', 'PROPERTY_TYPE', 'MULTIPLE', 'USER_TYPE'],
'filter' => ['=IBLOCK_ID' => $iblockId, '@ID' => $propertyIds]
]);
while ($row = $iterator->fetch())
{
$id = (int)$row['ID'];
$multiple = ($row['MULTIPLE'] == 'Y');
if ($multiple)
{
$row = $row
+ [
'VALUE_ENUM' => null,
'VALUE_XML_ID' => null,
'VALUE_SORT' => null,
'VALUE' => false,
'PROPERTY_VALUE_ID' => false,
'DESCRIPTION' => false,
'~DESCRIPTION' => false,
'~VALUE' => false
];
}
else
{
$row = $row
+ [
'VALUE_ENUM' => null,
'VALUE_XML_ID' => null,
'VALUE_SORT' => null,
'VALUE' => '',
'PROPERTY_VALUE_ID' => null,
'DESCRIPTION' => '',
'~DESCRIPTION' => '',
'~VALUE' => '',
];
}
if ($row['PROPERTY_TYPE'] == IblockPropertyTable::TYPE_LIST)
{
$row['VALUE_ENUM_ID'] = ($multiple ? false : null);
}
$propertyList[$id] = $row;
}
unset($row, $iterator);
foreach ($itemIds as $id)
{
if (!empty($propertyValues[$id]))
{
continue;
}
$propertyValues[$id] = $propertyList;
}
unset($propertyList);
}