return $this->module_class;
}
+ /**
+ * @return array The module parameters extracted from the route
+ */
+ public function getParameters()
+ {
+ return $this->module_parameters;
+ }
+
/**
* @return bool True, if the current module is a backend module
* @see Module::BACKEND_MODULES for a list
$arr = ['content' => $content];
Hook::callAll($moduleClass . '_mod_content', $arr);
$content = $arr['content'];
- $arr = ['content' => call_user_func([$moduleClass, 'content'], [])];
+ $arr = ['content' => call_user_func([$moduleClass, 'content'], $module->getParameters())];
Hook::callAll($moduleClass . '_mod_aftercontent', $arr);
$content .= $arr['content'];
} catch (HTTPException $e) {
*
* @throws HTTPException\InternalServerErrorException In case of invalid configs
*/
- public function addRoutes(array $routes)
+ public function loadRoutes(array $routes)
{
$routeCollector = (isset($this->routeCollector) ?
$this->routeCollector :
new RouteCollector(new Std(), new GroupCountBased()));
+ $this->addRoutes($routeCollector, $routes);
+
+ $this->routeCollector = $routeCollector;
+
+ return $this;
+ }
+
+ private function addRoutes(RouteCollector $routeCollector, array $routes)
+ {
foreach ($routes as $route => $config) {
if ($this->isGroup($config)) {
$this->addGroup($route, $config, $routeCollector);
throw new HTTPException\InternalServerErrorException("Wrong route config for route '" . print_r($route, true) . "'");
}
}
-
- $this->routeCollector = $routeCollector;
-
- return $this;
}
/**
private function addGroup(string $groupRoute, array $routes, RouteCollector $routeCollector)
{
$routeCollector->addGroup($groupRoute, function (RouteCollector $routeCollector) use ($routes) {
- foreach ($routes as $route => $config) {
- if ($this->isGroup($config)) {
- $this->addGroup($route, $config, $routeCollector);
- } elseif ($this->isRoute($config)) {
- $routeCollector->addRoute($config[1], $route, $config[0]);
- }else {
- throw new HTTPException\InternalServerErrorException("Wrong route config for route '" . print_r($route, true) . "'");
- }
- }
+ $this->addRoutes($routeCollector, $routes);
});
}
$cmd = '/' . ltrim($cmd, '/');
- $dispatcher = new \FastRoute\Dispatcher\GroupCountBased($this->routeCollector->getData());
+ $dispatcher = new Dispatcher\GroupCountBased($this->routeCollector->getData());
$moduleClass = null;
$this->parameters = [];
$_SERVER, null
],
'call' => [
- ['addRoutes', [include __DIR__ . '/routes.config.php'], Dice::CHAIN_CALL],
+ ['loadRoutes', [include __DIR__ . '/routes.config.php'], Dice::CHAIN_CALL],
],
],
L10n::class => [
$config = \Mockery::mock(Configuration::class);
$config->shouldReceive('get')->with('config', 'private_addons', false)->andReturn($privAdd)->atMost()->once();
- $router = (new App\Router([]))->addRoutes(include __DIR__ . '/../../../static/routes.config.php');
+ $router = (new App\Router([]))->loadRoutes(include __DIR__ . '/../../../static/routes.config.php');
$module = (new App\Module($name))->determineClass(new App\Arguments('', $command), $router, $config);
{
$router = (new Router([
'REQUEST_METHOD' => Router::GET
- ]))->addRoutes($routes);
+ ]))->loadRoutes($routes);
$this->assertEquals(Module\Home::class, $router->getModuleClass('/'));
$this->assertEquals(Module\Friendica::class, $router->getModuleClass('/group/route'));
{
$router = (new Router([
'REQUEST_METHOD' => Router::POST
- ]))->addRoutes($routes);
+ ]))->loadRoutes($routes);
// Don't find GET
$this->assertEquals(Module\NodeInfo::class, $router->getModuleClass('/post/it'));