E-Mail Nachricht bei geänderten Seiten (neu)

für die Liste aller Seiten

Autoren (Fortgeschritten) und Administratoren

Durch die Einführung von E-Mail Nachricht bei geänderten Seiten (neu) ergibt sich, dass es momentan zwei Seiten zur 'E-mail Nachricht bei geänderten Seiten' gibt. Die Alte ist unter : E-Mail Nachricht bei geänderten Seiten zu erreichen und muss als Dokumentation für Pmwiki-System bis Version 2.1.7 herangezogen werden

Das notify.php-Skript ermöglicht es einem Site-Administrator, PmWiki so zu konfigurieren, dass Emails verschickt werden, wenn Seiten des Wikis verändert werden. Diese Benachrichtigungen können so eingestellt werden, dass mehrere Seitenveränderungen, die in einem kurzen Zeitintervall stattfinden, in einer einzigen Email zusammengefasst werden (um überlaufende Emailfächer zu verhindern).

Dieses Feature ist besonders für Sites nützlich, die unregelmäßige Updates haben, da dann die "Aktuelle Änderungen"-Seite nicht ständig nach neuen Veränderungen durchforstet werden muss.

Damit die Benachrichtigungen funktionieren, muss das notify.php-Script durch lokale Anpassungen aktiviert werden. Das funktioniert normalerweise sehr einfach, indem man folgende Zeile in die local/config.php-Datei schreibt:

Benachrichtigung konfigurieren

Wenn das Script erstmal aktiviert ist, erhält das Benachrichtigungssystem seine Einstellungen von der SiteAdmin.NotifyList-Seite? (die man beim ersten Mal neu anlegen muss). Die SiteAdmin.NotifyList-Seite enthält Einträge der Form:

notify=alice@beispiel.de

Das bedeutet, dass alle Informationen über Veränderungen in den Wiki-Seiten in regelmäßigen Abständen an ''alice@beispiel.de'' geschickt werden sollen. Die SiteAdmin.NotifyList-Seite kann mehrere "notify=" Zeilen enthalten, um Nachrichten an mehrere Adressen zu senden, die Benachrichtigungen werden dann an eben diese Adressen geschickt. Die "notify=" Zeilen können vor Lesern verborgen werden, indem man sie innerhalb eines (:if false:)-Abschnitts auflistet.

Anmerkung
Setzen Sie keine Leerzeichen um die Gleicheitszeichen herum! Die Benachrichtigung wird still und leise versagen, wenn Sie
notify = fred@beispiel.de
anstatt
notify=fred@beispiel.de
schreiben.

Benachrichtigungsoptionen

Die grundlegenden Syntax ist

notify=email@address name=abc group=def trail=ghi squelch=123 delay=123 tz=123

group=Group1,Group2 name=-*.WikiSandbox

Es gibt eine ganze Reihe von Optionen, um die Zahl der Seiten, die eine Benachrichtigung veranlassen, zu verringern. Die group=- und name=-Parameter können eingesetzt werden, um Benachrichtigungen auf bestimmte Seiten oder Gruppen zu beschränken:

# Schicke Benachrichtigung über die Main-Gruppe an alice@beispiel.de
notify=alice@beispiel.de group=Main
# Benachrichtige charles@beispiel.de über Veränderungen auf allen Seiten außer denen der Gruppe Main
notify=charles@beispiel.de group=-Main

# Benachrichtige bob@beispiel.de über alle Änderungen auf der HomePage
notify=bob@beispiel.de name=Main.HomePage
Anmerkung
Die Optionen sind der Seitenlisten-Syntax ähnlich.

trail=TrailPage

Um eine willkürliche Liste von Seiten zu verwalten, z. B. "Beobachtungslisten" ("watchlists"), ist es generell einfacher, einen trail der zu beobachtenden Seiten zusammenzustellen. Der folgende Eintrag in der SiteAdmin.NotifyList-Seite sendet an alice@beispiel.de eine E-Mail, die Änderungen an allen Seiten meldet, die im 'trail' in Profiles.Alice aufgelistet sind:

# benachrichtige Alice über alle Änderungen an Seiten, die in Profiles.Alice aufgelistet sind
notify=alice@beispiel.de trail=Profiles.Alice

Anmerkung
Sobald dieser Eintrag in der SiteAdmin.NotifyList-Seite eingefügt ist, kann Alice ihre Beobachtungsliste leicht verändern, indem sie ihre Profilseite Profiles.Alice bearbeitet. Die SiteAdmin.NotifyList-Seite zu bearbeiten ist dann nicht mehr nötig. Isbesondere bedeutet das, dass ein Administrator die Rechte zum Bearbeiten der SiteAdmin.NotifyList-Seite einschränken kann, und doch Einzelnen erlauben kann, ihre Benachrichtigungen in anderen Seiten zu verwalten.

