fixed submodule routing
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user