mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 14:18:52 +00:00
Merge branch 'develop-olympus' of https://github.com/phpbb/phpbb3 into ticket/11538
This commit is contained in:
commit
30e0b694e6
9 changed files with 235 additions and 3 deletions
|
@ -1005,7 +1005,7 @@ if (!function_exists('stripos'))
|
||||||
*/
|
*/
|
||||||
function is_absolute($path)
|
function is_absolute($path)
|
||||||
{
|
{
|
||||||
return ($path[0] == '/' || (DIRECTORY_SEPARATOR == '\\' && preg_match('#^[a-z]:[/\\\]#i', $path))) ? true : false;
|
return (isset($path[0]) && $path[0] == '/' || preg_match('#^[a-z]:[/\\\]#i', $path)) ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1025,8 +1025,8 @@ class install_install extends module
|
||||||
}
|
}
|
||||||
|
|
||||||
// Replace backslashes and doubled slashes (could happen on some proxy setups)
|
// Replace backslashes and doubled slashes (could happen on some proxy setups)
|
||||||
$name = str_replace(array('\\', '//', '/install'), '/', $name);
|
$name = str_replace(array('\\', '//'), '/', $name);
|
||||||
$data['script_path'] = trim(dirname($name));
|
$data['script_path'] = trim(dirname(dirname($name)));
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($this->advanced_config_options as $config_key => $vars)
|
foreach ($this->advanced_config_options as $config_key => $vars)
|
||||||
|
|
21
tests/functions/fixtures/language_select.xml
Normal file
21
tests/functions/fixtures/language_select.xml
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<dataset>
|
||||||
|
<table name="phpbb_lang">
|
||||||
|
<column>lang_id</column>
|
||||||
|
<column>lang_iso</column>
|
||||||
|
<column>lang_local_name</column>
|
||||||
|
<column>lang_english_name</column>
|
||||||
|
<row>
|
||||||
|
<value>1</value>
|
||||||
|
<value>en</value>
|
||||||
|
<value>English</value>
|
||||||
|
<value>English</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>2</value>
|
||||||
|
<value>cs</value>
|
||||||
|
<value>Čeština</value>
|
||||||
|
<value>Czech</value>
|
||||||
|
</row>
|
||||||
|
</table>
|
||||||
|
</dataset>
|
23
tests/functions/fixtures/style_select.xml
Normal file
23
tests/functions/fixtures/style_select.xml
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<dataset>
|
||||||
|
<table name="phpbb_styles">
|
||||||
|
<column>style_id</column>
|
||||||
|
<column>style_name</column>
|
||||||
|
<column>style_active</column>
|
||||||
|
<row>
|
||||||
|
<value>1</value>
|
||||||
|
<value>prosilver</value>
|
||||||
|
<value>1</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>2</value>
|
||||||
|
<value>subsilver2</value>
|
||||||
|
<value>1</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>3</value>
|
||||||
|
<value>zoo</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
</table>
|
||||||
|
</dataset>
|
56
tests/functions/is_absolute_test.php
Normal file
56
tests/functions/is_absolute_test.php
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package testing
|
||||||
|
* @copyright (c) 2013 phpBB Group
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
|
||||||
|
|
||||||
|
class phpbb_functions_is_absolute_test extends phpbb_test_case
|
||||||
|
{
|
||||||
|
static public function is_absolute_data()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
// Empty
|
||||||
|
array('', false),
|
||||||
|
|
||||||
|
// Absolute unix style
|
||||||
|
array('/etc/phpbb', true),
|
||||||
|
// Unix does not support \ so that is not an absolute path
|
||||||
|
array('\etc\phpbb', false),
|
||||||
|
|
||||||
|
// Absolute windows style
|
||||||
|
array('c:\windows', true),
|
||||||
|
array('C:\Windows', true),
|
||||||
|
array('c:/windows', true),
|
||||||
|
array('C:/Windows', true),
|
||||||
|
|
||||||
|
// Executable
|
||||||
|
array('etc/phpbb', false),
|
||||||
|
array('explorer.exe', false),
|
||||||
|
|
||||||
|
// Relative subdir
|
||||||
|
array('Windows\System32', false),
|
||||||
|
array('Windows\System32\explorer.exe', false),
|
||||||
|
array('Windows/System32', false),
|
||||||
|
array('Windows/System32/explorer.exe', false),
|
||||||
|
|
||||||
|
// Relative updir
|
||||||
|
array('..\Windows\System32', false),
|
||||||
|
array('..\Windows\System32\explorer.exe', false),
|
||||||
|
array('../Windows/System32', false),
|
||||||
|
array('../Windows/System32/explorer.exe', false),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider is_absolute_data
|
||||||
|
*/
|
||||||
|
public function test_is_absolute($path, $expected)
|
||||||
|
{
|
||||||
|
$this->assertEquals($expected, is_absolute($path));
|
||||||
|
}
|
||||||
|
}
|
39
tests/functions/language_select_test.php
Normal file
39
tests/functions/language_select_test.php
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package testing
|
||||||
|
* @copyright (c) 2013 phpBB Group
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
|
||||||
|
|
||||||
|
class phpbb_functions_language_select_test extends phpbb_database_test_case
|
||||||
|
{
|
||||||
|
public function getDataSet()
|
||||||
|
{
|
||||||
|
return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/language_select.xml');
|
||||||
|
}
|
||||||
|
|
||||||
|
static public function language_select_data()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
array('', '<option value="cs">Čeština</option><option value="en">English</option>'),
|
||||||
|
array('en', '<option value="cs">Čeština</option><option value="en" selected="selected">English</option>'),
|
||||||
|
array('cs', '<option value="cs" selected="selected">Čeština</option><option value="en">English</option>'),
|
||||||
|
array('de', '<option value="cs">Čeština</option><option value="en">English</option>'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider language_select_data
|
||||||
|
*/
|
||||||
|
public function test_language_select($default, $expected)
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
$db = $this->new_dbal();
|
||||||
|
|
||||||
|
$this->assertEquals($expected, language_select($default));
|
||||||
|
}
|
||||||
|
}
|
41
tests/functions/style_select_test.php
Normal file
41
tests/functions/style_select_test.php
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package testing
|
||||||
|
* @copyright (c) 2013 phpBB Group
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
|
||||||
|
|
||||||
|
class phpbb_functions_style_select_test extends phpbb_database_test_case
|
||||||
|
{
|
||||||
|
public function getDataSet()
|
||||||
|
{
|
||||||
|
return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/style_select.xml');
|
||||||
|
}
|
||||||
|
|
||||||
|
static public function style_select_data()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
array('', false, '<option value="1">prosilver</option><option value="2">subsilver2</option>'),
|
||||||
|
array('', true, '<option value="1">prosilver</option><option value="2">subsilver2</option><option value="3">zoo</option>'),
|
||||||
|
array('1', false, '<option value="1" selected="selected">prosilver</option><option value="2">subsilver2</option>'),
|
||||||
|
array('1', true, '<option value="1" selected="selected">prosilver</option><option value="2">subsilver2</option><option value="3">zoo</option>'),
|
||||||
|
array('3', false, '<option value="1">prosilver</option><option value="2">subsilver2</option>'),
|
||||||
|
array('3', true, '<option value="1">prosilver</option><option value="2">subsilver2</option><option value="3" selected="selected">zoo</option>'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider style_select_data
|
||||||
|
*/
|
||||||
|
public function test_style_select($default, $all, $expected)
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
$db = $this->new_dbal();
|
||||||
|
|
||||||
|
$this->assertEquals($expected, style_select($default, $all));
|
||||||
|
}
|
||||||
|
}
|
|
@ -142,6 +142,14 @@ class phpbb_database_test_connection_manager
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||||
|
|
||||||
|
switch ($this->config['dbms'])
|
||||||
|
{
|
||||||
|
case 'mysql':
|
||||||
|
case 'mysqli':
|
||||||
|
$this->pdo->exec('SET NAMES utf8');
|
||||||
|
default:
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -299,6 +299,50 @@ class phpbb_functional_test_case extends phpbb_test_case
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Login to the ACP
|
||||||
|
* You must run login() before calling this.
|
||||||
|
*/
|
||||||
|
protected function admin_login($username = 'admin')
|
||||||
|
{
|
||||||
|
$this->add_lang('acp/common');
|
||||||
|
|
||||||
|
// Requires login first!
|
||||||
|
if (empty($this->sid))
|
||||||
|
{
|
||||||
|
$this->fail('$this->sid is empty. Make sure you call login() before admin_login()');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$crawler = $this->request('GET', 'adm/index.php?sid=' . $this->sid);
|
||||||
|
$this->assertContains($this->lang('LOGIN_ADMIN_CONFIRM'), $crawler->filter('html')->text());
|
||||||
|
|
||||||
|
$form = $crawler->selectButton($this->lang('LOGIN'))->form();
|
||||||
|
|
||||||
|
foreach ($form->getValues() as $field => $value)
|
||||||
|
{
|
||||||
|
if (strpos($field, 'password_') === 0)
|
||||||
|
{
|
||||||
|
$crawler = $this->client->submit($form, array('username' => $username, $field => $username));
|
||||||
|
$this->assert_response_success();
|
||||||
|
$this->assertContains($this->lang('LOGIN_ADMIN_SUCCESS'), $crawler->filter('html')->text());
|
||||||
|
|
||||||
|
$cookies = $this->cookieJar->all();
|
||||||
|
|
||||||
|
// The session id is stored in a cookie that ends with _sid - we assume there is only one such cookie
|
||||||
|
foreach ($cookies as $cookie);
|
||||||
|
{
|
||||||
|
if (substr($cookie->getName(), -4) == '_sid')
|
||||||
|
{
|
||||||
|
$this->sid = $cookie->getValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected function add_lang($lang_file)
|
protected function add_lang($lang_file)
|
||||||
{
|
{
|
||||||
if (is_array($lang_file))
|
if (is_array($lang_file))
|
||||||
|
|
Loading…
Add table
Reference in a new issue