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
|
||||
- @config
|
||||
- @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');
|
||||
$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_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;
|
||||
}
|
||||
|
||||
preg_match('#^([./\\]*+[a-z0-9/_-]+)#i', $row['session_page'], $on_page);
|
||||
if (!sizeof($on_page))
|
||||
{
|
||||
$on_page[1] = '';
|
||||
}
|
||||
$on_page = $viewonline_helper->get_user_page($row['session_page']);
|
||||
|
||||
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