From 2fa8059c0e142a999a05b8a8563063baae39bc24 Mon Sep 17 00:00:00 2001 From: Animation des soirees <nightiies@perso.iiens.net> Date: Sun, 25 Aug 2013 22:39:50 +0200 Subject: [PATCH] iCalendar --- events.php | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 events.php diff --git a/events.php b/events.php new file mode 100644 index 0000000..5b0757b --- /dev/null +++ b/events.php @@ -0,0 +1,61 @@ +<?php + +header("Content-Type: text/calendar"); +header('Content-Disposition: inline; filename=calendar.ics'); + +// the iCal date format. Note the Z on the end indicates a UTC timestamp. +define('DATE_ICAL', 'Ymd\THis'); + +$bdd = new PDO('mysql:host=mysql.iiens.net;dbname=assoce_nightiies', 'assoce_nightiies', 'VwuQREP5JwJQTF5h', array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING)); + +// max line length is 75 chars. New line is \\n + +$output = "BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +PRODID:-//Sam events//NONSGML//EN +X-WR-CALNAME:Sam events +BEGIN:VTIMEZONE +TZID:UTC +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0000 +DTSTART:".gmdate(DATE_ICAL)." +END:STANDARD +END:VTIMEZONE\n\n"; + +// get events +$events = $bdd->prepare('SELECT id, title, date, place, description + FROM sam + ORDER BY date'); +$events->execute(); + +// loop over events +while ($event = $events->fetch()) { + $output .= +"BEGIN:VTIMEZONE +TZID:Europe/Paris +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +DTSTART;TZID=UTC:".gmdate(DATE_ICAL)." +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +UID:".$event[0]." +DTSTAMP;TZID=Europe/Paris:".gmdate(DATE_ICAL)." +DTSTART;TZID=UTC;TZID=Europe/Paris:" . date(DATE_ICAL, $event[2]) . " +DTEND;TZID=UTC;TZID=Europe/Paris:" . date(DATE_ICAL, $event[2] + 5*3600) . " +SUMMARY:".str_replace(',', '\\,', $event[1])." +DESCRIPTION:".str_replace(',', '\\,', $event[4])." +LOCATION:".$event[3]." +END:VEVENT\n\n"; +} + +// close calendar +$output .= "END:VCALENDAR"; + +echo str_replace("\n", "\r\n", $output); + +?> -- GitLab