Branch 'roundcubemail-plugins-kolab-3.0' - plugins/calendar plugins/libcalendaring

Thomas Brüderli bruederli at kolabsys.com
Fri Nov 1 11:34:08 CET 2013


 plugins/calendar/calendar.php             |    8 +++++---
 plugins/libcalendaring/libcalendaring.php |    7 +++++--
 2 files changed, 10 insertions(+), 5 deletions(-)

New commits:
commit 9e141e91690d953e431b2a5f123a089a245c13a3
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Fri Nov 1 11:23:42 2013 +0100

    Don't set timezone on allday dates (#2463)

diff --git a/plugins/calendar/calendar.php b/plugins/calendar/calendar.php
index 6eb5ca5..4ad2313 100644
--- a/plugins/calendar/calendar.php
+++ b/plugins/calendar/calendar.php
@@ -1100,7 +1100,7 @@ class calendar extends rcube_plugin
     if ($event['recurrence']) {
       $event['recurrence_text'] = $this->_recurrence_text($event['recurrence']);
       if ($event['recurrence']['UNTIL'])
-        $event['recurrence']['UNTIL'] = $this->lib->adjust_timezone($event['recurrence']['UNTIL'])->format('c');
+        $event['recurrence']['UNTIL'] = $this->lib->adjust_timezone($event['recurrence']['UNTIL'], $event['allday'])->format('c');
     }
 
     foreach ((array)$event['attachments'] as $k => $attachment) {
@@ -1126,8 +1126,10 @@ class calendar extends rcube_plugin
 
     return array(
       '_id'   => $event['calendar'] . ':' . $event['id'],  // unique identifier for fullcalendar
-      'start' => $this->lib->adjust_timezone($event['start'])->format('c'),
-      'end'   => $this->lib->adjust_timezone($event['end'])->format('c'),
+      'start' => $this->lib->adjust_timezone($event['start'], $event['allday'])->format('c'),
+      'end'   => $this->lib->adjust_timezone($event['end'], $event['allday'])->format('c'),
+      // 'changed' might be empty for event recurrences (Bug #2185)
+      'changed' => $event['changed'] ? $this->lib->adjust_timezone($event['changed'])->format('c') : null,
       'title'       => strval($event['title']),
       'description' => strval($event['description']),
       'location'    => strval($event['location']),
diff --git a/plugins/libcalendaring/libcalendaring.php b/plugins/libcalendaring/libcalendaring.php
index 7451c8a..c7f7cff 100644
--- a/plugins/libcalendaring/libcalendaring.php
+++ b/plugins/libcalendaring/libcalendaring.php
@@ -104,14 +104,17 @@ class libcalendaring extends rcube_plugin
      * @param mixed Any kind of a date representation (DateTime object, string or unix timestamp)
      * @return object DateTime object in user's timezone
      */
-    public function adjust_timezone($dt)
+    public function adjust_timezone($dt, $dateonly = false)
     {
         if (is_numeric($dt))
             $dt = new DateTime('@'.$dt);
         else if (is_string($dt))
             $dt = new DateTime($dt);
 
-        $dt->setTimezone($this->timezone);
+        if ($dt instanceof DateTime && !($dt->_dateonly || $dateonly)) {
+            $dt->setTimezone($this->timezone);
+        }
+
         return $dt;
     }
 




More information about the commits mailing list