Merge pull request #23921 from civicrm/5.51
[civicrm-core.git] / api / v3 / Domain.php
index 166179f88fa1591cb5eef75e7de61f1145d09fc5..974826b30ec1755a7c5f75db66ab024d767668f4 100644 (file)
@@ -28,17 +28,23 @@ function civicrm_api3_domain_get($params) {
   $params['version'] = $params['domain_version'] ?? NULL;
   unset($params['version']);
 
-  $bao = new CRM_Core_BAO_Domain();
   if (!empty($params['current_domain'])) {
-    $domainBAO = CRM_Core_Config::domainID();
-    $params['id'] = $domainBAO;
+    $params['id'] = CRM_Core_Config::domainID();
   }
   if (!empty($params['options']) && !empty($params['options']['is_count'])) {
     return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params);
   }
 
-  _civicrm_api3_dao_set_filter($bao, $params, TRUE);
-  $domains = _civicrm_api3_dao_to_array($bao, $params, TRUE, 'Domain');
+  // If requesting current domain, read from cache
+  if (!empty($params['id']) && $params['id'] == CRM_Core_Config::domainID()) {
+    $bao = CRM_Core_BAO_Domain::getDomain();
+    $domains = [$params['id'] => $bao->toArray()];
+  }
+  else {
+    $bao = new CRM_Core_BAO_Domain();
+    _civicrm_api3_dao_set_filter($bao, $params, TRUE);
+    $domains = _civicrm_api3_dao_to_array($bao, $params, TRUE, 'Domain');
+  }
 
   foreach ($domains as $domain) {
     if (!empty($domain['contact_id'])) {