• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/discountbase.php
  • Класс: BitrixSaleDiscountBase
  • Вызов: DiscountBase::checkDiscountConditions
protected function checkDiscountConditions()
{
	if (
		!isset($this->currentStep['cacheIndex'])
		|| !isset($this->saleDiscountCache[$this->saleDiscountCacheKey][$this->currentStep['cacheIndex']])
	)
		return false;

	$key = $this->getConditionField();
	$executeKey = self::getExecuteFieldName($key);

	if (empty($this->saleDiscountCache[$this->saleDiscountCacheKey][$this->currentStep['cacheIndex']][$key]))
		return false;

	$discountLink = &$this->saleDiscountCache[$this->saleDiscountCacheKey][$this->currentStep['cacheIndex']];

	if (!array_key_exists($executeKey, $discountLink))
	{
		$checkOrder = null;

		$evalCode = '$checkOrder='.$discountLink[$key].';';
		if (PHP_MAJOR_VERSION >= 7)
		{
			try
			{
				eval($evalCode);
			}
			catch (ParseError $e)
			{
				$this->showAdminError();
			}
		}
		else
		{
			eval($evalCode);
		}
		unset($evalCode);

		if (!is_callable($checkOrder))
			return false;
		$result = $checkOrder($this->orderData);
		unset($checkOrder);
	}
	else
	{
		if (!is_callable($discountLink[$executeKey]))
			return false;

		$result = $discountLink[$executeKey]($this->orderData);
	}
	unset($discountLink);
	return $result;
}