From: Christian Weiske Date: Fri, 21 Mar 2014 05:52:42 +0000 (+0100) Subject: ical renderer X-Git-Tag: v0.5.0~7 X-Git-Url: https://git.cweiske.de/bdrem.git/commitdiff_plain/fabbf07a9aaf9fe66145b84199f8bfbbd1ee0259?hp=d8ce92efb0f457051ba4cdaaa11fe938697282d8 ical renderer --- diff --git a/src/bdrem/Renderer/Ical.php b/src/bdrem/Renderer/Ical.php new file mode 100644 index 0000000..019e218 --- /dev/null +++ b/src/bdrem/Renderer/Ical.php @@ -0,0 +1,71 @@ + + * @copyright 2014 Christian Weiske + * @license http://www.gnu.org/licenses/agpl.html GNU AGPL v3 + * @link http://cweiske.de/bdrem.htm + */ +namespace bdrem; + +/** + * Renders events in an iCalendar file + * + * @category Tools + * @package Bdrem + * @author Christian Weiske + * @copyright 2014 Christian Weiske + * @license http://www.gnu.org/licenses/agpl.html GNU AGPL v3 + * @version Release: @package_version@ + * @link http://cweiske.de/bdrem.htm + */ +class Renderer_Ical extends Renderer +{ + /** + * HTTP content type + * @var string + */ + protected $httpContentType = 'text/calendar; charset=utf-8'; + + /** + * Render the events in an iCalendar file + * + * @param array $arEvents Event objects to render + * + * @return string iCal file + */ + public function render($arEvents) + { + $s = "BEGIN:VCALENDAR\n" + . "VERSION:2.0\n" + . "PRODID:-//bdrem\n"; + foreach ($arEvents as $event) { + $props = array('BEGIN' => 'VEVENT'); + + $props['UID'] = str_replace( + array('-', '????'), array('', '0000'), $event->date + ) + . '.' . $event->age + . '.' . md5($event->title . '/' . $event->type) + . '@bdrem'; + $props['DTSTART'] = str_replace('-', '', $event->date); + $props['DURATION'] = 'P1D'; + $props['SUMMARY'] = sprintf( + '%s - %s. %s', $event->title, $event->age, $event->type + ); + $props['END'] = 'VEVENT'; + + foreach ($props as $key => $value) { + $s .= $key . ':' . $value . "\n"; + } + } + $s .= "END:VCALENDAR\n"; + return $s; + } +} +?> diff --git a/src/bdrem/UserInterface.php b/src/bdrem/UserInterface.php index 66b72e2..ea0e142 100644 --- a/src/bdrem/UserInterface.php +++ b/src/bdrem/UserInterface.php @@ -113,6 +113,7 @@ abstract class UserInterface 'console', 'html', 'htmltable', + 'ical', 'mail', ), 'default' => 'console',