CoreComponent - Fix errors when fetching component name/id
authorColeman Watts <coleman@civicrm.org>
Mon, 10 Apr 2023 13:31:50 +0000 (09:31 -0400)
committerColeman Watts <coleman@civicrm.org>
Mon, 10 Apr 2023 13:31:50 +0000 (09:31 -0400)
CRM/Core/Component.php
CRM/Core/Permission.php

index 490737e841183b6a09d453250fab4aead13a3152..e3efbf286c0cd767e1b5b8b032710ca2802ad64e 100644 (file)
@@ -89,10 +89,12 @@ class CRM_Core_Component {
   }
 
   /**
+   * @deprecated
    * @return array
    *   Array(string $name => int $id).
    */
   public static function &getComponentIDs() {
+    CRM_Core_Error::deprecatedFunctionWarning('getComponents');
     $componentIDs = [];
 
     $cr = new CRM_Core_DAO_Component();
@@ -193,32 +195,28 @@ class CRM_Core_Component {
   /**
    * @param string $componentName
    *
-   * @return mixed
+   * @return int|null
    */
   public static function getComponentID($componentName) {
-    $info = self::_info();
+    $info = self::getComponents();
     if (!empty($info[$componentName])) {
       return $info[$componentName]->componentID;
     }
+    return NULL;
   }
 
   /**
    * @param int $componentID
    *
-   * @return int|null|string
+   * @return string|null
    */
   public static function getComponentName($componentID) {
-    $info = self::_info();
-
-    $componentName = NULL;
-    foreach ($info as $compName => $component) {
+    foreach (self::getComponents() as $compName => $component) {
       if ($component->componentID == $componentID) {
-        $componentName = $compName;
-        break;
+        return $compName;
       }
     }
-
-    return $componentName;
+    return NULL;
   }
 
   /**
index 482ce487936f907c49a14dade85a4930a1d7f03b..0144a06abfd48498f2d23bc0d8d8cdca601dfa7f 100644 (file)
@@ -527,7 +527,7 @@ class CRM_Core_Permission {
     // if component_id is present, ensure it is enabled
     if (!empty($item['component_id'])) {
       $componentName = CRM_Core_Component::getComponentName($item['component_id']);
-      if (!CRM_Core_Component::isEnabled($componentName)) {
+      if (!$componentName || !CRM_Core_Component::isEnabled($componentName)) {
         return FALSE;
       }
     }