diff --git a/classes/LoadModules.php b/classes/LoadModules.php index ad96343ad63e091a8588c101972c9e387ee8dacb..b15ccbd0845b982fb4b64f1005870fde6898129d 100644 --- a/classes/LoadModules.php +++ b/classes/LoadModules.php @@ -2,18 +2,8 @@ namespace uib\ub\loadspeakr; -use \uib\ub\loadspeakr\modules; -use uib\ub\loadspeakr\modules\AdminModule; -use uib\ub\loadspeakr\modules\ExportModule; use uib\ub\loadspeakr\modules\ModuleInterface; -use uib\ub\loadspeakr\modules\RedirectModule; -use uib\ub\loadspeakr\modules\ServiceModule; -use uib\ub\loadspeakr\modules\SessionModule; -use uib\ub\loadspeakr\modules\SparqlFilterModule; -use uib\ub\loadspeakr\modules\StaticModule; -use uib\ub\loadspeakr\modules\TypeModule; use uib\ub\loadspeakr\modules\UnknownModule; -use uib\ub\loadspeakr\modules\UriModule; final class LoadModules { @@ -26,12 +16,10 @@ final class LoadModules public function loadModule(string $uri): ModuleInterface { - - $module = ucfirst($uri) . 'Module'; - $className = $this->loadClass($module); + $className = $this->loadClass($uri); $unknown = new UnknownModule(); - switch ($className) { + switch ($uri) { case 'admin': return new $className(); case 'redirect': @@ -60,13 +48,13 @@ final class LoadModules private function loadClass($module): string { if (!$this->moduleAvailable($module)) { - return ''; + HTTPStatus::send500('Module: ' . $module . ' not found.'); } $className = ucfirst($module) . 'Module'; - if (class_exists($className)) { - return $className; + if (file_exists(__DIR__ . '/modules/' . $className . '.php')) { + return __NAMESPACE__ . '\\modules\\' . $className; } return ''; diff --git a/index.php b/index.php index 5e83b129a1f0c2f4d8a90095429ae274cee03fcf..abc168558a8a16a695ffbdd925be7374dfe74c90 100644 --- a/index.php +++ b/index.php @@ -71,17 +71,21 @@ $uri = Utils::getMirroredUri($localUri); */ foreach ($conf['modules']['available'] as $loadspkrModule) { $loader = new LoadModules($conf); - $module = $loader->loadModule($uri); + $module = $loader->loadModule($loadspkrModule); $matching = $module->match($uri); - if (!$matching) { - HTTPStatus::send404($uri); - } - - $module->execute($matching); + if ($matching) { + $module->execute($matching); + if ($conf['logfile'] !== null) { + fwrite($conf['logfile'], "]}"); + fclose($conf['logfile']); + } - if ($conf['logfile'] !== null) { - fwrite($conf['logfile'], "]}"); - fclose($conf['logfile']); + /** + * Only run first Loadspeakr modules that matches. + */ + exit(0); } } + +HTTPStatus::send404($uri);