0) { redirect(shift_link($upcoming_shifts[0])); } redirect(page_link_to('user_shifts')); } /** * Export all shifts using api-key. */ function shifts_json_export_all_controller() { global $api_key; if ($api_key == "") { engelsystem_error("Config contains empty apikey."); } if (! isset($_REQUEST['api_key'])) { engelsystem_error("Missing parameter api_key."); } if ($_REQUEST['api_key'] != $api_key) { engelsystem_error("Invalid api_key."); } $shifts_source = Shifts(); if ($shifts_source === false) { engelsystem_error("Unable to load shifts."); } header("Content-Type: application/json; charset=utf-8"); raw_output(json_encode($shifts_source)); } /** * 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 { engelsystem_error("Missing key."); } $user = User_by_api_key($key); if ($user === false) { engelsystem_error("Unable to find user."); } if ($user == null) { engelsystem_error("Key invalid."); } if (! in_array('shifts_json_export', privileges_for_user($user['UID']))) { engelsystem_error("No privilege for shifts_json_export."); } $ical_shifts = load_ical_shifts(); header("Content-Type: application/json; charset=utf-8"); raw_output(json_encode($ical_shifts)); } /** * Returns shifts to export. * Users shifts or user_shifts filter based shifts if export=user_shifts is given as param. */ function load_ical_shifts() { global $user, $ical_shifts; if (isset($_REQUEST['export']) && $_REQUEST['export'] == 'user_shifts') { require_once realpath(__DIR__ . '/user_shifts.php'); view_user_shifts(); return $ical_shifts; } return Shifts_by_user($user); } ?>