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

Build-in API support: Groups connections.

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

+ 31 - 0
modules/base/groups/classes/BxBaseModGroupsConnectionFans.php

@@ -21,6 +21,37 @@ class BxBaseModGroupsConnectionFans extends BxTemplConnection
         $this->_oModule = BxDolModule::getInstance($this->_sModule);
     }
 
+    public function getActionTitle ($sAction, $iInitiatorId, $iContentId, $bFlip = false)
+    {
+        $aResult = [];
+        if($this->isConnectedNotMutual($iInitiatorId, $iContentId))
+            $aResult = [
+                'add' => '',
+                'remove' => _t('_sys_menu_item_title_sm_leave_cancel'),
+            ];
+        else if($this->isConnectedNotMutual($iContentId, $iInitiatorId))
+            $aResult = [
+                'add' => _t('_sys_menu_item_title_sm_join_confirm'),
+                'remove' => _t('_sys_menu_item_title_sm_leave_reject'),
+            ];
+        else if($this->isConnected($iInitiatorId, $iContentId, true))
+            $aResult = [
+                'add' => '',
+                'remove' => _t('_sys_menu_item_title_sm_leave'),
+            ];
+        else
+            $aResult = [
+                'add' => _t('_sys_menu_item_title_sm_join'),
+                'remove' => '',
+            ];
+
+        $aFlip = ['add' => 'remove', 'remove' => 'add'];
+        if($bFlip)
+            $sAction = $aFlip[$sAction];
+
+        return !empty($aResult[$sAction]) ? _t($aResult[$sAction]) : '';
+    }
+
     protected function _checkAllowedConnectInitiator ($oInitiator, $isPerformAction = false)
     {
         if(!bx_srv($oInitiator->getModule(), 'act_as_profile'))

+ 5 - 0
modules/base/groups/classes/BxBaseModGroupsMenuSnippetMeta.php

@@ -93,6 +93,11 @@ class BxBaseModGroupsMenuSnippetMeta extends BxBaseModProfileMenuSnippetMeta
         if(!$iMembers && !$this->_bShowZeros)
             return false;
 
+        if($this->_bIsApi)
+            return $this->_getMenuItemAPI($aItem, 'text', [
+                'title' => _t('_sys_menu_item_title_sm_members', $iMembers)
+            ]);
+
         $sIcon = BxTemplFunctions::getInstanceWithTemplate($this->_oTemplate)->getIconAsHtml(!empty($aItem['icon']) ? $aItem['icon'] : '');
 
         return $this->getUnitMetaItemCustom($oConnection->getCounter($this->_oContentProfile->id(), true, [

+ 7 - 0
template/scripts/BxBaseServiceConnections.php

@@ -72,6 +72,10 @@ class BxBaseServiceConnections extends BxDol
         if(!$oConnection)
             return '';
 
+        $sMethod = 'getActionTitle';
+        if(method_exists($oConnection, $sMethod))
+            return $oConnection->$sMethod($sAction, $iInitiatorId, $iContentId, $bFlip);
+
         $aResult = [];
         switch($sObject) {
             case 'sys_profiles_friends':
@@ -109,6 +113,9 @@ class BxBaseServiceConnections extends BxDol
                         'remove' => '',
                     ];
                 break;
+
+            default:
+                $aResult = $oConnection->getActionTitle($sAction, $iInitiatorId, $iContentId);
         }
 
         $aFlip = ['add' => 'remove', 'remove' => 'add'];