diff options
Diffstat (limited to 'includes/pages')
-rw-r--r-- | includes/pages/user_ical.php | 34 | ||||
-rw-r--r-- | includes/pages/user_myshifts.php | 3 |
2 files changed, 36 insertions, 1 deletions
diff --git a/includes/pages/user_ical.php b/includes/pages/user_ical.php new file mode 100644 index 00000000..181a7781 --- /dev/null +++ b/includes/pages/user_ical.php @@ -0,0 +1,34 @@ +<?php + + +// Öffentlich zugängliche Funktion zum Abrufen von iCal-Exports der eigenen Schichten +function user_ical() { + if (isset ($_REQUEST['key']) && preg_match("/^[0-9a-f]{32}$/", $_REQUEST['key'])) + $key = $_REQUEST['key']; + else + die("Missing key."); + + $user = sql_select("SELECT * FROM `User` WHERE `ical_key`='" . sql_escape($key) . "' LIMIT 1"); + if (count($user) == 0) + die("Key invalid."); + + $user = $user[0]; + + $shifts = sql_select("SELECT * FROM `ShiftEntry` JOIN `Shifts` ON (`ShiftEntry`.`SID` = `Shifts`.`SID`) JOIN `Room` ON (`Shifts`.`RID` = `Room`.`RID`) WHERE `UID`=" . sql_escape($user['UID']) . " ORDER BY `start`"); + + header("Content-Type: text/calendar"); + echo "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//-//Engelsystem//DE\nCALSCALE:GREGORIAN\n"; + foreach ($shifts as $shift) { + echo "BEGIN:VEVENT\n"; + echo "UID:" . md5($shift['start'] . $shift['end'] . $shift['name']) . "\n"; + echo "SUMMARY:" . str_replace("\n", "\\n", $shift['name']) . "\n"; + echo "DESCRIPTION:" . str_replace("\n", "\\n", $shift['Comment']) . "\n"; + echo "DTSTART;TZID=Europe/Berlin:" . date("Ymd\THis", $shift['start']) . "\n"; + echo "DTEND;TZID=Europe/Berlin:" . date("Ymd\THis", $shift['end']) . "\n"; + echo "LOCATION:" . $shift['Name'] . "\n"; + echo "END:VEVENT\n"; + } + echo "END:VCALENDAR\n"; + die(); +} +?> diff --git a/includes/pages/user_myshifts.php b/includes/pages/user_myshifts.php index 4dc4cc81..60c5bba0 100644 --- a/includes/pages/user_myshifts.php +++ b/includes/pages/user_myshifts.php @@ -1,7 +1,7 @@ <?php -// +// Zeigt die Schichten an, die ein Benutzer belegt function user_myshifts() { global $LETZTES_AUSTRAGEN; global $user, $privileges; @@ -44,6 +44,7 @@ function user_myshifts() { header("Location: " . page_link_to('user_myshifts')); } $shifts = sql_select("SELECT * FROM `ShiftEntry` JOIN `Shifts` ON (`ShiftEntry`.`SID` = `Shifts`.`SID`) JOIN `Room` ON (`Shifts`.`RID` = `Room`.`RID`) WHERE `UID`=" . sql_escape($user['UID']) . " ORDER BY `start`"); + $html = ""; foreach ($shifts as $shift) { if (time() > $shift['end']) |