Skip to content
Snippets Groups Projects
Commit bb0c88a5 authored by Bernhard Posselt's avatar Bernhard Posselt
Browse files

always set url parameters when they are available in the app dispatch

prefer url parameters passed into the main method. If they are not present, use the containers urlParameters

add space
parent 2fbe8bbc
No related branches found
No related tags found
No related merge requests found
......@@ -75,7 +75,9 @@ class App {
*/
public static function main($controllerName, $methodName, DIContainer $container, array $urlParams = null) {
if (!is_null($urlParams)) {
$container['urlParams'] = $urlParams;
$container['OCP\\IRequest']->setUrlParameters($urlParams);
} else if (isset($container['urlParams']) && !is_null($container['urlParams'])) {
$container['OCP\\IRequest']->setUrlParameters($container['urlParams']);
}
$appName = $container['AppName'];
......
......@@ -233,7 +233,6 @@ class DIContainer extends SimpleContainer implements IAppContainer {
/** @var $c SimpleContainer */
/** @var $server SimpleContainer */
$server = $c->query('ServerContainer');
$server->registerParameter('urlParams', $c['urlParams']);
/** @var $server IServerContainer */
return $server->getRequest();
});
......
......@@ -68,12 +68,12 @@ class Request implements \ArrayAccess, \Countable, IRequest {
$this->items['params'] = array();
if(!array_key_exists('method', $vars)) {
$vars['method'] = 'GET';
$vars['method'] = 'GET';
}
foreach($this->allowedKeys as $name) {
$this->items[$name] = isset($vars[$name])
? $vars[$name]
? $vars[$name]
: array();
}
......@@ -83,7 +83,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
if(count($params) > 0) {
$this->items['params'] = $params;
if($vars['method'] === 'POST') {
$this->items['post'] = $params;
$this->items['post'] = $params;
}
}
// Handle application/x-www-form-urlencoded for methods other than GET
......@@ -91,12 +91,12 @@ class Request implements \ArrayAccess, \Countable, IRequest {
} elseif($vars['method'] !== 'GET'
&& $vars['method'] !== 'POST'
&& strpos($this->getHeader('Content-Type'), 'application/x-www-form-urlencoded') !== false) {
parse_str(file_get_contents($this->inputStream), $params);
if(is_array($params)) {
$this->items['params'] = $params;
}
}
}
$this->items['parameters'] = array_merge(
$this->items['get'],
......@@ -107,6 +107,14 @@ class Request implements \ArrayAccess, \Countable, IRequest {
}
public function setUrlParameters($parameters) {
$this->items['urlParams'] = $parameters;
$this->items['parameters'] = array_merge(
$this->items['parameters'],
$this->items['urlParams']
);
}
// Countable method.
public function count() {
return count(array_keys($this->items['parameters']));
......@@ -207,8 +215,8 @@ class Request implements \ArrayAccess, \Countable, IRequest {
return $this->items['method'];
break;
default;
return isset($this[$name])
? $this[$name]
return isset($this[$name])
? $this[$name]
: null;
break;
}
......
......@@ -214,4 +214,21 @@ class RequestTest extends \Test\TestCase {
$this->fail('Expected LogicException.');
}
public function testSetUrlParameters() {
$vars = array(
'post' => array(),
'method' => 'POST',
'urlParams' => array('id' => '2'),
);
$request = new Request($vars, $this->stream);
$newParams = array('id' => '3', 'test' => 'test2');
$request->setUrlParameters($newParams);
$this->assertEquals('test2', $request->getParam('test'));
$this->assertEquals('3', $request->getParam('id'));
$this->assertEquals('3', $request->getParams()['id']);
}
}
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