Afform.get - Return computed fields, `has_local` and `has_packaged`
[civicrm-core.git] / ext / afform / core / Civi / Api4 / Action / Afform / Get.php
CommitLineData
11e724f0
TO
1<?php
2
3namespace Civi\Api4\Action\Afform;
4
11e724f0 5/**
28b4ace4 6 * @inheritDoc
11e724f0
TO
7 * @package Civi\Api4\Action\Afform
8 */
28b4ace4 9class Get extends \Civi\Api4\Generic\BasicGetAction {
11e724f0 10
28b4ace4 11 use \Civi\Api4\Utils\AfformFormatTrait;
11e724f0
TO
12
13 public function getRecords() {
14 /** @var \CRM_Afform_AfformScanner $scanner */
15 $scanner = \Civi::service('afform_scanner');
16
f2f9e95d 17 $names = $this->_itemsToGet('name') ?? array_keys($scanner->findFilePaths());
11e724f0
TO
18
19 $values = [];
20 foreach ($names as $name) {
21 $record = $scanner->getMeta($name);
10fd70a3 22 $record = array_merge($record, $scanner->getComputedFields($name));
50868e8d 23 $layout = $this->_isFieldSelected('layout') ? $scanner->getLayout($name) : NULL;
bebb3e59
TO
24 if ($layout !== NULL) {
25 // FIXME check for validity?
26 $record['layout'] = $this->convertHtmlToOutput($layout);
11e724f0
TO
27 }
28 $values[] = $record;
29 }
30
31 return $values;
32 }
33
34}