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

#4558 - Build-in API support (set badges)

romanlesnikov 1 год назад
Родитель
Сommit
cd34ab87e3

+ 36 - 0
modules/base/profile/classes/BxBaseModProfileMenuViewActionsAll.php

@@ -123,6 +123,42 @@ class BxBaseModProfileMenuViewActionsAll extends BxBaseModGeneralMenuViewActions
         return $this->_getMenuItemByNameActions($aItem);
     }
 
+    protected function _getMenuItemProfileSetBadges($aItem)
+    {
+        $aItem = $this->_getMenuItemByNameActions($aItem);
+        if (!$aItem || !$this->_bIsApi)
+            return $aItem;
+        
+        $oBadges = BxDolBadges::getInstance();
+		$aBadges = $oBadges->getData(array('type' => 'by_module&object', 'object_id' => $this->_iContentId, 'module' => $this->_sModule));
+        
+        $aBadgesList = array_map(function ($aBadge) {
+            return [
+                "value" => $aBadge['id'],
+                "label" => $aBadge['text']
+            ];
+        }, $aBadges);
+        
+       $filteredBadges = array_filter($aBadges, function ($aBadge) {
+            return isset($aBadge['badge_id']);
+       });
+
+        $badgeIds = array_values(array_map(function ($aBadge2) {
+            return $aBadge2['id'];
+        }, $filteredBadges));
+
+        return array_merge($aItem, [
+            'display_type' => 'callback',
+            'content_type' => 'badges',
+            'data' => [
+                'content_id' => $this->_iContentId, 
+                'module' => $this->_sModule, 
+                'values' => $aBadgesList, 
+                'value' => $badgeIds
+            ]
+        ]);
+    }
+    
     protected function _getMenuItemProfileSetAclLevel($aItem)
     {
         $aItem = $this->_getMenuItemByNameActions($aItem);

+ 0 - 5
modules/boonex/courses/classes/BxCoursesMenuViewActionsAll.php

@@ -55,11 +55,6 @@ class BxCoursesMenuViewActionsAll extends BxBaseModGroupsMenuViewActionsAll
     {
         return $this->_getMenuItemByNameActionsMore($aItem);
     }
-    
-    protected function _getMenuItemProfileSetBadges($aItem)
-    {
-        return $this->_getMenuItemByNameActions($aItem);
-    }
 }
 
 /** @} */

+ 0 - 5
modules/boonex/events/classes/BxEventsMenuViewActionsAll.php

@@ -88,11 +88,6 @@ class BxEventsMenuViewActionsAll extends BxBaseModGroupsMenuViewActionsAll
         }
         return $a;
     }
-
-    protected function _getMenuItemProfileSetBadges($aItem)
-    {
-        return $this->_getMenuItemByNameActions($aItem);
-    }
 }
 
 /** @} */

+ 0 - 5
modules/boonex/groups/classes/BxGroupsMenuViewActionsAll.php

@@ -55,11 +55,6 @@ class BxGroupsMenuViewActionsAll extends BxBaseModGroupsMenuViewActionsAll
     {
         return $this->_getMenuItemByNameActionsMore($aItem);
     }
-
-    protected function _getMenuItemProfileSetBadges($aItem)
-    {
-        return $this->_getMenuItemByNameActions($aItem);
-    }
 }
 
 /** @} */

+ 0 - 5
modules/boonex/jobs/classes/BxJobsMenuViewActionsAll.php

@@ -60,11 +60,6 @@ class BxJobsMenuViewActionsAll extends BxBaseModGroupsMenuViewActionsAll
     {
         return $this->_getMenuItemByNameActionsMore($aItem);
     }
-
-    protected function _getMenuItemProfileSetBadges($aItem)
-    {
-        return $this->_getMenuItemByNameActions($aItem);
-    }
 }
 
 /** @} */

+ 0 - 5
modules/boonex/organizations/classes/BxOrgsMenuViewActionsAll.php

@@ -60,11 +60,6 @@ class BxOrgsMenuViewActionsAll extends BxBaseModGroupsMenuViewActionsAll
     {
         return $this->_getMenuItemByNameActionsMore($aItem);
     }
-    
-    protected function _getMenuItemProfileSetBadges($aItem)
-    {
-        return $this->_getMenuItemByNameActions($aItem);
-    }
 }
 
 /** @} */

+ 0 - 5
modules/boonex/persons/classes/BxPersonsMenuViewActionsAll.php

@@ -45,11 +45,6 @@ class BxPersonsMenuViewActionsAll extends BxBaseModProfileMenuViewActionsAll
     {
         return $this->_getMenuItemByNameActionsMore($aItem);
     }
-    
-    protected function _getMenuItemProfileSetBadges($aItem)
-    {
-        return $this->_getMenuItemByNameActions($aItem);
-    }
 }
 
 /** @} */

+ 0 - 5
modules/boonex/spaces/classes/BxSpacesMenuViewActionsAll.php

@@ -55,11 +55,6 @@ class BxSpacesMenuViewActionsAll extends BxBaseModGroupsMenuViewActionsAll
     {
         return $this->_getMenuItemByNameActionsMore($aItem);
     }
-
-    protected function _getMenuItemProfileSetBadges($aItem)
-    {
-        return $this->_getMenuItemByNameActions($aItem);
-    }
 }
 
 /** @} */

+ 28 - 0
template/scripts/BxBaseServiceProfiles.php

@@ -919,6 +919,34 @@ class BxBaseServiceProfiles extends BxDol
         return $sCode;
     }
     
+    public function serviceSetBadges($iContentId, $sBadgesIds, $sModule)
+    {
+        $aSelectedBadges = explode(",", $sBadgesIds);
+        
+        $iPerformerId = bx_get_logged_profile_id();
+        $aCheck = checkActionModule($iPerformerId, 'set badge', 'system', false);
+        if(!isAdmin() && $aCheck[CHECK_ACTION_RESULT] !== CHECK_ACTION_RESULT_ALLOWED)
+            return false;
+        
+        $oBadges = BxDolBadges::getInstance();
+
+        $aBadges = $oBadges->getData(array('type' => 'by_module&object', 'object_id' => $iContentId, 'module' => $sModule));
+
+        foreach ($aBadges as $aBadge) {
+            if (isset($aBadge['badge_id'])){
+                $oBadges->delete($aBadge['badge_id']);
+            }
+        }
+        
+        foreach ($aSelectedBadges as $iSelectedBadge) {
+           $oBadges->add($iSelectedBadge, $iContentId, $sModule);
+        }
+        
+        checkActionModule($iPerformerId, 'set badge', 'system', true); // perform action
+        
+        return true;
+    }
+    
     public function serviceSetMembership($mixedProfileId, $iAclLevelId, $iAclLevelDuration = 0)
     {
         if(!is_array($mixedProfileId))

+ 1 - 0
template/scripts/BxBaseServices.php

@@ -91,6 +91,7 @@ class BxBaseServices extends BxDol implements iBxDolProfileService
             'UpdateSettings' => 'BxBaseServiceProfiles',
             'Befriend' => 'BxBaseServiceProfiles',
             'ProfileCounters' => 'BxBaseServiceProfiles',
+            'SetBadges' => 'BxBaseServiceProfiles',
             
             'GetChartGrowth' => 'BxBaseChartServices',
             'GetChartStats' => 'BxBaseChartServices',