• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/discount/gift/manager.php
  • Класс: BitrixSaleDiscountGiftManager
  • Вызов: Manager::getCollectionsByBasket
public function getCollectionsByBasket(Basket $basket, array $discounts = null, array $appliedDiscounts = null)
{
	$this->errorCollection->clear();

	if(!$this->existsDiscountsWithGift())
	{
		return array();
	}

	if($discounts === null || $appliedDiscounts === null)
	{
		list($discounts, $appliedDiscounts) = $this->getDiscounts($basket);
	}

	$appliedList = array();
	foreach($appliedDiscounts as $discount)
	{
		$appliedList[$discount['ID']] = $discount;
	}
	unset($discount, $appliedDiscounts);

	if(!$discounts)
	{
		return array();
	}

	$potentialGiftData = $this->getPotentialGiftData($discounts, $appliedList);

	$collections = array();
	foreach($potentialGiftData as $giftData)
	{
		$giftData['GiftValue'] = is_array($giftData['GiftValue'])? $giftData['GiftValue'] : array($giftData['GiftValue']);

		$giftCollection = new Collection(array(), $giftData['Type']);
		foreach($giftData['GiftValue'] as $value)
		{
			$giftCollection[] = new Gift($value);
		}
		unset($value);

		$collections[] = $giftCollection;
	}
	unset($giftData);

	return $collections;
}