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