Ver Fonte

Ticket #4444 - Add ability to block users in groups. Groups.

AntonLV há 2 anos atrás
pai
commit
c12d2a1979

+ 22 - 2
modules/base/groups/classes/BxBaseModGroupsConnectionFans.php

@@ -16,6 +16,9 @@ class BxBaseModGroupsConnectionFans extends BxTemplConnection
 
     protected $_bQuestionnaire;
 
+    protected $_bBan;
+    protected $_oBanConnection;
+
     public function __construct($aObject)
     {
         parent::__construct($aObject);
@@ -23,13 +26,30 @@ class BxBaseModGroupsConnectionFans extends BxTemplConnection
         $this->_oModule = BxDolModule::getInstance($this->_sModule);
 
         $this->_bQuestionnaire = false;
+
+        $this->_bBan = false;
+        $this->_oBanConnection = null;
+    }
+
+    public function init()
+    {
+        if($this->_bBan)
+            $this->_oBanConnection = BxDolConnection::getObjectInstance('sys_profiles_bans');
     }
 
     public function getModule()
     {
         return $this->_sModule;
     }
-    
+
+    public function checkAllowedAddConnection($iInitiator, $iContent, $isPerformAction = false, $isMutual = false, $isInvertResult = false, $isSwap = false, $isCheckExists = true)
+    {
+        if($this->_bBan && $this->_oBanConnection->isConnected($iContent, $iInitiator))
+            return _t('_sys_txt_access_denied');
+
+        return $this->checkAllowedConnect ($iInitiator, $iContent, $isPerformAction, $isMutual, $isInvertResult, $isSwap, $isCheckExists);
+    }
+
     public function actionRemove($iContent = 0, $iInitiator = false)
     {
         $CNF = &$this->_oModule->_oConfig->CNF;
@@ -46,7 +66,7 @@ class BxBaseModGroupsConnectionFans extends BxTemplConnection
 
         return $aResult;
     }
-    
+
     public function actionReject ($iInitiator = 0, $iContent = false)
     {
         $CNF = &$this->_oModule->_oConfig->CNF;

+ 41 - 0
modules/base/groups/classes/BxBaseModGroupsGridConnections.php

@@ -165,6 +165,42 @@ class BxBaseModGroupsGridConnections extends BxDolGridConnections
 
         echoJson(array('grid' => $this->getCode(false), 'blink' => $iId));
     }
+    
+    public function performActionDeleteAndBan()
+    {
+        $this->_replaceMarkers ();
+
+        $aResult = [];
+        $iAffected = 0;
+
+        $aIds = bx_get('ids');
+        if(!$aIds || !is_array($aIds))
+            return $this->_getActionResult($aResult);
+
+        $oConnection = BxDolConnection::getObjectInstance('sys_profiles_bans');
+
+        foreach($aIds as $mixedId) {
+            if(!$this->_delete($mixedId))
+                continue;
+
+            if($oConnection !== false) {
+                list($iProfileId, $iContextId) = $this->__prepareIds($mixedId);
+
+                $oConnection->addConnection($iContextId, $iProfileId, [
+                    'module' => $this->_sContentModule
+                ]);
+            }
+
+            $iAffected += 1;
+        }
+
+        if($iAffected)
+            $aResult = !$this->_bIsApi ? ['grid' => $this->getCode(false)] : [];
+        else
+            $aResult = ['msg' => _t("_sys_grid_delete_failed")];
+
+        return $this->_getActionResult($aResult);
+    }
 
     protected function _getCellRole($mixedValue, $sKey, $aField, $aRow)
     {
@@ -304,6 +340,11 @@ class BxBaseModGroupsGridConnections extends BxDolGridConnections
         return parent::_getActionDelete($sType, $sKey, $a, $isSmall, $isDisabled, $aRow);
     }
 
+    protected function _getActionDeleteAndBan ($sType, $sKey, $a, $isSmall = false, $isDisabled = false, $aRow = [])
+    {
+        return $this->_getActionDelete($sType, $sKey, $a, $isSmall, $isDisabled, $aRow);
+    }
+
     /**
      * Note. Methods related to 'To Admin'/'From Admin' functionality can be removed after UNA 12 will be released.
      */

+ 20 - 3
modules/base/groups/classes/BxBaseModGroupsModule.php

@@ -578,16 +578,33 @@ class BxBaseModGroupsModule extends BxBaseModProfileModule
         if(!$oGrid)
             return false;
 
-        if($this->_bIsApi){
+        if($this->_bIsApi)
             return [
                 bx_api_get_block('grid', $oGrid->getCodeAPI())
             ];
 
-        }
+        return $oGrid->getCode();
+    }
+
+    public function serviceBansTable ()
+    {
+        $CNF = &$this->_oConfig->CNF;
+
+        if(!isset($CNF['OBJECT_GRID_BANS']))
+            return false;
+
+        $oGrid = BxDolGrid::getObjectInstance($CNF['OBJECT_GRID_BANS']);
+        if(!$oGrid)
+            return false;
+
+        if($this->_bIsApi)
+            return [
+                bx_api_get_block('grid', $oGrid->getCodeAPI())
+            ];
 
         return $oGrid->getCode();
     }
-	
+
     public function serviceFans ($iContentId = 0, $bAsArray = false)
     {
         $CNF = &$this->_oConfig->CNF;

+ 1 - 0
modules/boonex/groups/classes/BxGroupsConfig.php

@@ -149,6 +149,7 @@ class BxGroupsConfig extends BxBaseModGroupsConfig
             'OBJECT_GRID_COMMON' => 'bx_groups_common',
             'OBJECT_GRID_CONNECTIONS' => 'bx_groups_fans',
             'OBJECT_GRID_INVITES' => 'bx_groups_invites',
+            'OBJECT_GRID_BANS' => 'bx_groups_bans',
             'OBJECT_GRID_PRICES_MANAGE' => 'bx_groups_prices_manage',
             'OBJECT_GRID_PRICES_VIEW' => 'bx_groups_prices_view',
             'OBJECT_CONNECTIONS' => 'bx_groups_fans',

+ 2 - 0
modules/boonex/groups/classes/BxGroupsConnectionFans.php

@@ -16,6 +16,8 @@ class BxGroupsConnectionFans extends BxBaseModGroupsConnectionFans
         $this->_sModule = 'bx_groups';
 
         parent::__construct($aObject);
+
+        $this->_bBan = true;
     }
 }