• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/compatible/discountcompatibility.php
  • Класс: BitrixSaleCompatibleDiscountCompatibility
  • Вызов: DiscountCompatibility::initUseMode
static function initUseMode($mode = self::MODE_CLIENT, $config = array())
{
	$adminSection = (defined('ADMIN_SECTION') && ADMIN_SECTION === true);
	$mode = (int)$mode;
	if (!is_array($config))
		$config = array();

	if ($adminSection)
	{
		self::$useMode = self::MODE_SYSTEM;
		switch ($mode)
		{
			case self::MODE_MANAGER:
				if (empty($config['SITE_ID']))
					self::$errors[] = Loc::getMessage('BX_SALE_DCL_ERR_SITE_ABSENT');
				elseif (empty($config['CURRENCY']))
					$config['CURRENCY'] = SaleInternalsSiteCurrencyTable::getCurrency($config['SITE_ID']);
				if (empty($config['CURRENCY']))
					self::$errors[] = Loc::getMessage('BX_SALE_DCL_ERR_CURRENCY_ABSENT');
				if (empty(self::$errors))
				{
					self::$useMode = self::MODE_MANAGER;
					$config['SALE_DISCOUNT_ONLY'] = (string)MainConfigOption::get('sale', 'use_sale_discount_only');
					self::$config = $config;
					self::$discountUseMode = SaleDiscount::USE_MODE_FULL;
				}
				break;
			case self::MODE_ORDER:
				if (empty($config['ORDER_ID']))
					self::$errors[] = Loc::getMessage('BX_SALE_DCL_ERR_ORDER_ID_ABSENT');
				if (empty($config['SITE_ID']))
					self::$errors[] = Loc::getMessage('BX_SALE_DCL_ERR_SITE_ABSENT');
				if (empty($config['CURRENCY']))
					self::$errors[] = Loc::getMessage('BX_SALE_DCL_ERR_CURRENCY_ABSENT');
				if (empty(self::$errors))
				{
					self::$useMode = self::MODE_ORDER;
					self::$order = $config['ORDER_ID'];
					unset($config['ORDER_ID']);
					self::$config = $config;
				}
				break;
			case self::MODE_SYSTEM:
				break;
			default:
				self::$errors[] = Loc::getMessage('BX_SALE_DCL_ERR_BAD_MODE');
		}
	}
	else
	{
		self::$useMode = self::MODE_SYSTEM;
		switch ($mode)
		{
			case self::MODE_CLIENT:
				self::$useMode = self::MODE_CLIENT;
				if (empty($config['SITE_ID']))
					$config['SITE_ID'] = SITE_ID;
				if (empty($config['CURRENCY']))
					$config['CURRENCY'] = SaleInternalsSiteCurrencyTable::getSiteCurrency($config['SITE_ID']);
				$config['SALE_DISCOUNT_ONLY'] = (string)MainConfigOption::get('sale', 'use_sale_discount_only');
				self::$config = $config;
				self::$discountUseMode = SaleDiscount::USE_MODE_FULL;
				break;
			case self::MODE_EXTERNAL:
				self::$useMode = self::MODE_EXTERNAL;
				if (empty($config['SITE_ID']))
					$config['SITE_ID'] = SITE_ID;
				if (empty($config['CURRENCY']))
					$config['CURRENCY'] = SaleInternalsSiteCurrencyTable::getSiteCurrency($config['SITE_ID']);
				$config['SALE_DISCOUNT_ONLY'] = (string)MainConfigOption::get('sale', 'use_sale_discount_only');
				self::$config = $config;
				self::$discountUseMode = SaleDiscount::USE_MODE_FULL;
				break;
			case self::MODE_SYSTEM:
				break;
			case self::MODE_DISABLED:
				self::$useMode = self::MODE_DISABLED;
				break;
			default:
				self::$errors[] = Loc::getMessage('BX_SALE_DCL_ERR_BAD_MODE');
				break;
		}
	}
}