diff options
Diffstat (limited to 'includes/controller/shifts_controller.php')
-rw-r--r-- | includes/controller/shifts_controller.php | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/includes/controller/shifts_controller.php b/includes/controller/shifts_controller.php new file mode 100644 index 00000000..1cd7b5d6 --- /dev/null +++ b/includes/controller/shifts_controller.php @@ -0,0 +1,34 @@ +<?php + +/** + * Export filtered shifts via JSON. (Like iCal Export or shifts view) + */ +function shifts_json_export_controller() { + global $ical_shifts, $user; + + if (isset ($_REQUEST['key']) && preg_match("/^[0-9a-f]{32}$/", $_REQUEST['key'])) + $key = $_REQUEST['key']; + else + die("Missing key."); + + $user = User_by_api_key($key); + if($user === false) + die("Unable to find user."); + if($user == null) + die("Key invalid."); + if(!in_array('shifts_json_export', privileges_for_user($user['UID']))) + die("No privilege for shifts_json_export."); + + 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`"); + } + + header("Content-Type: application/json; charset=utf-8"); + echo json_encode($ical_shifts); + die(); +} + +?>
\ No newline at end of file |