summaryrefslogtreecommitdiff
path: root/includes/controller/shifts_controller.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/controller/shifts_controller.php')
-rw-r--r--includes/controller/shifts_controller.php34
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