fixed submodule routing

This commit is contained in:
Luca Haid
2026-01-18 20:02:40 +00:00

View File

@@ -398,21 +398,31 @@ class MobileAppController extends mfBaseController {
* /MobileApp/{module}/{submodule}/{endpoint}
*/
protected function handleApiCall($module, $submodule, $endpoint) {
// Normalize names
$moduleName = ucfirst(strtolower($module));
$submoduleName = ucfirst(strtolower($submodule));
// Check authentication for API calls
if (!$this->user || !$this->user->id) {
self::returnJson(['success' => false, 'error' => 'Not authenticated'], 401);
return;
}
// Find module directory (case-insensitive)
$moduleName = $this->findModuleDirectory(APPDIR . "MobileApp/Modules", $module);
if (!$moduleName) {
self::returnJson(['success' => false, 'error' => "Module not found: {$module}"], 404);
return;
}
// Find submodule directory (case-insensitive)
$submoduleName = $this->findModuleDirectory(APPDIR . "MobileApp/Modules/{$moduleName}", $submodule);
if (!$submoduleName) {
self::returnJson(['success' => false, 'error' => "Submodule not found: {$module}/{$submodule}"], 404);
return;
}
// Build handler path
$handlerFile = APPDIR . "MobileApp/Modules/{$moduleName}/{$submoduleName}/{$submoduleName}Handler.php";
if (!file_exists($handlerFile)) {
self::returnJson(['success' => false, 'error' => "Module not found: {$moduleName}/{$submoduleName}"], 404);
self::returnJson(['success' => false, 'error' => "Handler not found: {$moduleName}/{$submoduleName}"], 404);
return;
}
@@ -445,4 +455,20 @@ class MobileAppController extends mfBaseController {
self::returnJson(['success' => false, 'error' => "Endpoint not found: {$endpoint}"], 404);
}
/**
* Find directory with case-insensitive matching
* Required for Linux compatibility where filesystem is case-sensitive
*/
protected function findModuleDirectory($basePath, $name) {
if (!is_dir($basePath)) return null;
$dirs = scandir($basePath);
foreach ($dirs as $dir) {
if ($dir === '.' || $dir === '..') continue;
if (strtolower($dir) === strtolower($name) && is_dir($basePath . '/' . $dir)) {
return $dir;
}
}
return null;
}
}