Grenzen dieses Features:

  • nur dem 'trail' manuell hinzugefügte Verweise werden in die Benachrichtigungsliste aufgenommen (weder "group=" oder andere Seitenlistensyntax, noch "Gruppe.RecentChanges"-Verweise erzeugen eine Benachrichtigung). Siehe auch $NotifyRelatedTrailFmt.
  • Der Einsatz einer (:include:)-Direktive ist keine funktionierende Umgehung dieses Mangels.
  • Seiten-Text-Variablen werden nicht aufgelöst – Sie können die Benachrichtigungsmailadresse nicht aus der Profilseite herausziehen.

SiteAdmin.NotifyList sollte geschützt werden

Das ist möglicherweise eine gute Stelle, um herauszustellen, dass der Bearbeiten-Zugriff auf die SiteAdmin.NotifyList-Seite kontrolliert werden sollte, sonst könnten Böswillige die Benachrichtigungsfähigkeiten ausnutzen, um die Mailbox Anderer zu überfluten. Standardmäßig ist die SiteAdmin.NotifyList-Seite geschützt gegen Lesen oder Bearbeiten außer durch den Administrator (was für die meisten Seiten in der SiteAdmin-Gruppe gilt).

Hinzufügen von Benachrichtigungen durch lokale Anpassung

Benachrichtigunseinträge können auch über das $NotifyList-Array in local/config.php hinzugefügt werden. Fügen Sie einfach Zeilen wie die folgenden ein:

$NotifyList[] = 'notify=alice@beispiel.de group=Main';
$NotifyList[] = 'notify=bob@beispiel.de name=Main.HomePage';

Kontrolle über die Benachrichtigungshäufigkeit

Um des Empfängers Mailbox vor Überflutung zu schützen, benutzt das Benachrichtigungsskript einen "Rauschunterdrückungs-(squelch)"-Wert als minimale Zeitspanne, die zwischen zwei Benachrichtigungen an eine gegebene E-Mail-Adresse vergehen muss. Die Standardeinstellung für Squelch ist 10800 Sekunden (drei Stunden), d. h. dass, nachdem an eine Empfängeradresse eine Benachrichtigung versandt wurde, dieser für die nächsten drei Stunden keine weitere Benachrichtigung erhalten wird. Alle Änderungen, die während dieser Zeitspanne auflaufen, werden in eine Warteschlange für die nächste Benachrichtigung eingereiht.

Der Site-Administrator kann den Standardwert für squelch über den $NotifySquelch-Parameter ändern:

# Benachrichtigungen einschalten
$NotifySquelch = 86400; # warte wenigstens eine Tag (in Sekunden) zwischen zwei Benachrichtigungen

Zusätzlich können individuelle Adressen einen angepassten Wert für den Squelch-Parameter in der SiteAdmin.NotifyList-Seite angeben:

# Alice empfängt höchstens eine E-Mail pro Tag
notify=alice@beispiel.de squelch=86400
# Bob kann stündliche Benachrichtigungen erhalten
notify=bob@beispiel.de trail=Profiles.Bob squelch=3600
# Charles benutzt die Standardeinstellung der Site für die Zeitspanne
notify=charles@beispiel.de

Kontrolle über Benachrichtigungsverzögerungen

Weil eine Seite oft mehrere Änderungen in kurzer Zeit erfährt (nach einem langen Eintrag folgen mehrere kleine Korrekturen), kann ein Site-Administrator auch eine Verzögerung für Benachrichtigungen einrichten. Ein $NotifyDelay-Wert gibt an, wie lange nach einem anfänglichen Eintrag gewartet wird, bis eine Benachrichtigung versandt wird.

# Benachrichtigungen einschalten
$NotifySquelch = 86400; # warte wenigstens eine Tag (in Sekunden) zwischen zwei Benachrichtigungen
$NotifyDelay = 300; # warte fünf Minuten nach dem ersten Eintrag

Anmerkung
Rauschunterdrückung und Verzögerung sind Minimumwerte; Benachrichtigungen werden versandt bei der nächsten Ausführung von PmWiki, nachdem die Verzögerungszeit abgelaufen ist.

