Skip to content

Commit

Permalink
Fixed issue with grouping
Browse files Browse the repository at this point in the history
  • Loading branch information
kisztof committed Jul 18, 2023
1 parent ac18a71 commit 96020b1
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 9 deletions.
20 changes: 11 additions & 9 deletions src/lib/Repository/NameSchema/NameSchemaService.php
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,9 @@ public function resolveUrlAliasSchema(Content $content, ContentType $contentType
{
$contentType ??= $content->getContentType();
$schemaName = $contentType->urlAliasSchema ?: $contentType->nameSchema;
[$filteredNameSchema, $groupLookupTable] = $this->filterNameSchema($schemaName);
$schemaIdentifiers = $this->schemaIdentifierExtractor->extract($schemaName);
$tokens = $this->extractTokens($filteredNameSchema);

/** @var \Ibexa\Contracts\Core\Event\ResolveUrlAliasSchemaEvent $event */
$event = $this->eventDispatcher->dispatch(
Expand All @@ -92,17 +94,17 @@ public function resolveUrlAliasSchema(Content $content, ContentType $contentType
$content
)
);

$names = [];
$tokens = $event->getTokenValues();
$extractedTokens = $this->extractTokens($schemaName);
foreach ($tokens as $languageCode => $tokenValues) {
$schema = $schemaName;
foreach ($extractedTokens as $extractedToken) {
$name = $this->resolveToken($extractedToken, $tokenValues, []);
$schema = str_replace($extractedToken, $name, $schema);
$tokenValues = $event->getTokenValues();
foreach ($tokenValues as $languageCode => $tokenValue) {
$name = $filteredNameSchema;
foreach ($tokens as $token) {
$string = $this->resolveToken($token, $tokenValue, $groupLookupTable);
$name = str_replace($token, $string, $name);
}
$names[$languageCode] = $schema;
$name = $this->validateNameLength($name);

$names[$languageCode] = $name;
}

return $names;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,15 @@ public function getDataForTestExtract(): iterable
'custom' => ['bar'],
],
];

$schemaString = '<specification|(<name> <image1>)-(<custom:bar(|baz|bar)>)-<field:bar|baz>';
yield $schemaString => [
$schemaString,
[
'field' => ['specification', 'name', 'image1', 'baz', 'bar'],
'custom' => ['bar'],
],
];
}

protected function setUp(): void
Expand Down

0 comments on commit 96020b1

Please sign in to comment.