[ticket/13192] Pass correct parameters and rename method to get_valid_page

PHPBB3-13192
This commit is contained in:
Marc Alexander 2014-10-21 22:38:03 -05:00
parent ce8c09f51f
commit a623868f20
3 changed files with 16 additions and 16 deletions

View file

@ -2396,7 +2396,7 @@ function build_url($strip_vars = false)
{ {
global $config, $user, $phpbb_path_helper; global $config, $user, $phpbb_path_helper;
$page = $phpbb_path_helper->get_valid_user_page($user->page['page'], $config['enable_mod_rewrite']); $page = $phpbb_path_helper->get_valid_page($user->page['page'], $config['enable_mod_rewrite']);
// Append SID // Append SID
$redirect = append_sid($page, false, false); $redirect = append_sid($page, false, false);
@ -2638,7 +2638,7 @@ function check_form_key($form_name, $timespan = false)
function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_body.html', $u_action = '') function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_body.html', $u_action = '')
{ {
global $user, $template, $db, $request; global $user, $template, $db, $request;
global $phpbb_path_helper, $phpbb_root_path; global $config, $phpbb_path_helper;
if (isset($_POST['cancel'])) if (isset($_POST['cancel']))
{ {
@ -2701,7 +2701,7 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo
// re-add sid / transform & to & for user->page (user->page is always using &) // re-add sid / transform & to & for user->page (user->page is always using &)
$use_page = ($u_action) ? $u_action : str_replace('&', '&', $user->page['page']); $use_page = ($u_action) ? $u_action : str_replace('&', '&', $user->page['page']);
$u_action = reapply_sid($phpbb_path_helper->get_valid_user_page($use_page)); $u_action = reapply_sid($phpbb_path_helper->get_valid_page($use_page, $config['enable_mod_rewrite']));
$u_action .= ((strpos($u_action, '?') === false) ? '?' : '&') . 'confirm_key=' . $confirm_key; $u_action .= ((strpos($u_action, '?') === false) ? '?' : '&') . 'confirm_key=' . $confirm_key;
$template->assign_vars(array( $template->assign_vars(array(

View file

@ -447,33 +447,33 @@ class path_helper
} }
/** /**
* Get a valid user page * Get a valid page
* *
* @param string $user_page The current user page * @param string $page The page to verify
* @param bool $mod_rewrite Whether mod_rewrite is enabled, default: false * @param bool $mod_rewrite Whether mod_rewrite is enabled, default: false
* *
* @return string A valid user page based on user page and mod_rewrite * @return string A valid page based on given page and mod_rewrite
*/ */
public function get_valid_user_page($user_page, $mod_rewrite = false) public function get_valid_page($page, $mod_rewrite = false)
{ {
// We need to be cautious here. // We need to be cautious here.
// On some situations, the redirect path is an absolute URL, sometimes a relative path // On some situations, the redirect path is an absolute URL, sometimes a relative path
// For a relative path, let's prefix it with $phpbb_root_path to point to the correct location, // For a relative path, let's prefix it with $phpbb_root_path to point to the correct location,
// else we use the URL directly. // else we use the URL directly.
$url_parts = parse_url($user_page); $url_parts = parse_url($page);
// URL // URL
if ($url_parts === false || empty($url_parts['scheme']) || empty($url_parts['host'])) if ($url_parts === false || empty($url_parts['scheme']) || empty($url_parts['host']))
{ {
// Remove 'app.php/' from the page, when rewrite is enabled // Remove 'app.php/' from the page, when rewrite is enabled
if ($mod_rewrite && strpos($user_page, 'app.' . $this->php_ext . '/') === 0) if ($mod_rewrite && strpos($page, 'app.' . $this->php_ext . '/') === 0)
{ {
$user_page = substr($user_page, strlen('app.' . $this->php_ext . '/')); $page = substr($page, strlen('app.' . $this->php_ext . '/'));
} }
$user_page = $this->get_phpbb_root_path() . $user_page; $page = $this->get_phpbb_root_path() . $page;
} }
return $user_page; return $page;
} }
} }

View file

@ -422,7 +422,7 @@ class phpbb_path_helper_test extends phpbb_test_case
$this->assertEquals($this->phpbb_root_path . $expected, $this->path_helper->get_web_root_path_from_ajax_referer($referer_url, $board_url)); $this->assertEquals($this->phpbb_root_path . $expected, $this->path_helper->get_web_root_path_from_ajax_referer($referer_url, $board_url));
} }
public function data_get_valid_user_page() public function data_get_valid_page()
{ {
return array( return array(
// array( current page , mod_rewrite setting , expected output ) // array( current page , mod_rewrite setting , expected output )
@ -436,10 +436,10 @@ class phpbb_path_helper_test extends phpbb_test_case
} }
/** /**
* @dataProvider data_get_valid_user_page * @dataProvider data_get_valid_page
*/ */
public function test_get_valid_user_page($page, $mod_rewrite, $expected) public function test_get_valid_page($page, $mod_rewrite, $expected)
{ {
$this->assertEquals($this->phpbb_root_path . $expected, $this->path_helper->get_valid_user_page($page, $mod_rewrite)); $this->assertEquals($this->phpbb_root_path . $expected, $this->path_helper->get_valid_page($page, $mod_rewrite));
} }
} }