Seite 1 von 1

Notify-Links

Verfasst: 09.11.2009 10:54
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

Re: Notify-Links

Verfasst: 09.11.2009 12:16
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.

Re: Notify-Links

Verfasst: 09.11.2009 15:39
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

Re: Notify-Links

Verfasst: 09.11.2009 21:51
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}

Re: Notify-Links

Verfasst: 17.11.2009 13:38
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

Re: Notify-Links

Verfasst: 17.11.2009 15:39
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.

Re: Notify-Links

Verfasst: 17.11.2009 15:58
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?

Re: Notify-Links

Verfasst: 20.11.2009 02:21
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).

Re: Notify-Links

Verfasst: 20.11.2009 19:18
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.

Re: Notify-Links

Verfasst: 24.11.2009 11:46
von Noadsplease
Prima, vielen Dank für den tollen Input!