From 8bb7e6ca6da569883bdb28272d0e9ad6681b476e Mon Sep 17 00:00:00 2001 From: colemanw Date: Mon, 21 Aug 2023 13:56:19 -0400 Subject: [PATCH] Afform - Enhance returned values from AfformSubmission.afform_name options list --- .../core/CRM/Afform/BAO/AfformSubmission.php | 26 ++++++++++--- .../Provider/AfformSubmissionSpecProvider.php | 37 +++++++++++++++++++ .../Civi/Afform/AfformSubmissionTest.php | 24 ++++++++++++ 3 files changed, 82 insertions(+), 5 deletions(-) create mode 100644 ext/afform/core/Civi/Api4/Service/Spec/Provider/AfformSubmissionSpecProvider.php create mode 100644 ext/afform/core/tests/phpunit/Civi/Afform/AfformSubmissionTest.php diff --git a/ext/afform/core/CRM/Afform/BAO/AfformSubmission.php b/ext/afform/core/CRM/Afform/BAO/AfformSubmission.php index 6985388f71..5d44252a86 100644 --- a/ext/afform/core/CRM/Afform/BAO/AfformSubmission.php +++ b/ext/afform/core/CRM/Afform/BAO/AfformSubmission.php @@ -8,12 +8,28 @@ class CRM_Afform_BAO_AfformSubmission extends CRM_Afform_DAO_AfformSubmission { * @return array */ public static function getAllAfformsByName() { - return \Civi\Api4\Afform::get(FALSE) - ->addSelect('name', 'title') + $suffixMap = [ + 'id' => 'name', + 'name' => 'module_name', + 'abbr' => 'directive_name', + 'label' => 'title', + 'description' => 'description', + 'icon' => 'icon', + 'url' => 'server_route', + ]; + $afforms = \Civi\Api4\Afform::get(FALSE) + ->setSelect(array_values($suffixMap)) ->addOrderBy('title') - ->execute() - ->indexBy('name') - ->column('title'); + ->execute(); + $result = []; + foreach ($afforms as $afform) { + $formattedAfform = []; + foreach ($suffixMap as $suffix => $field) { + $formattedAfform[$suffix] = $afform[$field] ?? NULL; + } + $result[] = $formattedAfform; + } + return $result; } } diff --git a/ext/afform/core/Civi/Api4/Service/Spec/Provider/AfformSubmissionSpecProvider.php b/ext/afform/core/Civi/Api4/Service/Spec/Provider/AfformSubmissionSpecProvider.php new file mode 100644 index 0000000000..a43f5ed0c3 --- /dev/null +++ b/ext/afform/core/Civi/Api4/Service/Spec/Provider/AfformSubmissionSpecProvider.php @@ -0,0 +1,37 @@ +getFieldByName('afform_name')->setSuffixes(['name', 'label', 'description', 'abbr', 'icon', 'url']); + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return $entity === 'AfformSubmission'; + } + +} diff --git a/ext/afform/core/tests/phpunit/Civi/Afform/AfformSubmissionTest.php b/ext/afform/core/tests/phpunit/Civi/Afform/AfformSubmissionTest.php new file mode 100644 index 0000000000..90f8d332b7 --- /dev/null +++ b/ext/afform/core/tests/phpunit/Civi/Afform/AfformSubmissionTest.php @@ -0,0 +1,24 @@ +install(['org.civicrm.search_kit', 'org.civicrm.afform', 'org.civicrm.afform_admin'])->apply(); + } + + public function testGetFields():void { + $fields = AfformSubmission::getFields(FALSE) + ->setAction('get') + ->execute()->indexBy('name'); + $this->assertTrue($fields['afform_name']['options']); + $this->assertEquals(['name', 'label', 'description', 'abbr', 'icon', 'url'], $fields['afform_name']['suffixes']); + } + +} -- 2.25.1