• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/discountbase.php
  • Класс: BitrixSaleDiscountBase
  • Вызов: DiscountBase::loadDiscountByUserGroups
protected function loadDiscountByUserGroups(array $filter = array())
{
	$this->discountIds = array();
	$userGroups = $this->context->getUserGroups();
	if (empty($userGroups))
	{
		return;
	}
	$customFilter = array_diff_key(
		$filter,
		[
			'@GROUP_ID' => true,
			'=ACTIVE' => true,
		]
	);

	$filter['@GROUP_ID'] = $userGroups;
	$filter['=ACTIVE'] = 'Y';

	//RuntimeCache works only with basic filter.
	if (empty($customFilter))
	{
		$this->discountIds = DiscountRuntimeCacheDiscountCache::getInstance()->getDiscountIds($userGroups);
	}
	else
	{
		$discountCache = array();
		$groupDiscountIterator = InternalsDiscountGroupTable::getList(array(
			'select' => array('DISCOUNT_ID'),
			'filter' => $filter,
			'order' => array('DISCOUNT_ID' => 'ASC')
		));
		while ($groupDiscount = $groupDiscountIterator->fetch())
		{
			$groupDiscount['DISCOUNT_ID'] = (int)$groupDiscount['DISCOUNT_ID'];
			if ($groupDiscount['DISCOUNT_ID'] > 0)
				$discountCache[$groupDiscount['DISCOUNT_ID']] = $groupDiscount['DISCOUNT_ID'];
		}
		unset($groupDiscount, $groupDiscountIterator);
		$this->discountIds = $discountCache;
		unset($discountCache);
	}
	unset($userGroups);
}