Просмотр исходного кода

Ticket #4079 - Comments: Counter shows inaccurate values.

AntonLV 4 лет назад
Родитель
Сommit
c38c689769

+ 3 - 3
inc/classes/BxDolSession.php

@@ -8,7 +8,7 @@
  */
 
 if (!defined('BX_DOL_SESSION_LIFETIME'))
-    define('BX_DOL_SESSION_LIFETIME', 3600);
+    define('BX_DOL_SESSION_LIFETIME', 7*24*60*60);
 if (!defined('BX_DOL_SESSION_SKIP_UPDATE'))
     define('BX_DOL_SESSION_SKIP_UPDATE', 30);
 define('BX_DOL_SESSION_COOKIE', 'memberSession');
@@ -81,7 +81,7 @@ class BxDolSession extends BxDolFactory implements iBxDolSingleton
 			bx_logout();
 
 		// try to restore user's old session
-		if (isLogged()) {
+		if (isLogged() && defined('BX_DOL_SESSION_RESTORATION') && constant('BX_DOL_SESSION_RESTORATION')) {
 		    $this->sId = $this->oDb->getOldSession(getLoggedId());
 		    if ($this->sId)
 		        $this->exists($this->sId); // it exists for sure but required for initializing some data there
@@ -91,7 +91,7 @@ class BxDolSession extends BxDolFactory implements iBxDolSingleton
 		if (!$this->sId)
             $this->sId = genRndPwd(32, true);
 
-        bx_setcookie(BX_DOL_SESSION_COOKIE, $this->sId, 0, 'auto', '', 'auto', true);
+        bx_setcookie(BX_DOL_SESSION_COOKIE, $this->sId, time() + BX_DOL_SESSION_LIFETIME, 'auto', '', 'auto', true);
 
         $this->save();
         return true;

+ 0 - 1
inc/utils.inc.php

@@ -445,7 +445,6 @@ function sendMail($sRecipientEmail, $sMailSubject, $sMailBody, $iRecipientID = 0
     
     if ($bResult !== null)
         return $bResult;
-    unset($aAlert['override_result']);
 
     // system alert
     if (!$isDisableAlert) {

+ 11 - 0
modules/boonex/credits/classes/BxCreditsConfig.php

@@ -264,6 +264,17 @@ class BxCreditsConfig extends BxBaseModGeneralConfig
         return strtoupper(genRndPwd($iLength, false));
     }
 
+    public function constructCheckoutCustomData()
+    {
+        $aParams = func_get_args();
+        return urlencode(base64_encode(implode('|', $aParams)));
+    }
+
+    public function deconstructCheckoutCustomData($sData)
+    {
+        return explode('|', base64_decode(urldecode($sData)));
+    }
+
     /**
      * Convert Credits to Money
      */

+ 24 - 13
modules/boonex/credits/classes/BxCreditsModule.php

@@ -66,40 +66,51 @@ class BxCreditsModule extends BxBaseModGeneralModule
     {
         $iBuyerId = bx_get_logged_profile_id();
         if(!$iBuyerId)
-            return echoJson(array('code' => 1, 'msg' => _t('_bx_credits_err_unknown_buyer')));
+            return echoJson(['code' => 1, 'msg' => _t('_bx_credits_err_unknown_buyer')]);
 
         $aData = $this->_oConfig->getCheckoutData();
         if(empty($aData) || !is_array($aData))
-            return echoJson(array('code' => 2, 'msg' => _t('_bx_credits_err_incorrect_data')));
+            return echoJson(['code' => 2, 'msg' => _t('_bx_credits_err_incorrect_data')]);
+
+        $fConversion = $this->_oConfig->getConversionRateUse();
+        $iPrecision = $this->_oConfig->getPrecision();
 
         $iSellerId = (int)$aData['seller'];
         $fAmount = (float)$aData['amount'];
+        $aCustomData = $this->_oConfig->deconstructCheckoutCustomData($aData['custom']);
 
-        $fBalance = (float)$this->_oDb->getProfile(array('type' => 'balance', 'id' => $iBuyerId));
+        $aPpOrders = BxDolPayments::getInstance()->getPendingOrdersInfo(['id' => (int)$aCustomData[1]]);
+        if(!empty($aPpOrders) && is_array($aPpOrders)) {
+            $aPpOrder = reset($aPpOrders);
+            if(!empty($aPpOrder) && is_array($aPpOrder) && ((int)$aPpOrder['seller_id'] != $iSellerId || $this->_oConfig->convertM2C((float)$aPpOrder['amount'], $fConversion, $iPrecision) != $fAmount))
+                return echoJson(['code' => 3, 'msg' => _t('_bx_credits_err_incorrect_data')]);
+        }
+
+        $fBalance = (float)$this->_oDb->getProfile(['type' => 'balance', 'id' => $iBuyerId]);
         if($fAmount > $fBalance)
-            return echoJson(array('code' => 3, 'msg' => _t('_bx_credits_err_low_balance')));
+            return echoJson(['code' => 4, 'msg' => _t('_bx_credits_err_low_balance')]);
 
         $sOrder = $this->_oConfig->getOrder();
         $sInfo = '_bx_credits_txt_history_info_checkout';
-        $sData = serialize(array(
-            'conversion' => $this->_oConfig->getConversionRateUse(),
-            'precision' => $this->_oConfig->getPrecision()
-        ));
+        $sData = serialize([
+            'conversion' => $fConversion,
+            'precision' => $iPrecision
+        ]);
 
         $this->updateProfileBalance($iBuyerId, $iSellerId, -$fAmount, BX_CREDITS_TRANSFER_TYPE_CHECKOUT, $sOrder, $sInfo, $sData);
         $this->updateProfileBalance($iSellerId, $iBuyerId, $fAmount, BX_CREDITS_TRANSFER_TYPE_CHECKOUT, $sOrder, $sInfo, $sData);
 
-        bx_alert($this->getName(), 'checkout', 0, false, array(
+        bx_alert($this->getName(), 'checkout', 0, false, [
             'seller' => $iSellerId,
             'buyer' => $iBuyerId,
             'amount' => $fAmount, 
             'order' => $sOrder
-        ));
+        ]);
 
-        return echoJson(array(
+        return echoJson([
             'code' => 0,
-            'redirect' => bx_append_url_params($aData['return_data_url'], array('o' => $sOrder, 'c' => $aData['custom']))
-        ));
+            'redirect' => bx_append_url_params($aData['return_data_url'], ['o' => $sOrder, 'c' => $aData['custom']])
+        ]);
     }
 
     public function actionSubscribe()

+ 6 - 0
template/menu_custom_hor_sys_cmts_item_actions.html

@@ -0,0 +1,6 @@
+<ul id="__html_id__" class="bx-menu-custom bx-menu-custom-hor bx-menu-hor-inline<bx_if:show_more_auto_class> bx-menu-more-auto</bx_if:show_more_auto_class> bx-menu-object-__object__ flex justify-start items-center">
+    <bx_repeat:menu_items>
+        <li class="bx-menu-item bx-menu-item-__name____class__ flex">__item__</li>
+    </bx_repeat:menu_items>
+</ul>
+__js_code__