• Модуль: 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);
}