berecont/contao-notification-scheduler-bundle

Schedule and send Notification Center notifications in Contao.

Maintainers

Package info

github.com/berecont/contao-notification-scheduler-bundle

Forum

Type:contao-bundle

pkg:composer/berecont/contao-notification-scheduler-bundle

Transparency log

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.1.0 2026-08-20 11:03 UTC

This package is auto-updated.

Last update: 2026-08-20 11:46:16 UTC


README

Zeitgesteuerter und automatischer Versand von Notification-Center-Benachrichtigungen in Contao.

Das Bundle erweitert Contao um einen Notification Scheduler, mit dem Benachrichtigungen aus dem Notification Center einmalig zu einem bestimmten Zeitpunkt oder automatisch nach einem wöchentlichen Zeitplan versendet werden können.

Das Bundle basiert auf der freien Version von terminal42/notification_center.
Notification Center Pro wird nicht benötigt.

Funktionen

  • Zeitgesteuerter Versand von Notification-Center-Benachrichtigungen
  • Einmalige Zeitpläne mit Datum und Uhrzeit
  • Wöchentlich wiederkehrende Zeitpläne
  • Individueller Empfängername und individuelle E-Mail-Adresse
  • Automatische Berechnung der nächsten Ausführung
  • Automatische Deaktivierung abgeschlossener einmaliger Zeitpläne
  • Verarbeitung über den Contao-Cron
  • Schutz vor paralleler bzw. doppelter Verarbeitung
  • Statusanzeige im Contao-Backend
  • Anzeige der letzten und nächsten Ausführung
  • CLI-Befehle für Tests, Diagnose und manuellen Versand
  • Deutsche und englische Backend-Übersetzungen
  • Kompatibel mit Contao 5.3 und 5.7

Voraussetzungen

  • PHP 8.3 oder 8.4
  • Contao 5.3 oder 5.7
  • Notification Center 2.x

Das Bundle verwendet die freie Version von:

terminal42/notification_center

Funktionen von Notification Center Pro werden nicht benötigt.

Installation

Installation über Composer:

composer require berecont/contao-notification-scheduler-bundle

Anschliessend die Contao-Migration ausführen:

php vendor/bin/contao-console contao:migrate

Falls erforderlich, den Contao-Cache leeren:

php vendor/bin/contao-console cache:clear

Notification Center konfigurieren

Das Bundle registriert im Notification Center einen neuen Benachrichtigungstyp:

Notification Scheduler

Im Notification Center wird zunächst eine neue Benachrichtigung dieses Typs angelegt.

Folgende Tokens stehen zur Verfügung:

Token Beschreibung

##scheduler_id## ID des Scheduler-Datensatzes
##scheduler_title## Bezeichnung des Scheduler-Datensatzes
##recipient_name## Name des Empfängers
##recipient_email## E-Mail-Adresse des Empfängers
##schedule_type## Art des Zeitplans
##schedule_date## Datum der geplanten Ausführung
##schedule_time## Uhrzeit der geplanten Ausführung

Beispielsweise kann im Notification Center als Empfängeradresse verwendet werden:

##recipient_email##

Dadurch können mehrere Scheduler-Datensätze mit unterschiedlichen Empfängern dieselbe Notification-Center-Benachrichtigung verwenden.

Zeitplan anlegen

Die Verwaltung erfolgt im Contao-Backend unter:

System → Notification Scheduler

Für einen Zeitplan können unter anderem folgende Angaben festgelegt werden:

  • Bezeichnung
  • Empfängername
  • Empfänger-E-Mail-Adresse
  • Notification-Center-Benachrichtigung
  • Art des Zeitplans
  • Datum und Uhrzeit bzw. Wochentag und Uhrzeit
  • Aktiv-Status

Einmaliger Zeitplan

Bei einem einmaligen Zeitplan werden Datum und Uhrzeit festgelegt.

Beispiel:

02.09.2026 13:00

Nach einem erfolgreichen Versand wird automatisch:

  • der Zeitpunkt der letzten Ausführung gespeichert,
  • die nächste Ausführung entfernt,
  • der Zeitplan deaktiviert.

Wöchentlicher Zeitplan

Bei einem wöchentlichen Zeitplan werden Wochentag und Uhrzeit festgelegt.

Beispiel:

Montag 08:00

Nach einem erfolgreichen Versand wird automatisch der nächste passende Wochentag mit der festgelegten Uhrzeit als nächste Ausführung berechnet.

Cron-Konfiguration

Das Bundle registriert einen minütlichen Contao-Cronjob.

Für den automatischen Betrieb muss der Contao-Cron regelmässig serverseitig aufgerufen werden:

