- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/discount/discountmanager.php
- Класс: BitrixCatalogDiscountDiscountManager
- Вызов: DiscountManager::getProductIblocks
static function getProductIblocks(array $productList): array
{
$result = [
'iblockElement' => [],
'iblockList' => [],
'skuIblockList' => []
];
if (empty($productList))
return $result;
$elementIterator = IblockElementTable::getList([
'select' => ['ID', 'IBLOCK_ID'],
'filter' => ['@ID' => $productList]
]);
while ($element = $elementIterator->fetch())
{
$element['ID'] = (int)$element['ID'];
$element['IBLOCK_ID'] = (int)$element['IBLOCK_ID'];
if (!isset($result['iblockElement'][$element['IBLOCK_ID']]))
$result['iblockElement'][$element['IBLOCK_ID']] = [];
$result['iblockElement'][$element['IBLOCK_ID']][] = $element['ID'];
}
unset($element, $elementIterator);
if (!empty($result['iblockElement']))
{
$result['iblockList'] = array_keys($result['iblockElement']);
$skuIterator = CatalogCatalogIblockTable::getList([
'select' => ['IBLOCK_ID', 'PRODUCT_IBLOCK_ID', 'SKU_PROPERTY_ID'],
'filter' => ['@IBLOCK_ID' => $result['iblockList'], '!=PRODUCT_IBLOCK_ID' => 0]
]);
while ($sku = $skuIterator->fetch())
{
$sku['IBLOCK_ID'] = (int)$sku['IBLOCK_ID'];
$sku['PRODUCT_IBLOCK_ID'] = (int)$sku['PRODUCT_IBLOCK_ID'];
$sku['SKU_PROPERTY_ID'] = (int)$sku['SKU_PROPERTY_ID'];
$result['skuIblockList'][$sku['IBLOCK_ID']] = $sku;
}
unset($sku, $skuIterator);
}
return $result;
}