mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
[ticket/9801] Add viewonline_helper service to allow proper testing
The viewonline_helper service can and will be extended in the future which will allow us to also test the viewonline page better. PHPBB3-9801
This commit is contained in:
parent
204904441a
commit
277e9a7a85
4 changed files with 84 additions and 5 deletions
|
@ -355,3 +355,6 @@ services:
|
||||||
- @cache
|
- @cache
|
||||||
- @config
|
- @config
|
||||||
- @user
|
- @user
|
||||||
|
|
||||||
|
viewonline_helper:
|
||||||
|
class: phpbb\viewonline_helper
|
||||||
|
|
37
phpBB/phpbb/viewonline_helper.php
Normal file
37
phpBB/phpbb/viewonline_helper.php
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
<?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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace phpbb;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class to handle viewonline related tasks
|
||||||
|
*/
|
||||||
|
class viewonline_helper
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get user page
|
||||||
|
*
|
||||||
|
* @param string $session_page User's session page
|
||||||
|
* @return array Match array filled by preg_match()
|
||||||
|
*/
|
||||||
|
public function get_user_page($session_page)
|
||||||
|
{
|
||||||
|
preg_match('#^([./\\]*+[a-z0-9/_-]+)#i', $session_page, $on_page);
|
||||||
|
if (!sizeof($on_page))
|
||||||
|
{
|
||||||
|
$on_page[1] = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $on_page;
|
||||||
|
}
|
||||||
|
}
|
|
@ -44,6 +44,7 @@ if (!$auth->acl_gets('u_viewprofile', 'a_user', 'a_useradd', 'a_userdel'))
|
||||||
}
|
}
|
||||||
|
|
||||||
$pagination = $phpbb_container->get('pagination');
|
$pagination = $phpbb_container->get('pagination');
|
||||||
|
$viewonline_helper = $phpbb_container->get('viewonline_helper');
|
||||||
|
|
||||||
$sort_key_text = array('a' => $user->lang['SORT_USERNAME'], 'b' => $user->lang['SORT_JOINED'], 'c' => $user->lang['SORT_LOCATION']);
|
$sort_key_text = array('a' => $user->lang['SORT_USERNAME'], 'b' => $user->lang['SORT_JOINED'], 'c' => $user->lang['SORT_LOCATION']);
|
||||||
$sort_key_sql = array('a' => 'u.username_clean', 'b' => 's.session_time', 'c' => 's.session_page');
|
$sort_key_sql = array('a' => 'u.username_clean', 'b' => 's.session_time', 'c' => 's.session_page');
|
||||||
|
@ -213,11 +214,7 @@ while ($row = $db->sql_fetchrow($result))
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
preg_match('#^([./\\]*+[a-z0-9/_-]+)#i', $row['session_page'], $on_page);
|
$on_page = $viewonline_helper->get_user_page($row['session_page']);
|
||||||
if (!sizeof($on_page))
|
|
||||||
{
|
|
||||||
$on_page[1] = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
switch ($on_page[1])
|
switch ($on_page[1])
|
||||||
{
|
{
|
||||||
|
|
42
tests/viewonline/helper_test.php
Normal file
42
tests/viewonline/helper_test.php
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
<?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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
class phpbb_viewonline_helper_test extends phpbb_test_case
|
||||||
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
|
||||||
|
$this->viewonline_helper = new \phpbb\viewonline_helper();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function session_pages_data()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
array('index.php', 'index.php'),
|
||||||
|
array('foobar/test.php', 'foobar/test.php'),
|
||||||
|
array('', ''),
|
||||||
|
array('../index.php', '../index.php'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider session_pages_data
|
||||||
|
*/
|
||||||
|
public function test_get_user_page($expected, $session_page)
|
||||||
|
{
|
||||||
|
$on_page = $this->viewonline_helper->get_user_page($session_page);
|
||||||
|
$this->assertArrayHasKey(1, $on_page);
|
||||||
|
$this->assertSame($expected, $on_page[1]);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue