Fix CRM_Core_DAO_AllCoreTables::getBriefName to accept BAO name
[civicrm-core.git] / CRM / Core / DAO / AllCoreTables.php
index 0fee62521ce1d713bb8dbc8b3ab5feac8fa8029d..6cce0eb92cc3c0f582ccbc5c4b7c7ae744d95fa1 100644 (file)
@@ -186,14 +186,26 @@ class CRM_Core_DAO_AllCoreTables {
   }
 
   /**
-   * Get the DAO for the class.
+   * Get the DAO for a BAO class.
    *
-   * @param string $className
+   * @param string $baoName
    *
-   * @return string
+   * @return string|CRM_Core_DAO
+   */
+  public static function getCanonicalClassName($baoName) {
+    return str_replace('_BAO_', '_DAO_', $baoName);
+  }
+
+  /**
+   * Get the BAO for a DAO class.
+   *
+   * @param string $daoName
+   *
+   * @return string|CRM_Core_DAO
    */
-  public static function getCanonicalClassName($className) {
-    return str_replace('_BAO_', '_DAO_', $className);
+  public static function getBAOClassName($daoName) {
+    $baoName = str_replace('_DAO_', '_BAO_', $daoName);
+    return class_exists($baoName) ? $baoName : $daoName;
   }
 
   /**
@@ -242,7 +254,8 @@ class CRM_Core_DAO_AllCoreTables {
    *   Ex: 'Contact'.
    */
   public static function getBriefName($className) {
-    return CRM_Utils_Array::value($className, array_flip(self::daoToClass()));
+    $className = self::getCanonicalClassName($className);
+    return array_search($className, self::daoToClass(), TRUE) ?: NULL;
   }
 
   /**