X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=Civi%2FApi4%2FEntity.php;h=3d362edfe930e9bc4bec7fcb5002561152cb9c97;hb=34751e696143159f20566d1f8ec0ed619e8ce0ce;hp=915e739d50466c77431c4c5236d26c5826a229fd;hpb=e01b30d70a0f19839d0c0f0e2f2213d85f4fea0b;p=civicrm-core.git diff --git a/Civi/Api4/Entity.php b/Civi/Api4/Entity.php index 915e739d50..3d362edfe9 100644 --- a/Civi/Api4/Entity.php +++ b/Civi/Api4/Entity.php @@ -35,7 +35,7 @@ class Entity extends Generic\AbstractEntity { * @return Generic\BasicGetFieldsAction */ public static function getFields($checkPermissions = TRUE) { - return (new Generic\BasicGetFieldsAction('Entity', __FUNCTION__, function() { + return (new Generic\BasicGetFieldsAction('Entity', __FUNCTION__, function(Generic\BasicGetFieldsAction $getFields) { return [ [ 'name' => 'name', @@ -53,15 +53,7 @@ class Entity extends Generic\AbstractEntity { 'name' => 'type', 'data_type' => 'Array', 'description' => 'Base class for this entity', - 'options' => [ - 'AbstractEntity' => 'AbstractEntity', - 'DAOEntity' => 'DAOEntity', - 'CustomValue' => 'CustomValue', - 'BasicEntity' => 'BasicEntity', - 'SortableEntity' => 'SortableEntity', - 'ManagedEntity' => 'ManagedEntity', - 'EntityBridge' => 'EntityBridge', - ], + 'options' => $getFields->getLoadOptions() ? self::getEntityTypes() : TRUE, ], [ 'name' => 'description', @@ -169,4 +161,20 @@ class Entity extends Generic\AbstractEntity { ]; } + /** + * Collect the 'type' values from every entity. + * + * @return array + */ + private static function getEntityTypes() { + $provider = \Civi::service('action_object_provider'); + $entityTypes = []; + foreach ($provider->getEntities() as $entity) { + foreach ($entity['type'] ?? [] as $type) { + $entityTypes[$type] = $type; + } + } + return $entityTypes; + } + }