1
0
Эх сурвалжийг харах

#4148 - Build-in API support (cards data)

roman.lesnikov@gmail.com 3 жил өмнө
parent
commit
2dbb34fac3

+ 10 - 1
modules/base/profile/classes/BxBaseModProfileModule.php

@@ -2083,10 +2083,19 @@ class BxBaseModProfileModule extends BxBaseModGeneralModule implements iBxDolCon
             'cover' => $this->serviceGetCover($iId),
         ];
         
+        $oProfile = BxDolProfile::getInstanceByContentAndType($aData[$CNF['FIELD_ID']], $this->_aModule['name']);
+        
         $oConnection = BxDolConnection::getObjectInstance('sys_profiles_friends');
         if ($oConnection){
-            $oProfile = BxDolProfile::getInstanceByContentAndType($aData[$CNF['FIELD_ID']], $this->_aModule['name']);
             $aResult['friends_count'] = $oConnection->getConnectedContentCount($oProfile->id(), true);
+            if(isLogged()){
+                $aResult['mutual_friends_count'] = $oConnection->getCommonContentCount($oProfile->id(), bx_get_logged_profile_id(), true);
+            }
+        }
+        
+        $oConnection = BxDolConnection::getObjectInstance('sys_profiles_subscriptions');
+        if ($oConnection){
+            $aResult['followers_count'] = $oConnection->getConnectedInitiatorsCount($oProfile->id());
         }
 
         if($bExtended)

+ 15 - 0
modules/base/profile/classes/BxBaseModProfileTemplate.php

@@ -115,6 +115,21 @@ class BxBaseModProfileTemplate extends BxBaseModGeneralTemplate
 
         $oPrivacy = BxDolPrivacy::getObjectInstance($CNF['OBJECT_PRIVACY_VIEW']);
         $bPrivacy = $oPrivacy !== false;
+    
+        $oProfile = BxDolProfile::getInstanceByContentAndType($aData[$CNF['FIELD_ID']], $this->getModule()->_aModule['name']);
+        
+        $oConnection = BxDolConnection::getObjectInstance('sys_profiles_friends');
+        if ($oConnection){
+            $aResult['friends_count'] = $oConnection->getConnectedContentCount($oProfile->id(), true);
+            if(isLogged()){
+                $aResult['mutual_friends_count'] = $oConnection->getCommonContentCount($oProfile->id(), bx_get_logged_profile_id(), true);
+            }
+        }
+        
+        $oConnection = BxDolConnection::getObjectInstance('sys_profiles_subscriptions');
+        if ($oConnection){
+            $aResult['followers_count'] = $oConnection->getConnectedInitiatorsCount($oProfile->id());
+        }
 
         $sKey = 'OBJECT_MENU_SNIPPET_META';
         if(!empty($CNF[$sKey]) && ($oMetaMenu = BxDolMenu::getObjectInstance($CNF[$sKey], $this)) !== false) {

+ 6 - 1
template/scripts/BxBaseProfileSearchResult.php

@@ -42,6 +42,11 @@ class BxBaseProfileSearchResult extends BxTemplSearchResult
             'bx-def-margin-sec-neg'
         ));
 
+        $aProfileModules = bx_srv('system', 'get_modules_by_type', ['profile']);
+        $aProfileModulesNames = array_map(function($item) {
+            return $item['name'];
+        }, $aProfileModules);
+        
         $this->aCurrent = [
             'name' => 'sys_search',
             'module_name' => 'system',
@@ -52,7 +57,7 @@ class BxBaseProfileSearchResult extends BxTemplSearchResult
             'restriction' => [
                 'account_id' => ['value' => '', 'field' => 'account_id', 'operator' => '='],
                 'perofileStatus' => ['value' => 'active', 'field' => 'status', 'operator' => '='],
-                'perofileType' => ['value' => '', 'field' => 'type', 'operator' => '='],
+                'perofileType' => ['value' => $aProfileModulesNames, 'field' => 'type', 'operator' => 'in'],
             ],
             'join' => [
                 'account' => [