diff --git a/src/lib/Repository/NameSchema/NameSchemaService.php b/src/lib/Repository/NameSchema/NameSchemaService.php index 782a154191..f1d9459638 100644 --- a/src/lib/Repository/NameSchema/NameSchemaService.php +++ b/src/lib/Repository/NameSchema/NameSchemaService.php @@ -251,6 +251,11 @@ protected function filterNameSchema(string $nameSchema): array if ($foundGroups) { $i = 0; foreach ($groupArray[1] as $group) { + // Skip the group if it has no fields to parse + if (!preg_match('/<.*>/', $group)) { + continue; + } + // Create meta-token for group $metaToken = self::META_STRING . $i; diff --git a/tests/lib/Repository/NameSchema/NameSchemaServiceTest.php b/tests/lib/Repository/NameSchema/NameSchemaServiceTest.php index 95c9d6a820..1f98c65aa5 100644 --- a/tests/lib/Repository/NameSchema/NameSchemaServiceTest.php +++ b/tests/lib/Repository/NameSchema/NameSchemaServiceTest.php @@ -76,13 +76,13 @@ public static function getDataForTestResolveNameSchema(): iterable yield 'Default: Field Map and Languages taken from Content Version' => [ [], [ - 'eng-GB' => ['text2' => 'two'], - 'cro-HR' => ['text2' => 'dva'], + 'eng-GB' => ['text1' => 'one', 'text2' => 'two'], + 'cro-HR' => ['text1' => 'jedan', 'text2' => 'dva'], ], [], [ - 'eng-GB' => 'two', - 'cro-HR' => 'dva', + 'eng-GB' => 'one - two (testString)', + 'cro-HR' => 'jedan - dva (testString)', ], ]; @@ -98,8 +98,8 @@ public static function getDataForTestResolveNameSchema(): iterable ], ['eng-GB', 'cro-HR'], [ - 'eng-GB' => 'three', - 'cro-HR' => 'Dva', + 'eng-GB' => 'three (testString)', + 'cro-HR' => ' - Dva (testString)', ], ]; } @@ -119,11 +119,11 @@ public function testResolveNameSchema( array $expectedNames ): void { $content = $this->buildTestContentObject(); - $nameSchema = ''; + $nameSchema = ' - )> (testString)'; $contentType = $this->buildTestContentTypeStub($nameSchema, $nameSchema); $event = new ResolveContentNameSchemaEvent( $content, - ['field' => ['text3', 'text2']], + ['field' => ['text3', 'text2', 'text1']], $contentType, $fieldMap, $languageCodes