blob: d8165739dc094ce6f9ac4d42aa311647b87eedc8 (
plain)
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
72
73
74
|
<?php
header('Content-Type: text/calendar; charset=UTF-8');
$group = $_GET["g"];
$modules = explode(",", $_GET["m"]);
if (!preg_match("/^[0-9A-Za-z_-]+$/", $group))
{
echo "[E] Invalid group ID: " . $group;
exit -1;
}
$vcalendar = "BEGIN:VCALENDAR\r\n";
$vcalendar .= "VERSION:2.0\r\n";
$vcalendar .= "PRODID:-//MultiAgentSystems.org//University Calendar//EN\r\n";
$vcalendar .= "CALSCALE:GREGORIAN\r\n";
$vcalendar .= "METHOD:PUBLISH\r\n";
$vcalendar .= "X-WR-CALNAME:";
$vcalendar .= str_replace("_", " ", $group);
$vcalendar .= "\r\n";
$vcalendar .= "X-WR-TIMEZONE:Europe/Paris\r\n";
$vcalendar .= "BEGIN:VTIMEZONE\r\n";
$vcalendar .= "TZID:Europe/Paris\r\n";
$vcalendar .= "X-LIC-LOCATION:Europe/Paris\r\n";
$vcalendar .= "BEGIN:DAYLIGHT\r\n";
$vcalendar .= "TZOFFSETFROM:+0100\r\n";
$vcalendar .= "TZOFFSETTO:+0200\r\n";
$vcalendar .= "TZNAME:CEST\r\n";
$vcalendar .= "DTSTART:19810329T020000\r\n";
$vcalendar .= "RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\n";
$vcalendar .= "END:DAYLIGHT\r\n";
$vcalendar .= "BEGIN:STANDARD\r\n";
$vcalendar .= "TZOFFSETFROM:+0200\r\n";
$vcalendar .= "TZOFFSETTO:+0100\r\n";
$vcalendar .= "TZNAME:CET\r\n";
$vcalendar .= "DTSTART:19961027T030000\r\n";
$vcalendar .= "RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\n";
$vcalendar .= "END:STANDARD\r\n";
$vcalendar .= "END:VTIMEZONE\r\n";
echo $vcalendar;
foreach ($modules as $module)
{
$ics_fragment = "output/" . $group . "_" . $module . ".ics";
if (!preg_match("/^[0-9A-Za-z_-]+$/", $module))
{
echo "[E] Invalid module ID: " . $module;
exit -1;
}
if (file_exists($ics_fragment))
{
readfile($ics_fragment);
}
}
$group_ics_file = $group . ".ics";
if (file_exists($group_ics_file))
{
readfile($group_ics_file);
}
if (file_exists("warnings.ics"))
{
readfile("warnings.ics");
}
echo "END:VCALENDAR";
?>
|