diff --git a/phpBB/includes/page_header.php b/phpBB/includes/page_header.php index d44e018c37..cfba8da10f 100644 --- a/phpBB/includes/page_header.php +++ b/phpBB/includes/page_header.php @@ -43,11 +43,14 @@ if($board_config['gzip_compress']) { if(strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip')) { - $do_gzip_compress = TRUE; - ob_start(); - ob_implicit_flush(0); + if(extension_loaded("zlib")) + { + $do_gzip_compress = TRUE; + ob_start(); + ob_implicit_flush(0); - header("Content-Encoding: gzip"); + header("Content-Encoding: gzip"); + } } } } @@ -79,7 +82,7 @@ $s_last_visit = create_date($board_config['default_dateformat'], $userdata['sess // Get basic (usernames + totals) online // situation // -$sql = "SELECT u.username, u.user_id, u.user_allow_viewonline, s.session_logged_in +$sql = "SELECT u.username, u.user_id, u.user_allow_viewonline, s.session_logged_in, s.session_ip FROM ".USERS_TABLE." u, ".SESSIONS_TABLE." s WHERE u.user_id = s.session_user_id AND s.session_time >= ".( time() - 300 ); @@ -89,20 +92,25 @@ if(!$result) message_die(GENERAL_ERROR, "Couldn't obtain user/online information.", "", __LINE__, __FILE__, $sql); } +$userlist_ary = array(); +$userlist_visible = array(); $logged_visible_online = 0; $logged_hidden_online = 0; $guests_online = 0; + while($row = $db->sql_fetchrow($result)) { if($row['session_logged_in']) { - if($row['user_allow_viewonline'] || $userdata['user_level'] == ADMIN) + if($row['user_allow_viewonline']) { - $userlist_ary[] = "" . $row['username'] . ""; + $userlist_ary[] = "" . $row['username'] . ""; + $userlist_visible[] = 1; } else { - $logged_hidden_online++; + $userlist_ary[] = "" . $row['username'] . ""; + $userlist_visible[] = 0; } } else @@ -111,20 +119,28 @@ while($row = $db->sql_fetchrow($result)) } } -$userlist = ""; +$online_userlist = ""; for($i = 0; $i < count($userlist_ary); $i++) { - if( !strstr($userlist, $userlist_ary[$i]) ) + if( !strstr($userlist, ">" . $userlist_ary[$i] . "") ) { - $userlist .= ($userlist != "") ? ", " . $userlist_ary[$i] : $userlist_ary[$i]; - $logged_visible_online++; + if( $userlist_visible[$i] || $userdata['user_level'] == ADMIN ) + { + $online_userlist .= ($online_userlist != "") ? ", " . $userlist_ary[$i] : $userlist_ary[$i]; + $logged_visible_online++; + } + else + { + $logged_hidden_online++; + } } } + $l_g_user_s = ($guests_online == 1) ? $lang['User'] : $lang['Users']; $l_h_user_s = ($logged_hidden_online == 1) ? $lang['User'] : $lang['Users']; $l_r_user_s = ($logged_visible_online == 1) ? $lang['User'] : $lang['Users']; $l_is_are = ($logged_visible_online == 1) ? $lang['is'] : $lang['are']; -$userlist = ($logged_visible_online > 0) ? $lang['Registered'] ." $l_r_user_s: " . $userlist : $lang['Registered'] . " $l_r_user_s: ".$lang['None']; +$online_userlist = ($logged_visible_online > 0) ? $lang['Registered'] . " $l_r_user_s: " . $online_userlist : $lang['Registered'] . " $l_r_user_s: " . $lang['None']; // // Obtain number of new private messages @@ -168,7 +184,7 @@ $template->assign_vars(array( "PAGE_TITLE" => $page_title, "META_INFO" => $meta_tags, "TOTAL_USERS_ONLINE" => $lang['There'] . " $l_is_are $logged_visible_online " . $lang['Registered'] . " $l_r_user_s, $logged_hidden_online " . $lang['Hidden'] . " $l_h_user_s ". $lang['and'] . " $guests_online " . $lang['Guest'] . " $l_g_user_s " . $lang['online'], - "LOGGED_IN_USER_LIST" => $userlist, + "LOGGED_IN_USER_LIST" => $online_userlist, "PRIVATE_MESSAGE_INFO" => $l_privmsgs_text, "LAST_VISIT_DATE" => $s_last_visit,