X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;ds=sidebyside;f=Civi%2FApi4%2FAction%2FEntity%2FGet.php;h=bf7fd148c6b33a978e3d1212f63c95cefc9da765;hb=7b7c96e65faa8257675016980f98304be1423554;hp=457e11f67f7de756f7558c2e986e7b1773b5833c;hpb=14ed235d768c84a8e99e486a941e4290b7ea1708;p=civicrm-core.git diff --git a/Civi/Api4/Action/Entity/Get.php b/Civi/Api4/Action/Entity/Get.php index 457e11f67f..bf7fd148c6 100644 --- a/Civi/Api4/Action/Entity/Get.php +++ b/Civi/Api4/Action/Entity/Get.php @@ -44,6 +44,7 @@ class Get extends \Civi\Api4\Generic\BasicGetAction { */ protected function getRecords() { $entities = []; + $toGet = $this->_itemsToGet('name'); $locations = array_merge([\Civi::paths()->getPath('[civicrm.root]/Civi.php')], array_column(\CRM_Extension_System::singleton()->getMapper()->getActiveModuleFiles(), 'filePath') ); @@ -53,17 +54,22 @@ class Get extends \Civi\Api4\Generic\BasicGetAction { foreach (glob("$dir/*.php") as $file) { $matches = []; preg_match('/(\w*).php/', $file, $matches); - $entity = ['name' => $matches[1]]; - if ($this->_isFieldSelected('description') || $this->_isFieldSelected('comment')) { - $this->addDocs($entity); + if ( + (!$toGet || in_array($matches[1], $toGet)) + && is_a('\Civi\Api4\\' . $matches[1], '\Civi\Api4\Generic\AbstractEntity', TRUE) + ) { + $entity = ['name' => $matches[1]]; + if ($this->_isFieldSelected('description') || $this->_isFieldSelected('comment')) { + $this->addDocs($entity); + } + $entities[$matches[1]] = $entity; } - $entities[$matches[1]] = $entity; } } } - unset($entities['CustomValue']); - if ($this->includeCustom) { + // Fetch custom entities unless we've already fetched everything requested + if ($this->includeCustom && (!$toGet || array_diff($toGet, array_keys($entities)))) { $this->addCustomEntities($entities); }