From 755bab393ec776758db800635437ed96e2d020c2 Mon Sep 17 00:00:00 2001 From: Ivo Valchev Date: Fri, 29 May 2020 16:04:27 +0200 Subject: [PATCH] Forbid templateselect inside collection. Fix forbidden fields check. --- src/Configuration/Parser/ContentTypesParser.php | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/Configuration/Parser/ContentTypesParser.php b/src/Configuration/Parser/ContentTypesParser.php index 68fbb472d..bf9b189dc 100644 --- a/src/Configuration/Parser/ContentTypesParser.php +++ b/src/Configuration/Parser/ContentTypesParser.php @@ -325,7 +325,7 @@ private function parseField($key, &$field, $acceptFileTypes, &$currentGroup): vo */ private function parseFieldRepeaters(FieldType $repeater, $acceptFileTypes, $currentGroup): ?FieldType { - $blacklist = ['repeater', 'slug', 'templatefield']; + $blacklist = ['repeater', 'slug', 'templatefield', 'templateselect']; $whitelist = ['collection', 'set']; if (! isset($repeater['fields']) || ! is_array($repeater['fields']) || ! in_array($repeater['type'], $whitelist, true)) { @@ -335,18 +335,16 @@ private function parseFieldRepeaters(FieldType $repeater, $acceptFileTypes, $cur $parsedRepeaterFields = []; foreach ($repeater['fields'] as $repeaterKey => $repeaterField) { - if (! isset($repeaterField['type']) || in_array($repeaterField['type'], $blacklist, true)) { - unset($repeater['fields'][$repeaterKey]); - } - if (isset($repeaterField['fields'])) { $repeaterField = new FieldType($repeaterField, $repeaterKey); $this->parseFieldRepeaters($repeaterField, $acceptFileTypes, $currentGroup); - } else { - $this->parseField($repeaterKey, $repeaterField, $acceptFileTypes, $currentGroup); } - $parsedRepeaterFields[$repeaterKey] = $repeaterField; + $this->parseField($repeaterKey, $repeaterField, $acceptFileTypes, $currentGroup); + + if (isset($repeaterField['type']) && ! in_array($repeaterField['type'], $blacklist, true)) { + $parsedRepeaterFields[$repeaterKey] = $repeaterField; + } } $repeater['fields'] = $parsedRepeaterFields;