Prob mit Bedankomat!

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Ector
Mitglied
Beiträge: 17
Registriert: 15.05.2004 16:16

Prob mit Bedankomat!

Beitrag von Ector »

HAllo!

Ich wollte in mein phpbbplus 1.52 einen Bedankomaten einbauen aber eine zeile die man bearbeiten muss kann ich nicht finden! weiß jemand was ich da amchen kann? ich poste hier mal den bedankomaten code:

Code: Alles auswählen

#############################################################
## MOD Title: Bedankomat

## MOD Author: cyberWolf < daniel@delphipraxis.net > (Daniel R. Wolf) www.delphipraxis.net
## MOD Description: some_description_goes_here
## MOD Version: 0.1.1
##
## Installation Level: easy
## Installation Time: 10
## Files To Edit: includes/constants.php
##                viewtopic.php
##                templates/subSilver/viewtopic_body.tpl
## Included Files: (n/a)
##############################################################
## For Security Purposes, Please Check: http://www.phpbb.com/mods/downloads/ for the
## latest version of this MOD. Downloading this MOD from other sites could cause malicious code
## to enter into your phpBB Forum. As such, phpBB will not offer support for MOD's not offered
## in our MOD-Database, located at: http://www.phpbb.com/mods/downloads/
##############################################################
## Author Notes: (n/a)
##
##############################################################
## MOD History:  0.1.1 initial release (22-JAN-2003)
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################


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;




#
#-----[ OPEN ]------------------------------------------
#
includes/constants.php

#
#-----[ FIND ]------------------------------------------
#
define('VOTE_USERS_TABLE', $table_prefix.'vote_voters');

#
#-----[ AFTER, ADD ]------------------------------------------
#
define('BEDANKOMAT_TABLE', $table_prefix.'bedankomat');

#
#-----[ OPEN ]------------------------------------------
#
viewtopic.php

#
#-----[ FIND ]------------------------------------------
#
if ( !isset($topic_id) && !isset($post_id) )
{
   message_die(GENERAL_MESSAGE, 'Topic_post_not_exist');
}

#
#-----[ AFTER, ADD ]------------------------------------------
#
//////////////////////////////////////////////
//
//   Bedankomat START (1)
//   Hier quetschen wir den Bedankomat dazwischen
//   und schauen, ob es etwas fuer uns zu tun gibt
//
//////////////////////////////////////////////

if (isset($HTTP_GET_VARS['mode']) && isset($HTTP_GET_VARS['u']) && isset($HTTP_GET_VARS['t']))
{
   // Alle benoetigten Parameter sind schonmal 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
-->
#
#-----[ 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> <---

diesen Teil kann ich nicht finden. Könnt ihr mir vielleicht sagen wie ich den trotzdem einbaue?

MfG Ector
Ector
Mitglied
Beiträge: 17
Registriert: 15.05.2004 16:16

Beitrag von Ector »

hab ich schon gibt's beides nicht
Ector
Mitglied
Beiträge: 17
Registriert: 15.05.2004 16:16

Beitrag von Ector »

Download

[/url]
Benutzeravatar
Andy120
Mitglied
Beiträge: 3430
Registriert: 02.01.2004 11:21
Wohnort: Basel (Schweiz)
Kontaktdaten:

Beitrag von Andy120 »

Versuche mal so:

Suche:

Code: Alles auswählen

<!-- END bookmark_state -->
Danach einfügen:

Code: Alles auswählen

  <tr> 
   <td colspan="2"><span class="gen"><a href="{U_BEDANKOMAT}" class="nav">{L_BEDANKOMAT}</a></span></td> 
  </tr> 
Ector
Mitglied
Beiträge: 17
Registriert: 15.05.2004 16:16

Beitrag von Ector »

klappt nicht!

jetzt kommt bei jedem post den ich angucken will oder erstelle " Das gewählte Thema oder der Beitrag existiert nicht."
Benutzeravatar
Markus67
Ehrenadmin
Beiträge: 28346
Registriert: 12.01.2004 16:02
Wohnort: Neuss
Kontaktdaten:

Beitrag von Markus67 »

Hi ...

ich würde vorschlagen du versuchst es mal im Support Forum vom phpbb Plus die können da eher helfen :wink:

Markus
Marschel
Mitglied
Beiträge: 39
Registriert: 11.12.2004 23:39
Wohnort: Berlin
Kontaktdaten:

Beitrag von Marschel »

Was bedeutet für mich in diesem Falle...

Code: Alles auswählen

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;

:o

Danke! :grin:
Benutzeravatar
Markus67
Ehrenadmin
Beiträge: 28346
Registriert: 12.01.2004 16:02
Wohnort: Neuss
Kontaktdaten:

Beitrag von Markus67 »

Hi ...

Hast du KB:phpmyadmin zur Verfügung ?

Falls ja öffne mit phpMyAdmin die Datenbank ...
Auf der rechten Seite gibt es einen "Reiter" SQL ...
Den klickst du an ... und in das große Eingabefenster kopierst du ...

Code: Alles auswählen

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;
Auf OK ... fertig .. die Tabelle wurde angelegt.

Markus
Antworten

Zurück zu „phpBB 2.0: Mod Support“