Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

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.

...

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.
Beispiele: TestNotification, BasketUserNotification:shopUser:123

$request

Der Request ist die Funktion, die für diesen Datensatz aufgerufen werden soll. Als Rückgabe wird ein Element von Typ FrameworkElementAbstact erwartet.
Beispiele: Admin/Notification.notificationTest, Shop/Basket.notificationArticleNotAvailable

$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.