diff options
| author | Joas Schilling <nickvergessen@gmx.de> | 2014-07-03 12:02:48 +0200 |
|---|---|---|
| committer | Joas Schilling <nickvergessen@gmx.de> | 2014-07-03 12:02:48 +0200 |
| commit | b0a3f2dc8f528526d02b04835bb6bda92421fe4b (patch) | |
| tree | 27b290e1874293a9d87dd68d6e02430e4b43fbe9 /phpBB | |
| parent | 380e9c2ef448e478acddd1d8c70affe8356e4465 (diff) | |
| parent | 330f21ab7605a4c327b68af630be5eaef5e2cd88 (diff) | |
| download | forums-b0a3f2dc8f528526d02b04835bb6bda92421fe4b.tar forums-b0a3f2dc8f528526d02b04835bb6bda92421fe4b.tar.gz forums-b0a3f2dc8f528526d02b04835bb6bda92421fe4b.tar.bz2 forums-b0a3f2dc8f528526d02b04835bb6bda92421fe4b.tar.xz forums-b0a3f2dc8f528526d02b04835bb6bda92421fe4b.zip | |
Merge pull request #2578 from marc1706/ticket/9801
[ticket/9801] Allow display of page outside board directory on viewonline
* marc1706/ticket/9801:
[ticket/9801] Use empty instead of sizeof
[ticket/9801] Remove spaces before * in docblock
[ticket/9801] Add viewonline_helper service to allow proper testing
[ticket/9801] Allow display of page outside board directory on viewonline
Diffstat (limited to 'phpBB')
| -rw-r--r-- | phpBB/config/services.yml | 3 | ||||
| -rw-r--r-- | phpBB/phpbb/viewonline_helper.php | 37 | ||||
| -rw-r--r-- | phpBB/viewonline.php | 7 |
3 files changed, 42 insertions, 5 deletions
diff --git a/phpBB/config/services.yml b/phpBB/config/services.yml index 72eeae9b15..31f0b9ad95 100644 --- a/phpBB/config/services.yml +++ b/phpBB/config/services.yml @@ -354,3 +354,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..3fc33119a3 --- /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 (empty($on_page)) + { + $on_page[1] = ''; + } + + return $on_page; + } +} diff --git a/phpBB/viewonline.php b/phpBB/viewonline.php index 43b5f7f001..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]) { |
