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

Ticket #4148 - 'decodeDataAPI' refactoring.

AntonLV 3 лет назад
Родитель
Сommit
6ccb587ee1

+ 3 - 3
inc/classes/BxDolSearch.php

@@ -119,7 +119,7 @@ class BxDolSearch extends BxDol
             if ($this->_bDataProcessing) {
                 if($this->_bIsApi) {
                     if($bSingle)
-                        $sCode = $oEx->decodeData($oEx->getSearchData());
+                        $sCode = $oEx->decodeDataAPI($oEx->getSearchData());
                     else
                         $sCode[$sKey] = $oEx->getSearchQuery(['for_union' => true]);
                 }
@@ -541,7 +541,7 @@ class BxDolSearchResult implements iBxDolReplaceable
         if(in_array($this->sUnitViewDefault, ['showcase', 'gallery']))
             $sUnit = 'card';
         
-        $aData = defined('BX_API_PAGE') ? [] : $this->decodeData($this->getSearchData());
+        $aData = defined('BX_API_PAGE') ? [] : $this->decodeDataAPI($this->getSearchData());
         
         $aParams =  [
             'per_page' => $this->aCurrent['paginate']['perPage'],
@@ -562,7 +562,7 @@ class BxDolSearchResult implements iBxDolReplaceable
         ];
     }
 
-    function decodeData ($a)
+    function decodeDataAPI ($a)
     {
         return $a;
     }

+ 1 - 1
modules/base/general/classes/BxBaseModGeneralCmtsSearchResult.php

@@ -90,7 +90,7 @@ class BxBaseModGeneralCmtsSearchResult extends BxBaseModGeneralSearchResult
         return array();
     }
 
-    function decodeData ($a)
+    function decodeDataAPI ($a)
     {
         $oContentInfo = $this->getContentInfoObject();
 

+ 2 - 2
modules/base/general/classes/BxBaseModGeneralModule.php

@@ -501,7 +501,7 @@ class BxBaseModGeneralModule extends BxDolModule
     {
         $aData = $this->serviceGetInfo($iContentId, false);
         if($aData)
-            $aData = $this->decodeDataApi($aData, $bExtendedUnits);
+            $aData = $this->decodeDataAPI($aData, ['extended' => $bExtendedUnits]);
 
         return $aData;
     }
@@ -3340,7 +3340,7 @@ class BxBaseModGeneralModule extends BxDolModule
         return bx_absolute_url(BxDolPermalinks::getInstance()->permalink('page.php?i=' . $CNF['URI_FAVORITES_LIST'] . '&profile_id=' . $iProfileId . '&list_id=' . $iListId));
     }
 
-    public function decodeDataApi ($aData, $bExtended = false)
+    public function decodeDataAPI($aData, $aParams = [])
     {
         return $aData;
     }

+ 3 - 3
modules/base/general/classes/BxBaseModGeneralSearchResult.php

@@ -213,12 +213,12 @@ class BxBaseModGeneralSearchResult extends BxTemplSearchResult
         return parent::displayResultBlock();
     }
 
-    function decodeData ($a)
+    function decodeDataAPI($a)
     {
         $bExtendedUnits = getParam('sys_api_extended_units') == 'on';
 
-        foreach ($a as $i => $r)
-            $a[$i] = $this->oModule->decodeDataApi($r, $bExtendedUnits);
+        foreach($a as $i => $r)
+            $a[$i] = $this->oModule->decodeDataAPI($r, ['extended' => $bExtendedUnits]);
 
         return $a;
     }

+ 2 - 2
modules/base/groups/classes/BxBaseModGroupsModule.php

@@ -114,11 +114,11 @@ class BxBaseModGroupsModule extends BxBaseModProfileModule
         return $sResult;
     }
     
