Seite 1 von 1

Thank you hack

Verfasst: 22.09.2004 12:22
von SuesseMaus1
Kann mir jemand sagen wo ich den hack Thank you oder so ähnlich finde?
Vielen Dank im voraus

Verfasst: 22.09.2004 12:33
von Markus67
Hi ...

Was soll der MOD denn genau machen ?

Spontan fällt mir nur dieser hier ein ...
Bedankomat

Markus

Verfasst: 24.09.2004 05:55
von SuesseMaus1
ja das ist das aber wo kann ich den hack runterladen?

Verfasst: 24.09.2004 09:47
von Markus67
Hi ...

Du musst den Code in diesem Beitrag einfach kopieren ...

http://www.phpbb2.de/viewtopic.php?p=50901#50901

Markus

Verfasst: 25.09.2004 14:25
von SuesseMaus1
Markus vielen Dank, genau das suchte ich..
Ich hab da alles verstanden nur, das verstehe ich nicht ganz

Code: Alles auswählen

IMPORTANT: 

You will have to create an extra table. Plase run the following SQL-code 
within your DBMS: 

CREATE TABLE `phpbb_bedankomat` ( 
  `thx_id` smallint(11) NOT NULL auto_increment, 
  `user_id` smallint(11) NOT NULL default '0', 
  `topic_id` smallint(11) NOT NULL default '0', 
  PRIMARY KEY  (`thx_id`) 
) TYPE=MyISAM; 
SQL Wo ist das wo find ich sowas :-? und wo schreib ich diese TAbellen?
Kann mir jemand ein Link geben wo alles erklärt ist. :oops:

Hab so was noch nie gemacht :oops:

Verfasst: 25.09.2004 15:22
von Tuxman
In der Mail von deinem Hoster müsstest du einen Link zu phpMyAdmin bekommen haben.
Wie du nun vorgehen musst, steht hier:
KB:122

