1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
<?php
namespace RESTAPI\Routes;
/**
* @author André Klaßen <andre.klassen@elan-ev.de>
* @author <mlunzena@uos.de>
* @license GPL 2 or later
* @deprecated Since Stud.IP 5.0. Will be removed in Stud.IP 6.0.
*
* @condition user_id ^[a-f0-9]{1,32}$
* @condition semester_id ^[a-f0-9]{1,32}$
*/
class Schedule extends \RESTAPI\RouteMap
{
/**
* returns schedule for a given user and semester
*
* @get /user/:user_id/schedule/:semester_id
* @get /user/:user_id/schedule
*/
public function getSchedule($user_id, $semester_id = null)
{
if ($user_id !== $GLOBALS['user']->id) {
$this->error(401);
}
$current_semester = isset($semester_id)
? \Semester::find($semester_id)
: \Semester::findCurrent();
if (!$current_semester) {
$this->notFound('No such semester.');
}
$schedule_settings = \UserConfig::get($user_id)->SCHEDULE_SETTINGS;
$days = \CalendarScheduleModel::getDisplayedDays($schedule_settings['glb_days']);
$entries = \CalendarScheduleModel::getEntries(
$user_id, $current_semester,
$schedule_settings['glb_start_time'], $schedule_settings['glb_end_time'],
$days,
$visible = false
);
$json = [];
foreach ($entries as $number_of_day => $schedule_of_day) {
$entries = [];
foreach ($schedule_of_day->entries as $entry) {
$entries[$entry['id']] = self::entryToJson($entry);
}
$json[$number_of_day] = $entries;
}
$this->etag(md5(serialize($json)));
return array_reverse($json, true);
}
private static function entryToJson($entry)
{
$json = [];
foreach (['start', 'end', 'content', 'title', 'color', 'type'] as $key) {
$json[$key] = in_array($key, ['start', 'end'])
? (int) $entry[$key]
: $entry[$key];
}
return $json;
}
}
|