diff options
Diffstat (limited to 'phpBB/viewonline.php')
| -rw-r--r-- | phpBB/viewonline.php | 100 | 
1 files changed, 51 insertions, 49 deletions
diff --git a/phpBB/viewonline.php b/phpBB/viewonline.php index 5eb2894441..6b26a3f5d6 100644 --- a/phpBB/viewonline.php +++ b/phpBB/viewonline.php @@ -2,9 +2,8 @@  /**  *  * @package phpBB3 -* @version $Id$  * @copyright (c) 2005 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -122,13 +121,30 @@ if (!$show_guests)  }  // Get user list -$sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_type, u.user_colour, s.session_id, s.session_time, s.session_page, s.session_ip, s.session_browser, s.session_viewonline, s.session_forum_id -	FROM ' . USERS_TABLE . ' u, ' . SESSIONS_TABLE . ' s -	WHERE u.user_id = s.session_user_id +$sql_ary = array( +	'SELECT'	=> 'u.user_id, u.username, u.username_clean, u.user_type, u.user_colour, s.session_id, s.session_time, s.session_page, s.session_ip, s.session_browser, s.session_viewonline, s.session_forum_id', +	'FROM'		=> array( +		USERS_TABLE		=> 'u', +		SESSIONS_TABLE	=> 's', +	), +	'WHERE'		=> 'u.user_id = s.session_user_id  		AND s.session_time >= ' . (time() - ($config['load_online_time'] * 60)) . -		((!$show_guests) ? ' AND s.session_user_id <> ' . ANONYMOUS : '') . ' -	ORDER BY ' . $order_by; -$result = $db->sql_query($sql); +		((!$show_guests) ? ' AND s.session_user_id <> ' . ANONYMOUS : ''), +	'ORDER_BY'	=> $order_by, +); + +/** +* Modify the SQL query for getting the user data to display viewonline list +* +* @event core.viewonline_modify_sql +* @var	array	sql_ary			The SQL array +* @var	bool	show_guests		Do we display guests in the list +* @since 3.1-A1 +*/ +$vars = array('sql_ary', 'show_guests'); +extract($phpbb_dispatcher->trigger_event('core.viewonline_modify_sql', compact($vars))); + +$result = $db->sql_query($db->sql_build_query('SELECT', $sql_ary));  $prev_id = $prev_ip = $user_list = array();  $logged_visible_online = $logged_hidden_online = $counter = 0; @@ -200,7 +216,7 @@ while ($row = $db->sql_fetchrow($result))  			$location_url = append_sid("{$phpbb_root_path}index.$phpEx");  		break; -		case 'adm/index': +		case $phpbb_adm_relative_path . 'index':  			$location = $user->lang['ACP'];  			$location_url = append_sid("{$phpbb_root_path}index.$phpEx");  		break; @@ -321,6 +337,19 @@ while ($row = $db->sql_fetchrow($result))  		break;  	} +	/** +	* Overwrite the location's name and URL, which are displayed in the list +	* +	* @event core.viewonline_overwrite_location +	* @var	array	on_page			File name and query string +	* @var	array	row				Array with the users sql row +	* @var	string	location		Page name to displayed in the list +	* @var	string	location_url	Page url to displayed in the list +	* @since 3.1-A1 +	*/ +	$vars = array('on_page', 'row', 'location', 'location_url'); +	extract($phpbb_dispatcher->trigger_event('core.viewonline_overwrite_location', compact($vars))); +  	$template->assign_block_vars('user_row', array(  		'USERNAME' 			=> $row['username'],  		'USERNAME_COLOUR'	=> $row['user_colour'], @@ -343,45 +372,18 @@ while ($row = $db->sql_fetchrow($result))  $db->sql_freeresult($result);  unset($prev_id, $prev_ip); -// Generate reg/hidden/guest online text -$vars_online = array( -	'REG'	=> array('logged_visible_online', 'l_r_user_s'), -	'HIDDEN'=> array('logged_hidden_online', 'l_h_user_s'), -	'GUEST'	=> array('guest_counter', 'l_g_user_s') -); - -foreach ($vars_online as $l_prefix => $var_ary) -{ -	switch ($$var_ary[0]) -	{ -		case 0: -			$$var_ary[1] = $user->lang[$l_prefix . '_USERS_ZERO_ONLINE']; -		break; - -		case 1: -			$$var_ary[1] = $user->lang[$l_prefix . '_USER_ONLINE']; -		break; - -		default: -			$$var_ary[1] = $user->lang[$l_prefix . '_USERS_ONLINE']; -		break; -	} -} -unset($vars_online); - -$pagination = generate_pagination(append_sid("{$phpbb_root_path}viewonline.$phpEx", "sg=$show_guests&sk=$sort_key&sd=$sort_dir"), $counter, $config['topics_per_page'], $start); - +$order_legend = ($config['legend_sort_groupname']) ? 'group_name' : 'group_legend';  // Grab group details for legend display  if ($auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel'))  { -	$sql = 'SELECT group_id, group_name, group_colour, group_type +	$sql = 'SELECT group_id, group_name, group_colour, group_type, group_legend  		FROM ' . GROUPS_TABLE . ' -		WHERE group_legend = 1 -		ORDER BY group_name ASC'; +		WHERE group_legend > 0 +		ORDER BY ' . $order_legend . ' ASC';  }  else  { -	$sql = 'SELECT g.group_id, g.group_name, g.group_colour, g.group_type +	$sql = 'SELECT g.group_id, g.group_name, g.group_colour, g.group_type, g.group_legend  		FROM ' . GROUPS_TABLE . ' g  		LEFT JOIN ' . USER_GROUP_TABLE . ' ug  			ON ( @@ -389,9 +391,9 @@ else  				AND ug.user_id = ' . $user->data['user_id'] . '  				AND ug.user_pending = 0  			) -		WHERE g.group_legend = 1 +		WHERE g.group_legend > 0  			AND (g.group_type <> ' . GROUP_HIDDEN . ' OR ug.user_id = ' . $user->data['user_id'] . ') -		ORDER BY g.group_name ASC'; +		ORDER BY g.' . $order_legend . ' ASC';  }  $result = $db->sql_query($sql); @@ -412,13 +414,15 @@ $db->sql_freeresult($result);  // Refreshing the page every 60 seconds...  meta_refresh(60, append_sid("{$phpbb_root_path}viewonline.$phpEx", "sg=$show_guests&sk=$sort_key&sd=$sort_dir&start=$start")); +$base_url = append_sid("{$phpbb_root_path}viewonline.$phpEx", "sg=$show_guests&sk=$sort_key&sd=$sort_dir"); +phpbb_generate_template_pagination($template, $base_url, 'pagination', 'start', $counter, $config['topics_per_page'], $start); +  // Send data to template  $template->assign_vars(array( -	'TOTAL_REGISTERED_USERS_ONLINE'	=> sprintf($l_r_user_s, $logged_visible_online) . sprintf($l_h_user_s, $logged_hidden_online), -	'TOTAL_GUEST_USERS_ONLINE'		=> sprintf($l_g_user_s, $guest_counter), +	'TOTAL_REGISTERED_USERS_ONLINE'	=> $user->lang('REG_USERS_ONLINE', (int) $logged_visible_online, $user->lang('HIDDEN_USERS_ONLINE', (int) $logged_hidden_online)), +	'TOTAL_GUEST_USERS_ONLINE'		=> $user->lang('GUEST_USERS_ONLINE', (int) $guest_counter),  	'LEGEND'						=> $legend, -	'PAGINATION'					=> $pagination, -	'PAGE_NUMBER'					=> on_page($counter, $config['topics_per_page'], $start), +	'PAGE_NUMBER'					=> phpbb_on_page($template, $user, $base_url, $counter, $config['topics_per_page'], $start),  	'U_SORT_USERNAME'		=> append_sid("{$phpbb_root_path}viewonline.$phpEx", 'sk=a&sd=' . (($sort_key == 'a' && $sort_dir == 'a') ? 'd' : 'a') . '&sg=' . ((int) $show_guests)),  	'U_SORT_UPDATED'		=> append_sid("{$phpbb_root_path}viewonline.$phpEx", 'sk=b&sd=' . (($sort_key == 'b' && $sort_dir == 'a') ? 'd' : 'a') . '&sg=' . ((int) $show_guests)), @@ -441,5 +445,3 @@ $template->set_filenames(array(  make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));  page_footer(); - -?>
\ No newline at end of file  | 