Verfasst: 27.09.2004 00:08
von SuesseMaus1
Vielen Dank :P :roll:
Hab das mit SQL alles gemacht, nur ist der hack nciht das was ich suche.
Ich hab bereits schon hide installiert und hab bbcode_box deshalb stimmt hier was nicht :( Ich bekomm lauter fehler :(

Code: Alles auswählen

vorhanden. Das ist wenigstens ein Anfang. 
   $thx_user_id = intval($HTTP_GET_VARS['u']); 
   $thx_topic_id = intval($HTTP_GET_VARS['t']); 
   $thx_mode = stripslashes($HTTP_GET_VARS['mode']); 

   switch ($thx_mode) 
   { 
      case 'add_thx': 
            // Von mir aus. Ein 'Dankeschoen' soll also hinzugefuegt werden. 
            // Es kostet zwar eine zuaetzliche SQL-Abfrage, aber wir sollten an dieser 
            // Stelle anhand der User-Datenbank pruefen, ob die gegebene User-ID wirklich 
            // gueltig ist. 
            // Auch den User ANONYMOUS (-1) wollen wir ausschliessen. 
            $sql = 'SELECT user_id FROM ' .USERS_TABLE. ' WHERE user_id=' .$thx_user_id. ' LIMIT 1'; 
            if ( !($result = $db->sql_query($sql)) ) 
            { 
               message_die(GENERAL_ERROR, 'Could not obtain user information', '', __LINE__, __FILE__, $sql); 
            }            
            if (($db->sql_numrows($result) == 0) && ($thx_user_id == -1)) 
            { 
               // Ein Satz mit 'X' - das war wohl nix. 
               // Es wurde eine ungueltige User-ID uebergeben. 
               // Um so besser - dann haben wir weniger zu tun. 
               message_die(GENERAL_ERROR, 'Invalid User-ID', '', __LINE__, __FILE__, $sql); 
            } 

            // Man soll sich ja pro Topic nur einmal bedanken koennen. Also muesen wir jetzt prufen, ob 
            // dieser User sich bereits fuer dieses Topic bedankt hat. 
            $sql = 'SELECT * FROM ' .BEDANKOMAT_TABLE. ' WHERE (user_id=' .$thx_user_id. ') AND (topic_id=' .$thx_topic_id. ') LIMIT 1'; 
            if ( !($result = $db->sql_query($sql)) ) 
            { 
               message_die(GENERAL_ERROR, 'Could not obtain bedankomat information', '', __LINE__, __FILE__, $sql); 
            } 
            if ($db->sql_numrows($result) != 0) 
            { 
               // Noch ein Satz mit 'X' - das war wohl wieder nix. 
               // Dieser User hat sich fuer diesen Thread bereits bedankt. 
               message_die(GENERAL_ERROR, 'Einmal reicht. ;-)', '', __LINE__, __FILE__, $sql); 
            } 

            // Hier endlich angekommen scheint alles klar zu gehen. ;-) 
            // Der User existiert, will sich aufrichtig bedanken und hat dies auch noch nicht getan. 
            $sql = 'INSERT INTO ' .BEDANKOMAT_TABLE. ' (user_id, topic_id) VALUES (' .$thx_user_id. ', ' .$thx_topic_id. ')'; 
            if ( !($result = $db->sql_query($sql)) ) 
            { 
               message_die(GENERAL_ERROR, 'Could not update bedankomat information', '', __LINE__, __FILE__, $sql); 
            } 
            // done. 

            break; 
      case 'remove_thx': 
            // Von mir aus. Ein 'Dankeschoen' soll also zurueckgenommen werden. 
            // Es kostet zwar eine zuaetzliche SQL-Abfrage, aber wir sollten an dieser 
            // Stelle anhand der User-Datenbank pruefen, ob die gegebene User-ID wirklich 
            // gueltig ist. 
            // Auch den User ANONYMOUS (-1) wollen wir ausschliessen. 
            $sql = 'SELECT user_id FROM ' .USERS_TABLE. ' WHERE user_id=' .$thx_user_id. ' LIMIT 1'; 
            if ( !($result = $db->sql_query($sql)) ) 
            { 
               message_die(GENERAL_ERROR, 'Could not obtain user information', '', __LINE__, __FILE__, $sql); 
            }            
            if (($db->sql_numrows($result) == 0) && ($thx_user_id == -1)) 
            { 
               // Ein Satz mit 'X' - das war wohl nix. 
               // Es wurde eine ungueltige User-ID uebergeben. 
               // Um so besser - dann haben wir weniger zu tun. 
               message_die(GENERAL_ERROR, 'Invalid User-ID', '', __LINE__, __FILE__, $sql); 
            } 

            // Wir wollen nur dann weiter machen, wenn sich dieser User auch fuer dieses Topic bedankt hat. 
            // Man koennte sich ueberlegen, sich diese Abfrage zu schenken, aber es schadet nichts, 
            // fuer alle Situationen gewappnet zu sein. 
            $sql = 'SELECT * FROM ' .BEDANKOMAT_TABLE. ' WHERE (user_id=' .$thx_user_id. ') AND (topic_id=' .$thx_topic_id. ') LIMIT 1'; 
            if ( !($result = $db->sql_query($sql)) ) 
            { 
               message_die(GENERAL_ERROR, 'Could not obtain bedankomat information', '', __LINE__, __FILE__, $sql); 
            } 
            if ($db->sql_numrows($result) == 0) 
            { 
               // Noch ein Satz mit 'X' - das war wohl wieder nix. 
               // Dieser User hat sich fuer diesen Thread niemals bedankt. 
               message_die(GENERAL_ERROR, 'invalid data', '', __LINE__, __FILE__, $sql); 
            } 

            // Endlich: 
            // Dann versuchen wir jetzt, das 'Dankeschoen' dieses Users fuer genau dieses Topic 
            // aus der Datenbank zu entfernen. 
            $sql = 'DELETE FROM ' .BEDANKOMAT_TABLE. ' WHERE (user_id=' .$thx_user_id. ') AND (topic_id=' .$thx_topic_id. ') LIMIT 1'; 
            if ( !($result = $db->sql_query($sql)) ) 
            { 
               message_die(GENERAL_ERROR, 'Could not update bedankomat information', '', __LINE__, __FILE__, $sql); 
            } 
            // done. 

            break; 
      default: 
            // und was machen wir hier? irgendeine Fehlermeldung auszugeben waere nicht das Verkehrteste.... 
            message_die(GENERAL_ERROR, 'unknown "mode"', '', __LINE__, __FILE__, $sql); 
            break; 
   } 

   $db->sql_freeresult($result); 
   unset( $sql ); 
   unset( $thx_user_id ); 
   unset( $thx_topic_id ); 
   unset( $thx_mode ); 
} 

////////////////////////////////////////////// 
// 
// Bedankomat Ende (1) 
// 
////////////////////////////////////////////// 

# 
#-----[ FIND ]------------------------------------------ 
# 
// 
// Topic watch information 
// 

# 
#-----[ BEFORE, ADD ]------------------------------------------ 
# 
///////////////////////////////////////////////////////// 
// 
//   Bedankomat-Start (2) 
// 
///////////////////////////////////////////////////////// 


// nungut - erstmal soll das Teil nur fuer registrierte Benuzer vorhanden sein. 
if ($userdata['session_logged_in']) 
{ 
   // Nun muss sich der Admin entscheiden - soll ein Benutzer die Möglichkeit haben, ein 
   // 'Dankeschoen' wieder zurueckzunehmen? Wenn nicht, dann muss die folgende Variable 
   // auf '0' gestzt werden, sonst eben auf einen Wert ungleich '0' - etwa die '1' wäre 
   // eine gute Alternative ;-) 
   $allow_remove_thanks = 1;  // noch nicht implementiert !!!!! 


   // Jetzt gibt es zwei Moeglichkeiten: 
   // (1) Dieser Benutzer hat sich bereits bedankt - dann koennte er seine Danksagung zurueckziehen 
   // (2) Dieser Benutzer hat sich noch nicht bedankt und erhaelt jetzt die Möglichkeit hierzu 
    

   // Feststellen, ob der aktuelle Benutzer sich fuer dieses Topic schon bedankt hat. 
   $sql = 'SELECT * FROM ' .BEDANKOMAT_TABLE. ' WHERE (user_id=' . $userdata['user_id'] . ') AND (topic_id=' .$topic_id. ') LIMIT 1'; 
   if ( !($result = $db->sql_query($sql)) ) 
   { 
      message_die(GENERAL_ERROR, 'Could not obtain user-bedankomat information', '', __LINE__, __FILE__, $sql); 
   } 


   if ($db->sql_numrows($result) == 1) 
   { 
      // Daten liegen vor - Benutzer hat sich also schon bedankt. 
      $l_bedankomat = '\'Dankeschön\' zurücknehmen'; 
      $u_bedankomat = append_sid('viewtopic.'.$phpEx.'?mode=remove_thx&u='.$userdata['user_id'].'&t='.$topic_id); 
   } 
   else 
   { 
      // Daten liegen nicht vor - Benutzer hat sich also noch nicht bedankt. 
      $l_bedankomat = '\'Dankeschön\' sagen.'; 
      $u_bedankomat = append_sid('viewtopic.'.$phpEx.'?mode=add_thx&u='.$userdata['user_id'].'&t='.$topic_id); 
   } 
} 
else 
{ 
   $l_bedankomat = ''; 
   $u_bedankomat = ''; 
} 


// Jetzt generieren wir die Ansicht fuer diejenigen, die sich bedankt haben. 
$sql = 'SELECT b.user_id, b.topic_id, u.username FROM ' .BEDANKOMAT_TABLE. ' b, ' .USERS_TABLE. ' u 
   WHERE (b.user_id = u.user_id) AND (b.topic_id = ' .$topic_id. ')'; 
if ( !($result = $db->sql_query($sql)) ) 
{ 
   message_die(GENERAL_ERROR, 'Could not obtain topic-bedankomat information', '', __LINE__, __FILE__, $sql); 
} 

$thx_users = array(); 
$num_thxs = $db->sql_numrows($result); 
$thx_users = $db->sql_fetchrowset($result); 

if ($num_thxs > 0) 
{ 
   $l_thx_userlist = ''; 
   $l_thx_user = 'Für diesen Thread bedanken sich die folgenden User:'; 

   for ($index=0; $index<$num_thxs; $index++) 
   { 
      $l_thx_userlist .= ($index==0) ? $thx_users[$index]['username'] : ', ' . $thx_users[$index]['username']; 
   } 

   $template->assign_block_vars('switch_bedankomat', array() ); 
} 
else 
{ 
   $l_thx_userlist = ''; 
   $l_thx_user = ''; 
} 

unset( $num_thxs ); 
unset( $thx_users ); 

///////////////////////////////////////////////////////// 
// 
//   Bedankomat-Ende (2) 
// 
///////////////////////////////////////////////////////// 

# 
#-----[ FIND ]------------------------------------------ 
# 
'L_GOTO_PAGE' => $lang['Goto_page'], 

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
'L_BEDANKOMAT' => $l_bedankomat, 
'U_BEDANKOMAT' => $u_bedankomat, 
'L_BEDANKOMAT_USERS' => $l_thx_userlist, 
'L_BEDANKOMAT_TEXT' => $l_thx_user, 

# 
#-----[ OPEN ]------------------------------------------ 
# 
templates/subSilver/viewtopic_body.tpl 

# 
#-----[ FIND ]------------------------------------------ 
# 
   <td align="left" valign="middle" width="100%"><span class="nav">&nbsp;&nbsp;&nbsp;<a href="{U_INDEX}" class="nav">{L_INDEX}</a> 
     -> <a href="{U_VIEW_FORUM}" class="nav">{FORUM_NAME}</a></span></td> 
  </tr> 
# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
  <tr> 
   <td colspan="2"><span class="gen"><a href="{U_BEDANKOMAT}" class="nav">{L_BEDANKOMAT}</a></span></td> 
  </tr> 

# 
#-----[ FIND ]------------------------------------------ 
# 
<!-- END postrow --> 

# 
#-----[ AFTER, ADD ]------------------------------------------ 
# 
<!-- BEGIN switch_bedankomat --> 
<tr> 
   <td class="row1" colspan="2"><span class="gen"><b>{L_BEDANKOMAT_TEXT}</b>&nbsp;{L_BEDANKOMAT_USERS}</td> 
</tr> 
<!-- END switch_bedankomat --> 

# 
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------ 
# 
# EoM

Verfasst: 27.09.2004 10:08
von Markus67
Hi

welche Fehler bekommst du denn ?

Verlinke mal die viewtopic.php als txt-Datei
KB:datei

Markus