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

Ticket #4148 - Build-in API support: Profile Avatar/Menu/Stats blocks.

AntonLV 3 лет назад
Родитель
Сommit
7a2ecf8d61

+ 5 - 1
modules/boonex/artificer/data/template/system/scripts/BxTemplServiceProfiles.php

@@ -26,6 +26,10 @@ class BxTemplServiceProfiles extends BxBaseServiceProfiles
         if(!$oProfile)
             return '';
 
+        $oMenu = BxDolMenu::getObjectInstance('sys_profile_stats');
+        if(!$oMenu)
+            return '';
+
         $oAcl = BxDolAcl::getInstance();
         $aAcl = $oAcl->getMemberMembershipInfo($iProfileId);
         $aAclInfo = $oAcl->getMembershipInfo($aAcl['id']);
@@ -44,7 +48,7 @@ class BxTemplServiceProfiles extends BxBaseServiceProfiles
                 'size' => 'thumb'
             ))),
             'profile_acl_title' => _t($aAclInfo['name']),
-            'menu' => BxDolMenu::getObjectInstance('sys_profile_stats')->getCode(),
+            'menu' => $oMenu->getCode(),
         );
 		
         $aVars['bx_if:image'] = array (

+ 30 - 3
template/scripts/BxBaseServiceProfiles.php

@@ -46,6 +46,11 @@ class BxBaseServiceProfiles extends BxDol
         if(!$oProfile)
             return '';
 
+        if(bx_is_api())
+            return [
+                bx_api_get_block ('profile_avatar', $oProfile->getData(), ['id' => 1])
+            ];
+
         $oTemplate = BxDolTemplate::getInstance();
 
         $sSwitcher = '';
@@ -121,12 +126,24 @@ class BxBaseServiceProfiles extends BxDol
 
     public function serviceProfileMenu ($iProfileId = 0)
     {
-        return BxDolMenu::getObjectInstance('sys_profile_stats')->getCode();
+        if(($oMenu = BxDolMenu::getObjectInstance('sys_profile_stats')) !== false) {
+            if(bx_is_api())
+                return [
+                    bx_api_get_block ('profile_menu', $oMenu->getCodeAPI(), ['id' => 2])
+                ];
+
+            return $oMenu->getCode();
+        }
+        else
+            return '';
     }
 
     public function serviceProfileFollowings ($iProfileId = 0)
     {
-        return BxDolMenu::getObjectInstance('sys_profile_followings')->getCode();
+        if(($oMenu = BxDolMenu::getObjectInstance('sys_profile_followings')) !== false)
+            return $oMenu->getCode();
+        else
+            return '';
     }
 
     public function serviceProfileStats ($iProfileId = 0)
@@ -138,6 +155,16 @@ class BxBaseServiceProfiles extends BxDol
         if(!$oProfile)
             return '';
 
+        $oMenu = BxDolMenu::getObjectInstance('sys_profile_stats');
+        if(!$oMenu)
+            return '';
+
+        if(bx_is_api())
+            return [
+                bx_api_get_block ('profile_avatar', $oProfile->getData(), ['id' => 1]),
+                bx_api_get_block ('profile_menu', $oMenu->getCodeAPI(), ['id' => 2])
+            ];
+
         $oAcl = BxDolAcl::getInstance();
         $aAcl = $oAcl->getMemberMembershipInfo($iProfileId);
         $aAclInfo = $oAcl->getMembershipInfo($aAcl['id']);
@@ -156,7 +183,7 @@ class BxBaseServiceProfiles extends BxDol
                 'size' => 'ava'
             ))),
             'profile_acl_title' => _t($aAclInfo['name']),
-            'menu' => BxDolMenu::getObjectInstance('sys_profile_stats')->getCode(),
+            'menu' => $oMenu->getCode(),
         );
 		
         $aVars['bx_if:image'] = array (