/** * Initialization coupon manager. * * @param int $mode Discount manager mode. * @param array $params Initial params (userId, orderId). * @param bool $clearStorage Clear coupon session storage. * @return void */ public static function init($mode = self::MODE_CLIENT, $params = array(), $clearStorage = false) { self::$couponTypes = Internals\DiscountCouponTable::getCouponTypes(true); self::clearErrors(); self::initUseDiscount(); self::initUseMode($mode, $params); unset($params, $mode); if (!self::isSuccess()) { return; } if (self::$useMode != self::MODE_SYSTEM) { self::clear($clearStorage); $couponsList = array(); switch (self::$useMode) { case self::MODE_CLIENT: if (!empty($_SESSION[self::STORAGE_CLIENT_COUPONS]) && is_array($_SESSION[self::STORAGE_CLIENT_COUPONS])) { $couponsList = $_SESSION[self::STORAGE_CLIENT_COUPONS]; } break; case self::MODE_MANAGER: case self::MODE_ORDER: if (!empty($_SESSION[self::STORAGE_MANAGER_COUPONS]) && !empty($_SESSION[self::STORAGE_MANAGER_COUPONS][self::$userId]) && is_array($_SESSION[self::STORAGE_MANAGER_COUPONS][self::$userId])) { $couponsList = $_SESSION[self::STORAGE_MANAGER_COUPONS][self::$userId]; } break; } if (!empty($couponsList)) { foreach ($couponsList as &$oneCoupon) { $couponData = self::getData($oneCoupon); if ($couponData === false) { continue; } if (!isset(self::$coupons[$couponData['COUPON']])) { $couponData['SORT'] = self::$couponIndex; self::createApplyFields($couponData); self::$coupons[$couponData['COUPON']] = $couponData; self::$couponIndex++; } } unset($couponData, $oneCoupon); } unset($couponsList); if (self::$useMode == self::MODE_ORDER) { self::load(); } } self::$init = true; }
/** * Unconditional reinitialization coupon manager. * * @param int $mode Discount manager mode. * @param array $params Initial params (userId, orderId). * @param bool $clearStorage Clear coupon session storage. * @return void */ public static function reInit($mode = self::MODE_CLIENT, $params = array(), $clearStorage = false) { self::$init = false; self::init($mode, $params, $clearStorage); }