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
Shortcode Beschreibung weinhold_calendar Persö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
Tabelle Spalten (Auswahl) weinhold_calendar_events site_id, creator_user_id, caption, description, event_link, visibility (0 Netzwerk/1 Privat/2 Öffentlich), event_dt_gmt weinhold_calendar_event_users event_id, user_id, wants_reminder, reminder_sent_at_gmt weinhold_calendar_user_settings user_id, reminder_days weinhold_calendar_site_colors user_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.
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.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.
Versionshistorie
Version Datum Änderung 1.0.0 22.09.2026 Einführung der Versionierung.