Skip to content

Commit 2f7038d

Browse files
Admin: Guard unknown settings categories
1 parent e11f6b6 commit 2f7038d

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

src/CoreBundle/Controller/Admin/SettingsController.php

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,16 @@ public function searchSetting(Request $request, AccessUrlHelper $accessUrlHelper
106106
$templateMapByCategory[$category][$var] = $templateMap[$var];
107107
}
108108
}
109-
$settings = $manager->load($category);
109+
110+
// Convert category to schema alias and validate it BEFORE loading/creating the form
110111
$schemaAlias = $manager->convertNameSpaceToService($category);
112+
113+
// skip unknown/legacy categories (e.g., "tools")
114+
if (!isset($schemas[$schemaAlias])) {
115+
continue;
116+
}
117+
118+
$settings = $manager->load($category);
111119
$form = $this->getSettingsFormFactory()->create($schemaAlias);
112120

113121
foreach (array_keys($settings->getParameters()) as $name) {
@@ -147,6 +155,17 @@ public function updateSetting(Request $request, AccessUrlHelper $accessUrlHelper
147155
$schemaAlias = $manager->convertNameSpaceToService($namespace);
148156

149157
$keyword = (string) $request->query->get('keyword', '');
158+
159+
// Validate schema BEFORE load/create to avoid NonExistingServiceException
160+
$schemas = $manager->getSchemas();
161+
if (!isset($schemas[$schemaAlias])) {
162+
$this->addFlash('warning', sprintf('Unknown settings category "%s". Showing Platform settings.', $namespace));
163+
164+
return $this->redirectToRoute('chamilo_platform_settings', [
165+
'namespace' => 'platform',
166+
]);
167+
}
168+
150169
$settings = $manager->load($namespace);
151170

152171
$form = $this->getSettingsFormFactory()->create(
@@ -193,7 +212,6 @@ public function updateSetting(Request $request, AccessUrlHelper $accessUrlHelper
193212
]);
194213
}
195214

196-
$schemas = $manager->getSchemas();
197215
[$ordered, $labelMap] = $this->computeOrderedNamespacesByTranslatedLabel($schemas, $request);
198216

199217
$templateMap = [];

0 commit comments

Comments
 (0)