RomanL il y a 8 ans
Parent
commit
80eaac8ea3

+ 9 - 3
modules/boonex/invites/classes/BxInvDb.php

@@ -179,9 +179,15 @@ class BxInvDb extends BxDolModuleDb
 
             case 'count_all':
                 $aMethod['name'] = 'getOne';
-
                 $sSelectClause = "COUNT(`{$this->_sTableRequests}`.`id`) AS `count`";
-                $sLimitClause = "LIMIT 1";
+                break;
+            case 'count_by_email':
+                $aMethod['name'] = 'getOne';
+                $sSelectClause = "COUNT(`{$this->_sTableRequests}`.`id`) AS `count`";
+                $aMethod['params'][1] = array(
+                    'email' => $aParams['value']
+                );
+                $sWhereClause = "AND `{$this->_sTableRequests}`.`email`=:email ";
                 break;
         }
 
@@ -205,7 +211,7 @@ class BxInvDb extends BxDolModuleDb
             'request_id' => $iReqestId,
             'status' => $iStatus
         );
-        $this->query("UPDATE `{$this->_sTableRequests}` SET `status`=:status WHERE `id`=:request_id", $aBindings);
+        $this->query("UPDATE `{$this->_sTableRequests}` SET `status`=:status WHERE `id`=:request_id AND `status` < :status", $aBindings);
     }
     
     private function updateRequestStatusByInviteCode($iStatus, $sKey)

+ 5 - 0
modules/boonex/invites/classes/BxInvGridRequests.php

@@ -69,6 +69,11 @@ class BxInvGridRequests extends BxTemplGrid
         return parent::_getDataSql($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage);
     }
     
+    protected function _getDataSqlOrderClause ($sOrderByFilter, $sOrderField, $sOrderDir, $bFieldsOnly = false)
+    {
+        return " ORDER BY `status` ASC, `date` DESC";
+    }
+    
     public function performActionAdd()
     {
         $sAction = 'add';

+ 4 - 1
modules/boonex/invites/classes/BxInvTemplate.php

@@ -138,8 +138,11 @@ class BxInvTemplate extends BxBaseModGeneralTemplate
                 return array('content' => $sForm, 'content_id' => $sFormId, 'eval' => $sEval);
         }
 
+        $iCountByEmail = $this->_oDb->getRequests(array('type' => 'count_by_email', 'value' => $oForm->getCleanValue('email')));
+        if ($iCountByEmail > 0)
+            return array('content' => MsgBox(_t('_bx_invites_err_already_send')), 'content_id' => $sFormId, 'eval' => $sEval);
+        
         $sIp = getVisitorIP();
-
         $iId = (int)$oForm->insert(array('nip' => ip2long($sIp),'date' => time()));
         if(!$iId)
             return array('content' => MsgBox(_t('_bx_invites_err_cannot_perform')), 'content_id' => $sFormId, 'eval' => $sEval);

+ 1 - 0
modules/boonex/invites/install/langs/en.xml

@@ -136,6 +136,7 @@
 	<string name="_bx_invites_err_invite"><![CDATA[Cannot send an invitation on request.]]></string>
 	<string name="_bx_invites_err_delete_request"><![CDATA[Cannot delete the request.]]></string>
 	<string name="_bx_invites_err_used"><![CDATA[The invitation link isn't available or already used.]]></string>
+  <string name="_bx_invites_err_already_send"><![CDATA[The request already sent for this email.]]></string>
   <string name="_bx_invites_request_status_new"><![CDATA[New]]></string>
   <string name="_bx_invites_request_status_invited"><![CDATA[Invited]]></string>
   <string name="_bx_invites_request_status_seen"><![CDATA[Seen]]></string>