mirror of
https://github.com/phpbb/phpbb.git
synced 2025-04-22 16:51:56 +02:00
[ticket/11832] update_web_root_path helper and tests
PHPBB3-11832
This commit is contained in:
parent
f30b87519e
commit
6692db892f
@ -2419,12 +2419,9 @@ function append_sid($url, $params = false, $is_amp = true, $session_id = false)
|
||||
$params = false;
|
||||
}
|
||||
|
||||
// Update the root path with the correct relative web path
|
||||
$phpbb_filesystem = $phpbb_container->get('filesystem');
|
||||
$corrected_path = $phpbb_filesystem->get_web_root_path($symfony_request);
|
||||
if ($corrected_path)
|
||||
{
|
||||
$url = substr($corrected_path . $url, strlen($phpbb_root_path));
|
||||
}
|
||||
$url = $phpbb_filesystem->update_web_root_path($url, $symfony_request);
|
||||
|
||||
$append_sid_overwrite = false;
|
||||
|
||||
|
@ -46,17 +46,40 @@ class phpbb_filesystem
|
||||
return $this->phpbb_root_path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a path to the correct relative root path
|
||||
*
|
||||
* This replaces $phpbb_root_path . some_url with
|
||||
* get_web_root_path() . some_url OR if $phpbb_root_path
|
||||
* is not at the beginning of $path, just prepends the
|
||||
* web root path
|
||||
*
|
||||
* @param Request $symfony_request Symfony Request object
|
||||
* @return string
|
||||
*/
|
||||
public function update_web_root_path($path, Request $symfony_request = null)
|
||||
{
|
||||
$web_root_path = $this->get_web_root_path($symfony_request);
|
||||
|
||||
if (strpos($path, $this->phpbb_root_path) === 0)
|
||||
{
|
||||
$path = substr($path, strlen($this->phpbb_root_path));
|
||||
}
|
||||
|
||||
return $web_root_path . $path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a relative root path from the current URL
|
||||
*
|
||||
* @param Request $symfony_request Symfony Request object
|
||||
* @return string
|
||||
*/
|
||||
function get_web_root_path(Request $symfony_request = null)
|
||||
public function get_web_root_path(Request $symfony_request = null)
|
||||
{
|
||||
if ($symfony_request === null)
|
||||
{
|
||||
return '';
|
||||
return $this->phpbb_root_path;
|
||||
}
|
||||
|
||||
static $path;
|
||||
@ -68,8 +91,7 @@ class phpbb_filesystem
|
||||
$path_info = $symfony_request->getPathInfo();
|
||||
if ($path_info === '/')
|
||||
{
|
||||
$path = $this->phpbb_root_path;
|
||||
return $path;
|
||||
return $path = $this->phpbb_root_path;
|
||||
}
|
||||
|
||||
$path_info = $this->clean_path($path_info);
|
||||
@ -84,9 +106,7 @@ class phpbb_filesystem
|
||||
$corrections -= 1;
|
||||
}
|
||||
|
||||
$path = $this->phpbb_root_path . str_repeat('../', $corrections);
|
||||
|
||||
return $path;
|
||||
return $path = $this->phpbb_root_path . str_repeat('../', $corrections);
|
||||
}
|
||||
|
||||
/**
|
||||
|
70
tests/filesystem/web_root_path_test.php
Normal file
70
tests/filesystem/web_root_path_test.php
Normal file
@ -0,0 +1,70 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2013 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
class phpbb_filesystem_web_root_path_test extends phpbb_test_case
|
||||
{
|
||||
protected $filesystem;
|
||||
protected $phpbb_root_path = '';
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->set_phpbb_root_path();
|
||||
|
||||
$this->filesystem = new phpbb_filesystem($this->phpbb_root_path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the phpbb_root_path
|
||||
*
|
||||
* This is necessary because dataProvider functions are called
|
||||
* before setUp or setUpBeforeClass; so we must set the path
|
||||
* any time we wish to use it in one of these functions (and
|
||||
* also in general for everything else)
|
||||
*/
|
||||
public function set_phpbb_root_path()
|
||||
{
|
||||
$this->phpbb_root_path = __DIR__ . './../../phpBB/';
|
||||
}
|
||||
|
||||
public function test_get_web_root_path()
|
||||
{
|
||||
// Symfony Request = null, so always should return phpbb_root_path
|
||||
$this->assertEquals($this->phpbb_root_path, $this->filesystem->get_web_root_path());
|
||||
}
|
||||
|
||||
public function update_web_root_path_data()
|
||||
{
|
||||
$this->set_phpbb_root_path();
|
||||
|
||||
return array(
|
||||
array(
|
||||
$this->phpbb_root_path . 'test.php',
|
||||
$this->phpbb_root_path . 'test.php',
|
||||
),
|
||||
array(
|
||||
'test.php',
|
||||
$this->phpbb_root_path . 'test.php',
|
||||
),
|
||||
array(
|
||||
$this->phpbb_root_path . $this->phpbb_root_path . 'test.php',
|
||||
$this->phpbb_root_path . $this->phpbb_root_path . 'test.php',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider update_web_root_path_data
|
||||
*/
|
||||
public function test_update_web_root_path($input, $expected)
|
||||
{
|
||||
$this->assertEquals($expected, $this->filesystem->update_web_root_path($input));
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user