Seite 1 von 1

User ID

Verfasst: 03.12.2007 08:30
von retaster
Guten Morgen,

Trotz Suche hier bin ich leider nicht so richtig fündig geworden.
Ist nicht unbedingt ein MOD Problem, deshalb poste ich mal hier.
Ich habe den wer-war-da mod installiert, habe aber noch eine allgemeine Frage.
Hier die Änderungen in der index.php

Code: Alles auswählen

$user_today_text['count_user'] = 'Heute waren bisher <b>{COUNT_USER_TODAY}</b> registrierte User online.';
$user_today_text['zuletzt_um'] = 'zuletzt um';
$user_today_text['no_user'] = 'Heute war bisher kein registrierter User online.';

$mitternacht = mktime(0,0,0,date('m'),date('d'),date('Y'));
$result = $db->sql_query('Select `user_id`, `username`, `user_session_time`, `user_level` FROM '.USERS_TABLE." WHERE `user_session_time` > $mitternacht ORDER BY `user_session_time` DESC");
while( $row = $db->sql_fetchrow($result))
   {
   $user_today .= ($count_user_today > 0) ? ', ' : '';
   $user_today .= '<a href="'.append_sid('profile.php?mode=viewprofile&u='.$row['user_id']).'"';
   $user_today .= ($row['user_level'] == 2) ? ' style="color: #006699'.$theme['fontcolor2'].'"><b>'.$row['username'].'</b></a>' : '';
   $user_today .= ($row['user_level'] != 1 && $row['user_level'] != 2) ? '">'.$row['username'].'</a>' : '';
   $user_today .= ' ('.$user_today_text['zuletzt_um'].' '.date('H:i', $row['user_session_time']).')';
   $count_user_today++;
   }
$user_today_text['count_user'] = ($count_user_today > 0) ? str_replace('{COUNT_USER_TODAY}', $count_user_today, $user_today_text['count_user']) : $user_today_text['no_user'];
$db->sql_freeresult($result);
Jetzt habe ich ausser dem Admin noch einen normalen user mit adminrechten. Dieser wird allerdings bei den besuchern jetzt auch nicht angezeigt. Wo muss ich die user id eintragen, damit nur der admin nicht angezeigt wird.

Danke schon mal

Gruss


Ich habs dann doch hingekriegt, man wächst ja mit seinen Aufgaben. :-)

Verfasst: 04.12.2007 01:54
von cYbercOsmOnauT
Zu Deiner Mod habe ich einige Fragen.
  • Wieso verwendest Du 1 und 2 anstelle von den Konstanten ADMIN und MOD?
  • Ist Dir an dieser Stelle

    Code: Alles auswählen

    $user_today .= ($row['user_level'] != 1 && $row['user_level'] != 2) ? '">'.$row['username'].'</a>' : '';
    aufgefallen dass Du den a-Tag, den Du 2 Zeilen weiter oben öffnest, bei Admins und Mods nicht schliesst?
  • Zwischenbemerkung: Du solltest die Variable $count_user_today vor der Schleife mit 0 initialisieren.
  • Wieso erzeugst Du für Admins und Mods überhaupt einen a-Tag wenn diese doch gar nicht an gezeigt werden sollen?
Also Du willst das alle User mit ihrer letzten Onlinezeit angezeigt werden sollen, nur der Hauptadmin (der mit der userid 2) nicht. Oder sollen sämtliche Admins nicht angezeigt werden? Wenn dann wieso nicht? Wegen der letzten Onlinezeit?

Beantworte mir bitte meine Fragen und ich versuche Dir zu helfen. :)

Grüße,
Tekin

User ID

Verfasst: 04.12.2007 07:28
von retaster
Hallo und Danke zunächst einmal.

Also das hier ist die Anleitung zum MOD. Die hab ich so übernommen, (auch das mit 1 und 2, da ich leider php technisch völliger Laie bin)
FORUM INDEX ÄNDERN
index.php
-----------------------------------------------------------------------

### Suche nach:
init_userprefs($userdata);
### darunter einfügen: (kann so ziemlich an jede Stelle der Seite eingefügt werden)
/*----------WER WAR HEUTE DA HACK----------*/
$user_today_text['count_user'] = 'Heute waren bisher <b>{COUNT_USER_TODAY}</b> registrierte User online.';
$user_today_text['zuletzt_um'] = 'zuletzt um';
$user_today_text['no_user'] = 'Heute war bisher kein registrierter User online.';

