2011-10-11 19:47:49 +02:00
< ? php
// Öffentlich zugängliche Funktion zum Abrufen von iCal-Exports der eigenen Schichten
function user_ical () {
2011-12-28 14:45:49 +01:00
global $ical_shifts ;
2011-10-11 19:47:49 +02:00
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 ];
2011-12-28 14:45:49 +01:00
if ( isset ( $_REQUEST [ 'export' ]) && $_REQUEST [ 'export' ] == 'user_shifts' ) {
require_once ( 'includes/pages/user_shifts.php' );
view_user_shifts ();
} else {
$ical_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` " );
}
2011-10-11 19:47:49 +02:00
2011-12-28 14:45:49 +01:00
header ( " Content-Type: text/calendar; charset=utf-8 " );
echo " BEGIN:VCALENDAR \r \n VERSION:2.0 \r \n PRODID:-//-//Engelsystem//DE \r \n CALSCALE:GREGORIAN \r \n " ;
foreach ( $ical_shifts as $shift ) {
echo " BEGIN:VEVENT \r \n " ;
echo " UID: " . md5 ( $shift [ 'start' ] . $shift [ 'end' ] . $shift [ 'name' ]) . " \r \n " ;
echo " SUMMARY: " . str_replace ( " \n " , " \\ n " , preg_replace ( " /[^a-z]*/i " , '' , $shift [ 'name' ])) . " \r \n " ;
echo " DESCRIPTION: " . str_replace ( " \n " , " \\ n " , $shift [ 'Comment' ]) . " \r \n " ;
echo " DTSTART;TZID=Europe/Berlin: " . date ( " Ymd \T His " , $shift [ 'start' ]) . " \r \n " ;
echo " DTEND;TZID=Europe/Berlin: " . date ( " Ymd \T His " , $shift [ 'end' ]) . " \r \n " ;
echo " LOCATION: " . $shift [ 'Name' ] . " \r \n " ;
echo " END:VEVENT \r \n " ;
2011-10-11 19:47:49 +02:00
}
2011-12-28 14:45:49 +01:00
echo " END:VCALENDAR \r \n " ;
2011-10-11 19:47:49 +02:00
die ();
}
?>