add event teilnehmer extension for getting targeted lecturers events. add demo icons display in calDAV calendar exports

This commit is contained in:
Ivymaster
2026-07-07 14:30:23 +02:00
parent 4c1d88a054
commit a78fc177a5
2 changed files with 30 additions and 6 deletions
+15 -3
View File
@@ -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();
@@ -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);