Skip to content
Snippets Groups Projects
Commit 906a7854 authored by Stein Magne Bjorklund's avatar Stein Magne Bjorklund
Browse files

fix module loader

parent 04112302
No related branches found
No related tags found
No related merge requests found
This commit is part of merge request !16. Comments created here will be created in the context of that merge request.
......@@ -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 '';
......
......@@ -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);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment