diff options
author | Nathan Guse <nathaniel.guse@gmail.com> | 2013-09-17 11:41:46 -0500 |
---|---|---|
committer | Nathan Guse <nathaniel.guse@gmail.com> | 2013-09-17 11:44:42 -0500 |
commit | f4317bc864f9c19a15de83ea30cb46a04c95a295 (patch) | |
tree | 35be8c299acbfc08e240a478dd77411e428d3468 /phpBB | |
parent | 6ba2fb6d62bb1429665f9e1b4f22dd241508950b (diff) | |
download | forums-f4317bc864f9c19a15de83ea30cb46a04c95a295.tar forums-f4317bc864f9c19a15de83ea30cb46a04c95a295.tar.gz forums-f4317bc864f9c19a15de83ea30cb46a04c95a295.tar.bz2 forums-f4317bc864f9c19a15de83ea30cb46a04c95a295.tar.xz forums-f4317bc864f9c19a15de83ea30cb46a04c95a295.zip |
[ticket/11850] Fix $user->page on pages through the controller
PHPBB3-11850
Diffstat (limited to 'phpBB')
-rw-r--r-- | phpBB/phpbb/session.php | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/phpBB/phpbb/session.php b/phpBB/phpbb/session.php index dc33786666..52f621dbf6 100644 --- a/phpBB/phpbb/session.php +++ b/phpBB/phpbb/session.php @@ -40,13 +40,13 @@ class phpbb_session */ static function extract_current_page($root_path) { - global $request; + global $request, $symfony_request, $phpbb_filesystem; $page_array = array(); // First of all, get the request uri... - $script_name = htmlspecialchars_decode($request->server('PHP_SELF')); - $args = explode('&', htmlspecialchars_decode($request->server('QUERY_STRING'))); + $script_name = $symfony_request->getScriptName(); + $args = explode('&', $symfony_request->getQueryString()); // If we are unable to get the script name we use REQUEST_URI as a failover and note it within the page array for easier support... if (!$script_name) @@ -103,10 +103,19 @@ class phpbb_session } // Current page from phpBB root (for example: adm/index.php?i=10&b=2) - $page = (($page_dir) ? $page_dir . '/' : '') . $page_name . (($query_string) ? "?$query_string" : ''); + $symfony_request_path = $phpbb_filesystem->clean_path($symfony_request->getPathInfo()); + $page = (($page_dir) ? $page_dir . '/' : '') . $page_name; + if ($symfony_request_path !== '/') + { + $page .= $symfony_request_path; + } + if ($query_string) + { + $page .= '?' . $query_string; + } // The script path from the webroot to the current directory (for example: /phpBB3/adm/) : always prefixed with / and ends in / - $script_path = trim(str_replace('\\', '/', dirname($script_name))); + $script_path = $symfony_request->getBasePath(); // The script path from the webroot to the phpBB root (for example: /phpBB3/) $script_dirs = explode('/', $script_path); |