This repository has been archived by the owner on Jan 5, 2022. It is now read-only.
forked from Slummp/BdxCalendar
/
calendar.php
98 lines (72 loc) · 3 KB
/
calendar.php
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
require_once __DIR__ . '/vendor/autoload.php';
include "functions.php";
$formation = explode(",", $_GET["formation"]);
$id = $formation[0];
$code = $formation[1];
// initialisation des paramètres du GET si non-renseignés
if(!(isset($_GET["filtres"])))
$_GET["filtres"] = "";
$filtres = explode(",", $_GET["filtres"]);
if(!(isset($_GET["groupes"])))
$_GET["groupes"] = "";
$groupes = explode(",", $_GET["groupes"]);
array_push($groupes, $code);
$url = "https://edt-st.u-bordeaux.fr/etudiants/";
$diplome = array( "L" => "Licence/",
"M1" => "Master/Master1/",
"M2" => "Master/Master2/");
$semestre = array( "S1" => "Semestre1/",
"S2" => "Semestre2/");
$url .= $diplome[$_GET["diplome"]];
$url .= $semestre[$_GET["semestre"]];
$url .= "g" . $id . ".xml";
// Vérification de la validité de la requête
if(get_headers($url)[0] != 'HTTP/1.1 200 OK')
{
echo 'error';
}
// Si la requête est valide
else
{
$xml = file_get_contents($url);
$parser = simplexml_load_string($xml);
$calendar = new \Eluceo\iCal\Component\Calendar('-//Slummmp//Emplois du temps BdxI//FR');
foreach ($parser->event as $event) {
$module = explode(" ", (string)$event->resources->module->item);
$codeModule = $module[0];
unset($module[0]);
$items = array();
foreach ($event->resources->group->item as $item) {
array_push($items, (string)$item);
}
if (!in_array($codeModule, $filtres) && in_arrays($items, $groupes)) {
$date = explode("/", $event->attributes()->date);
$date = new DateTime($date[2] . "-" . $date[1] . "-" . $date[0]);
$date->modify('+' . (string)$event->day . ' day');
$dateStart = clone $date;
$time = explode(":", (string)$event->starttime);
$dateStart->modify('+' . $time[0] . ' hours');
$dateStart->modify('+' . $time[1] . ' minutes');
$dateEnd = clone $date;
$time = explode(":", (string)$event->endtime);
$dateEnd->modify('+' . $time[0] . ' hours');
$dateEnd->modify('+' . $time[1] . ' minutes');
$useUTC = (isset($_GET['useUTC']) && $_GET['useUTC'] == "1");
$vEvent = new \Eluceo\iCal\Component\Event();
$vEvent
->setUseUtc($useUTC)
->setDtStart($dateStart)
->setDtEnd($dateEnd)
->setSummary($event->category . " " . implode(" ", $module))
->setLocation((string)$event->resources->room->item)
->setDescription($codeModule . "\n" . (string)$event->resources->staff->item . "\nGroupes : " . implode(", ", $items) . "\nNotes : " . (string)$event->notes)
;
$calendar->addComponent($vEvent);
}
}
header('Content-Type: text/calendar; charset=utf-8');
header('Content-Disposition: attachment; filename="calendar.ics"');
echo $calendar->render();
}
?>