2011-10-11 19:47:49 +02:00
< ? php
// Öffentlich zugängliche Funktion zum Abrufen von iCal-Exports der eigenen Schichten
function user_ical () {
2012-12-03 21:00:20 +01:00
global $ical_shifts , $user ;
2011-12-28 14:45:49 +01:00
2012-12-03 21:00:20 +01:00
if ( isset ( $_REQUEST [ 'key' ]) && preg_match ( " /^[0-9a-f] { 32} $ / " , $_REQUEST [ 'key' ]))
$key = $_REQUEST [ 'key' ];
else
die ( " Missing key. " );
2011-10-11 19:47:49 +02:00
2013-09-10 14:27:31 +02:00
$user = User_by_api_key ( $key );
if ( $user === false )
die ( " Unable to find user. " );
if ( $user == null )
2012-12-03 21:00:20 +01:00
die ( " Key invalid. " );
2013-09-10 14:27:31 +02:00
if ( ! in_array ( 'ical' , privileges_for_user ( $user [ 'UID' ])))
die ( " No privilege for ical. " );
2011-10-11 19:47:49 +02:00
2012-12-03 21:00:20 +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 `Shifts`.*, `Room`.`Name` as `room_name` FROM `ShiftEntry` INNER JOIN `Shifts` ON (`ShiftEntry`.`SID` = `Shifts`.`SID`) INNER JOIN `Room` ON (`Shifts`.`RID` = `Room`.`RID`) WHERE `UID`= " . sql_escape ( $user [ 'UID' ]) . " ORDER BY `start` " );
}
2011-10-11 19:47:49 +02:00
2012-12-03 21:00:20 +01:00
header ( " Content-Type: text/calendar; charset=utf-8 " );
$html = " BEGIN:VCALENDAR \r \n VERSION:2.0 \r \n PRODID:-//-//Engelsystem//DE \r \n CALSCALE:GREGORIAN \r \n " ;
foreach ( $ical_shifts as $shift ) {
$html .= " BEGIN:VEVENT \r \n " ;
$html .= " UID: " . md5 ( $shift [ 'start' ] . $shift [ 'end' ] . $shift [ 'name' ]) . " \r \n " ;
$html .= " SUMMARY: " . str_replace ( " \n " , " \\ n " , $shift [ 'name' ]) . " \r \n " ;
if ( isset ( $shift [ 'Comment' ]))
$html .= " DESCRIPTION: " . str_replace ( " \n " , " \\ n " , $shift [ 'Comment' ]) . " \r \n " ;
$html .= " DTSTART;TZID=Europe/Berlin: " . date ( " Ymd \T His " , $shift [ 'start' ]) . " \r \n " ;
$html .= " DTEND;TZID=Europe/Berlin: " . date ( " Ymd \T His " , $shift [ 'end' ]) . " \r \n " ;
$html .= " LOCATION: " . $shift [ 'room_name' ] . " \r \n " ;
$html .= " END:VEVENT \r \n " ;
}
$html .= " END:VCALENDAR \r \n " ;
header ( " Content-Length: " . strlen ( $html ));
echo $html ;
die ();
2011-10-11 19:47:49 +02:00
}
?>