X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=Civi%2FApi4%2FEntity.php;h=3d362edfe930e9bc4bec7fcb5002561152cb9c97;hb=34751e696143159f20566d1f8ec0ed619e8ce0ce;hp=fbe5d75f67cd5a9afd103062eb1268c00c6a7e73;hpb=3c76945c0707947edcdf6cebd7287912977dc151;p=civicrm-core.git diff --git a/Civi/Api4/Entity.php b/Civi/Api4/Entity.php index fbe5d75f67..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', @@ -79,9 +71,13 @@ class Entity extends Generic\AbstractEntity { 'name' => 'dao', 'description' => 'Class name for dao-based entities', ], + [ + 'name' => 'table_name', + 'description' => 'Name of sql table, if applicable', + ], [ 'name' => 'primary_key', - 'type' => 'Array', + 'data_type' => 'Array', 'description' => 'Name of unique identifier field(s) (e.g. [id])', ], [ @@ -122,6 +118,11 @@ class Entity extends Generic\AbstractEntity { 'data_type' => 'String', 'description' => 'PHP class name', ], + [ + 'name' => 'class_args', + 'data_type' => 'Array', + 'description' => 'Arguments needed by php action factory functions (used when multiple entities share a class, e.g. CustomValue).', + ], [ 'name' => 'bridge', 'data_type' => 'Array', @@ -160,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; + } + }