php vendor/bin/contao-console contao:cron

Empfohlen wird ein minütlicher Aufruf. Contao entscheidet selbst, welche registrierten Cronjobs zum jeweiligen Zeitpunkt ausgeführt werden müssen.

Beispiel für einen System-Cronjob:

* * * * * cd /pfad/zur/contao-installation && php vendor/bin/contao-console contao:cron

Der Pfad zur Contao-Installation und gegebenenfalls der Pfad zur verwendeten PHP-Version müssen an die jeweilige Serverumgebung angepasst werden.

CLI-Befehle

Das Bundle stellt mehrere Befehle für Tests und Diagnose zur Verfügung.

Einzelnen Zeitplan prüfen

php vendor/bin/contao-console notification-scheduler:test <ID>

Beispiel:

php vendor/bin/contao-console notification-scheduler:test 3

Der Befehl zeigt unter anderem:

  • Scheduler-ID
  • Bezeichnung
  • Aktiv-Status
  • Zeitplan
  • nächste Ausführung
  • Fälligkeit
  • Notification-ID
  • Empfänger
  • erzeugte Tokens

Bei diesem Befehl wird keine Benachrichtigung versendet.

Fällige Zeitpläne anzeigen

php vendor/bin/contao-console notification-scheduler:due

Der Befehl listet alle aktiven Scheduler-Datensätze auf, deren nächste Ausführung bereits erreicht wurde.

Bei diesem Befehl wird keine Benachrichtigung versendet.

Einzelnen Zeitplan ausführen

php vendor/bin/contao-console notification-scheduler:run <ID>

Die Benachrichtigung wird nur versendet, wenn der ausgewählte Scheduler zum aktuellen Zeitpunkt tatsächlich fällig ist.

Versand erzwingen

Für einen gezielten Test kann der Versand unabhängig vom geplanten Zeitpunkt ausgelöst werden:

php vendor/bin/contao-console notification-scheduler:run <ID> --force

Dabei wird eine echte Notification-Center-Benachrichtigung versendet.

Ist der Zeitplan zum Zeitpunkt des Tests noch nicht regulär fällig, bleibt die geplante nächste Ausführung (nextRun) unverändert.

Der Zeitpunkt des erfolgreichen Testversands wird als letzte Ausführung (lastRun) gespeichert.

Hinweis: --force löst einen echten Versand aus und sollte auf Produktivsystemen entsprechend vorsichtig verwendet werden.

Verarbeitung und Sperrmechanismus

Vor dem Versand wird der betreffende Scheduler-Datensatz vorübergehend gesperrt.

Dadurch wird verhindert, dass zwei nahezu gleichzeitig laufende Cron-Prozesse denselben Zeitplan mehrfach verarbeiten.

Die Sperre läuft nach fünf Minuten automatisch ab, falls die Verarbeitung unerwartet unterbrochen wird.

Nach einem erfolgreichen Versand wird der Scheduler abhängig von der Art des Zeitplans aktualisiert.

Einmaliger Zeitplan

lastRun  → Zeitpunkt des erfolgreichen Versands
nextRun  → wird geleert
enabled  → wird deaktiviert

Wöchentlicher Zeitplan

lastRun  → Zeitpunkt des erfolgreichen Versands
nextRun  → nächster Wochentag zur festgelegten Uhrzeit
enabled  → bleibt aktiviert

Schlägt der Versand fehl, wird der Zeitplan nicht weitergeschaltet. Er bleibt fällig und kann bei einem späteren Cron-Durchlauf erneut verarbeitet werden.

Status im Backend

Die Listenansicht des Notification Schedulers zeigt den aktuellen Zustand der Zeitpläne.

Mögliche Status sind:

  • Aktiv -- der Zeitplan ist aktiv und wartet auf die nächste Ausführung
  • Fällig -- der geplante Ausführungszeitpunkt wurde erreicht
  • Gesperrt -- der Datensatz wird aktuell verarbeitet
  • Deaktiviert -- der Zeitplan ist deaktiviert
  • Kein Termin -- der Zeitplan ist aktiv, besitzt aber keine nächste Ausführung

Zusätzlich werden der konfigurierte Zeitplan und die berechnete nächste Ausführung direkt in der Backend-Übersicht angezeigt.

Protokollierung

Fehler bei der Verarbeitung oder beim Versand werden im Contao-System-Log protokolliert und können im Backend eingesehen werden.

Ein fehlgeschlagener Versand führt nicht dazu, dass der Zeitplan auf den nächsten Termin weitergeschaltet wird.

Lizenz

Dieses Bundle steht unter der MIT-Lizenz.

Autor

Bernhard Renner
berecont

https://berecont.at