diff options
Diffstat (limited to 'phpBB/includes')
| -rw-r--r-- | phpBB/includes/functions.php | 58 | 
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,  | 
