WIW-Profil-Anzeige

MrMind
Titel: WIW-Profil-Anzeige
Version: 1.0
Beschreibung: Autor:
MrMind

Version:
Version 1.0.2

Copyright:
Copyright liegt bei mir.
Einzigstes Copyright im Hack ist im PHP-Code und bitte diesen auch drinnen lassen

Beschreibung:
- Im Profil wird angezeigt, wo dieser User grad unterwegs ist
- Es wird fast jede Aktion angezeigt und verlinkt, jedoch führen die Links, in den Bereich wo man nicht rein darf/kann immer direkt auf die index-Seite
- Liest ein User ein Thema, ist in einem Board, antwortet oder startet einen neuen Thread in einem Bereich dem der User, der das Profil sich betrachtet, keine Leseberechtigung hat, so wird Sonstiges angezeigt und auf die index.php verlinkt.
- Hack ist eine Art AddOn für den WIW, aber läuft auch ohne ihn
- Hack kann durch hinzufügen einer case-Anweisung mit beliebigen weiteren Dateien verbunden werden

Getestet mit
wBB-Lite 1.0.2

Demo
keine

Sonstige Informationen
- Dieser Hack darf nur von mir angeboten werden.
- Ich übernehme keinerlei Haftung, die durch diesen Hack entstehen können.


Mfg
MrMind

Bug entfernt

User die invisible sind, werden nun mit keine Angabe gekennzeichnet, sowie User die Online sind.

Bug nochmal entfernt

Wenn ein User ein Profil von einem anderen betrachtet hat und man genau diesen User auch grad im Profil anguckt, dann gab es Probleme mit der Anzeige. Sollte nun behoben sein.

User die offline sind werden nun auch als keine Angaben richtig bezeichnet. Habe die SQL-Anweisung deswegen erweitert.

Ein Dank an Shr522 der mir bei der Problemlösungen geholfen hat.

----


weiter zum Download
hutzi
ich bitt mich wieder als Versuchskanickel an, wird heute noch eingebaut.
(wehe, es sind wieder zerstreute Leichtsinnsfehler drinne) großes Grinsen großes Grinsen

funzt soweit. Seinen eigenen Status sieht man aber nicht, wenn man in seinem Profil ist oder?
Weil da nix steht - und andere Member sind gerade nicht online.

Achtung an die User, die den Profilhack haben, einfach die in der Beschreibung dieses Hacks eingefügten Codes in der profil.tpl den anderen oben drüber und unten drunter vorhandenen Codes anpassen, siehe Beispiel:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
<tr>
<td width="30%" bgcolor="{tablecolorb}" id="tableb" align="left"><strong><smallfont>Rangimage:</font></strong></td>
<td width="70%" bgcolor="{tablecolora}" id="tablea" align="left"><smallfont>$rankimages</td>
              </tr>
              <tr>
<td width="30%" bgcolor="{tablecolorb}" id="tableb" align="left"><strong><smallfont>Zur Zeit unterwegs:</font></strong></td>
<td width="70%" bgcolor="{tablecolora}" id="tablea" align="left"><smallfont>$wiw_profile_output</td>
              </tr>              
              <tr>
<td width="30%" bgcolor="{tablecolorb}" id="tableb" align="left"><strong><smallfont>Beitr&auml;ge:</font></strong></td>
<td width="70%" bgcolor="{tablecolora}" id="tablea" align="left"><smallfont>$user_info[userposts] ($postperday pro Tag)</td>
              </tr>
