From 906a785462f6e4ac27e57377951d43a19a23b84a Mon Sep 17 00:00:00 2001 From: Stein Magne Bjorklund <steinmb@smbjorklund.com> Date: Mon, 20 Sep 2021 15:18:21 +0200 Subject: [PATCH] fix module loader --- classes/LoadModules.php | 22 +++++----------------- index.php | 22 +++++++++++++--------- 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/classes/LoadModules.php b/classes/LoadModules.php index ad96343a..b15ccbd0 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 5e83b129..abc16855 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); -- GitLab