diff options
| -rw-r--r-- | phpBB/app.php | 6 | ||||
| -rw-r--r-- | phpBB/includes/functions.php | 39 | 
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']); +} | 
