aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid King <imkingdavid@gmail.com>2012-11-18 15:52:35 -0500
committerDavid King <imkingdavid@gmail.com>2012-11-18 15:52:35 -0500
commit0f4f81b0966e29b5aaae5bf94e46260474ec0cb2 (patch)
treed7be47ca28737fcaf56aef4ef336b9f5eb932b9c
parent2f50d656481dca3c2aa28cd5035ce0d44e5c4977 (diff)
downloadforums-0f4f81b0966e29b5aaae5bf94e46260474ec0cb2.tar
forums-0f4f81b0966e29b5aaae5bf94e46260474ec0cb2.tar.gz
forums-0f4f81b0966e29b5aaae5bf94e46260474ec0cb2.tar.bz2
forums-0f4f81b0966e29b5aaae5bf94e46260474ec0cb2.tar.xz
forums-0f4f81b0966e29b5aaae5bf94e46260474ec0cb2.zip
[feature/controller] Create Symfony Request in new function
PHPBB3-10864
-rw-r--r--phpBB/app.php6
-rw-r--r--phpBB/includes/functions.php39
2 files changed, 41 insertions, 4 deletions
diff --git a/phpBB/app.php b/phpBB/app.php
index 13bf3f0be1..c085f966c8 100644
--- a/phpBB/app.php
+++ b/phpBB/app.php
@@ -7,8 +7,6 @@
*
*/
-use Symfony\Component\HttpFoundation\Request;
-
/**
*/
@@ -28,9 +26,9 @@ $user->setup('app');
// Until we fix the issue with relative paths, we have to fake path info to
// allow urls like app.php?controller=foo/bar
-$controller = $request->variable('controller', '', false, phpbb_request_interface::GET);
+$controller = $request->variable('controller', '');
$uri = '/' . $controller;
-$symfony_request = Request::create($uri);
+$symfony_request = phpbb_create_symfony_request($uri, $request);
$http_kernel = $phpbb_container->get('http_kernel');
$response = $http_kernel->handle($symfony_request);
diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php
index 02a9e33f2a..820d96c9aa 100644
--- a/phpBB/includes/functions.php
+++ b/phpBB/includes/functions.php
@@ -7,6 +7,8 @@
*
*/
+use Symfony\Component\HttpFoundation\Request;
+
/**
* @ignore
*/
@@ -5430,3 +5432,40 @@ function phpbb_to_numeric($input)
{
return ($input > PHP_INT_MAX) ? (float) $input : (int) $input;
}
+
+/**
+* Create a Symfony Request object from a given URI and phpbb_request object
+*
+* @param string $uri Request URI
+* @param phpbb_request $request Request object
+* @return Request A Symfony Request object
+*/
+function phpbb_create_symfony_request($uri, phpbb_request $request)
+{
+ $request_method = $request->server('REQUEST_METHOD');
+ $parameter_names = array();
+ $parameter_names['request'] = array_merge(
+ $request->variable_names(phpbb_request_interface::GET),
+ // POST overwrites duplicated GET parameters
+ $request->variable_names(phpbb_request_interface::POST)
+ );
+ $parameter_names['server'] = $request->variable_names(phpbb_request_interface::SERVER);
+ $parameter_names['files'] = $request->variable_names(phpbb_request_interface::FILES);
+ $parameter_names['cookie'] = $request->variable_names(phpbb_request_interface::COOKIE);
+
+ $parameters = array(
+ 'request' => array(),
+ 'cookie' => array(),
+ 'files' => array(),
+ 'server' => array(),
+ );
+ foreach ($parameter_names as $type => $names)
+ {
+ foreach ($names as $name)
+ {
+ $parameters[$type][$name] = $request->variable($name, '');
+ }
+ }
+
+ return Request::create($uri, $request_method, $parameters['request'], $parameters['cookie'], $parameters['files'], $parameters['server']);
+}