mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
[ticket/13073] Add path regex to get_preg_expression() and add unit tests
We're now calling get_preg_expression() instead of hardcoding the regex into the helper route method. PHPBB3-13073
This commit is contained in:
parent
4186ced479
commit
6fd54436ee
3 changed files with 44 additions and 1 deletions
|
@ -3317,6 +3317,11 @@ function get_preg_expression($mode)
|
||||||
case 'table_prefix':
|
case 'table_prefix':
|
||||||
return '#^[a-zA-Z][a-zA-Z0-9_]*$#';
|
return '#^[a-zA-Z][a-zA-Z0-9_]*$#';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
// Matches the predecing dot
|
||||||
|
case 'path_remove_dot_trailing_slash':
|
||||||
|
return '#^(?:(\.)?)+(?:(.+)?)+(?:([\\/\\\])$)#';
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
|
|
|
@ -147,7 +147,7 @@ class helper
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$base_url .= preg_replace('#^(?:(\.))+(?:(.+)?)+(?:([\\/\\\])$)#', '$2', $this->phpbb_root_path);
|
$base_url .= preg_replace(get_preg_expression('path_remove_dot_trailing_slash'), '$2', $this->phpbb_root_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
$base_url = $this->filesystem->clean_path($base_url);
|
$base_url = $this->filesystem->clean_path($base_url);
|
||||||
|
|
38
tests/functions/get_preg_expression_test.php
Normal file
38
tests/functions/get_preg_expression_test.php
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This file is part of the phpBB Forum Software package.
|
||||||
|
*
|
||||||
|
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||||
|
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||||
|
*
|
||||||
|
* For full copyright and license information, please see
|
||||||
|
* the docs/CREDITS.txt file.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
|
||||||
|
|
||||||
|
class phpbb_functions_get_preg_expression_test extends phpbb_test_case
|
||||||
|
{
|
||||||
|
public function data_path_remove_dot_trailing_slash()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
array('/..', '$2', './../'),
|
||||||
|
array('/..', '$2', '/../'),
|
||||||
|
array('', '$2', ''),
|
||||||
|
array('', '$2', './'),
|
||||||
|
array('', '$2', '/'),
|
||||||
|
array('/../..', '$2', './../../'),
|
||||||
|
array('/../..', '$2', '/../../'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider data_path_remove_dot_trailing_slash
|
||||||
|
*/
|
||||||
|
public function test_path_remove_dot_trailing_slash($expected, $replace, $input)
|
||||||
|
{
|
||||||
|
$this->assertSame($expected, preg_replace(get_preg_expression('path_remove_dot_trailing_slash'), $replace, $input));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue