2 commits - plugins/calendar
Thomas Brüderli
bruederli at kolabsys.com
Wed Nov 21 22:17:52 CET 2012
plugins/calendar/README | 2 ++
plugins/calendar/lib/Horde_iCalendar_timezone.diff | 4 ++--
plugins/calendar/lib/calendar_ical.php | 20 ++++++++++++--------
3 files changed, 16 insertions(+), 10 deletions(-)
New commits:
commit 56cddd1e2cf1ef2c1b6a11dd57063c9907cc5ae5
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date: Wed Nov 21 22:17:20 2012 +0100
Fix iCal export: no empty organizer or attendee attributes; correctly escape special characters
diff --git a/plugins/calendar/lib/calendar_ical.php b/plugins/calendar/lib/calendar_ical.php
index 601ac86..f77224d 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('/(?<!\\\\)([\:\;\,\\n\\r])/', '\\\$1', $str);
+ return strtr($str, array('\\' => '\\\\', ';' => '\\;', ',' => '\\,'));
}
/**
@@ -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'])
commit f99bcb3c54c819a8a38a21d36ab5f748179cc3e6
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date: Wed Nov 21 21:31:52 2012 +0100
Add documentation about timezone fix in iCal parser
diff --git a/plugins/calendar/README b/plugins/calendar/README
index 6fb972c..7abf8e3 100644
--- a/plugins/calendar/README
+++ b/plugins/calendar/README
@@ -16,6 +16,8 @@ are used. They are packaged in a slightly modified version with this plugin.
iCalendar parsing is done with the help of the Horde_iCalendar class. A copy
of that class with all its dependencies is part of this package. In order
to update it, execute lib/get_horde_icalendar.sh > lib/Horde_iCalendar.php
+Finally apply the patch lib/Horde_iCalendar_timezone.diff to fix timezone
+handling when parsing iCal files.
IMPORTANT
---------
diff --git a/plugins/calendar/lib/Horde_iCalendar_timezone.diff b/plugins/calendar/lib/Horde_iCalendar_timezone.diff
index 1ae130e..edd5587 100644
--- a/plugins/calendar/lib/Horde_iCalendar_timezone.diff
+++ b/plugins/calendar/lib/Horde_iCalendar_timezone.diff
@@ -1,7 +1,7 @@
diff --git a/plugins/calendar/lib/Horde_iCalendar.php b/plugins/calendar/lib/Horde_iCalendar.php
index a3ff79d..6d75d27 100644
---- a/plugins/calendar/lib/Horde_iCalendar.php
-+++ b/plugins/calendar/lib/Horde_iCalendar.php
+--- a/lib/Horde_iCalendar.php
++++ b/lib/Horde_iCalendar.php
@@ -1874,7 +1874,17 @@ class Horde_iCalendar {
{
$vtimezone = $this->_container->findComponentByAttribute('vtimezone', 'TZID', $tzid);
More information about the commits
mailing list