CRM-13075 - CRM_Core_BAO_Block - Allow handlePrimary() with entities from extensions
authorTim Otten <totten@civicrm.org>
Wed, 31 Jul 2013 20:32:54 +0000 (13:32 -0700)
committerTim Otten <totten@civicrm.org>
Wed, 31 Jul 2013 20:32:54 +0000 (13:32 -0700)
----------------------------------------
* CRM-13075: Mark is_primary for HRJob records
  http://issues.civicrm.org/jira/browse/CRM-13075

CRM/Core/BAO/Block.php
tests/phpunit/CRM/Core/DAO/AllCoreTablesTest.php [new file with mode: 0644]
xml/templates/listAll.tpl

index 46f796b282b0479aa518a84d3afd5046a2e5f902..2866138b7478fb01da412e67ce00ecc3cedf2f21 100644 (file)
@@ -434,19 +434,7 @@ class CRM_Core_BAO_Block {
    * @static
    */
   public static function handlePrimary(&$params, $class) {
-    switch ($class) {
-      case 'CRM_Core_BAO_Phone':
-        $table = 'civicrm_phone';
-        break;
-
-      case 'CRM_Core_BAO_Email':
-        $table = 'civicrm_email';
-        break;
-
-      case 'CRM_Core_BAO_Address':
-        $table = 'civicrm_address';
-        break;
-    }
+    $table = CRM_Core_DAO_AllCoreTables::getTableForClass($class);
     // contact_id in params might be empty or the string 'null' so cast to integer
     $contactId = (int) CRM_Utils_Array::value('contact_id', $params);
     // If id is set & we haven't been passed a contact_id, retrieve it
diff --git a/tests/phpunit/CRM/Core/DAO/AllCoreTablesTest.php b/tests/phpunit/CRM/Core/DAO/AllCoreTablesTest.php
new file mode 100644 (file)
index 0000000..ecff916
--- /dev/null
@@ -0,0 +1,9 @@
+<?php
+
+require_once 'CiviTest/CiviUnitTestCase.php';
+class CRM_Core_DAO_AllCoreTablesTest extends CiviUnitTestCase {
+  public function testGetTableForClass() {
+    $this->assertEquals('civicrm_email', CRM_Core_DAO_AllCoreTables::getTableForClass('CRM_Core_DAO_Email'));
+    $this->assertEquals('civicrm_email', CRM_Core_DAO_AllCoreTables::getTableForClass('CRM_Core_BAO_Email'));
+  }
+}
\ No newline at end of file
index f64a05832578e9bbba0feb817cf40eeb07bc5b90..35d1cddb5ca05b1c71bb8e19d08a5aabf29e7834 100644 (file)
@@ -87,6 +87,10 @@ class CRM_Core_DAO_AllCoreTables {ldelim}
     return FALSE !== array_search($tableName, self::tables());
   {rdelim}
 
+  static public function getCanonicalClassName($className) {ldelim}
+    return str_replace('_BAO_', '_DAO_', $className);
+  {rdelim}
+
   static public function getClasses() {ldelim}
     return array_values(self::daoToClass());
   {rdelim}
@@ -103,4 +107,13 @@ class CRM_Core_DAO_AllCoreTables {ldelim}
     return CRM_Utils_Array::value($className, array_flip(self::daoToClass()));
   {rdelim}
 
+  /**
+   * @param string $className DAO or BAO name
+   * @return string|FALSE SQL table name
+   */
+  static public function getTableForClass($className) {ldelim}
+    return array_search(self::getCanonicalClassName($className), self::tables());
+  {rdelim}
+
+
 {rdelim}