-    public function decodeDataApi ($aData, $bExtended = false)
+    public function decodeDataAPI($aData, $aParams = [])
     {
         $CNF = $this->_oConfig->CNF;
         
-        $aResult = parent::decodeDataApi($aData, $bExtended);
+        $aResult = parent::decodeDataAPI($aData, $aParams);
         
         $oConnection = BxDolConnection::getObjectInstance($CNF['OBJECT_CONNECTIONS']);
         if ($oConnection){

+ 22 - 19
modules/base/profile/classes/BxBaseModProfileModule.php

@@ -2065,15 +2065,16 @@ class BxBaseModProfileModule extends BxBaseModGeneralModule implements iBxDolCon
         return !empty($sAction) && !empty($aResult[$sAction]) ? $aResult[$sAction] : $aResult;
     }
     
-    public function decodeDataApi ($aData, $bExtended = false)
+    public function decodeDataAPI($aData, $aParams = [])
     {
         $CNF = $this->_oConfig->CNF;
 
+        $sModule = $this->getName();
         $iId = (int)$aData[$CNF['FIELD_ID']];
 
         $aResult = [
             'id' => $iId, 
-            'module' => $this->getName(),
+            'module' => $sModule,
             'added' => $aData[$CNF['FIELD_ADDED']],
             'author' => $aData[$CNF['FIELD_AUTHOR']],
             'title' => $aData[$CNF['FIELD_TITLE']],
@@ -2082,31 +2083,33 @@ class BxBaseModProfileModule extends BxBaseModGeneralModule implements iBxDolCon
             'image' => $this->serviceGetThumb($iId),
             'cover' => $this->serviceGetCover($iId),
         ];
-        
-        $oProfile = BxDolProfile::getInstanceByContentAndType($aData[$CNF['FIELD_ID']], $this->_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());
-        }
 
-        if($bExtended)
+        if(isset($aParams['extended']) && $aParams['extended'] === true)
             $aResult['text'] = $aData[$CNF['FIELD_TEXT']];
 
-        if(!empty($CNF['OBJECT_MENU_SNIPPET_META']) && ($oMetaMenu = BxDolMenu::getObjectInstance($CNF['OBJECT_MENU_SNIPPET_META'], $this->_oTemplate)) !== false) {
+        if(($oProfile = BxDolProfile::getInstanceByContentAndType($aData[$CNF['FIELD_ID']], $sModule)) !== false) {
+            $iProfileId = $oProfile->id();
+
+            if(($oConnection = BxDolConnection::getObjectInstance('sys_profiles_friends')) !== false) {
+                $aResult['friends_count'] = $oConnection->getConnectedContentCount($iProfileId, true);
+                if(isLogged())
+                    $aResult['mutual_friends_count'] = $oConnection->getCommonContentCount($iProfileId, bx_get_logged_profile_id(), true);
+            }
+
+            if(($oConnection = BxDolConnection::getObjectInstance('sys_profiles_subscriptions')) !== false)
+                $aResult['followers_count'] = $oConnection->getConnectedInitiatorsCount($iProfileId);
+        }
+
+        $sKey = 'OBJECT_MENU_SNIPPET_META';
+        if(!empty($CNF[$sKey]) && ($oMetaMenu = BxDolMenu::getObjectInstance($CNF[$sKey], $this->_oTemplate)) !== false) {
             $oPrivacy = BxDolPrivacy::getObjectInstance($CNF['OBJECT_PRIVACY_VIEW']);
             $bPublic = !$oPrivacy || $oPrivacy->check($iId) || $oPrivacy->isPartiallyVisible($aData[$CNF['FIELD_ALLOW_VIEW_TO']]);
 
             $oMetaMenu->setContentId($iId);
             $oMetaMenu->setContentPublic($bPublic);
+            if(isset($aParams['context']))
+                $oMetaMenu->setContext($aParams['context']);
+
             $aResult['meta'] = $oMetaMenu->getCodeAPI();
         }
 

+ 1 - 48
modules/base/profile/classes/BxBaseModProfileTemplate.php

@@ -96,54 +96,7 @@ class BxBaseModProfileTemplate extends BxBaseModGeneralTemplate
 
     public function unitAPI($aData, $aParams = [])
     {
-        $CNF = &$this->_oConfig->CNF;
-
-        $iContentId = (int)$aData[$CNF['FIELD_ID']];
-
-        // get profile's url
-        $sUrl = bx_absolute_url(BxDolPermalinks::getInstance()->permalink('page.php?i=' . $CNF['URI_VIEW_ENTRY'] . '&id=' . $iContentId));
-
-        $aResult = [
-            'id' => $iContentId,
-            'module' => $this->_oConfig->getName(),
-            'added' => $aData[$CNF['FIELD_ADDED']],
-            'title' => $aData[$CNF['FIELD_TITLE']],
-            'url' => bx_api_get_relative_url($sUrl),
-            'image' => bx_api_get_image($CNF['OBJECT_STORAGE'], $aData[$CNF['FIELD_PICTURE']]),
-            'cover' => bx_api_get_image($CNF['OBJECT_STORAGE'], $aData[$CNF['FIELD_COVER']])
-        ];
-
-        $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) {
-            $bPublic = !$bPrivacy || $oPrivacy->check($iContentId) || $oPrivacy->isPartiallyVisible($aData[$CNF['FIELD_ALLOW_VIEW_TO']]);
-
-            $oMetaMenu->setContentId($iContentId);
-            $oMetaMenu->setContentPublic($bPublic);
-            if(isset($aParams['context']))
-                $oMetaMenu->setContext($aParams['context']);
-
-            $aResult['meta'] = $oMetaMenu->getCodeAPI();
-        }
-
-        return $aResult;
+        return $this->getModule()->decodeDataAPI($aData, $aParams);
     }
 
     function unitVars ($aData, $isCheckPrivateContent = true, $mixedTemplate = false, $aParams = [])

+ 2 - 2
modules/base/text/classes/BxBaseModTextModule.php

@@ -880,7 +880,7 @@ class BxBaseModTextModule extends BxBaseModGeneralModule implements iBxDolConten
         return $mResult;
     }
     
