Fix iCal export: no empty organizer or attendee attributes; correctly escape special characters

This commit is contained in:
Thomas Bruederli 2012-11-21 22:17:20 +01:00
parent f99bcb3c54
commit 56cddd1e2c

View file

@ -454,9 +454,12 @@ class calendar_ical
} }
} }
/**
* Escape values according to RFC 2426 2.5
*/
private function escpape($str) private function escpape($str)
{ {
return preg_replace('/(?<!\\\\)([\:\;\,\\n\\r])/', '\\\$1', $str); return strtr($str, array('\\' => '\\\\', ';' => '\\;', ',' => '\\,'));
} }
/** /**
@ -469,14 +472,15 @@ class calendar_ical
$organizer = ""; $organizer = "";
$attendees = ""; $attendees = "";
foreach ($ats as $at) { foreach ($ats as $at) {
if ($at['role']=="ORGANIZER") { if ($at['role'] == "ORGANIZER") {
//I am an orginizer if ($at['email']) {
$organizer .= "ORGANIZER;"; $organizer .= "ORGANIZER;";
if (!empty($at['name'])) if (!empty($at['name']))
$organizer .= 'CN="' . $at['name'] . '"'; $organizer .= 'CN="' . $at['name'] . '"';
$organizer .= ":mailto:". $at['email'] . self::EOL; $organizer .= ":mailto:". $at['email'] . self::EOL;
} }
else { }
else if ($at['email']) {
//I am an attendee //I am an attendee
$attendees .= "ATTENDEE;ROLE=" . $at['role'] . ";PARTSTAT=" . $at['status']; $attendees .= "ATTENDEE;ROLE=" . $at['role'] . ";PARTSTAT=" . $at['status'];
if ($at['rsvp']) if ($at['rsvp'])