SUCHE EINEN DANKE MOD/karma Mod
Verfasst: 18.11.2007 14:56
ich suche einen danke mod oder einen karma mod
phpBB.de - Die deutsche phpBB-Community
https://www.phpbb.de/community/
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"> <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> {L_BEDANKOMAT_USERS}</td>
</tr>
<!-- END switch_bedankomat -->
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
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;
Code: Alles auswählen
f ( !isset($topic_id) && !isset($post_id) )
{
message_die(GENERAL_MESSAGE, 'Topic_post_not_exist');
}
hab ich nur nach:if ( !isset($topic_id) && !isset($post_id) )
{
message_die(GENERAL_MESSAGE, 'Topic_post_not_exist');
}
geucht, die zeile wurde 2x gefunden, und bei der ersten zeile, die am ähnlisten aussah, nur ohne "isset" hab ich den langen code danach eingebaut...message_die(GENERAL_MESSAGE, 'Topic_post_not_exist');
wo kann man mal n demo sehen?!? hat das vieleicht schon einer bei sich eingebaut?manuj170793 hat geschrieben:karma:
http://phpbbhacks.com/download/3237