mirror of
https://github.com/phpbb/phpbb.git
synced 2025-05-06 23:55:26 +02:00
[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
This commit is contained in:
parent
c6a371531b
commit
072df2217c
@ -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')
|
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
|
// Need caps version of $item for language-strings
|
||||||
$item_caps = strtoupper($item);
|
$item_caps = strtoupper($item);
|
||||||
|
|
||||||
@ -4259,9 +4260,28 @@ function obtain_users_online_string($online_users, $item_id = 0, $item = 'forum'
|
|||||||
FROM ' . USERS_TABLE . '
|
FROM ' . USERS_TABLE . '
|
||||||
WHERE ' . $db->sql_in_set('user_id', $online_users['online_users']) . '
|
WHERE ' . $db->sql_in_set('user_id', $online_users['online_users']) . '
|
||||||
ORDER BY username_clean ASC';
|
ORDER BY username_clean ASC';
|
||||||
$result = $db->sql_query($sql);
|
|
||||||
|
|
||||||
while ($row = $db->sql_fetchrow($result))
|
/**
|
||||||
|
* 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);
|
||||||
|
|
||||||
|
foreach ($rowset as $row)
|
||||||
{
|
{
|
||||||
// User is logged in and therefore not a guest
|
// User is logged in and therefore not a guest
|
||||||
if ($row['user_id'] != ANONYMOUS)
|
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'))
|
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']);
|
$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']);
|
||||||
$online_userlist .= ($online_userlist != '') ? ', ' . $user_online_link : $user_online_link;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
|
||||||
}
|
}
|
||||||
|
$online_userlist = implode(', ', $user_online_link);
|
||||||
|
|
||||||
if (!$online_userlist)
|
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);
|
$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(
|
return array(
|
||||||
'online_userlist' => $online_userlist,
|
'online_userlist' => $online_userlist,
|
||||||
'l_online_users' => $l_online_users,
|
'l_online_users' => $l_online_users,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user