- Модуль: 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;
}
}
}