Notify-Links

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Noadsplease
Mitglied
Beiträge: 5
Registriert: 16.10.2009 11:24

Notify-Links

Beitrag von Noadsplease »

Hi,

in den Notify-E-Mails sind verschiedene Links, z.B.:

{U_NEWEST_POST} = neuster Beitrag seit letztem Besuch
{U_FORUM} = Forum, in dem ein neuer Thread erstellt wurde

Ich suche nun nach einem solchen Link, der zum "letzten Beitrag im Thread" springt. Sinn des Ganzen ist, dass "{U_NEWEST_POST}" nur dann funktioniert, wenn der User eingeloggt ist. Ich möchte den User aber auf den letzten Beitrag in dem Thread springen lassen, in dem ein neuer Beitrag verfasst wurde und das OHNE dass er sich einloggen muss.

Zudem wäre noch interessant, ob es eine Liste dieser "{}"-Links gibt, die in den E-Mails verwendet werden. Dabei interessieren mich ausschließlich die Standard-Codes, Mods sind für mich nicht von Belang.

Vielen Dank und Grüße,

Noadsplease
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Notify-Links

Beitrag von gn#36 »

Die Variablen werden in der includes/functions_posting.php festgelegt:

Code: Alles auswählen

1279                  $messenger->assign_vars(array(
1280                      'USERNAME'        => htmlspecialchars_decode($addr['name']),
1281                      'TOPIC_TITLE'    => htmlspecialchars_decode($topic_title),
1282                      'FORUM_NAME'    => htmlspecialchars_decode($forum_name),
1283  
1284                      'U_FORUM'                => generate_board_url() . "/viewforum.$phpEx?f=$forum_id",
1285                      'U_TOPIC'                => generate_board_url() . "/viewtopic.$phpEx?f=$forum_id&t=$topic_id",
1286                      'U_NEWEST_POST'            => generate_board_url() . "/viewtopic.$phpEx?f=$forum_id&t=$topic_id&p=$post_id&e=$post_id",
1287                      'U_STOP_WATCHING_TOPIC'    => generate_board_url() . "/viewtopic.$phpEx?uid={$addr['user_id']}&f=$forum_id&t=$topic_id&unwatch=topic",
1288                      'U_STOP_WATCHING_FORUM'    => generate_board_url() . "/viewforum.$phpEx?uid={$addr['user_id']}&f=$forum_id&unwatch=forum",
1289                  ));
 
Der Login wird erzwungen durch das &e=$post_id in Zeile 1286 (kann je nach Version und eingebauten Mods abweichen). Wenn du das weglässt wird die Seite auch ohne Login angezeigt - vorrausgesetzt dass man ohne Login zugreifen darf (das Forum also öffentlich lesbar ist). Das zeigt dann natürlich trotzdem nicht den letzten sondern den letzten ungelesenen Post an.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Noadsplease
Mitglied
Beiträge: 5
Registriert: 16.10.2009 11:24

Re: Notify-Links

Beitrag von Noadsplease »

Vielen Dank für die schnell Antwort!

Momentan funktioniert es noch nicht, denn das "&e=" kommt immer noch in den Notify-Mails an. Ich überprüfe aber derzeit noch, ob der Webserver einfach etwas träge ist. ;)

EDIT: funktioniert, war der Cache...

Noch eine zusätzliche Frage, bei der Du oder jemand anderes mir vielleicht helfen kann: diese Notify-Mails gehen an einen Dummy-User, der als E-Mail-Adresse einen Verteiler hat. D.h. der User loggt sich nie ein, soll aber bei jedem neuen Beitrag/Topic eine Notify-Mail bekommen. Derzeit bekommt er doch aber nur eine Mail, bis er sich das nächste Mal im Forum einloggt. Kann man diese Beschränkung irgendwie aufheben, also dass der Dummy-User bei JEDER Änderung benachrichtigt wird egal ob er sich zwischendurch einloggt oder nicht?

Vielen Dank,

Noadsplease
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: Notify-Links

Beitrag von Pyramide »

Wenn wirklich bei jedem Beitrag eine Benachrichtigung rausgehen soll, würde ich an den Anfang der function user_notification (hinter der Zeile $forum_notification = ($mode == 'post') ? true : false;) folgendes einfügen:

Code: Alles auswählen

include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx);
$messenger = new messenger();

$messenger->template('forum_notify_anonymous', 'de');  //ggf. andere Sprache

$messenger->to('mailingliste@deinforum.de', 'Name der Mailingliste');

$messenger->assign_vars(array(
	'TOPIC_TITLE'    => htmlspecialchars_decode($topic_title),
	'FORUM_NAME'    => htmlspecialchars_decode($forum_name),

	'U_FORUM'                => generate_board_url() . "/viewforum.$phpEx?f=$forum_id",
	'U_TOPIC'                => generate_board_url() . "/viewtopic.$phpEx?f=$forum_id&t=$topic_id",
	'U_VIEW_POST'            => generate_board_url() . "/viewtopic.$phpEx?f=$forum_id&t=$topic_id&p=$post_id#p$post_id",
));