$mitternacht = mktime(0,0,0,date('m'),date('d'),date('Y'));
$result = $db->sql_query('Select `user_id`, `username`, `user_session_time`, `user_level` FROM '.USERS_TABLE." WHERE `user_session_time` > $mitternacht ORDER BY `user_session_time` DESC");
while( $row = $db->sql_fetchrow($result))
{
$user_today .= ($count_user_today > 0) ? ', ' : '';
$user_today .= '<a href="'.append_sid('profile.php?mode=viewprofile&u='.$row['user_id']).'"';
$user_today .= ($row['user_level'] == 1) ? ' style="color: #'.$theme['fontcolor3'].'"><b>'.$row['username'].'</b></a>' : '';
$user_today .= ($row['user_level'] == 2) ? ' style="color: #'.$theme['fontcolor2'].'"><b>'.$row['username'].'</b></a>' : '';
$user_today .= ($row['user_level'] != 1 && $row['user_level'] != 2) ? '">'.$row['username'].'</a>' : '';
$user_today .= ' ('.$user_today_text['zuletzt_um'].' '.date('H:i', $row['user_session_time']).')';
$count_user_today++;
}
$user_today_text['count_user'] = ($count_user_today > 0) ? str_replace('{COUNT_USER_TODAY}', $count_user_today, $user_today_text['count_user']) : $user_today_text['no_user'];
$db->sql_freeresult($result);
/*----------WER WAR HEUTE DA HACK----------*/

### Suche nach:
'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts),
'TOTAL_USERS' => sprintf($l_total_user_s, $total_users),
'NEWEST_USER' => sprintf($lang['Newest_user'], '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$newest_uid") . '">', $newest_user, '</a>'),
### darunter einfügen:
'COUNT_USER_TODAY' => $user_today_text['count_user'],
'USER_TODAY' => $user_today,




########################################################################
TEMPLATE ÄNDERN
Beispiel: templates/subSilver/index_body.tpl
-----------------------------------------------------------------------
### Suche nach:
<td class="row1" align="center" valign="middle" rowspan="2"><img src="templates/subSilver/images/whosonline.gif" alt="{L_WHO_IS_ONLINE}" /></td>
### Ersetzen durch:
<td class="row1" align="center" valign="middle" rowspan="3"><img src="templates/subSilver/images/whosonline.gif" alt="{L_WHO_IS_ONLINE}" /></td>

### Suche nach:
<tr>
<td class="row1" align="left"><span class="gensmall">{TOTAL_USERS_ONLINE} &nbsp; [ {L_WHOSONLINE_ADMIN} ] &nbsp; [ {L_WHOSONLINE_MOD} ]<br />{RECORD_USERS}<br />{LOGGED_IN_USER_LIST}</span></td>
</tr>
### Dahinter einfügen:
<tr><td class="row1" align="left"><span class="gensmall">{COUNT_USER_TODAY}<br />{USER_TODAY}</span></td> </tr>
Aber das Problem hab ich dann doch irgendwie hinbekommen, aber evtl kannst Du mir bei was anderem helfen:
Ich möchte das der admin nicht bei den angemeldeten usern mitgezählt wird. Ich hab zwar schon mal hier im Forum gestöbert, aber die Anleitung dort ist von 2005 und älter und die entsprechenden Code Stellen gibt es z.B in meiner index.php gar nicht. Vielleicht hast Du eine Idee.
Also beim Satz: "Heute waren x registrierte Benutzer online" soll der Admin nicht mitgezählt werden.
Wenn das ohne grösseren Aufwand machbar ist.

Danke schon mal

Gruss

Verfasst: 05.12.2007 00:00
von cYbercOsmOnauT
Da wäre es nützlich sich einen Blick in Deine Scripte index.php und /includes/functions.php zu werfen. Erstelle von denen mal eine Kopie und verlinke dazu.

KB:datei

User ID

Verfasst: 05.12.2007 06:57
von retaster
Hallo,


hier sind die beiden Dateien:
index.txt
functions.txt

Gruss

Verfasst: 05.12.2007 10:56
von cYbercOsmOnauT
Danke.. jetzt seh ich wie diese Mod genau arbeitet. Wir gehen den simpelsten Weg und passen die SQL leicht an.

Ändere

Code: Alles auswählen

$result = $db->sql_query('Select `user_id`, `username`, `user_session_time`, `user_level` FROM '.USERS_TABLE." WHERE `user_session_time`> $mitternacht ORDER BY `user_session_time` DESC" );
in

Code: Alles auswählen

$result = $db->sql_query('Select `user_id`, `username`, `user_session_time`, `user_level` FROM '.USERS_TABLE." WHERE `user_session_time`> $mitternacht AND `user_id` <> 2 ORDER BY `user_session_time` DESC" );
Damit wird der Hauptadmin aus der Zählung und Erkennung ausgeschlossen.

User ID

Verfasst: 05.12.2007 11:47
von retaster
Ja super, Danke,

ich hatte zwar auch schon mit ...
AND user_id
rumgespielt, hatte aber, mangels Kenntnis die Klammern
<>
nichtgesetzt.

Zwischenzeitlich hatte ich mir hiermit beholfen:
$user_today_text['count_user'] = 'Heute waren bisher <b>{COUNT_USER_TODAY}</b> registrierte User online.';
hab ich ausgetauscht in:
// $user_today_text['count_user'] = 'Heute waren folgende User online:';
Zwar nicht die elegante Art..... 8)

Jedenfalls nochmal Danke für die schnelle Hilfe.