9 * @author Christian Weiske <cweiske@cweiske.de>
10 * @copyright 2014 Christian Weiske
11 * @license http://www.gnu.org/licenses/agpl.html GNU AGPL v3
12 * @link http://cweiske.de/bdrem.htm
17 * Renders events in an iCalendar file
21 * @author Christian Weiske <cweiske@cweiske.de>
22 * @copyright 2014 Christian Weiske
23 * @license http://www.gnu.org/licenses/agpl.html GNU AGPL v3
24 * @version Release: @package_version@
25 * @link http://cweiske.de/bdrem.htm
27 class Renderer_Ical extends Renderer
33 protected $httpContentType = 'text/calendar; charset=utf-8';
36 * Render the events in an iCalendar file
38 * @param array $arEvents Event objects to render
40 * @return string iCal file
42 public function render($arEvents)
44 $s = "BEGIN:VCALENDAR\n"
46 . "PRODID:-//bdrem\n";
47 foreach ($arEvents as $event) {
48 $props = array('BEGIN' => 'VEVENT');
50 $props['UID'] = str_replace(
51 array('-', '????'), array('', '0000'), $event->date
54 . '.' . md5($event->title . '/' . $event->type)
56 $props['DTSTART'] = str_replace('-', '', $event->date);
57 $props['DURATION'] = 'P1D';
58 $props['SUMMARY'] = sprintf(
59 '%s - %s. %s', $event->title, $event->age, $event->type
61 $props['END'] = 'VEVENT';
63 foreach ($props as $key => $value) {
64 $s .= $key . ':' . $value . "\n";
67 $s .= "END:VCALENDAR\n";