aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Alexander <admin@m-a-styles.de>2014-06-24 18:49:31 +0200
committerMarc Alexander <admin@m-a-styles.de>2014-06-24 18:49:31 +0200
commit277e9a7a850165b002901926838d6cee1bec0f57 (patch)
tree7f27e1264003d78a55913342580c558054a5d9c3
parent204904441a373db335375e973f78b9e8b2741867 (diff)
downloadforums-277e9a7a850165b002901926838d6cee1bec0f57.tar
forums-277e9a7a850165b002901926838d6cee1bec0f57.tar.gz
forums-277e9a7a850165b002901926838d6cee1bec0f57.tar.bz2
forums-277e9a7a850165b002901926838d6cee1bec0f57.tar.xz
forums-277e9a7a850165b002901926838d6cee1bec0f57.zip
[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
-rw-r--r--phpBB/config/services.yml3
-rw-r--r--phpBB/phpbb/viewonline_helper.php37
-rw-r--r--phpBB/viewonline.php7
-rw-r--r--tests/viewonline/helper_test.php42
4 files changed, 84 insertions, 5 deletions
diff --git a/phpBB/config/services.yml b/phpBB/config/services.yml
index 3743daa075..5dc537f5e1 100644
--- a/phpBB/config/services.yml
+++ b/phpBB/config/services.yml
@@ -355,3 +355,6 @@ services:
- @cache
- @config
- @user
+
+ viewonline_helper:
+ class: phpbb\viewonline_helper
diff --git a/phpBB/phpbb/viewonline_helper.php b/phpBB/phpbb/viewonline_helper.php
new file mode 100644
index 0000000000..3aafbb2baf
--- /dev/null
+++ b/phpBB/phpbb/viewonline_helper.php
@@ -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;
+ }
+}
diff --git a/phpBB/viewonline.php b/phpBB/viewonline.php
index 69e63faa86..82f990c2a2 100644
--- a/phpBB/viewonline.php
+++ b/phpBB/viewonline.php
@@ -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])
{
diff --git a/tests/viewonline/helper_test.php b/tests/viewonline/helper_test.php
new file mode 100644
index 0000000000..e4950bb51a
--- /dev/null
+++ b/tests/viewonline/helper_test.php
@@ -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]);
+ }
+}