-    public function decodeDataApi ($aData, $bExtended = false)
+    public function decodeDataAPI($aData, $aParams = [])
     {
         $CNF = &$this->_oConfig->CNF;
 
@@ -903,7 +903,7 @@ class BxBaseModTextModule extends BxBaseModGeneralModule implements iBxDolConten
             'summary_plain' => $sSummary
         ];
 
-        if($bExtended)
+        if(isset($aParams['extended']) && $aParams['extended'] === true)
             $aResult['text'] = $aData[$CNF['FIELD_TEXT']];
 
         /**

+ 6 - 6
modules/boonex/events/classes/BxEventsModule.php

@@ -135,15 +135,15 @@ class BxEventsModule extends BxBaseModGroupsModule implements iBxDolCalendarServ
         return $aContentInfo['date_start'] && $aContentInfo['date_end'];
     }
     
-    public function decodeDataApi ($aData, $bExtended = false)
+    public function decodeDataAPI($aData, $aParams = [])
     {
         $CNF = $this->_oConfig->CNF;
-        
-        $aResult = parent::decodeDataApi($aData, $bExtended);
-        
-        $aResult['date_start'] = $aData[$CNF['FIELD_DATE_START']];
-        $aResult['date_end'] = $aData[$CNF['FIELD_DATE_END']];
 
+        $aResult = parent::decodeDataAPI($aData, $aParams);
+        $aResult = array_merge($aResult, [
+            'date_start' => $aData[$CNF['FIELD_DATE_START']],
+            'date_end' => $aData[$CNF['FIELD_DATE_END']]
+        ]);
         return $aResult;
     }
 

+ 10 - 9
modules/boonex/market/classes/BxMarketModule.php

@@ -56,17 +56,18 @@ class BxMarketModule extends BxBaseModTextModule
         return $this->$sMethodPerform($aContentInfo);
     }
     
-    public function decodeDataApi ($aData, $bExtended = false)
+    public function decodeDataAPI($aData, $aParams = [])
     {
         $CNF = $this->_oConfig->CNF;
-        
-        $aResult = parent::decodeDataApi($aData, $bExtended);
-        $aResult['price_single'] = $aData['price_single'];
-        $aResult['price_recurring'] = $aData['price_recurring'];
-        $aResult['duration_recurring'] = $aData['duration_recurring'];
-
-        $aResult['cover_raw'] = $aData['cover_raw'];
-        $aResult['cover'] = $this->serviceGetCover($aData[$CNF['FIELD_COVER']]);  
+
+        $aResult = parent::decodeDataAPI($aData, $aParams);
+        $aResult = array_merge($aResult, [
+            'price_single' => $aData[$CNF['FIELD_PRICE_SINGLE']],
+            'price_recurring' => $aData[$CNF['FIELD_PRICE_RECURRING']],
+            'duration_recurring' => $aData[$CNF['FIELD_DURATION_RECURRING']],
+            'cover_raw' => $aData[$CNF['FIELD_COVER_RAW']],
+            'cover' => $this->serviceGetCover($aData[$CNF['FIELD_COVER']])
+        ]);
         return $aResult;
     }
 

+ 1 - 1
template/scripts/BxBaseProfileSearchResult.php

@@ -233,7 +233,7 @@ class BxBaseProfileSearchResult extends BxTemplSearchResult
         }
     }
 
-    function decodeData ($a)
+    function decodeDataAPI($a)
     {
         $aResult = [];