ThWboard Support-Forum (Archiv)

Ort: / Boardübersicht / Code Hack Requests / useronline in Profil


Seite 1 von 1

Heiner schrieb am 26.09.2002 um 11:15 Uhr

Hallo,
in der team.php wird ja angezeigt welche der im Team
vertretenen Mods etc. online ist.

In einem Hack von Bluetooth Postinguser_online-Hack by Bluetooth ...
wird neben den einzelnen Beiträgen angezeigt ob der User online ist (showtopic.php).

Ich wollte diese Funktion in der v_profile.php einbauen, damit dann beim
Aufruf des Profils des jeweiligen User angezeigt wird, ob dieser online ist.

Es funktioniert nicht.

Ich habe nur festgestellt, das die entsprechende Abfrage immer
in einer while Schleife steht.

while( $user = mysql_fetch_array($r_user) )
{
if( $a_online[$user['userid']] && $user['userinvisible'] != 1 )
{
$user['userisonline'] = 'Ja';
}
else............

in der v_profile.php wird jedoch nicht mit einer while Schleife
gearbeitet, sondern:

$user = mysql_fetch_array($r_user);

Liegt das Problem daran? Was kann man dagegen tun?

Bluetooth schrieb am 26.09.2002 um 13:38 Uhr

ich würde tippen, dass du in der SQL-Abfrage, aus der $r_user resultiert, das feld userisonline hinzufügen musst und nur die if-abfrage innerhalb der schleife

Heiner schrieb am 26.09.2002 um 18:10 Uhr

@Bluetooth,
jetzt mal andersrum:
den kennste ja:

//...Postinguser_online-Hack by Bluetooth
$pref = "thwb_";

     $r_online = thwb_query("SELECT DISTINCT
      online.onlineip,
      online.userid,
      user.username,
      user.userinvisible
  FROM
      ".$pref."online AS online
  LEFT JOIN
      ".$pref."user AS user
          ON online.userid=user.userid
  WHERE        online.onlinetime > " . (time() - 300) . "");
  $a_doubleuser = array();
  while( $online = mysql_fetch_array($r_online) )
      {
      if( $online['username'] && !$online['userinvisible'] )
          {
            if( !in_array($online['userid'], $a_doubleuser) )
                 {
                   $a_doubleuser[] = $online['userid'];
                 }
          }
          }
          if(in_array($post['userid'], $a_doubleuser))
          {
             $post['userisonline'] = '<b>Status: online</b>';
          }
          else
          {
             $post['userisonline'] = ' ';
          }



der ist in der showtopic.php
im Template postingrow.html dann $post[userisonline]

funktioniert bestens!

geht aber nicht wenn ich den in die v-profile.php einbaue.

Woran kanns liegen??

Heiner schrieb am 29.09.2002 um 17:24 Uhr

Gibt´s einen Weg das in die v_profile.php
einzubauen?

Bluetooth schrieb am 29.09.2002 um 17:26 Uhr

sicher gibts die, nur im moment zu wenig Zeit - bei mir zumindest.

Heiner schrieb am 29.09.2002 um 17:31 Uhr

Ok, dachte es könnte einfach in die v_profile.php
eingebaut werden.

Hast du vorerst vielleicht einen kleinen Gedankenansatz
wie das zu machen ist, vielleicht bekomme ich da
etwas hin.

Bluetooth schrieb am 29.09.2002 um 19:17 Uhr

kopier den code, pass die abfrage an - useronline verknüpft mit userid aus $g_user und dann hast den status

Heiner schrieb am 30.09.2002 um 09:34 Uhr

Na, vielleicht warte ich doch bis du wieder Zeit hast ;)

Bluetooth schrieb am 30.09.2002 um 09:46 Uhr

Siehe Signatur .. ich weiß net, wann ich Zeit habe - spätestens Juli 2003 :(,
die wenige Freizeit, die ich haben werde, stopf ich natürlich nicht die ganze Zeit mit PHP voll :D

Scrratch schrieb am 03.11.2002 um 12:34 Uhr

hmmm also ich habe auch mal getüftelt aber es ging nich (was mir eigentlich klar war) ;)

Blue, was meinst du damit? ich versteh kein wort :/ erzähl doch ma :)

Braese schrieb am 22.11.2002 um 15:16 Uhr

für 2.8 :
v-profile.php öffnen, zeile 35:

$user = mysql_fetch_array($r_user);


danach einfügen:

$r_online = thwb_query("SELECT DISTINCT
online.onlineip,
online.userid,
user.username,
user.userinvisible
FROM
".$pref."online AS online
LEFT JOIN
".$pref."user AS user
ON online.userid=user.userid
WHERE
online.onlinetime > " . (time() - 300) . "");
$a_doubleuser = array();
while( $online = mysql_fetch_array($r_online) )
      {
if( $online['username'] && !($online['userinvisible'] && !$g_user['userlevel']))
      {
            if( !in_array($online['userid'], $a_doubleuser) )
            {
                  $a_doubleuser[] = $online['userid'];
            }
      }
}



dann hiernach:

$user['usersignature'] = parse_code($user['usersignature'], 1, 1, 1, $config['smilies']);


folgendes einfügen:

if(in_array($user['userid'], $a_doubleuser))      
      {            
          $user['userisonline'] = 'online';      
          }      
      else      
      {           
         $user['userisonline'] = 'offline';     
         }



v_profile.php schliessen, im templates ordner die viewprofile.html öffnen
suchen nach:

$user[username]


abändern auf dieses:

$user[username] ($user[userisonline])



speichern, schliessen, aufrufen

Jonas schrieb am 22.11.2002 um 17:25 Uhr

braese, zieh dir mal die 2.8, wir hatten inzwischen versionswechsel... userlevel gibts net mehr ;)

Braese schrieb am 22.11.2002 um 20:51 Uhr

hehe, funzt trotzdem auf 2.8 denn ich hab nur die anzeige genommen die auf der hackpage steht und nur copy paste eingebaut, wunderte mich wieso hier stand es ginge nicht

Jonas schrieb am 22.11.2002 um 21:07 Uhr

ich habs net ausprobiert, ich habe nur darauf hingewiesen, dass das feld userlevel bei einer neuinstallation der 2,8 nicht existiert, der hack also _theoretisch_ fehler produzieren _muss_ ;) =)

Heiner schrieb am 22.11.2002 um 21:47 Uhr

Hallo,
bekomme Fehlermeldung:

Wrong datatype for second argument in call to in_array in v_profile.php

in dieser Zeile:

 if(in_array($user['userid'], $a_doubleuser))

Braese schrieb am 22.11.2002 um 22:41 Uhr

schick mal deine v_profile.php an bene.bene@allesklar.de und welche Version benutzt du Heiner

Heiner schrieb am 23.11.2002 um 00:36 Uhr

Moin,

der erste Teil war nicht richtig platziert.
Jetzt läuft es. Danke.

Braese schrieb am 23.11.2002 um 03:38 Uhr

kk ;)
dann kann ich mich jetzt ja an die buddy list machen

Buggyboy schrieb am 19.12.2003 um 11:14 Uhr

Hi!

bei mir hat es gleich gefunzt.
Hab dann noch die Farbe abgeändert.
Online = grün
Offline = rot

Jetzt mal eine Frage:
Wie bekomm ich das in die Postings z.b.: Unter den Namen?

Vielen Dank dafür...
Peter

Seite 1 von 1