summaryrefslogtreecommitdiff
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";
?>