- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/discount/gift/relateddata.php
- Класс: BitrixSaleDiscountGiftRelatedDataTable
- Вызов: RelatedDataTable::getProductsData
static function getProductsData(array $discount)
{
$sectionIds = $elementIds = array();
if (
(empty($discount['CONDITIONS_LIST']) || !is_array($discount['CONDITIONS_LIST']))
&& checkSerializedData($discount['CONDITIONS']))
{
$discount['CONDITIONS_LIST'] = unserialize($discount['CONDITIONS'], ['allowed_classes' => false]);
}
if(!isset($discount['CONDITIONS_LIST']['CLASS_ID']) || $discount['CONDITIONS_LIST']['CLASS_ID'] !== 'CondGroup')
{
return array($elementIds, $sectionIds);
}
if(empty($discount['CONDITIONS_LIST']['CHILDREN']))
{
return array($elementIds, $sectionIds);
}
if(count($discount['CONDITIONS_LIST']['CHILDREN']) > 1)
{
return array($elementIds, $sectionIds);
}
$child = reset($discount['CONDITIONS_LIST']['CHILDREN']);
if($child['CLASS_ID'] !== 'CondBsktProductGroup')
{
return array($elementIds, $sectionIds);
}
if(empty($child['CHILDREN']))
{
return array($elementIds, $sectionIds);
}
if(count($child['CHILDREN']) > 1)
{
return array($elementIds, $sectionIds);
}
$condition = reset($child['CHILDREN']);
if(!isset($condition['DATA']['logic']) || $condition['DATA']['logic'] !== 'Equal')
{
return array($elementIds, $sectionIds);
}
switch($condition['CLASS_ID'])
{
case 'CondIBElement':
$elementIds = (array)$condition['DATA']['value'];
break;
case 'CondIBSection':
$sectionIds = (array)$condition['DATA']['value'];
break;
}
return array($elementIds, $sectionIds);
}