$messenger->send(NOTIFY_EMAIL);
$messenger->save_queue();
Dann eine Datei language/de/email/forum_notify_anonymous.txt erstellen:

Code: Alles auswählen

Subject: Benachrichtigung über neuen Beitrag — {TOPIC_TITLE} — „{FORUM_NAME}“

Hallo,

im Thema „{TOPIC_TITLE}“ im Forum „{FORUM_NAME}“ auf „{SITENAME}“ wurde ein neuer Beitrag erstellt. Du kannst den folgenden Link benutzen, um den Beitrag anzusehen:

{U_VIEW_POST}

Wenn du das Thema ansehen möchtest, verwende folgenden Link:
{U_TOPIC}

Wenn du das Forum ansehen möchtest, verwende folgenden Link:
{U_FORUM}

{EMAIL_SIG}
KB:knigge
Noadsplease
Mitglied
Beiträge: 5
Registriert: 16.10.2009 11:24

Re: Notify-Links

Beitrag von Noadsplease »

Vielen Dank, das ist eine tolle Idee! Allerdings habe ich noch zwei Probleme damit:

1. Die Mails werden nicht sofort verschickt, sondern zeitversetzt. Ist das so beabsichtigt?

2. Der eingetragene Verteiler bekommt wirklich bei absolut jeder Änderung eine Notify-Mail, auch bei Änderungen in internen Foren. Kann man die Funktion auf ein bestimmtes Forum und alle Unterforen eingrenzen?

Nochmals vielen Dank für die tolle Hilfe,

Noadsplease
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Notify-Links

Beitrag von gn#36 »

Punkt 1 ist eine Einstellung deinerseits, generell ist das so beabsichtigt so dass die Mails immer erst in größeren Paketen verschickt werden, du kannst dieses Verhalten aber im ACP beeinflussen indem du die Mailpaketgröße auf 0 setzt (dann wird jede Mail sofort verschickt). Zu finden unter Allgemein -> Client Kommunikation -> Board-E-Mails.

Punkt 2 kannst du ganz einfach durch eine if Abfrage erledigen. Du suchst dir die gewünschten Foren mit ihrer ID raus und packst folgendes um den von Pyramide geposteten Code herum:

Code: Alles auswählen

if(in_array($forum_id, array(1,2,3,4,5)))
{
### Hier steht Pyramides Code
} 
Wenn du 1,2,3,4,5 durch deine Foren IDs ersetzt bei denen die Mail verschickt werden soll wird die Mail nur noch in diesen Foren verschickt.
Du musst wirklich alle Foren IDs auflisten die in Frage kommen, also auch alle Unterforen separat.

Alternativ kannst du auch Foren ausschließen:

Code: Alles auswählen

if(!in_array($forum_id, array(6,7,8)))
{
#### Pyramides Code
} 
Wenn die Foren Id nun 6,7 oder 8 ist wird der Code nicht ausgeführt. Tendenziell würde ich da allerdings eher die erste Variante bevorzugen denn man vergisst schnell so eine Liste zu aktualisieren und dann werden vielleicht unerwünschterweise zusätzliche Mails in einem Internen Forum verschickt.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Noadsplease
Mitglied
Beiträge: 5
Registriert: 16.10.2009 11:24

Re: Notify-Links

Beitrag von Noadsplease »

Super, vielen Dank!

Nun wird der Verteiler mit einer E-Mail versorgt, sobald in einem der Foren

a) ein neues Thema oder
b) eine Antwort zu einem bestehenden Thema verfasst wurde

Wird ein bestehender Beitrag editiert, so wird allerdings nichts verschickt. Das ist jetzt nicht soooo schlimm, aber kann man das prinzipiell auch noch einrichten?
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Notify-Links

Beitrag von gn#36 »

Das lässt sich machen. In der includes/functions_post.php findet sich weit unten die Funktion submit_post und darin folgende Stelle:

Code: Alles auswählen

2509      // Send Notifications
2510      if ($mode != 'edit' && $mode != 'delete' && $post_approval)
2511      {
2512          user_notification($mode, $subject, $data['topic_title'], $data['forum_name'], $data['forum_id'], $data['topic_id'], $data['post_id']);
2513      }
Darunter kann dann der gleiche Code wie vorher mit nur wenigen Anpassungen ($forum_id -> $data['forum_id'] usw., den Rest darfst du dir selbst überlegen, die meisten Variablen heißen eben anders). Zusätzlich solltest du das ganze auf den Edit Mode beschränken, denn sonst wird ja immer eine Mail verschickt (und wenn das in der user_notification Funktion bleibt sogar doppelt).
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: Notify-Links

Beitrag von Pyramide »

Man kann auch gleich den Code aus der Funktion user_notification dorthin verschieben, so dass man bei zukünftigen Änderungen (z.B. Änderung der Empfängeradresse) nur eine Stelle ändern muss.
KB:knigge
Noadsplease
Mitglied
Beiträge: 5
Registriert: 16.10.2009 11:24

Re: Notify-Links

Beitrag von Noadsplease »

Prima, vielen Dank für den tollen Input!
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“