- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/discount/actions.php
- Класс: BitrixSaleDiscountActions
- Вызов: Actions::getBasketForApply
static function getBasketForApply(array $basket, $filter, $action = array())
{
$result = array();
switch (static::getUseMode())
{
case self::MODE_CALCULATE:
$result = (is_callable($filter) ? array_filter($basket, $filter) : $basket);
break;
case self::MODE_MANUAL:
case self::MODE_MIXED:
switch (static::getApplyResultMode())
{
case self::APPLY_RESULT_MODE_COUNTER:
$currentCounter = static::getApplyCounter();
$basketCodeList = array_keys($basket);
foreach ($basketCodeList as &$code)
{
if (empty(self::$applyResult['BASKET'][$code]) || !is_array(self::$applyResult['BASKET'][$code]))
continue;
if (!in_array($currentCounter, self::$applyResult['BASKET'][$code]))
continue;
$result[$code] = $basket[$code];
}
unset($code, $basketCodeList, $currentCounter);
break;
case self::APPLY_RESULT_MODE_DESCR:
$basketCodeList = array_keys($basket);
foreach ($basketCodeList as &$code)
{
if (empty(self::$applyResult['BASKET'][$code]) || !is_array(self::$applyResult['BASKET'][$code]))
continue;
foreach (self::$applyResult['BASKET'][$code] as $descr)
{
if (static::compareBasketResultDescr($action, $descr))
{
$result[$code] = $basket[$code];
break;
}
}
unset($descr);
// only for old format simple gifts
if (!isset($result[$code]))
{
if (isset($action['GIFT_TITLE']))
{
end(self::$applyResult['BASKET'][$code]);
$descr = current(self::$applyResult['BASKET'][$code]);
if (
$descr['TYPE'] == Formatter::TYPE_SIMPLE
&& $descr['DESCR'] == $action['GIFT_TITLE']
)
$result[$code] = $basket[$code];
unset($descr);
}
}
}
unset($code, $basketCodeList);
break;
case self::APPLY_RESULT_MODE_SIMPLE:
$basketCodeList = array_keys($basket);
foreach ($basketCodeList as &$code)
{
if (isset(self::$applyResult['BASKET'][$code]))
$result[$code] = $basket[$code];
}
unset($code, $basketCodeList);
break;
}
break;
}
return $result;
}