Component/Notification kann dazu genutzt werden, Benachrichtigungen aus der Datenbanktabelle Framework → Benachrichtigungen → Benachrichtigungen Benutzer bereitzustellen. Dabei kümmert sich Component/Notification nur darum, öffentliche Methoden zur Integration bereitzustellen und die Datensätze den jeweiligen Codestellen zur Weiterverarbeitung aufzurufen.
Der größte Vorteil dieser Komponente ist, dass die Benachrichtigungen in der Datenbank gespeichert werden und es damit Möglich ist, dem Kunden zeitversetzt Feedback zu geben.
Ein möglicher Anwendungsfall wäre zum Beispiel eine Nachricht auf der Willkommensseite des Adminbereichs. Dazu müsste es eine Codestelle geben, welche im Willkommensbereich Benachrichtigungen bezieht und darstellt.
Eine Benachrichtigung anlegen
Mit \Brandbox\Framework\Component\Notification\Manager::add
kann ein neuer Benachrichtigung-Datensatz in der Tabelle erzeugt werden. Dabei werden folgende Parameter erwartet:
Parameter | Beschreibung |
---|---|
$target | Ist ein eindeutiger Key, der auch beim Holen der Benachrichtigungen angegeben werden muss. |
$request | Der Request ist die Funktion, die für diesen Datensatz aufgerufen werden soll. Als Rückgabe wird ein Element von Typ FrameworkElementAbstact erwartet. |
$payload | Optionale Daten für die Verarbeitung im $request. |
$endpoint | Wird beim Beziehen der Benachrichtigungen auch als Parameter erwartet und dient dazu, die Benachrichtigungen dem richtigen Endpoint zuzuordnen. |
$ttl | Time-To-Live in Sekunden. Wie lange soll der Datensatz gültig sein und wann durch den Garbage-Collector gelöscht werden. Hier sollte darauf geachtet werden, keinen Datenmüll zu erzeugen. |
Eine weitere Option ist, den Datensatz händisch in der Tabelle anzulegen. Für eine Meldung für einen Wartungshinweis oder ähnliches würde sich das anbieten.
Benachrichtigungen abholen
Mit \Brandbox\Framework\Component\Notification\Manager::get
können Benachrichtigungen für das mitgegebene $target
und $endpoint
schon als fertige FrameworkElementAbstact
-Elemente abgeholt werden. Beim Abholen der Benachrichtigungen werden alle Datensätze die zu der $target $endpoint
Kombination passen aus der Datenbank geholt und deren $request
ausgeführt.
Benachrichtigungen löschen
Benachrichtigungen werden automatisiert nach Ablaufen der $ttl
über die Funktion \Brandbox\Framework\Component\Notification\Manager::runGarbageCollector
beim Garbage-Collector gelöscht.
Falls eine $ttl von 0 beim Anlegen gewählt wurde, ist der $request
dafür verantwortlich den Datensatz wieder zu löschen.