kalender


Kalender


Das Kalender-Modul bringt einen netzwerkweiten Terminplaner ins Weinhold Framework. Termine werden zentral gespeichert und können von eingeloggten Nutzern erstellt, bearbeitet und geteilt werden – optional auch öffentlich für alle Besucher. Auf weinify.de/kalender ist das Modul live im Einsatz.

Allgemein

Sichtbarkeit von Terminen


Beim Erstellen wählt man zwischen drei Stufen: Netzwerk (alle eingeloggten Nutzer können den Termin sehen), Privat (nur Ersteller und eingeladene Nutzer haben Zugriff) und Öffentlich (jeder kann den Termin sehen, auch ohne Login – erfordert eine eigene, separat vergebene Berechtigung). Jeder Termin kann außerdem einen optionalen externen Link tragen.

E-Mail-Erinnerungen


Pro Termin kann eine E-Mail-Erinnerung aktiviert werden. In den persönlichen Einstellungen legt jeder Nutzer fest, wie viele Tage vorher die Erinnerung gesendet werden soll (0 = am selben Tag, -1 = deaktiviert). Der Versand läuft täglich automatisch per Cronjob, wahlweise über WP-Cron oder einen externen Server-Cron (Einstellung pro Modul, wie im gesamten Framework üblich).

Farbkodierung & Herkunft


Jeder Nutzer kann pro Webseite eine eigene Farbe für die Terminanzeige konfigurieren. Bei der Termin-Erstellung wird außerdem die Herkunft (welche Subsite) zugeordnet – so behalten Mitglieder mehrerer Sites den Überblick.

Navigation


Ein Kalender-Link wird automatisch in die Navigation des Benutzerverwaltung-Moduls (weinhold_auth_nav) eingehängt.

Shortcodes

ShortcodeBeschreibung
weinhold_calendarPersönlicher Kalender (nur eingeloggte Nutzer): zeigt alle Termine netzwerkweit, die der Nutzer sehen darf. Beim Aktivieren des Moduls wird automatisch eine Seite unter /kalender mit diesem Shortcode erstellt
weinhold_public_calendarÖffentlicher Kalender der aktuellen Webseite: nicht eingeloggte Besucher sehen nur öffentliche Termine, eingeloggte Nutzer alle Termine dieser Webseite

Dateien

modules/calendar.php – einzige Datei des Moduls: Datenbank inkl. versionierter Migrationen, Termin-/Farbverwaltung, Erinnerungs-Cronjob, Frontend-Formularverarbeitung, beide Shortcodes, Admin-Seite, Cleanup.

Für Entwickler

Datenbank


TabelleSpalten(Auswahl)
weinhold_calendar_eventssite_id, creator_user_id, caption, description, event_link, visibility(0 Netzwerk/1 Privat/2 Öffentlich), event_dt_gmt
weinhold_calendar_event_usersevent_id, user_id, wants_reminder, reminder_sent_at_gmt
weinhold_calendar_user_settingsuser_id, reminder_days
weinhold_calendar_site_colorsuser_id, site_id, color

Versionierte Migration bis DB-Version 3: v2 auf v3 benennt is_private in visibility um (aus bool wird dreiwertig), fügt event_link hinzu und wants_reminder in der Teilnehmer-Tabelle.

Eigene Berechtigung für öffentliche Termine


Über den Filter weinhold_registered_capabilities registriert das Modul die zusätzliche Capability weinhold_calendar_create_public_event – eine eigene, feinere Berechtigung oberhalb der normalen Modul-Edit-Rechte, weil ein öffentlicher Termin auch ohne Login sichtbar ist und damit sensibler ist als ein normaler Netzwerk-Termin.

E-Mail-Template & Cron


Registriert das Template calendar_reminder beim E-Mail-Versand-Modul (Platzhalter display_name, count, when, events) und nutzt es über weinhold_send_module_mail() für den täglichen Erinnerungsversand. Der tägliche Cron-Job wird ausschließlich auf der Hauptsite eingerichtet (Modul-Scope: network) und respektiert den zentralen Cron-Modus-Schalter (weinhold_cron_mode_is_extern(‚calendar‘)) – bei externem Cron übernimmt WP-Cron das Scheduling nicht selbst.

Besonderheiten

Trotz Modul-Scope network sind Termine site_id-getaggt und Farben pro Nutzer UND Site konfigurierbar – „netzwerkweit“ bedeutet hier, dass ein Nutzer die Termine ALLER Sites in einem gemeinsamen persönlichen Kalender sieht, nicht dass es nur einen einzigen, undifferenzierten Termin-Pool ohne Site-Bezug gibt.

Die Migration von is_private (boolesch) zu visibility (dreiwertig) zeigt, dass „Öffentlich“ nachträglich als dritte Sichtbarkeitsstufe hinzugefügt wurde – ältere, per Datenbank-Upgrade migrierte Installationen haben dieselbe Spalte nur unter neuem Namen und mit erweitertem Wertebereich.

Die Berechtigung für öffentliche Termine läuft über eine eigene Capability statt über das generische Modul-Edit-Recht – wer Termine bearbeiten darf, darf noch lange keine öffentlichen, nicht-login-pflichtigen Termine erstellen.

Versionshistorie

VersionDatumÄnderung
1.0.022.09.2026Einführung der Versionierung.