Seite 1 von 4

Notification Mod: Nachricht nur bei neuem Thema

Verfasst: 14.09.2002 13:46
von hmueller
Hallo,

bezugnehmend auch auf
http://www.phpbb.de/viewtopic.php?p=75998#75998
hier noch einmal:

Wenn ich mir die Dateien des Notification-Mod ansehe, stelle ich fest, daß eine Benachrichtigung bei Erstellung eines neuen Themas und bei allen Antworten erfolgt.
Das wünsche ich nicht. Vielmehr soll nur bei einem neuen Thema eine Mail kommen, aber nicht automatisch bei jeder Antwort, da dies eine zu große Mail-Flut wäre. Wenn jemanden das Thema interessiert, kann er ja immer noch (wie auch ohne Mod möglich) den "Bei Antworten zu diesem Thema benachrichtigen"-Link anklicken.

Deshalb meine Frage:
a) hat irgendwer den Notification-Mod auf einem Board installiert, wo man sich mal ansehen kann, wie der funktioniert?

b) kann man das oben Geschilderte einstellen bzw. den Mod so umbauen?

Verfasst: 14.09.2002 18:32
von itst
0-Prob.

Die posting.php hat verschiedene Modi. Einer von denen ist "newtopic". Es gibt da ein swicth, das die auswertett. Da haust Du Den Notification rein. Das wars.

Verfasst: 17.09.2002 13:39
von hmueller
wie? was? wo?
Ich versteh' nur Bahnhof.

Und wie geht denn das:

Code: Alles auswählen

Do not forget to run the following commands on your sql database (replace phpbb2_ with your db prefix):
##
## CREATE TABLE phpbb2_forums_watch (
##    forum_id smallint(5) unsigned NOT NULL default '0',
##    user_id mediumint(8) NOT NULL default '0',
##    notify_status tinyint(1) NOT NULL default '0',
##    KEY forum_id (forum_id),
##    KEY user_id (user_id),
##    KEY notify_status (notify_status)
## )
##
## ALTER TABLE phpbb2_forums 
##    ADD forum_notify TINYINT(1) UNSIGNED DEFAULT '1' NOT NULL
##    AFTER forum_last_post_id


Verfasst: 17.09.2002 19:17
von saerdnaer
wenn du phpmyadmin hast trägst du das einfach in die query ein wobei du dein prefix ersetzen musst... also in diesem falls z.b. phpbb2_ durch phpbb_

ah

Verfasst: 03.10.2002 12:54
von hmueller
saerdnaer hat geschrieben:wenn du phpmyadmin hast trägst du das einfach in die query ein wobei du dein prefix ersetzen musst... also in diesem falls z.b. phpbb2_ durch phpbb_
also ich kopiere den Code und füge ihn in das Feld "SQL-Befehle ausführen..." ein, dann OK drücke. Richtig so?

Aber ich weiß immer noch nicht, welche Dateien ich dann noch ändern muß, damit die Benachrichtigung NUR bei neuem Thema kommt.

Verfasst: 03.10.2002 15:57
von saerdnaer
hmueller hat geschrieben: also ich kopiere den Code und füge ihn in das Feld "SQL-Befehle ausführen..." ein, dann OK drücke. Richtig so?´
ja. aber wie gesagt das prefix nicht vergessen...
hmueller hat geschrieben:Aber ich weiß immer noch nicht, welche Dateien ich dann noch ändern muß, damit die Benachrichtigung NUR bei neuem Thema kommt.
den satz verseh ich jetzt nicht ganz... der hack schick einem doch nur bei einem neuem thema einen mail...

ah

Verfasst: 03.10.2002 20:06
von itst
itst hat geschrieben:0-Prob.

Die posting.php hat verschiedene Modi. Einer von denen ist "newtopic". Es gibt da ein swicth, das die auswertett. Da haust Du Den Notification rein. Das wars.
Äh, OK, das war nicht wirklich verständlich. Sorry.
Also, die Datei posting.php ist zuständig für das Erstellen eines neuen Themas oder einer Antwort auf ein Thema. Um das unterscheiden zu können, benutzt phpBB einen Paramter naems "mode". der kann unter anderen den Wert "newtopic" für ein neues Thema oder "reply" für eine Antwort auf ein bestehendes Thema haben.

In der posting.php gibt es eine "switch"-Anweisung (das ist ein PHP-Befehl, Doku hier: www.php.net/switch ). Und darunter gibt es für jeden Wert von "mode" spezielle Anweisungen.
Und da könntest Du...
Äh, Du hast nicht so viel Ahnung von PHP oder? Sag bitte bescheid, weil jetzt wirds ein bißchen komplexer und ich möchte Dich nicht wieder mit unverständlichem Kram zuschreiben :-)

Verfasst: 03.10.2002 20:09
von Erwinchen666
Hi :D

mich interessiert's auch, schreib ruhig weiter ;-)

Gruss, Erwinchen

Verfasst: 04.10.2002 13:35
von hmueller
Hallo,
den satz verseh ich jetzt nicht ganz... der hack schick einem doch nur bei einem neuem thema einen mail...
Soweit ich weiß, schickt der Mod sowohl bei einem neuen Thema als auch bei einen neuen Beitrag eine Mail. Und das wäre eine zu große Mail-Flut, deshalb sollte es so sein, daß die Mail nur bei Erstellung eines neuen Themas kommt.

