From 25f2b36b5c35cb03f2c554291389905c905d6791 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Mon, 6 Jan 2020 17:45:01 -0500 Subject: [PATCH] Api - output module_name & directive_name --- ext/afform/core/Civi/Api4/Action/Afform/Get.php | 15 ++++++++++++++- ext/afform/core/Civi/Api4/Afform.php | 8 +++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/ext/afform/core/Civi/Api4/Action/Afform/Get.php b/ext/afform/core/Civi/Api4/Action/Afform/Get.php index 0f2dda46bd..beeca11797 100644 --- a/ext/afform/core/Civi/Api4/Action/Afform/Get.php +++ b/ext/afform/core/Civi/Api4/Action/Afform/Get.php @@ -22,14 +22,27 @@ class Get extends \Civi\Api4\Generic\BasicGetAction { $toGet = $this->_itemsToGet('name'); $names = $toGet ?? array_keys($scanner->findFilePaths()); + // Optimize lookups by module/directive name + if (!$toGet) { + $moduleNames = $this->_itemsToGet('module_name'); + $directiveNames = $this->_itemsToGet('directive_name'); + } + $values = $this->getAutoGenerated($names, $toGet, $getLayout); foreach ($names as $name) { + $info = [ + 'module_name' => _afform_angular_module_name($name, 'camel'), + 'directive_name' => _afform_angular_module_name($name, 'dash'), + ]; + if (($moduleNames && !in_array($info['module_name'], $moduleNames)) || ($directiveNames && !in_array($info['directive_name'], $directiveNames))) { + continue; + } $record = $scanner->getMeta($name); if (!$record && !isset($values[$name])) { continue; } - $values[$name] = array_merge($values[$name] ?? [], $record ?? []); + $values[$name] = array_merge($values[$name] ?? [], $record ?? [], $info); if ($getComputed) { $scanner->addComputedFields($values[$name]); } diff --git a/ext/afform/core/Civi/Api4/Afform.php b/ext/afform/core/Civi/Api4/Afform.php index f289477b8d..40dbbe7637 100644 --- a/ext/afform/core/Civi/Api4/Afform.php +++ b/ext/afform/core/Civi/Api4/Afform.php @@ -7,7 +7,7 @@ use Civi\Api4\Generic\BasicBatchAction; use Civi\Api4\Generic\BasicGetFieldsAction; /** - * Class Afform + * User-configurable forms * @package Civi\Api4 */ class Afform extends AbstractEntity { @@ -126,6 +126,12 @@ class Afform extends AbstractEntity { ]; if ($self->getAction() === 'get') { + $fields[] = [ + 'name' => 'module_name', + ]; + $fields[] = [ + 'name' => 'directive_name', + ]; $fields[] = [ 'name' => 'has_local', ]; -- 2.25.1