From a78fc177a5dbd1ec4f607fc927549dc12ea20585 Mon Sep 17 00:00:00 2001 From: Ivymaster Date: Tue, 7 Jul 2026 14:30:23 +0200 Subject: [PATCH] add event teilnehmer extension for getting targeted lecturers events. add demo icons display in calDAV calendar exports --- application/libraries/KalenderLib.php | 18 +++++++++++++++--- .../sabredav/caldav/SabreDAVCalDAVBackend.php | 18 +++++++++++++++--- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/application/libraries/KalenderLib.php b/application/libraries/KalenderLib.php index 18c94b805..f6176f380 100644 --- a/application/libraries/KalenderLib.php +++ b/application/libraries/KalenderLib.php @@ -405,7 +405,6 @@ class KalenderLib SELECT 1 FROM lehre.tbl_kalender_event_teilnehmer event_teilnehmer WHERE event_teilnehmer.kalender_id = tbl_kalender.kalender_id - AND event_teilnehmer.rolle_kurzbz = 'teilnehmer' AND event_teilnehmer.uid = $escapedUserUID )"; @@ -419,7 +418,6 @@ class KalenderLib OR event_benutzergruppe.studiensemester_kurzbz = event_gruppe.studiensemester_kurzbz ) WHERE event_gruppe.kalender_id = tbl_kalender.kalender_id - AND event_gruppe.rolle_kurzbz = 'teilnehmer' AND event_gruppe.gruppe_kurzbz IS NOT NULL AND event_benutzergruppe.uid = $escapedUserUID )"; @@ -451,7 +449,6 @@ class KalenderLib OR event_studentlehrverband.gruppe IS NULL ) WHERE event_lehrverband.kalender_id = tbl_kalender.kalender_id - AND event_lehrverband.rolle_kurzbz = 'teilnehmer' AND event_lehrverband.gruppe_kurzbz IS NULL AND event_lehrverband.studiengang_kz IS NOT NULL )"; @@ -561,10 +558,25 @@ class KalenderLib AND lecturer_event_teilnehmer.uid = $escapedUserUID )"; + $eventBenutzergruppeExists = "EXISTS ( + SELECT 1 + FROM lehre.tbl_kalender_event_teilnehmer lecturer_event_gruppe + JOIN public.tbl_benutzergruppe lecturer_benutzergruppe + ON lecturer_benutzergruppe.gruppe_kurzbz = lecturer_event_gruppe.gruppe_kurzbz + AND ( + lecturer_event_gruppe.studiensemester_kurzbz IS NULL + OR lecturer_benutzergruppe.studiensemester_kurzbz = lecturer_event_gruppe.studiensemester_kurzbz + ) + WHERE lecturer_event_gruppe.kalender_id = tbl_kalender.kalender_id + AND lecturer_event_gruppe.gruppe_kurzbz IS NOT NULL + AND lecturer_benutzergruppe.uid = $escapedUserUID + )"; + $this->_ci->KalenderModel->db->where('tbl_kalender.status_kurzbz', 'live'); $this->_ci->KalenderModel->db->group_start(); $this->_ci->KalenderModel->db->where($lehreinheitMitarbeiterExists, null, false); $this->_ci->KalenderModel->db->or_where($eventTeilnehmerExists, null, false); + $this->_ci->KalenderModel->db->or_where($eventBenutzergruppeExists, null, false); $this->_ci->KalenderModel->db->group_end(); $data = $this->_ci->KalenderModel->load(); diff --git a/application/libraries/sabredav/caldav/SabreDAVCalDAVBackend.php b/application/libraries/sabredav/caldav/SabreDAVCalDAVBackend.php index 2f2b2b822..30f1c7c68 100644 --- a/application/libraries/sabredav/caldav/SabreDAVCalDAVBackend.php +++ b/application/libraries/sabredav/caldav/SabreDAVCalDAVBackend.php @@ -12,7 +12,12 @@ class SabreDAVCalDAVBackend extends \Sabre\CalDAV\Backend\AbstractBackend CONST CALENDAR_NAME = 'LVPlan'; CONST CAL_CATEGORY_STUNDENPLAN = 'Stundenplan'; CONST CAL_CATEGORY_STUNDENPLAN_EXAM = 'StundenplanExam'; - CONST CAL_CATEGORY_STUNDENPLAN_ONLINE = 'StundenplanOnline'; + CONST CAL_CATEGORY_STUNDENPLAN_REMOTE = 'StundenplanRemote'; + + CONST CAL_CATEGORY_STUNDENPLAN_EXAM_ICON = '📝'; + CONST CAL_CATEGORY_STUNDENPLAN_ON_SITE_ICON = '🏫'; + CONST CAL_CATEGORY_STUNDENPLAN_REMOTE_ICON = '📍'; + CONST CAL_CATEGORY_RESERVATION_ICON = '📌'; /** * Creates the backend * @@ -221,6 +226,7 @@ class SabreDAVCalDAVBackend extends \Sabre\CalDAV\Backend\AbstractBackend protected function buildCalendarDataFragment($item) { + $summaryIcon = ''; $summary = $item->type == 'reservierung' ? $item->titel : $item->topic; $description = ""; @@ -238,14 +244,20 @@ class SabreDAVCalDAVBackend extends \Sabre\CalDAV\Backend\AbstractBackend $category = self::CAL_CATEGORY_STUNDENPLAN; if ($item->type === 'lehreinheit') { if ($item->lehrform === 'EXAM') { + $summaryIcon = self::CAL_CATEGORY_STUNDENPLAN_EXAM_ICON; $category = self::CAL_CATEGORY_STUNDENPLAN_EXAM; } else if (!isset($item->ko_ort_kurzbz) || $item->ko_ort_kurzbz === '') { - $category = self::CAL_CATEGORY_STUNDENPLAN_ONLINE; + $summaryIcon = self::CAL_CATEGORY_STUNDENPLAN_REMOTE_ICON; + $category = self::CAL_CATEGORY_STUNDENPLAN_REMOTE; } } else if ($item->type === 'reservierung' && (!isset($item->ko_ort_kurzbz) || $item->ko_ort_kurzbz === '')) { - $category = self::CAL_CATEGORY_STUNDENPLAN_ONLINE; + $summaryIcon = self::CAL_CATEGORY_RESERVATION_ICON; + $category = self::CAL_CATEGORY_STUNDENPLAN_REMOTE; } + if ($summaryIcon !== '') { + $summary = $summaryIcon . ' ' . $summary; + } $parsedStartDate = $this->formatICalLocalDateTime($item->isostart); $parsedEndDate = $this->formatICalLocalDateTime($item->isoend);