From b2a86c7df7d5a473e80034832a01b21444fa50e6 Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Sun, 6 Mar 2022 00:48:14 +0100 Subject: Refactor --- src/Builder.php | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/Builder.php (limited to 'src/Builder.php') diff --git a/src/Builder.php b/src/Builder.php new file mode 100644 index 0000000..308fa82 --- /dev/null +++ b/src/Builder.php @@ -0,0 +1,80 @@ +formPath . '/fields/_fields.toml'); + $fields = []; + + // if a page is requested + if ($page) { + if (! isset($parsed['page'])) { + throw new \Exception('Form has no pages'); + } + + if (! isset($parsed['page'][$page])) { + throw new \Exception('Form has no page ' . $page); + } + + $fields = $this->buildSinglePageFields($parsed['page'][$page]); + } + + // else get all fields + else { + // if form is paged + if (isset($parsed['page'])) { + $pages = $parsed['page']; + foreach ($pages as $pageKey => $pageFields) { + $fields[$pageKey] = $this->buildSinglePageFields($pageFields); + } + } + + // if form is not paged + else { + foreach ($parsed['field'] as $key => $field) { + $fields[$key] = $this->buildSingleField($key, $field); + } + } + } + + return $fields; + } + + public function buildSinglePageFields(array $pageFields): array + { + $fields = []; + + if (! empty($pageFields['file'])) { + $pageFields = array_replace_recursive($pageFields, Toml::parseFile($this->formPath . '/fields/' . $pageFields['file'])); + } + + foreach ($pageFields['field'] as $key => $field) { + $fields[$key] = $this->buildSingleField($key, $field); + } + + return $fields; + } + + public function buildSingleField(string $key, array $field): array + { + if (! empty($field['file'])) { + $field = array_replace_recursive($field, Toml::parseFile($this->formPath . '/fields/' . $field['file'])); + } + + if (empty($field['name'])) { + $field['name'] = $key; + } + + return $field; + } +} -- cgit v1.2.3