aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes
diff options
context:
space:
mode:
authorrxu <rxu@mail.ru>2015-02-08 12:06:50 +0700
committerrxu <rxu@mail.ru>2015-02-08 12:28:28 +0700
commit072df2217cfc7b04e7ac45e77a7149a05f9f4bc2 (patch)
treecb43d34ead114d780e530baa9a5788f2e9c3ec61 /phpBB/includes
parentc6a371531bab7ba7f003c57d25b6b515718eb54f (diff)
downloadforums-072df2217cfc7b04e7ac45e77a7149a05f9f4bc2.tar
forums-072df2217cfc7b04e7ac45e77a7149a05f9f4bc2.tar.gz
forums-072df2217cfc7b04e7ac45e77a7149a05f9f4bc2.tar.bz2
forums-072df2217cfc7b04e7ac45e77a7149a05f9f4bc2.tar.xz
forums-072df2217cfc7b04e7ac45e77a7149a05f9f4bc2.zip
[ticket/13591] Add core events to the function obtain_users_online_string()
Add functions.php core events to the function obtain_users_online_string() to allow extensions adding/modifying online users data. PHPBB3-13591
Diffstat (limited to 'phpBB/includes')
-rw-r--r--phpBB/includes/functions.php58
1 files changed, 52 insertions, 6 deletions
diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php
index 940484a0ea..c3d6858293 100644
--- a/phpBB/includes/functions.php
+++ b/phpBB/includes/functions.php
@@ -4247,9 +4247,10 @@ function obtain_users_online($item_id = 0, $item = 'forum')
*/
function obtain_users_online_string($online_users, $item_id = 0, $item = 'forum')
{
- global $config, $db, $user, $auth;
+ global $config, $db, $user, $auth, $phpbb_dispatcher;
- $user_online_link = $online_userlist = '';
+ $guests_online = $hidden_online = $l_online_users = $online_userlist = $visible_online = '';
+ $user_online_link = $rowset = array();
// Need caps version of $item for language-strings
$item_caps = strtoupper($item);
@@ -4259,9 +4260,28 @@ function obtain_users_online_string($online_users, $item_id = 0, $item = 'forum'
FROM ' . USERS_TABLE . '
WHERE ' . $db->sql_in_set('user_id', $online_users['online_users']) . '
ORDER BY username_clean ASC';
+
+ /**
+ * Modify SQL query to obtain online users data
+ *
+ * @event core.obtain_users_online_string_sql
+ * @var array online_users Array with online users data
+ * from obtain_users_online()
+ * @var int item_id Restrict online users to item id
+ * @var string item Restrict online users to a certain
+ * session item, e.g. forum for
+ * session_forum_id
+ * @var string sql SQL query to obtain users online data
+ * @since 3.1.4-RC1
+ */
+ $vars = array('online_users', 'item_id', 'item', 'sql');
+ extract($phpbb_dispatcher->trigger_event('core.obtain_users_online_string_sql', compact($vars)));
+
$result = $db->sql_query($sql);
+ $rowset = $db->sql_fetchrowset($result);
+ $db->sql_freeresult($result);
- while ($row = $db->sql_fetchrow($result))
+ foreach ($rowset as $row)
{
// User is logged in and therefore not a guest
if ($row['user_id'] != ANONYMOUS)
@@ -4273,13 +4293,12 @@ function obtain_users_online_string($online_users, $item_id = 0, $item = 'forum'
if (!isset($online_users['hidden_users'][$row['user_id']]) || $auth->acl_get('u_viewonline'))
{
- $user_online_link = get_username_string(($row['user_type'] <> USER_IGNORE) ? 'full' : 'no_profile', $row['user_id'], $row['username'], $row['user_colour']);
- $online_userlist .= ($online_userlist != '') ? ', ' . $user_online_link : $user_online_link;
+ $user_online_link[$row['user_id']] = get_username_string(($row['user_type'] <> USER_IGNORE) ? 'full' : 'no_profile', $row['user_id'], $row['username'], $row['user_colour']);
}
}
}
- $db->sql_freeresult($result);
}
+ $online_userlist = implode(', ', $user_online_link);
if (!$online_userlist)
{
@@ -4312,6 +4331,33 @@ function obtain_users_online_string($online_users, $item_id = 0, $item = 'forum'
$l_online_users = $user->lang('ONLINE_USERS_TOTAL', (int) $online_users['total_online'], $visible_online, $hidden_online);
}
+ /**
+ * Modify online userlist data
+ *
+ * @event core.obtain_users_online_string_modify
+ * @var array online_users Array with online users data
+ * from obtain_users_online()
+ * @var int item_id Restrict online users to item id
+ * @var string item Restrict online users to a certain
+ * session item, e.g. forum for
+ * session_forum_id
+ * @var array rowset Array with online users data
+ * @var array user_online_link Array with online users items (usernames)
+ * @var string online_userlist String containing users online list
+ * @var string l_online_users String with total online users count info
+ * @since 3.1.4-RC1
+ */
+ $vars = array(
+ 'online_users',
+ 'item_id',
+ 'item',
+ 'rowset',
+ 'user_online_link',
+ 'online_userlist',
+ 'l_online_users',
+ );
+ extract($phpbb_dispatcher->trigger_event('core.obtain_users_online_string_modify', compact($vars)));
+
return array(
'online_userlist' => $online_userlist,
'l_online_users' => $l_online_users,