Hierbei dachte ich, das lässt sich "einfach" so lösen, indem man beim Einbau des Mod bestimmte Code-Abschnitte wegläßt.

Richtg, mit PHP kenne ich mich nicht so gut aus. Ich muß also irgendwo in der posting.php was einbauen, damit zwischen neuem Thema und neuem Beitrag unterschieden wird?

Verfasst: 04.10.2002 14:45
von itst
Nein. In der Posting.php wird schon unterschieden... Hier mal der Code-Abschnitt, der wichtig ist:

Code: Alles auswählen

switch ( $mode )
	{
		case 'editpost':
		case 'newtopic':
		case 'reply':
	      $username = ( !empty($HTTP_POST_VARS['username']) ) ? $HTTP_POST_VARS['username'] : '';
			$subject = ( !empty($HTTP_POST_VARS['subject']) ) ? trim($HTTP_POST_VARS['subject']) : '';
			$message = ( !empty($HTTP_POST_VARS['message']) ) ? $HTTP_POST_VARS['message'] : '';
			$poll_title = ( isset($HTTP_POST_VARS['poll_title']) && $is_auth['auth_pollcreate'] ) ? $HTTP_POST_VARS['poll_title'] : '';
			$poll_options = ( isset($HTTP_POST_VARS['poll_option_text']) && $is_auth['auth_pollcreate'] ) ? $HTTP_POST_VARS['poll_option_text'] : '';
			$poll_length = ( isset($HTTP_POST_VARS['poll_length']) && $is_auth['auth_pollcreate'] ) ? $HTTP_POST_VARS['poll_length'] : '';
			$bbcode_uid = '';

			prepare_post($mode, $post_data, $bbcode_on, $html_on, $smilies_on, $error_msg, $username, $bbcode_uid, $subject, $message, $poll_title, $poll_options, $poll_length);

			if ( $error_msg == '' )
			{
				$topic_type = ( $topic_type != $post_data['topic_type'] && !$is_auth['auth_sticky'] && !$is_auth['auth_announce'] ) ? $post_data['topic_type'] : $topic_type;

				submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id, $topic_type, $bbcode_on, $html_on, $smilies_on, $attach_sig, $bbcode_uid, str_replace("\'", "''", $username), str_replace("\'", "''", $subject), str_replace("\'", "''", $message), str_replace("\'", "''", $poll_title), $poll_options, $poll_length);
				if ( $error_msg == '' )
				{
					user_notification($mode, $post_data, $forum_id, $topic_id, $post_id, $notify_user);
				}
			}
			break;

		case 'delete':
		case 'poll_delete':
			delete_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id);
			break;
	}
Zu finden ist das ab Zeile 528 bei einem phpBB 2.0.2.

Hier könnte man jetzt die Benachrichtig einbauen:

Code: Alles auswählen

@mail("e-mail-adresse", "Beitrag in FORUM: $subject", "Thema: $subject\nAutor: $username\nBeitrag: http://www.domain.de/viewtopic.php?t=$topic_id#$post_id");
Das könnte dann so aussehen, um nur bei neuen Nachrichtigen eine Mail zu bekommen:

Code: Alles auswählen

switch ( $mode )
	{
		case 'editpost':
		case 'newtopic':
         @mail("e-mail-adresse", "Beitrag in FORUM: $subject", "Thema: $subject\nAutor: $username\nBeitrag: http://www.domain.de/viewtopic.php?t=$topic_id#$post_id");
		case 'reply':
			$username = ( !empty($HTTP_POST_VARS['username']) ) ? $HTTP_POST_VARS['username'] : '';
			$subject = ( !empty($HTTP_POST_VARS['subject']) ) ? trim($HTTP_POST_VARS['subject']) : '';
			$message = ( !empty($HTTP_POST_VARS['message']) ) ? $HTTP_POST_VARS['message'] : '';
			$poll_title = ( isset($HTTP_POST_VARS['poll_title']) && $is_auth['auth_pollcreate'] ) ? $HTTP_POST_VARS['poll_title'] : '';
			$poll_options = ( isset($HTTP_POST_VARS['poll_option_text']) && $is_auth['auth_pollcreate'] ) ? $HTTP_POST_VARS['poll_option_text'] : '';
			$poll_length = ( isset($HTTP_POST_VARS['poll_length']) && $is_auth['auth_pollcreate'] ) ? $HTTP_POST_VARS['poll_length'] : '';
			$bbcode_uid = '';

			prepare_post($mode, $post_data, $bbcode_on, $html_on, $smilies_on, $error_msg, $username, $bbcode_uid, $subject, $message, $poll_title, $poll_options, $poll_length);

			if ( $error_msg == '' )
			{
				$topic_type = ( $topic_type != $post_data['topic_type'] && !$is_auth['auth_sticky'] && !$is_auth['auth_announce'] ) ? $post_data['topic_type'] : $topic_type;

				submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id, $topic_type, $bbcode_on, $html_on, $smilies_on, $attach_sig, $bbcode_uid, str_replace("\'", "''", $username), str_replace("\'", "''", $subject), str_replace("\'", "''", $message), str_replace("\'", "''", $poll_title), $poll_options, $poll_length);
				if ( $error_msg == '' )
				{
					user_notification($mode, $post_data, $forum_id, $topic_id, $post_id, $notify_user);
				}
			}
			break;

		case 'delete':
		case 'poll_delete':
			delete_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id);
			break;
	}