From 56cddd1e2cf1ef2c1b6a11dd57063c9907cc5ae5 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli Date: Wed, 21 Nov 2012 22:17:20 +0100 Subject: [PATCH] Fix iCal export: no empty organizer or attendee attributes; correctly escape special characters --- plugins/calendar/lib/calendar_ical.php | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/plugins/calendar/lib/calendar_ical.php b/plugins/calendar/lib/calendar_ical.php index 601ac864..f77224dc 100644 --- a/plugins/calendar/lib/calendar_ical.php +++ b/plugins/calendar/lib/calendar_ical.php @@ -454,9 +454,12 @@ class calendar_ical } } + /** + * Escape values according to RFC 2426 2.5 + */ private function escpape($str) { - return preg_replace('/(? '\\\\', ';' => '\\;', ',' => '\\,')); } /** @@ -469,14 +472,15 @@ class calendar_ical $organizer = ""; $attendees = ""; foreach ($ats as $at) { - if ($at['role']=="ORGANIZER") { - //I am an orginizer - $organizer .= "ORGANIZER;"; - if (!empty($at['name'])) - $organizer .= 'CN="' . $at['name'] . '"'; - $organizer .= ":mailto:". $at['email'] . self::EOL; + if ($at['role'] == "ORGANIZER") { + if ($at['email']) { + $organizer .= "ORGANIZER;"; + if (!empty($at['name'])) + $organizer .= 'CN="' . $at['name'] . '"'; + $organizer .= ":mailto:". $at['email'] . self::EOL; + } } - else { + else if ($at['email']) { //I am an attendee $attendees .= "ATTENDEE;ROLE=" . $at['role'] . ";PARTSTAT=" . $at['status']; if ($at['rsvp'])