summaryrefslogtreecommitdiff
path: root/includes/controller
diff options
context:
space:
mode:
authorPhilip Häusler <msquare@notrademark.de>2013-09-10 14:27:31 +0200
committerPhilip Häusler <msquare@notrademark.de>2013-09-10 14:27:31 +0200
commita47b1935cb6310e05e4e6b15512b21b7cd4eec3c (patch)
treec966f9f44aace4f40baf2d55bd7c9ffc6c45a85f /includes/controller
parent4b2284797641c7c824a6d5efe32bd48884223d94 (diff)
#119 added basic shift json export support using same pattern like ical export
Diffstat (limited to 'includes/controller')
-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