Versionen von Entwickler.Notifications

Unwichtige Korrekturen ausblenden - Änderungen im Wiki Quelltext

 
 
01.04.2011 23:47 Uhr von tthelen -
Zeilen 1-2 hinzugefügt:

(:redirect 'http://docs.studip.de/develop/Entwickler/Notifications':)

 
 
28.03.2011 11:57 Uhr von Krassmus -
Zeilen 1-21 hinzugefügt:

Notifications - ein Eventsystem für Stud.IP

Plugins können in Stud.IP schon eine Menge. Sie können für jede Veranstaltung als Reiter eingefügt werden, sie können sich in die Homepage eines Nutzers mogeln und dort eine eigene Rubrik darstellen, sie können die Navigation umstellen und auf diese Weise komplette Fuktionen von Stud.IP wie das Forum ersetzen. Aber manchmal braucht man auch kleine Plugins, die nicht ganze Seiten verändern, sondern nur etwas tun, wenn etwas ganz bestimmtes passiert.

Zum Beispiel: Wenn ein Nutzer eine Veranstaltung aboniert und mindestens auf der Warteliste steht, soll eine Person in der Buchhaltung, die Stud.IP fremd ist, eine automatische Email bekommen. So eine Funktionalität ist in Stud.IP nicht integriert bisher, und der Entwickler, der sich damit befasst, will möglichst wenig im Quellcode von Stud.IP verändern. Er muss nun nur die betreffende Codezeile finden und setzt dort ein Event mit einem beliebigen Namen. Das geschieht so:

NotificationCenter::postNotification("user_accepted_to_seminar", $username);

Das Event heißt nun "user_accepted_to_seminar" und wird an dieser Stelle immer aufgerufen. $username ist einfach eine Variable, die in dem Kontext verfügbar ist. In diesem Fall ist das natürlich der Nutzername und der ist einfach wichtig, damit in der später verschickten Email auch drin steht, welcher Nutzer sich angemeldet hat. Aber theoretisch könnte man diese Variable auch weg lassen.

Jetzt muss noch das Plugin geschrieben werden. Das Plugin muss vorher auf der Seite initialisiert sein, damit es eine Funktion für dieses Event registrieren kann. Ich schlage da natürlich ein SystemPlugin vor, das im Konstruktor sich selbst registriert:

public function __construct() {
  NotificationCenter::addObserver($this, "send_mail_to_accepted_user", "user_accepted_to_seminar");
}

An dieser Stelle wird klar, dass die übergebene Funktion nicht einfach eine Funktion sein sollte, sondern eine Methode eines Objektes. Zuerst wird also das spezifische Objekt übergeben und als zweiter Parameter der Name der Methode. Erst der dritte Parameter ist der Name des Events. In diesem Fall ist das Plugin faul und registriert sich selbst für das Event durch $this. Aber es kann auch ein anderes Objekt registriert werden als ein Plugin.

 

 

Quelle: Basis-Wiki-Hilfe | Letzte Änderung: 01.04.2011 23:47 Uhr, tthelen | Local view: Basis-Hilfe