Thorsten_2004
also bei mir kommt immer das wen ich auf das Profil gehen
Zitat:
Fatal error: Maximum execution time of 10 seconds exceeded in /usr/export/www/vhosts/funnetwork/hosting/thorstensseite/ALLY_X/forum/acp/l
ib/class_db_mysql.php on line 53
:-(

Mfg
MrMind
@hutzi

da fällt mir grad noch was ein was ich noch einbinden wollte, egal mach ich morgen.

@Thorsten

mh 10 sekunden hast du nur zur verfügung um eine Anwendung zu laden??? das ist argh wenig.

Normalerweise ist der code net so aufwendig, das er so lange braucht.

Ich schau nochmal drüber, kann aber leider nichts versprechen.

Mfg
MrMind
hutzi
ich tipp mal auf nen kleinen Einbaufehler in deiner profile.php
MrMind
Zitat:
Original von hutzi
ich tipp mal auf nen kleinen Einbaufehler in deiner profile.php


net ganz *gg*

Eine weitere Überprüfung ob dieser User online ist bzw. invisible.

Dann schreibe ich was anderes hinein.

Mfg
MrMind
Thorsten_2004
das wehre net von dir danke den auch nach den 10 sec. ist das gleiche der bleibt einfach dort hängen
hutzi
Zitat:
Original von MrMind
Zitat:
Original von hutzi
ich tipp mal auf nen kleinen Einbaufehler in deiner profile.php


net ganz *gg*

Eine weitere Überprüfung ob dieser User online ist bzw. invisible.

Dann schreibe ich was anderes hinein.

Mfg
MrMind


neeee, das war an Thorsten gedacht, aber falsch *g*

yo, das mit deiner Idee ist gut - mit dem Invisibledingsbums großes Grinsen
HCC
Wow,
ich dachte ich lese nicht richtig. WIW im Profil geschockt . Das ging aber schnell. Ich überlege grad ob ich ihn jetzt einbau oder morgen. Soll ich lieber noch abwarten?

Gruß

HCC
MrMind
Zitat:
Original von HCC
Wow,
ich dachte ich lese nicht richtig. WIW im Profil geschockt . Das ging aber schnell. Ich überlege grad ob ich ihn jetzt einbau oder morgen. Soll ich lieber noch abwarten?

Gruß

HCC


Jetzt kannste es machen *gg*

Sollte nun Bugfrei sein.

Wegen den 10 sec. kann ich wenig machen, da ich schon sehr auf performance geguckt habe. Ist halt auch ne total große SQL-Anweisung, blos wenn cih die in mehrere aufspalte, dann kann das die Performance beeinträchtigen.

Alle die gestern den Hack gezogen haben, wie folgt zu fixen:

profile.php

Suche nach:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
#
# wiw-profil-anzeige von MrMind
# Anfang
#

...

#
# wiw-profil-anzeige von MrMind
# Ende
#


Also alles was zwischen den Kommentaren steht Augenzwinkern *ist ne einfache lösung mit den Kommentaren suchen Augenzwinkern *

und erstze es durch:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
#
# WIW-Profil-Anzeige von MrMind
# Anfang
#
$sql = "SELECT s.request_uri, s.boardid, s.threadid, b.title, t.topic, u.invisible
        FROM bb".$n."_threads t, bb".$n."_boards b, bb".$n."_sessions s, bb".$n."_permissions p, bb".$n."_users u
        WHERE s.userid = " . $userid . "
        AND u.userid = s.userid
        AND s.boardid = 0
        OR
        (
           s.boardid = b.boardid
           AND p.boardid = s.boardid
           AND p.groupid = " . $wbbuserdata['groupid'] . "
           AND p.boardpermission = 1
           AND
           ( s.threadid = 0
             OR  s.threadid = t.threadid
           )
         )";

$wiw_profil = $db->query_first($sql);

$wiw_uri = explode('?',$wiw_profil['request_uri']);

$wiw_sid = 'sid=' . $session['hash'];

if( empty($wiw_profil['invisible']) || $wbbuserdata['canuseacp'] )
{
  switch($wiw_uri[0])
  {
    case 'index.php':
          $wiw_url = 'index.php?'.$wiw_sid;
          $wiw_text ='Forenindex';
          break;
    case 'memberslist.php':
          $wiw_url = 'memberslist.php?'.$wiw_sid;
          $wiw_text = 'Memberlist';
          break;
    case 'wiw.php':
          $wiw_url = 'wiw.php?'.$wiw_sid;
          $wiw_text = 'Wer ist Wo';
          break;
    case 'login.php':
          $wiw_url = 'index.php?'.$wiw_sid;
          $wiw_text = 'Anmeldung';
          break;
    case 'logout.php':
          $wiw_url = 'index.php?'.$wiw_sid;
          $wiw_text = 'Logout';
          break;
    case 'pms.php':
          $wiw_pms = explode('action=',$wiw_profil['request_uri']);
          $wiw_pms = explode('&',$wiw_pms[1]);
          switch ($wiw_pms[0])
          {
            case 'newpm':
                 $wiw_text = 'Private Nachricht erstellen';
                 break;
            case 'viewpm':
                 $wiw_text = 'Private Nachricht ansehen';
                 break;
            case 'replypm':
                 $wiw_text = 'Private Nachricht beantworten';
                 break;
            case 'forwardpm':
                 $wiw_text = 'Private Nachricht weiterleiten';
                 break;
            default:
                 $wiw_text = 'Private Nachrichten';
                 break;
          }
          $wiw_url = 'index.php?'.$wiw_sid;
          break;
    case 'usercp.php':
         $wiw_url = 'index.php?'.$wiw_sid;
         $wiw_text = 'User CP';
         break;  
    case 'profile.php':
         $wiw_user = explode('userid=',$wiw_profil['request_uri']);
         $wiw_user = $wiw_user[1];

         $sql = "SELECT userid,username FROM bb".$n."_users WHERE userid = " . $wiw_user[0];
         $wiw_user = $db->query_first($sql);
        
         $wiw_url ='profile.php?useruid='.$wiw_user['userid'].'&'.$wiw_sid;
         $wiw_text = 'Profil von ' . $wiw_user['username'];
         break;  
    case 'register.php':
         $wiw_url = 'index.php?'.$wiw_sid;
         $wiw_text = 'Registrierung';
         break;
    case 'search.php':
         $wiw_url = 'search.php?'.$wiw_sid;
         $wiw_text = 'Boardsuche';
         break;
    case 'team.php':
         $wiw_url = 'team.php?'.$wiw_sid;
         $wiw_text = 'Teamansicht';
         break;
    case 'board.php':       
         $wiw_url = 'board.php?boardid=' . $wiw_profil['boardid'] . '&' . $wiw_sid;
         $wiw_text = 'Im Board: ' . $wiw_profil['title'];
         break;
    case 'thread.php':
         $wiw_url = 'thread.php?threadid=' . $wiw_profil['threadid'] . '&' . $wiw_sid;
         $wiw_text = 'Thema ' . $wiw_profil['topic'];
         break;
    case 'addreply.php':
         $wiw_url = 'thread.php?threadid=' . $wiw_profil['threadid'] . '&' . $wiw_sid;
         $wiw_text = 'Antwort schreiben in: ' . $wiw_profil['topic'];
         break;
    case 'newthread.php':
         $wiw_url = 'board.php?boardid=' . $wiw_profil['boardid'] . '&' . $wiw_sid;
         $wiw_text = 'Neues Thema erstellen in ' . $wiw_profil['title'];
         break;
    case '':
         $wiw_url = 'index.php?' . $wiw_sid;
         $wiw_text = 'keine Angabe';
         break;
    default:
         $wiw_url = 'index.php?'.$wiw_sid;
         $wiw_text = 'Sonstiges';
         break;
  }
}
else
{
   $wiw_url='index.php' . $wiw_sid;
   $wiw_text = 'keine Angabe';
}

$wiw_profile_output = makehreftag($wiw_url,$wiw_text,'_blank');

#
# WIW-Profil-Anzeige von MrMind
# Ende
#



das wars.

Mfg
MrMind
HCC
Ich hab diese Fehlermeldung bekommen wo ich ins Profil ging.



Warning: mysql_query(): Unable to save result set in /home/www/ncf548/html/Forum/acp/lib/class_db_mysql.php on line 53
SQL-DATABASE ERROR

Database error in WoltLab Burning Board: Invalid SQL: SELECT s.request_uri, s.boardid, s.threadid, b.title, t.topic FROM bb1_threads t, bb1_boards b, bb1_sessions s, bb1_permissions p WHERE s.userid = 55 AND s.boardid = 0 OR ( s.boardid = b.boardid AND p.boardid = s.boardid AND p.groupid = 1 AND p.boardpermission = 1 AND ( s.threadid = 0 OR s.threadid = t.threadid ) )
mysql error: MySQL client run out of memory
mysql error number: 2008
Date: 22.06.2005 @ 00:44
Script: /profile.php?userid=55&sid=
Referer: http://www.4-laender-triker-forum.de/portal.php?sid=

Gruß
HCC

EDIT: Aber nur wenn ich auch einen User klcke der online ist. Offline User haben keine Fehlermeldung
MrMind
Mh ok, ich werde morgen dann mal eine zweite Variante basteln mit kleineren SQL-Abfragen aber dafür halt mehr. Wer diese Meldung bekommt, muss dann halt auf die 2. Variante ausweichen.


mfg
MrMind
Thorsten_2004
also ich habe das neue rein gepackt aber es kommt immer noch

Zitat:
Fatal error: Maximum execution time of 10 seconds exceeded in /usr/export/www/vhosts/funnetwork/hosting/thorstensseite/ALLY_X/forum/acp/l
ib/class_db_mysql.php on line 53
HCC
Ich werd das Tamplate schon mal lassen.


Gruß

HCC
MrMind
Zitat:
Original von Thorsten_2004
also ich habe das neue rein gepackt aber es kommt immer noch

Zitat:
Fatal error: Maximum execution time of 10 seconds exceeded in /usr/export/www/vhosts/funnetwork/hosting/thorstensseite/ALLY_X/forum/acp/l
ib/class_db_mysql.php on line 53


Warte auf die 2. Variante die morgen erscheint ok??

Mfg
MrMind
Thorsten_2004
ist ok
ich bedanke mich jetz schon mal den vor einem Monat habe ich im mywbb
mal nach disem Hack gefagt und die haben mich "ausgelacht" den die haben mir alle gesagt das so was im 1.X.X nicht geht
SnakeBlood
Also wenn ich den Hack einbaue geht bei mir im Forum garnix mehr , wenn ich die alte usercp.php einbaue gehts wieder :/
hutzi
an der usercp wird doch gar nichts geändert ?
Thorsten_2004
* ./profile.php
* ./templates/profile.tpl

und nur die ^^
MrMind
So nächstes Update ist draußen und nun sollten alle Bugs behoben sein (ein Versprechen das die Time Out Errors behoben sind, kann ich allerdings net machen).

Sucht in der profile.php nach:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
#
# wiw-profil-anzeige von MrMind
# Anfang
#

....

#
# wiw-profil-anzeige von MrMind
#Ende
#


Also wieder alles was dazwischen ist (mit den Kommentaren natürlich) suche und
hierdurch

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
#
# WIW-Profil-Anzeige von MrMind
# Anfang
#
$sql = "SELECT s.request_uri, b.boardid, t.threadid, b.title, t.topic, u.invisible
			FROM bb".$n."_sessions s 
			LEFT JOIN bb".$n."_users u USING (userid) 
			LEFT JOIN bb".$n."_permissions p ON (p.boardid=s.boardid AND p.groupid=$wbbuserdata[groupid] AND p.boardpermission=1)
			LEFT JOIN bb".$n."_boards b ON (s.boardid=b.boardid AND p.boardpermission=1) 
			LEFT JOIN bb".$n."_threads t ON (s.threadid=t.threadid AND p.boardpermission=1)
			WHERE s.userid = " . $userid . "
			AND u.lastactivity >= " . (time() - $useronlinetimeout * 60);

$wiw_profil = $db->query_first($sql);

$wiw_uri = explode('?',$wiw_profil['request_uri']);

$wiw_sid = 'sid=' . $session['hash'];

if( empty($wiw_profil['invisible']) || $wbbuserdata['canuseacp'] )
{
  switch($wiw_uri[0])
  {
    case 'index.php':
          $wiw_url = 'index.php?'.$wiw_sid;
          $wiw_text ='Forenindex';
          break;
    case 'memberslist.php':
          $wiw_url = 'memberslist.php?'.$wiw_sid;
          $wiw_text = 'Memberlist';
          break;
    case 'wiw.php':
          $wiw_url = 'wiw.php?'.$wiw_sid;
          $wiw_text = 'Wer ist Wo';
          break;
    case 'login.php':
          $wiw_url = 'index.php?'.$wiw_sid;
          $wiw_text = 'Anmeldung';
          break;
    case 'logout.php':
          $wiw_url = 'index.php?'.$wiw_sid;
          $wiw_text = 'Logout';
          break;
    case 'pms.php':
          $wiw_pms = explode('action=',$wiw_profil['request_uri']);
          $wiw_pms = explode('&',$wiw_pms[1]);
          switch ($wiw_pms[0])
          {
            case 'newpm':
                 $wiw_text = 'Private Nachricht erstellen';
                 break;
            case 'viewpm':
                 $wiw_text = 'Private Nachricht ansehen';
                 break;
            case 'replypm':
                 $wiw_text = 'Private Nachricht beantworten';
                 break;
            case 'forwardpm':
                 $wiw_text = 'Private Nachricht weiterleiten';
                 break;
            default:
                 $wiw_text = 'Private Nachrichten';
                 break;
          }
          $wiw_url = 'index.php?'.$wiw_sid;
          break;
    case 'usercp.php':
         $wiw_url = 'index.php?'.$wiw_sid;
         $wiw_text = 'User CP';
         break;  
    case 'profile.php':
         $wiw_user = explode('userid=',$wiw_profil['request_uri']);         
         $wiw_user = substr($wiw_user[1],0,strpos($wiw_user[1],'&'));

         $sql = "SELECT userid,username FROM bb".$n."_users WHERE userid = " . intval($wiw_user);
         $wiw_user = $db->query_first($sql);
        
         $wiw_url ='profile.php?useruid='.$wiw_user['userid'].'&'.$wiw_sid;
         $wiw_text = 'Profil von ' . $wiw_user['username'];
         break;  
    case 'register.php':
         $wiw_url = 'index.php?'.$wiw_sid;
         $wiw_text = 'Registrierung';
         break;
    case 'search.php':
         $wiw_url = 'search.php?'.$wiw_sid;
         $wiw_text = 'Boardsuche';
         break;
    case 'team.php':
         $wiw_url = 'team.php?'.$wiw_sid;
         $wiw_text = 'Teamansicht';
         break;
    case 'board.php':       
         $wiw_url = ( ( !empty($wiw_profil['boardid']) ) ? 'board.php?boardid=' . $wiw_profil['boardid'] . '&' : 'index.php?' ) . $wiw_sid;
         $wiw_text = ( !empty($wiw_profil['boardid']) ) ? 'Im Board: ' . $wiw_profil['title'] : 'Sonstiges';
         break;
    case 'thread.php':
         $wiw_url = ( ( !empty($wiw_profil['threadid']) ) ? 'thread.php?threadid=' . $wiw_profil['threadid'] . '&' : 'index.php?' ) . $wiw_sid;
         $wiw_text = ( !empty($wiw_profil['threadid']) ) ? 'Thema ' . $wiw_profil['topic'] : 'Sonstiges';
         break;
    case 'addreply.php':
         $wiw_url = ( ( !empty($wiw_profil['threadid']) ) ? 'thread.php?threadid=' . $wiw_profil['threadid'] . '&' : 'index.php?' ) . $wiw_sid;
         $wiw_text = ( !empty($wiw_profil['threadid']) ) ? 'Antwort schreiben in: ' . $wiw_profil['topic'] : 'Sonstiges';
         break;
    case 'newthread.php':
         $wiw_url = ( ( !empty($wiw_profil['boardid']) ) ? 'board.php?boardid=' . $wiw_profil['boardid'] . '&' : 'index.php?' ) . $wiw_sid;
         $wiw_text = ( !empty($wiw_profil['boardid']) ) ? 'Neues Thema erstellen in ' . $wiw_profil['title'] : 'Sonstiges';
         break;
    case '':
         $wiw_url = 'index.php?' . $wiw_sid;
         $wiw_text = 'keine Angabe';
         break;
    default:
         $wiw_url = 'index.php?'.$wiw_sid;
         $wiw_text = 'Sonstiges';
         break;
  }
}
else
{
   $wiw_url='index.php' . $wiw_sid;
   $wiw_text = 'keine Angabe';
}

$wiw_profile_output = makehreftag($wiw_url,$wiw_text,'_blank');

#
# WIW-Profil-Anzeige von MrMind
# Ende
#


Ersetzen.

Mfg
mrMind