Für inaktive Sites kann das viel länger als die eingestellte Zeitspanne sein. Das ist aber nicht wirklich ein Problem, bei wenig aktiven Sites ist eine zeitige Benachrichtigung weniger wichtig. Jedenfalls werden Änderungen innerhalb der 'squelch'-Zeit nach der letzten Benachrichtigung unbemerkt bleiben, wenn das Wiki für eine lange Zeitspanne danach nicht wenigsten einmal besucht wird. Wenn das etwas ausmacht, mag es nötig sein, den Server zu veranlassen, pmwiki.php von Zeit zu Zeit über einen cron job aufzurufen.

Angepasste delay-Parameter können nicht für individuelle Adressen in der SiteAdmin.NotifyList-Seite? angegeben werden.

# der delay=-Parameter wird ignoriert
notify=edgar@beispiel.de trail=Profiles.Edgar delay=600

Related pages (trail)

Zeitzone

Seit PmWiki 2.3.0 können individuelle Benutzer das Datum und den Zeitstempel konfigurieren, sodass die eigene Zeitzone angezeigt wird, z. B.:

notify=edgar@example.com [other arguments] tz=Europe/Paris

Sie finden Ihre Zeitzone in dieser Liste der unterstützten Zeitzone.

Bemerkung zu Windowsinstallationen

Bei Sites, wo PHP unter Windows läuft, könnte PHPs Mail-Funktion nicht korrekt konfiguriert sein. Solche Sites müssten eventuell eine Zeile wie diese

ini_set('SMTP','smtp.server.com');

in config.php einfügen, wobei smtp.server.com der Name des von Ihrem Host bevorzugten Mail-Ausgangs-Servers ist. Sie könnten auch einen sendmail_from-Wert setzen, wenn das nicht konfiguriert ist:

ini_set('sendmail_from','noreply@foo.com');

und bei PHP im safe-mode: https://www.pmwiki.org/wiki/PITS/00976.

Benachrichtigungsvariablen

