From 875a76c801724cb4180bc45f7ad14001d5be5c97 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli Date: Fri, 1 Nov 2013 11:23:42 +0100 Subject: [PATCH] Don't set timezone on allday dates (#2463) --- plugins/calendar/calendar.php | 6 +++--- plugins/libcalendaring/libcalendaring.php | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/calendar/calendar.php b/plugins/calendar/calendar.php index 573ebdc6..a94a65cb 100644 --- a/plugins/calendar/calendar.php +++ b/plugins/calendar/calendar.php @@ -1275,7 +1275,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'); unset($event['recurrence']['EXCEPTIONS']); } @@ -1306,8 +1306,8 @@ 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']), diff --git a/plugins/libcalendaring/libcalendaring.php b/plugins/libcalendaring/libcalendaring.php index 05465b06..cdae37c9 100644 --- a/plugins/libcalendaring/libcalendaring.php +++ b/plugins/libcalendaring/libcalendaring.php @@ -120,14 +120,14 @@ 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); - if ($dt instanceof DateTime) { + if ($dt instanceof DateTime && !($dt->_dateonly || $dateonly)) { $dt->setTimezone($this->timezone); }