Wer ist in welchem Forum zeigt Gäste nicht?
Verfasst: 19.11.2007 21:30
Hallo ihr habe den wer ist in welchem Forum mod eingebaut, aber er zeigt mir nicht an wenn gäste im forum sind, nur wenn angemeldete Benutzer im Forum sind, dann gehts, hat wer einen tip?
Code: Alles auswählen
##########################################################################################
##
## MOD Titel: Wer ist in welchem Forum aktiv - Index
## MOD Version: 1.2.0
## Autor: Acid
##
## Beschreibung: Dieser Hack zeigt auf dem Index an, welcher User in welchem
## Forum aktiv ist.
##
## Dateien zu ändern: 3
## index.php
## language/lang_german/lang_main.php
## templates/xxx/index_body.tpl
##
##########################################################################################
##
## Notiz:
## Als erstes sollte man alle betreffenden Dateien sichern.
##
## Der Code stammt teilweise aus der page_header.php.
## Am Ende dieser Datei findet man noch einen optionalen Teil.
##
##########################################################################################
##
## Versionen:
##
## v1.2.0 - umgeschrieben (weniger Queries)
## v1.0.3 - Junior Admins/Supermoderatoren werden nun auch farblich hervorgehoben
## - hatte noch vergessen einen Testcode zu löschen
## v1.0.2 - Fehler in index_body.tpl behoben
## v1.0.1 - Code bereinigt und optionalen Teil hinzugefügt
## v1.0.0 - Veröffentlichung
##
##########################################################################################
#
#-----[ ÖFFNEN ]------------------------------------------
#
# index.php
#
#-----[ FINDE ]------------------------------------------
#
while( $row = $db->sql_fetchrow($result) )
{
$forum_moderators[$row['forum_id']][] = '<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=" . $row['group_id']) . '">' . $row['group_name'] . '</a>';
}
$db->sql_freeresult($result);
#
#-----[ DARUNTER EINFÜGEN ]------------------------------------------
#
$sql_active = "SELECT u.username, u.user_id, u.user_allow_viewonline, u.user_level, s.session_logged_in, s.session_ip, f.forum_id
FROM ". USERS_TABLE ." u, ". SESSIONS_TABLE ." s, ". FORUMS_TABLE ." f
WHERE u.user_id = s.session_user_id AND s.session_time >= ". (time() - 300) ." AND s.session_page = f.forum_id
ORDER BY u.username ASC, s.session_ip ASC";
if( !($result_active = $db->sql_query($sql_active)) )
{
message_die(GENERAL_ERROR, 'could not obtain user/online information.', '', __LINE__, __FILE__, $sql_active);
}
$userlist_ary = array();
$userlist_visible = array();
$prev_userid = 0;
$prev_userip = $prev_sessionip = '';
while( $active = $db->sql_fetchrow($result_active) )
{
if( $active['session_logged_in'] )
{
if( $active['user_id'] != $prev_userid )
{
if( file_exists(@phpbb_realpath($phpbb_root_path .'includes/functions_color_groups.'.$phpEx)) )
{
include_once($phpbb_root_path .'includes/functions_color_groups.'.$phpEx);
$active['username'] = color_group_colorize_name($active['user_id']);
}
else
{
if( file_exists(@phpbb_realpath($phpbb_root_path .'includes/functions_jr_admin.'.$phpEx)) )
{
include_once($phpbb_root_path .'includes/functions_jr_admin.' . $phpEx);
$jr_admin_userdata = jr_admin_get_user_info($active['user_id']);
}
$style_color = '';
if( $active['user_level'] == ADMIN )
{
$active['username'] = '<b>'. $active['username'] .'</b>';
$style_color = 'style="color:#'. $theme['fontcolor3'] .'"';
}
else if( $active['user_id'] == $jr_admin_userdata['user_id'] || $active['user_level'] == LESS_ADMIN )
{
$active['username'] = '<b>'. $active['username'] .'</b>';
$style_color = 'style="color:#FF0000"';
}
else if( $active['user_level'] == MOD )
{
$active['username'] = '<b>'. $active['username'] .'</b>';
$style_color = 'style="color:#'. $theme['fontcolor2'] .'"';
}
}
if( $active['user_allow_viewonline'] )
{
$onlinerow[$active['forum_id']][] = '<a href="'. append_sid("profile.$phpEx?mode=viewprofile&". POST_USERS_URL ."=". $active['user_id']) .'" '. $style_color .'>'. $active['username'] .'</a>';
$logged_visible_active[$active['forum_id']][]++;
}
else
{
$onlinerow[$active['forum_id']][] = ( $active['user_allow_viewonline'] || $userdata['user_level'] == ADMIN ) ? '<a href="'. append_sid("profile.$phpEx?mode=viewprofile&". POST_USERS_URL ."=". $active['user_id']) .'" '. $style_color .'><i>'. $active['username'] .'</i></a>' : '';
$logged_hidden_active[$active['forum_id']][]++;
}
}
$prev_userid = $active['user_id'];
}
else
{
if( $active['session_ip'] != $prev_sessionip )
{
$guestrow[$active['forum_id']][] = '';
$guests_active[$active['forum_id']][]++;
}
}
$prev_sessionip = $active['session_ip'];
}
$db->sql_freeresult($result_active);
#
#-----[ FIND ]------------------------------------------
#
$template->assign_block_vars('catrow.forumrow', array(
'ROW_COLOR' => '#' . $row_color,
#
#-----[ REPLACE WITH ]------------------------------------------
#
if( count($onlinerow[$forum_id]) > '0' )
{
$users_total_guests = count($guests_active[$forum_id]);
$l_guests_total = ( $users_total_guests != '0' ) ? (( $users_total_guests == '1' ) ? $lang['Forum_one_guest_active'] : $lang['Forum_more_guests_active']) : '';
}
else
{
$users_total_guests = ' ';
$l_guests_total = '';
}
if( count($onlinerow[$forum_id]) > '0' )
{
$users_total = count($onlinerow[$forum_id]);
$users_total_hidden = count($logged_hidden_active[$forum_id]);
$users_active = implode(', ', $onlinerow[$forum_id]);
$l_active_total = ( $users_total == '1' ) ? $lang['Forum_one_active'] : $lang['Forum_more_active'];
$l_hidden_total = ( ($users_total_hidden != '0' ) ? ( $userdata['user_level'] == ADMIN ) ? '' : (( $users_total_hidden == '1' ) ? $lang['Forum_one_hidden_active'] : $lang['Forum_more_hidden_active']) : '');
}
else
{
$users_total = ' ';
$users_total_hidden = ' ';
$users_active = ' ';
$l_active_total = $lang['Forum_no_active'];
$l_hidden_total = '';
}
$template->assign_block_vars('catrow.forumrow', array(
'ACTIVE' => $users_active,
'ACTIVE_TOTAL' => sprintf($l_active_total, ($users_total+$users_total_guests)),
'ACTIVE_INFO' => sprintf($l_hidden_total, $users_total_hidden).sprintf($l_guests_total, $users_total_guests),
#
#-----[ ÖFFNEN ]------------------------------------------
#
# language/lang_german/lang_main.php
#
#-----[ FINDE ]------------------------------------------
#
$lang['Moderators'] = 'Moderatoren';
#
#-----[ DARUNTER EINFÜGEN ]------------------------------------------
#
// wenn man keine "0 users" anzeigen will, muss man die Auskommentierung (//) der
// folgenden Zeile entfernen und die Slashes vor die darauffolgende Zeile einfügen
// $lang['Forum_no_active'] = '';
$lang['Forum_no_active'] = '<b>0</b> User aktiv'; // <-- diese
$lang['Forum_one_active'] = '<b>%d</b> User aktiv: ';
$lang['Forum_more_active'] = '<b>%d</b> User aktiv: ';
$lang['Forum_one_hidden_active'] = '<b>%d</b> versteckter';
$lang['Forum_more_hidden_active'] = '<b>%d</b> versteckte';
$lang['Forum_one_guest_active'] = '<b>%d</b> Gast';
$lang['Forum_more_guests_active'] = '<b>%d</b> Gäste';
#
#-----[ ÖFFNEN ]------------------------------------------
#
# templates/xxx/index_body.tpl
#
#-----[ FINDE ]------------------------------------------
#
</span><span class="gensmall">{catrow.forumrow.L_MODERATOR} {catrow.forumrow.MODERATORS}</span></td>
#
#-----[ MIT FOLGENDEM ERSETZEN ]------------------------------------------
# falls man ein anderes Template als subSilver benutzt und/oder den obigen Code nicht
# finden kann, muss man nach nur einem Teil von diesem suchen
</span><span class="gensmall">{catrow.forumrow.L_MODERATOR} {catrow.forumrow.MODERATORS}</span><br />
<span class="gensmall">{catrow.forumrow.ACTIVE_TOTAL} {catrow.forumrow.ACTIVE} {catrow.forumrow.ACTIVE_INFO}</span></td>
##########################################################################################
#
#-----[ OPTIONALER TEIL ]---------------------------------------------
#
# wenn man den "Junior Admin" oder "Supermoderator" MOD installiert hat und die angezeigte
# Farbe ändern möchte
#
#-----[ FINDE (index.php) ]------------------------------------------
#
# ersetze #FF0000 mit der jeweiligen Farbe
else if( $active['user_id'] == $jr_admin_userdata['user_id'] || $active['user_level'] == LESS_ADMIN )
{
$active['username'] = '<b>'. $active['username'] .'</b>';
$style_color = 'style="color:#FF0000"';
}
#
#-------------------------------------------------------------------
#
# wenn diese Aktivitäten nur für Admins angezeigt werden sollen
#
#-----[ FINDE (index.php) ]------------------------------------------
#
if( count($onlinerow[$forum_id]) > '0' )
#
#-----[ MIT FOLGENDEM ERSETZEN ]------------------------------------------
#
if( count($onlinerow[$forum_id]) > '0' && $userdata['user_level'] == ADMIN )
#
#-------------------------------------------------------------------
#
# wenn diese Aktivitäten jeweils nur für den jeweiligen Moderator
# des Forums angezeigt werden sollen
#
#-----[ FINDE (index.php) ]------------------------------------------
#
if( count($onlinerow[$forum_id]) > '0' )
#
#-----[ MIT FOLGENDEM ERSETZEN ]------------------------------------------
#
$is_auth = array();
$is_auth = auth(AUTH_ALL, $forum_id, $userdata, $forum_topic_data);
if( count($onlinerow[$forum_id]) > '0' && $is_auth['auth_mod'] )
##########################################################################################
##########################################################################################
##########################################################################################