plugins/calendar

Thomas Brüderli bruederli at kolabsys.com
Wed Nov 21 21:28:04 CET 2012


 plugins/calendar/lib/Horde_iCalendar.php           |   12 ++++++++++
 plugins/calendar/lib/Horde_iCalendar_timezone.diff |   23 +++++++++++++++++++++
 plugins/calendar/lib/calendar_ical.php             |    3 --
 3 files changed, 34 insertions(+), 4 deletions(-)

New commits:
commit e9825fa24ef333a606ef8dbcf263cef2533c4702
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Wed Nov 21 21:27:35 2012 +0100

    Fix timezone detection in iCalendar parser

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
@@ -1874,7 +1874,17 @@ class Horde_iCalendar {
     {
         $vtimezone = $this->_container->findComponentByAttribute('vtimezone', 'TZID', $tzid);
         if (!$vtimezone) {
-            return false;
+            // use PHP's standard timezone db to determine tzoffset
+            try {
+                $tz = new DateTimeZone($tzid);
+                $dt = new DateTime('now', $tz);
+                $dt->setDate($date['year'], $date['month'], $date['mday']);
+                $dt->setTime($time['hour'], $time['minute'], $date['recond']);
+                return $tz->getOffset($dt);
+            }
+            catch (Exception $e) {
+                return false;
+            }
         }
 
         $change_times = array();
diff --git a/plugins/calendar/lib/Horde_iCalendar_timezone.diff b/plugins/calendar/lib/Horde_iCalendar_timezone.diff
new file mode 100644
index 0000000..1ae130e
--- /dev/null
+++ b/plugins/calendar/lib/Horde_iCalendar_timezone.diff
@@ -0,0 +1,23 @@
+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
+@@ -1874,7 +1874,17 @@ class Horde_iCalendar {
+     {
+         $vtimezone = $this->_container->findComponentByAttribute('vtimezone', 'TZID', $tzid);
+         if (!$vtimezone) {
+-            return false;
++            // use PHP's standard timezone db to determine tzoffset
++            try {
++                $tz = new DateTimeZone($tzid);
++                $dt = new DateTime('now', $tz);
++                $dt->setDate($date['year'], $date['month'], $date['mday']);
++                $dt->setTime($time['hour'], $time['minute'], $date['recond']);
++                return $tz->getOffset($dt);
++            }
++            catch (Exception $e) {
++                return false;
++            }
+         }
+ 
+         $change_times = array();
diff --git a/plugins/calendar/lib/calendar_ical.php b/plugins/calendar/lib/calendar_ical.php
index 34eeeef..601ac86 100644
--- a/plugins/calendar/lib/calendar_ical.php
+++ b/plugins/calendar/lib/calendar_ical.php
@@ -123,9 +123,6 @@ class calendar_ical
    */
   public function get_parser()
   {
-    // use Horde:iCalendar to parse vcalendar file format
-    @include_once('Horde/Icalendar.php');
-
     if (!class_exists('Horde_iCalendar'))
       require_once($this->cal->home . '/lib/Horde_iCalendar.php');
 





More information about the commits mailing list