• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/discountcouponsmanagerbase.php
  • Класс: BitrixSaleDiscountCouponsManagerBase
  • Вызов: DiscountCouponsManagerBase::filterArrayCoupons
static function filterArrayCoupons(&$coupons, $filter)
{
	if (empty($coupons) || !is_array($coupons) || empty($filter) || !is_array($filter))
		return;
	$result = array();
	foreach ($coupons as $id => $data)
	{
		$copy = true;
		foreach ($filter as $filterKey => $filterValue)
		{
			if (is_array($filterValue) && isset($filterValue['LOGIC']))
			{
				$logic = mb_strtolower($filterValue['LOGIC']);
				if ($logic != 'and' && $logic != 'or')
					break 2;
				unset($filterValue['LOGIC']);
				if (empty($filterValue))
					break 2;
				$subresult = array();
				foreach ($filterValue as $subfilterKey => $subfilterValue)
				{
					$invert = strncmp($subfilterKey, '!', 1) == 0;
					$fieldName = ($invert? mb_substr($subfilterKey, 1) : $subfilterKey);
					if (!isset($data[$fieldName]))
					{
						break 3;
					}
					else
					{
						$compare = (is_array($subfilterValue) ? in_array($data[$fieldName], $subfilterValue) : $data[$fieldName] == $subfilterValue);
						if ($invert)
							$compare = !$compare;
						$subresult[] = $compare;
					}
				}
				$compare = (
					$logic == 'and'
					? !in_array(false, $subresult, true)
					: in_array(true, $subresult, true)
				);
				if (!$compare)
				{
					$copy = false;
					break;
				}
			}
			else
			{
				$invert = strncmp($filterKey, '!', 1) == 0;
				$fieldName = ($invert? mb_substr($filterKey, 1) : $filterKey);
				if (!isset($data[$fieldName]))
				{
					break 2;
				}
				else
				{
					$compare = (is_array($filterValue) ? in_array($data[$fieldName], $filterValue) : $data[$fieldName] == $filterValue);
					if ($invert)
						$compare = !$compare;
					if (!$compare)
					{
						$copy = false;
						break;
					}
				}
			}
		}
		if ($copy)
			$result[$id] = $data;
	}
	$coupons = $result;
	unset($result);
}