$EnableNotify
weist stdconfig.php an, das notify.php-Skript anzuschalten
$EnableNotify = 1; # Benachrichtigungen anschalten
$EnableNotify = 0; # Benachrichtigungen ausschalten
$MailFunction
Die Funktion, die aufgerufen werden muss, wenn eine Nachricht versendet werden soll. Standardeinstellung ist die eingebaute PHP-Funktion mail. Wenn Sie eine eigene E-Mail-Lösung oder -Bibliothek haben, setzen Sie hier die aufzurufende Funktion mit den gleichen Argumenten ein wie mail($to, $subject, $message, $additional_headers).
$NotifyFrom
Antworten-An-Adresse, die in der E-Mail verwandt werden soll
$NotifyFrom = 'wiki@beispiel.de';
$NotifyFrom = 'Wiki-Server <wiki@beispiel.de>';
$NotifyDelay
Die (Verzögerungs-) Zeitspanne (in Sekunden), die gewartet wird nach dem ersten Eintrag in eine Seite, bevor eine Benachrichtigung versandt wird. Der Standard ist null — Benachrichtigungen über Änderungen werden versandt, sobald die eingestellte Zeit für 'squelch' abgelaufen ist
$NotifyDelay = 300; # sende Mail 5+ Minuten nach dem ersten Eintrag
$NotifySquelch
Die Standardzeitspanne, die zwischen dem Versand der E-Mails mit den Benachrichtigungen vergehen muss. Nützlich, wenn $NotifyDelay auf einen kleinen Wert gesetzt wird, um die Zahl der E-Mails mit Benachrichtigungen niedrig zu halten. Standard ist 10800 (drei Stunden). Individuelle Empfänger können diesen Wert überschreiben in der SiteAdmin.NotifyList-Seite.
$NotifySquelch = 43200; # warte 12+ Stunden nach einem Versand
$NotifyRelatedTrailFmt
Aktiviert Nachrichten für Seiten bezogen auf die Seiten im 'trail'. Zum Beispiel:
$NotifyRelatedTrailFmt = '{$FullName}-Talk,{$FullName}-Users'; # wird nicht nur über Änderungen an einer Seite im 'trail' benachrichtigen, sondern auch über Änderungen an Seiten mit den Anhängen "-Talk" und "-Users" an jeder Seite des 'trails'.
$NotifyItemFmt
Der Text, der für jede Änderung an einer Seite versandt wird. Der String "$PostTime" wird ersetzt durch die Zeit für die Änderung (kontrolliert durch $NotifyTimeFmt (s. u.))
# Standard
$NotifyItemFmt = ' * $FullName . . . $PostTime by $Author';
# füge die URL der Seite in die Nachricht ein
$NotifyItemFmt = " * \$FullName . . . \$PostTime von \$Author\n \$PageUrl";
# füge die Zusammenfassung und den Verweis auf den Änderungsverlauf (Versionen) in die Nachricht ein
$NotifyItemFmt = " * \$FullName smiley . . . \$PostTime von $Author.gif' border='0' alt='\$Author smiley' title='\$Author smiley' class='smiley' />\n Zusammenfassung: \$LastModifiedSummary smiley\n \$PageUrl smiley?action=diff";
$NotifyTimeFmt
Das Format für Datum und Zeit in $PostTime (s. o.). Standard ist der Wert in $TimeFmt.
$NotifyTimeFmt = '%Y-%m-%d, %H:%M Uhr'; # 2004-03-20, 17:44 Uhr
$NotifyBodyFmt
Der Rumpf der versandten Nachricht. Der String "$NotifyItems" wird ersetzt durch die Liste der Änderungen (formatiert durch $NotifyItemFmt (s. o.)). Benutze einfache Anführungszeichen ' , damit der Teilstring "$NotifyItems" nicht zur Unzeit als Variable in config.php evaluiert wird.
$NotifyBodyFmt = "Changed items:\n\n" . '$NotifyItems' . "\n\n Best regards...";
$NotifySubjectFmt
Der Betreff der versandten Nachricht
$NotifyHeaders
String mit Extrazeilen im Mailheader, wird an die mail()-Funktion übergeben
$NotifyParameters
String mit zusätzlichen Parametern, die an die mail()-Funktion[1] übergeben werden sollen.
$NotifyFile
Die Datei, mit deren Hilfe Notify die Informationen über kürzliche Änderungen im Auge behält. Standard ist "$WorkDir/.notifylist". Beachten Sie, dass der Webserver generell Schreibrechte für die Datei braucht.
$NotifyListPageFmt
Der Name der Seite, die die notify=-Zeilen enthält, welche notify.php benutzt. Standard ist $SiteAdminGroup.NotifyList.
$NotifyList
Ein Array von notify=-Einträgen, das in die lokale Anpassungsdatei eingetragen werden kann (wird zusätzlich zu den Eintragungen in der SiteAdmin.NotifyList-Seite genutzt)
# Sende Benachrichtigungen an alice@beispiel.de
$NotifyList[] = 'notify=alice@beispiel.de';
$EnableNotifySubjectEncode
Wende eine Standard-(base64)-Kodierung für die E-Mail-Nachricht an. Andernfalls könnten E-Mails von internationalen Wikis unlesbare Nachrichten enthalten (hinzugefügt seit Version 2.2.2).
$EnableNotifySubjectEncode = 1; # kodiere Nachricht
$EnableNotifySubjectEncode = 0; # nimm die Nachricht wie sie ist (Standard)
Um Kodierungen im Nachrichtenrumpf zu bekommen, fügen Sie die folgende Zeile in die config.php ein (nach XLPage und/oder UTF-8):
$NotifyHeaders = "Content-type: text/plain; charset=$Charset\r\n";

Benachrichtigung nur bei größeren Änderungen

Es ist möglich, Benachrichtigungen nur bei größeren Änderungen zu versenden (Häkchen bei Dies ist eine geringfügige Änderung nicht gesetzt). Ersetzen Sie "$EnableNotify=1;" in der config.phpDatei durch die folgende Zeile

if ( @$_POST['diffclass'] != 'minor' ) $EnableNotify=1;

Auf diese Weise werden nur für größere Änderungen Benachrichtigungen versandt (wenn der Autor das Häkchen für geringfügige Änderungen nicht setzt). Wenn Sie über geringfügige Änderungen, aber nicht über größere Änderungen benachrichtigt werden wollen, dann schreiben Sie

if ( @$_POST['diffclass'] == 'minor' ) $EnableNotify=1;

stattdessen.

Abschalten der Benachrichtigung für Downloads

Wenn Sie "$EnableDirectDownloads=0;" benutzen (z. B. für Datenschutz/Vertraulichkeit in einem passwortgeschützten Wiki), erzeugen angehängte Bilder doppelte Benachrichtigungen. Um das zu verhindern, schalten Sie die Benachrichtigungen für Downloads ab:

if ( $action != 'download' ) $EnableNotify=1;

Auf diese Weise werden nur 'page views' (und keine Bilder innerhalb der Seite) Benachrichtigungen auslösen. Siehe PITS:01159 wegen weiterer Informationen. für die Liste aller Seiten


Übersetzung von PmWiki.Notify,   Originalseite auf PmWikiDe.Notify   —   Rückverweise

Zuletzt geändert:   PmWikiDe.Notifyam 27.02.2024
 PmWiki.Notifyam 22.02.2024