ContactType BAO - Simplify getAllContactTypes
authorColeman Watts <coleman@civicrm.org>
Mon, 28 Nov 2022 05:20:22 +0000 (00:20 -0500)
committerColeman Watts <coleman@civicrm.org>
Mon, 28 Nov 2022 05:20:22 +0000 (00:20 -0500)
Looking up pseudoconstants was silly, the data is already there

CRM/Contact/BAO/ContactType.php

index cf55ff487cac77d105abfd3e4226b07091526ac5..e867e13be9bd03f41af484977f1f92c24a9443c1 100644 (file)
@@ -870,16 +870,15 @@ WHERE ($subtypeClause)";
       $query = CRM_Utils_SQL_Select::from('civicrm_contact_type');
       $dao = CRM_Core_DAO::executeQuery($query->toSQL());
       $contactTypes = array_column($dao->fetchAll(), NULL, 'name');
-      $name_options = self::buildOptions('parent_id', 'validate');
-      $label_options = self::buildOptions('parent_id', 'get');
-      foreach ($contactTypes as $id => $contactType) {
-        $contactTypes[$id]['parent'] = $contactType['parent_id'] ? $name_options[$contactType['parent_id']] : NULL;
-        $contactTypes[$id]['parent_label'] = $contactType['parent_id'] ? $label_options[$contactType['parent_id']] : NULL;
+      $parents = array_column($contactTypes, NULL, 'id');
+      foreach ($contactTypes as $name => $contactType) {
+        $contactTypes[$name]['parent'] = $contactType['parent_id'] ? $parents[$contactType['parent_id']]['name'] : NULL;
+        $contactTypes[$name]['parent_label'] = $contactType['parent_id'] ? $parents[$contactType['parent_id']]['label'] : NULL;
         // Cast int/bool types.
-        $contactTypes[$id]['id'] = (int) $contactType['id'];
-        $contactTypes[$id]['parent_id'] = $contactType['parent_id'] ? (int) $contactType['parent_id'] : NULL;
-        $contactTypes[$id]['is_active'] = (bool) $contactType['is_active'];
-        $contactTypes[$id]['is_reserved'] = (bool) $contactType['is_reserved'];
+        $contactTypes[$name]['id'] = (int) $contactType['id'];
+        $contactTypes[$name]['parent_id'] = $contactType['parent_id'] ? (int) $contactType['parent_id'] : NULL;
+        $contactTypes[$name]['is_active'] = (bool) $contactType['is_active'];
+        $contactTypes[$name]['is_reserved'] = (bool) $contactType['is_reserved'];
       }
       $cache->set($cacheKey, $contactTypes);
     }