Source for file SimpleRouter.php
Documentation is available at SimpleRouter.php
6: * Copyright (c) 2004, 2009 David Grudl (http://davidgrudl.com)
8: * This source file is subject to the "Nette license" that is bundled
9: * with this package in the file license.txt.
11: * For more information please see http://nettephp.com
13: * @copyright Copyright (c) 2004, 2009 David Grudl
14: * @license http://nettephp.com/license Nette license
15: * @link http://nettephp.com
17: * @package Nette\Application
22: require_once dirname(__FILE__) .
'/../../Object.php';
24: require_once dirname(__FILE__) .
'/../../Application/IRouter.php';
29: * The bidirectional route for trivial routing via query string.
31: * @author David Grudl
32: * @copyright Copyright (c) 2004, 2009 David Grudl
33: * @package Nette\Application
41: private $module =
'';
52: * @param array default values
60: self::PRESENTER_KEY =>
substr($defaults, 0, $a),
65: if (isset($defaults[self::MODULE_KEY])) {
66: $this->module =
$defaults[self::MODULE_KEY] .
':';
67: unset($defaults[self::MODULE_KEY]);
70: $this->defaults =
$defaults;
71: $this->flags =
$flags;
77: * Maps HTTP request to a PresenterRequest object.
78: * @param IHttpRequest
79: * @return PresenterRequest|NULL
81: public function match(IHttpRequest $httpRequest)
83: // combine with precedence: get, (post,) defaults
84: $params =
$httpRequest->getQuery();
85: $params +=
$this->defaults;
87: if (!isset($params[self::PRESENTER_KEY])) {
91: $presenter =
$this->module .
$params[self::PRESENTER_KEY];
92: unset($params[self::PRESENTER_KEY]);
96: $httpRequest->getMethod(),
98: $httpRequest->getPost(),
99: $httpRequest->getFiles(),
107: * Constructs absolute URL from PresenterRequest object.
108: * @param IHttpRequest
109: * @param PresenterRequest
110: * @return string|NULL
112: public function constructUrl(PresenterRequest $appRequest, IHttpRequest $httpRequest)
114: $params =
$appRequest->getParams();
117: $presenter =
$appRequest->getPresenterName();
124: // remove default values; NULL values are retain
125: foreach ($this->defaults as $key =>
$value) {
126: if (isset($params[$key]) &&
$params[$key] ==
$value) { // intentionally ==
127: unset($params[$key]);
131: $uri =
$httpRequest->getUri();
132: $uri =
($this->flags & self::SECURED ?
'https://' :
'http://') .
$uri->getAuthority() .
$uri->getScriptPath();
135: if ($query !=
'') { // intentionally ==
136: $uri .=
'?' .
$query;
144: * Returns default values.
149: return $this->defaults;