Пример #1
0
 /**
  * Init use mode.
  *
  * @param int $mode				Save discount information mode.
  * @param array $config			Initial params (site, currency).
  * 		keys are case sensitive:
  * 			<ul>
  * 			<li>string SITE_ID		Current site
  * 			<li>string CURRENCY		Site currency
  * 			<li>string ORDER_ID		Order id
  * 			</ul>.
  * @return void
  */
 public 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'] = Sale\Internals\SiteCurrencyTable::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) Main\Config\Option::get('sale', 'use_sale_discount_only');
                     self::$config = $config;
                     self::$discountUseMode = Sale\Discount::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'] = Sale\Internals\SiteCurrencyTable::getSiteCurrency($config['SITE_ID']);
                 }
                 $config['SALE_DISCOUNT_ONLY'] = (string) Main\Config\Option::get('sale', 'use_sale_discount_only');
                 self::$config = $config;
                 self::$discountUseMode = Sale\Discount::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'] = Sale\Internals\SiteCurrencyTable::getSiteCurrency($config['SITE_ID']);
                 }
                 $config['SALE_DISCOUNT_ONLY'] = (string) Main\Config\Option::get('sale', 'use_sale_discount_only');
                 self::$config = $config;
                 self::$discountUseMode = Sale\Discount::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;
         }
     }
 }