Bedankomat und Counter gesucht

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
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.
Benutzeravatar
saddel
Mitglied
Beiträge: 273
Registriert: 04.05.2003 01:02

Bedankomat und Counter gesucht

Beitrag von saddel »

hi ich suche einen bedankomat (am besten in verbindung mit ed2k-links anklicken) ich hab mehrere unvollständige mods gefunden...gibt es den schon,wenn ja hat jemand einen link dazu.

dann würd noch gern einen allgemeinen counter ins board einbauen...er soll unabhängig von den foren laufen ..wie der gute alte counter halt..gibt es den ..wenn ja hat dafür jemand nen link?

thx erstma..

gruss saddel
Elmar
Mitglied
Beiträge: 12
Registriert: 17.08.2003 16:45
Kontaktdaten:

Beitrag von Elmar »

Ich bin sehr zufrieden mit
http://proxy2.de/scripts.php

PNG Counter 1.0

Das ist einer der ganz wenigen der von überall aus mit img-Tag aufgerufen werden kann. Sehr praktisch!
Über 1000 Grillrezepte!
http://www.grillsportverein.de
Benutzeravatar
saddel
Mitglied
Beiträge: 273
Registriert: 04.05.2003 01:02

Beitrag von saddel »

ja danke erstmal... werd mal austesten
Benutzeravatar
saddel
Mitglied
Beiträge: 273
Registriert: 04.05.2003 01:02

Beitrag von saddel »

ich hab doch tatsächlich einen bedankomat gefunden der angeblich funktionieren soll...bei mir nicht...
ich vermute es liegt daran das ich die mySQL kacke mal wieder nicht hinbekommen habe...hmmm.. kann mir jemand da so eine nette datenbank datei schreiben oder den fehler finden...hier der code...bitte helft mir ich will diesen hack unbedingt haben..danke danke danke...gruss saddel

Code: Alles auswählen

############################################################## 
## 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 
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

Code: Alles auswählen

<?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);

if ( $userdata['user_level'] != ADMIN )
message_die(GENERAL_ERROR, "You are not authorised to do this."); 

        $sql = "CREATE TABLE " . $table_prefix . "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))";
        if (!$db->sql_query($sql))
        {
                message_die(GENERAL_ERROR, "<font color=\"red\">error inserting table (<b>" . $table_prefix . "bedankomat</b>).</font>", "", __LINE__, __FILE__, $sql);
        }
        else 
        {
                message_die(GENERAL_MESSAGE, "<font color=\"green\">table (<b>" . $table_prefix . "bedankomat</b>) created successfully.</font><br /><br /> <b>Now, delete this file.</b>", "", "", "", "");
        }
?>
Benutzeravatar
saddel
Mitglied
Beiträge: 273
Registriert: 04.05.2003 01:02

Beitrag von saddel »

joh danke...gehe ich davon aus,das das script sonst funzen würde?
Benutzeravatar
saddel
Mitglied
Beiträge: 273
Registriert: 04.05.2003 01:02

Beitrag von saddel »

der Bedankomat steht...funzt bestens...war ja klar das es wieder mal an dieser databasekacke liegt...

übrigens: der bedankomat hat eine einstellung (im script) die es erlauben soll das dankeschön zurücknehmen wegzulassen ...diese funktion ist aber noch nicht integriert..schreibt der author ja selbst..wer könnte daran weiterbasteln?

erstmal vielen dank für die beiden neuen mods...*fettes thanx*
Gast200921

Beitrag von Gast200921 »

Dieses Script da oben war ein Schnellschuß von mir, den ich in etwa einer Halben- / Dreiviertelstunde zusammengeschustert habe. Es ging dabei lediglich darum, ein rudimentäres Grundgerüst zu erstellen, welches dann weiterentwickelt werden könnte.

Interessant ist jedoch, daß in den 'neueren' Versionen (welche identisch sind mit der Ausgangsversion) der Header mit meinem Namen fehlt.....
Ausgangsthread, jetzt noch funktionierender Download auf Seite 3
Ich hatte dort auch dargelegt, welche Funktionen noch fehlen. Mittlerweile ist dieser Code in verschiedene Richtungen weiterentwickelt worden. Vielleicht ist eine dieser Varianten für Dich ja sogar eher brauchbar.


Grüße,
cyberWolf
Benutzeravatar
saddel
Mitglied
Beiträge: 273
Registriert: 04.05.2003 01:02

Beitrag von saddel »

spannend ...hab den authopr selbst an der strippe...ich sag gleich ich hab deine kennung nicht herausgeno9mmen..sowas mach ich nicht ...ich respektiere sowas ...dann respekt für den bedankomat...mal ne frage könntest du mir den bedankomat etwas weiterentwickeln?

das wäre doch ne feine sache ...diesen MOD suchen schon zig leute überall..

was mir fehlt: (oder ich gern hätte:

statt dem link Dankeschön sagen eine verlinkung zu einem .gif button...ich habs versucht aber nicht so richtig hinbekommen..der sollte jeweils neben :neues thema und antwort erstellen sein

dann:eine möglichkeit das dankeschön zurücknehmen wegzulassen...das funzt bei mir nur mit einer fehlermeldung...wie du selbst ja schon geschrieben hattest

und: die namen derer die sich bedankt haben in einer anderen, auswählbaren farbe ...beispiel rot

ui ich hoffe du hast da überhaupt bock drauf...ich würd mich riesig freuen...ich selbst würd das wohl kaum hinbekommen ..es sei denn ich hab drei jahre zeit und 2 1/2 jahre php unterricht hinter mir... :D

wenn du sehen willst,wie er bei mir aussieht ..

www.saddel.de/forum

funzt allerdings nur bei registrierten user...aber was erzähl ich dir ...das weisst du ja...

gruss ,respekt und herzlichen dank

saddel
Gast200921

Beitrag von Gast200921 »

Hallo saddel,

im Moment fehlt mir leider die Zeit, diesen Mod bis zum Ende zu bringen. Bei einer saubere Implementierung sind einfach sehr viele Details zu berücksichtigen und das ist mir im Moment einfach zu viel.

Zu Deinem GIF-Problem:
Finde die Zeile, in der der Variablen "$l_bedankomat" ein Wert zugewiesen wird (der Text 'Dankeschön sagen/zurücknehmen'). Diesen Wert ersetzt Du durch eine HTML-konformae Angabe eines Images:
'<img src="..." width="..." height="..." alt="..." botder="0">'.

Wohlgemerkt: Das ist nur die schnelle Lösung, für die mich jeder phpBB-Mod-Validator mit Recht erschießen würde [für den oben geposteten Code natürlich ebenfalls]. Normalerweise müßtest Du das Bild über das von Dir genutzte Template einbinden und dann über das Array $images[] darauf zugreifen.


Grüße,
cyberWolf


P.S.: Keine Sorge - ich wollte Dir auch nicht unterstellen, daß Du meinen Namen entfernt hättest. Bei diesem Grundgerüst ist mir das auch nicht so wichtig - ist ja schließlich nichts Halbes und nichts Ganzes.
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“