Skip to content

Commit

Permalink
Merge pull request #402 from skipperbent/v4-development
Browse files Browse the repository at this point in the history
Version 4.1.0.0
  • Loading branch information
skipperbent committed Apr 2, 2018
2 parents 313833d + 30a2dde commit 89be00a
Show file tree
Hide file tree
Showing 7 changed files with 235 additions and 150 deletions.
318 changes: 175 additions & 143 deletions .idea/workspace.xml

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1296,6 +1296,7 @@ All event callbacks will retrieve a `EventArgument` object as parameter. This ob
| `EVENT_ALL` | - | Fires when a event is triggered. |
| `EVENT_INIT` | - | Fires when router is initializing and before routes are loaded. |
| `EVENT_LOAD` | `loadedRoutes` | Fires when all routes has been loaded and rendered, just before the output is returned. |
| `EVENT_ADD_ROUTE` | `route` | Fires when route is added to the router. |
| `EVENT_REWRITE` | `rewriteUrl`<br>`rewriteRoute` | Fires when a url-rewrite is and just before the routes are re-initialized. |
| `EVENT_BOOT` | `bootmanagers` | Fires when the router is booting. This happens just before boot-managers are rendered and before any routes has been loaded. |
| `EVENT_RENDER_BOOTMANAGER` | `bootmanagers`<br>`bootmanager` | Fires before a boot-manager is rendered. |
Expand Down
6 changes: 6 additions & 0 deletions src/Pecee/SimpleRouter/Handlers/EventHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ class EventHandler implements IEventHandler
*/
public const EVENT_LOAD = 'onLoad';

/**
* Fires when route is added to the router
*/
public const EVENT_ADD_ROUTE = 'onAddRoute';

/**
* Fires when a url-rewrite is and just before the routes are re-initialized.
*/
Expand Down Expand Up @@ -95,6 +100,7 @@ class EventHandler implements IEventHandler
self::EVENT_ALL,
self::EVENT_INIT,
self::EVENT_LOAD,
self::EVENT_ADD_ROUTE,
self::EVENT_REWRITE,
self::EVENT_BOOT,
self::EVENT_RENDER_BOOTMANAGER,
Expand Down
7 changes: 7 additions & 0 deletions src/Pecee/SimpleRouter/Route/ILoadableRoute.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,13 @@ public function getUrl(): string;
*/
public function setUrl(string $url): self;

/**
* Prepend url
* @param string $url
* @return ILoadableRoute
*/
public function prependUrl(string $url): self;

/**
* Returns the provided name for the router.
*
Expand Down
13 changes: 12 additions & 1 deletion src/Pecee/SimpleRouter/Route/LoadableRoute.php
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,17 @@ public function setUrl(string $url): ILoadableRoute
return $this;
}

/**
* Prepend url
*
* @param string $url
* @return ILoadableRoute
*/
public function prependUrl(string $url): ILoadableRoute
{
return $this->setUrl(rtrim($url, '/') . $this->url);
}

public function getUrl(): string
{
return $this->url;
Expand Down Expand Up @@ -240,7 +251,7 @@ public function setSettings(array $values, bool $merge = false): IRoute
}

if (isset($values['prefix']) === true) {
$this->setUrl($values['prefix'] . $this->getUrl());
$this->prependUrl($values['prefix']);
}

parent::setSettings($values, $merge);
Expand Down
10 changes: 6 additions & 4 deletions src/Pecee/SimpleRouter/Router.php
Original file line number Diff line number Diff line change
Expand Up @@ -151,18 +151,20 @@ public function reset(): void
*/
public function addRoute(IRoute $route): IRoute
{
$this->fireEvents(EventHandler::EVENT_ADD_ROUTE, [
'route' => $route,
]);

/*
* If a route is currently being processed, that means that the route being added are rendered from the parent
* routes callback, so we add them to the stack instead.
*/
if ($this->isProcessingRoute === true) {
$this->routeStack[] = $route;

return $route;
} else {
$this->routes[] = $route;
}

$this->routes[] = $route;

return $route;
}

Expand Down
30 changes: 28 additions & 2 deletions tests/Pecee/SimpleRouter/EventHandlerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
require_once 'Dummy/Security/SilentTokenProvider.php';
require_once 'Dummy/Managers/TestBootManager.php';

use \Pecee\SimpleRouter\Handlers\EventHandler;
use \Pecee\SimpleRouter\Event\EventArgument;
use Pecee\SimpleRouter\Event\EventArgument;
use Pecee\SimpleRouter\Handlers\EventHandler;

class EventHandlerTest extends \PHPUnit\Framework\TestCase
{
Expand Down Expand Up @@ -78,4 +78,30 @@ public function testAllEvent()
$this->assertEquals(true, $status);
}

public function testPrefixEvent()
{

$eventHandler = new EventHandler();
$eventHandler->register(EventHandler::EVENT_ADD_ROUTE, function (EventArgument $arg) use (&$status) {

if ($arg->route instanceof \Pecee\SimpleRouter\Route\LoadableRoute) {
$arg->route->prependUrl('/local-path');
}

});

TestRouter::addEventHandler($eventHandler);

$status = false;

TestRouter::get('/', function () use (&$status) {
$status = true;
});

TestRouter::debug('/local-path');

$this->assertTrue($status);

}

}

0 comments on commit 89be00a

Please sign in to comment.