mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-09 12:58:52 +00:00
[ticket/13192] Add method for generating valid user page links
PHPBB3-13192
This commit is contained in:
parent
e43d1781bf
commit
40497ec824
2 changed files with 52 additions and 0 deletions
|
@ -445,4 +445,35 @@ class path_helper
|
||||||
|
|
||||||
return $url_parts['base'] . (($params) ? '?' . $this->glue_url_params($params) : '');
|
return $url_parts['base'] . (($params) ? '?' . $this->glue_url_params($params) : '');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a valid user page
|
||||||
|
*
|
||||||
|
* @param string $user_page The current user page
|
||||||
|
* @param bool $mod_rewrite Whether mod_rewrite is enabled, default: false
|
||||||
|
*
|
||||||
|
* @return string A valid user page based on user page and mod_rewrite
|
||||||
|
*/
|
||||||
|
public function get_valid_user_page($user_page, $mod_rewrite = false)
|
||||||
|
{
|
||||||
|
// We need to be cautious here.
|
||||||
|
// 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,
|
||||||
|
// else we use the URL directly.
|
||||||
|
$url_parts = parse_url($user_page);
|
||||||
|
|
||||||
|
// URL
|
||||||
|
if ($url_parts === false || empty($url_parts['scheme']) || empty($url_parts['host']))
|
||||||
|
{
|
||||||
|
// Remove 'app.php/' from the page, when rewrite is enabled
|
||||||
|
if ($mod_rewrite && strpos($user_page, 'app.' . $this->php_ext . '/') === 0)
|
||||||
|
{
|
||||||
|
$user_page = substr($user_page, strlen('app.' . $this->php_ext . '/'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$user_page = $this->get_phpbb_root_path() . $user_page;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $user_page;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -421,4 +421,25 @@ 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()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
// array( current page , mod_rewrite setting , expected output )
|
||||||
|
array('index', true, 'index'),
|
||||||
|
array('index', false, 'index'),
|
||||||
|
array('foo/index', true, 'foo/index'),
|
||||||
|
array('foo/index', false, 'foo/index'),
|
||||||
|
array('app.php/foo', false, 'app.php/foo'),
|
||||||
|
array('app.php/foo', true, 'foo'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider data_get_valid_user_page
|
||||||
|
*/
|
||||||
|
public function test_get_valid_user_page($page, $mod_rewrite, $expected)
|
||||||
|
{
|
||||||
|
$this->assertEquals($this->phpbb_root_path . $expected, $this->path_helper->get_valid_user_page($page, $mod_rewrite));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue