This commit is contained in:
team 1
2026-05-06 16:58:01 +02:00
parent 9731880cd3
commit 81ae3c3902
6 changed files with 2011 additions and 71 deletions

View File

@@ -43,6 +43,27 @@ final class GenreConfig
return is_array($surface) ? $surface : [];
}
/**
* @return array<string, mixed>
*/
public function getConfigurationValues(): array
{
$values = $this->value('configuration_values', []);
return is_array($values) ? $values : [];
}
/**
* @return array<string, mixed>
*/
public function getConfigurationValueGroup(string $group): array
{
$values = $this->getConfigurationValues();
$groupValues = $values[$group] ?? [];
return is_array($groupValues) ? $groupValues : [];
}
/**
* @return array<string, mixed>
*/

View File

@@ -448,6 +448,7 @@ final readonly class RetriexEffectiveConfigProvider
'mode' => $this->genreConfig->getMode(),
'description' => $this->genreConfig->getDescription(),
'adaptation_surface' => $this->genreConfig->getAdaptationSurface(),
'configuration_values' => $this->genreConfig->getConfigurationValues(),
];
}
@@ -1160,6 +1161,33 @@ final readonly class RetriexEffectiveConfigProvider
}
}
}
$configurationValues = $genre['configuration_values'] ?? null;
if (!is_array($configurationValues) || $configurationValues === []) {
$errors[] = 'genre.configuration_values must be a non-empty map.';
return;
}
foreach ($configurationValues as $group => $valueDefinition) {
if (!is_string($group) || trim($group) === '') {
$errors[] = 'genre.configuration_values keys must be non-empty strings.';
continue;
}
if (!is_array($valueDefinition) || $valueDefinition === []) {
$errors[] = sprintf('genre.configuration_values.%s must be a non-empty map.', $group);
}
}
foreach (array_keys($surface) as $group) {
if (!is_string($group) || $group === '') {
continue;
}
if (!array_key_exists($group, $configurationValues)) {
$warnings[] = sprintf('genre.configuration_values is missing value group for adaptation_surface.%s.', $group);
}
}
}
/**