1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-08-10 18:54:08 +02:00

Merge pull request #1102 from imkingdavid/ticket/11215

[ticket/11215] Correct paths when path info is used for controller access
This commit is contained in:
Nathan Guse
2013-09-02 15:55:22 -07:00
8 changed files with 117 additions and 54 deletions

View File

@@ -35,6 +35,12 @@ class phpbb_controller_helper
*/
protected $user;
/**
* Request object
* @var phpbb_request
*/
protected $request;
/**
* phpBB root path
* @var string
@@ -55,10 +61,11 @@ class phpbb_controller_helper
* @param string $phpbb_root_path phpBB root path
* @param string $php_ext PHP extension
*/
public function __construct(phpbb_template $template, phpbb_user $user, $phpbb_root_path, $php_ext)
public function __construct(phpbb_template $template, phpbb_user $user, phpbb_request_interface $request, $phpbb_root_path, $php_ext)
{
$this->template = $template;
$this->user = $user;
$this->request = $request;
$this->phpbb_root_path = $phpbb_root_path;
$this->php_ext = $php_ext;
}
@@ -102,22 +109,16 @@ class phpbb_controller_helper
$route = substr($route, 0, $route_delim);
}
if (is_array($params) && !empty($params))
{
$params = array_merge(array(
'controller' => $route,
), $params);
}
else if (is_string($params) && $params)
{
$params = 'controller=' . $route . (($is_amp) ? '&' : '&') . $params;
}
else
{
$params = array('controller' => $route);
}
$request_uri = $this->request->variable('REQUEST_URI', '', false, phpbb_request::SERVER);
$script_name = $this->request->variable('SCRIPT_NAME', '', false, phpbb_request::SERVER);
return append_sid($this->phpbb_root_path . 'app.' . $this->php_ext . $route_params, $params, $is_amp, $session_id);
// If the app.php file is being used (no rewrite) keep it in the URL.
// Otherwise, don't include it.
$route_prefix = $this->phpbb_root_path;
$parts = explode('/', $script_name);
$route_prefix .= strpos($request_uri, $script_name) === 0 ? array_pop($parts) . '/' : '';
return append_sid($route_prefix . "$route" . $route_params, $params, $is_amp, $session_id);
}
/**