Skip to content

Commit 953ee51

Browse files
Merge pull request #6620 from christianbeeznest/storm-22851
Admin: Ignore null settings before resolve - refs BT#22851
2 parents b09bad2 + b4fa69f commit 953ee51

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

src/CoreBundle/Settings/CatalogSettingsSchema.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,18 @@ public function buildForm(FormBuilderInterface $builder): void
4343
{
4444
$builder
4545
->add('course_catalog_settings', TextareaType::class, [
46-
'attr' => ['rows' => 10],
46+
'attr' => ['rows' => 10, 'cols' => 100],
4747
])
4848
->add('session_catalog_settings', TextareaType::class, [
49-
'attr' => ['rows' => 5],
49+
'attr' => ['rows' => 8, 'cols' => 100],
5050
])
5151
->add('show_courses_descriptions_in_catalog', YesNoType::class)
5252
->add('course_catalog_published', YesNoType::class)
5353
->add('course_catalog_display_in_home', YesNoType::class)
5454
->add('hide_public_link', YesNoType::class)
5555
->add('only_show_selected_courses', YesNoType::class)
5656
->add('only_show_course_from_selected_category', TextareaType::class, [
57-
'attr' => ['rows' => 3, 'style' => 'font-family: monospace;'],
57+
'attr' => ['rows' => 10, 'cols' => 100, 'style' => 'font-family: monospace;'],
5858
])
5959
->add('allow_students_to_browse_courses', YesNoType::class)
6060
->add('course_catalog_hide_private', YesNoType::class)

src/CoreBundle/Settings/SettingsManager.php

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@ public function loadAll(): void
225225
}
226226
}
227227

228+
$knownParameters = $this->normalizeNullsBeforeResolve($knownParameters, $settingsBuilder);
228229
$parameters = $settingsBuilder->resolve($knownParameters);
229230
$settings->setParameters($parameters);
230231
$schemaList[$name] = $settings;
@@ -268,7 +269,7 @@ public function load(string $schemaAlias, ?string $namespace = null, bool $ignor
268269
$parameters[$parameter] = $transformer->reverseTransform($parameters[$parameter]);
269270
}
270271
}
271-
272+
$parameters = $this->normalizeNullsBeforeResolve($parameters, $settingsBuilder);
272273
$parameters = $settingsBuilder->resolve($parameters);
273274
$settings->setParameters($parameters);
274275

@@ -284,7 +285,9 @@ public function update(SettingsInterface $settings): void
284285

285286
$settingsBuilder = new SettingsBuilder();
286287
$schema->buildSettings($settingsBuilder);
287-
$parameters = $settingsBuilder->resolve($settings->getParameters());
288+
$raw = $settings->getParameters();
289+
$raw = $this->normalizeNullsBeforeResolve($raw, $settingsBuilder);
290+
$parameters = $settingsBuilder->resolve($raw);
288291
// Transform value. Example array to string using transformer. Example:
289292
// 1. Setting "tool_visible_by_default_at_creation" it's a multiple select
290293
// 2. Is defined as an array in class DocumentSettingsSchema
@@ -346,7 +349,9 @@ public function save(SettingsInterface $settings): void
346349

347350
$settingsBuilder = new SettingsBuilder();
348351
$schema->buildSettings($settingsBuilder);
349-
$parameters = $settingsBuilder->resolve($settings->getParameters());
352+
$raw = $settings->getParameters();
353+
$raw = $this->normalizeNullsBeforeResolve($raw, $settingsBuilder);
354+
$parameters = $settingsBuilder->resolve($raw);
350355
// Transform value. Example array to string using transformer. Example:
351356
// 1. Setting "tool_visible_by_default_at_creation" it's a multiple select
352357
// 2. Is defined as an array in class DocumentSettingsSchema
@@ -1017,4 +1022,14 @@ private function transformToString($value): string
10171022

10181023
return (string) $value;
10191024
}
1025+
1026+
private function normalizeNullsBeforeResolve(array $parameters, SettingsBuilder $settingsBuilder): array
1027+
{
1028+
foreach ($parameters as $k => $v) {
1029+
if ($v === null && $settingsBuilder->isDefined($k)) {
1030+
unset($parameters[$k]);
1031+
}
1032+
}
1033+
return $parameters;
1034+
}
10201035
}

0 commit comments

Comments
 (0)