Selaa lähdekoodia

Pass Router parameter to module content method

tags/2019.12
Hypolite Petovan 3 kuukautta sitten
vanhempi
commit
134d6d18f9
6 muutettua tiedostoa jossa 25 lisäystä ja 20 poistoa
  1. +8
    -0
      src/App/Module.php
  2. +1
    -1
      src/App/Page.php
  3. +12
    -15
      src/App/Router.php
  4. +1
    -1
      static/dependencies.config.php
  5. +1
    -1
      tests/src/App/ModuleTest.php
  6. +2
    -2
      tests/src/App/RouterTest.php

+ 8
- 0
src/App/Module.php Näytä tiedosto

@@ -94,6 +94,14 @@ class Module
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

+ 1
- 1
src/App/Page.php Näytä tiedosto

@@ -308,7 +308,7 @@ class Page implements ArrayAccess
$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) {

+ 12
- 15
src/App/Router.php Näytä tiedosto

@@ -65,12 +65,21 @@ class Router
*
* @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);
@@ -80,10 +89,6 @@ class Router
throw new HTTPException\InternalServerErrorException("Wrong route config for route '" . print_r($route, true) . "'");
}
}

$this->routeCollector = $routeCollector;

return $this;
}

/**
@@ -96,15 +101,7 @@ class Router
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);
});
}

@@ -174,7 +171,7 @@ class Router

$cmd = '/' . ltrim($cmd, '/');

$dispatcher = new \FastRoute\Dispatcher\GroupCountBased($this->routeCollector->getData());
$dispatcher = new Dispatcher\GroupCountBased($this->routeCollector->getData());

$moduleClass = null;
$this->parameters = [];

+ 1
- 1
static/dependencies.config.php Näytä tiedosto

@@ -171,7 +171,7 @@ return [
$_SERVER, null
],
'call' => [
['addRoutes', [include __DIR__ . '/routes.config.php'], Dice::CHAIN_CALL],
['loadRoutes', [include __DIR__ . '/routes.config.php'], Dice::CHAIN_CALL],
],
],
L10n::class => [

+ 1
- 1
tests/src/App/ModuleTest.php Näytä tiedosto

@@ -152,7 +152,7 @@ class ModuleTest extends DatabaseTest
$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);


+ 2
- 2
tests/src/App/RouterTest.php Näytä tiedosto

@@ -159,7 +159,7 @@ class RouterTest extends TestCase
{
$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'));
@@ -174,7 +174,7 @@ class RouterTest extends TestCase
{
$router = (new Router([
'REQUEST_METHOD' => Router::POST
]))->addRoutes($routes);
]))->loadRoutes($routes);

// Don't find GET
$this->assertEquals(Module\NodeInfo::class, $router->getModuleClass('/post/it'));

Loading…
Peruuta
Tallenna