From e18857f155460d8e2d5b28898892737fa24fe3fc Mon Sep 17 00:00:00 2001 From: Thomas B Date: Tue, 3 Apr 2012 23:29:30 +0200 Subject: [PATCH 1/2] Implement function to move Kolab objects from one folder into another --- .../calendar/drivers/kolab/kolab_driver.php | 1 - plugins/libkolab/lib/kolab_storage_folder.php | 27 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php index b48a9581..a29edccf 100644 --- a/plugins/calendar/drivers/kolab/kolab_driver.php +++ b/plugins/calendar/drivers/kolab/kolab_driver.php @@ -567,7 +567,6 @@ class kolab_driver extends calendar_driver return false; $fromcalendar = $storage; - $storage->storage->synchronize(); } } else diff --git a/plugins/libkolab/lib/kolab_storage_folder.php b/plugins/libkolab/lib/kolab_storage_folder.php index 9c2cf83f..772860ce 100644 --- a/plugins/libkolab/lib/kolab_storage_folder.php +++ b/plugins/libkolab/lib/kolab_storage_folder.php @@ -467,6 +467,33 @@ class kolab_storage_folder } + /** + * Move a Kolab object message to another IMAP folder + * + * @param string Object UID + * @param string IMAP folder to move object to + * @return boolean True on success, false on failure + */ + public function move($uid, $target_folder) + { + if ($msguid = $this->uid2msguid($uid)) { + if ($success = $this->imap->move_message($msguid, $target_folder, $this->name)) { + // TODO: update cache + return true; + } + else { + raise_error(array( + 'code' => 600, 'type' => 'php', + 'file' => __FILE__, 'line' => __LINE__, + 'message' => "Failed to move message $msguid to $target_folder: " . $this->imap->get_error_str(), + ), true); + } + } + + return false; + } + + /** * Resolve an object UID into an IMAP message UID */ From 2559d6ffb7624c59576b57132fa8cfb2737b5f31 Mon Sep 17 00:00:00 2001 From: Thomas B Date: Thu, 5 Apr 2012 08:56:37 +0200 Subject: [PATCH 2/2] Set alarm date/time in UTC --- plugins/libkolab/lib/kolab_format.php | 7 ++++++- plugins/libkolab/lib/kolab_format_event.php | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/plugins/libkolab/lib/kolab_format.php b/plugins/libkolab/lib/kolab_format.php index c72f9ac3..42ecaab8 100644 --- a/plugins/libkolab/lib/kolab_format.php +++ b/plugins/libkolab/lib/kolab_format.php @@ -75,7 +75,9 @@ abstract class kolab_format if (!$dateonly) $result->setTime($datetime->format('G'), $datetime->format('i'), $datetime->format('s')); - if ($tz) + if ($tz && $tz->getName() == 'UTC') + $result->setUTC(true); + else if ($tz) $result->setTimezone($tz->getName()); } @@ -101,6 +103,9 @@ abstract class kolab_format $tz = new DateTimeZone($tzs); $d->setTimezone($tz); } + else if ($cdt->isUTC()) { + $d->setTimezone(new DateTimeZone('UTC')); + } } catch (Exception $e) { } diff --git a/plugins/libkolab/lib/kolab_format_event.php b/plugins/libkolab/lib/kolab_format_event.php index f3de4252..97718ef4 100644 --- a/plugins/libkolab/lib/kolab_format_event.php +++ b/plugins/libkolab/lib/kolab_format_event.php @@ -262,7 +262,7 @@ class kolab_format_event extends kolab_format } if (preg_match('/^@(\d+)/', $offset, $d)) { - $alarm->setStart(self::get_datetime($d[1])); + $alarm->setStart(self::get_datetime($d[1], new DateTimeZone('UTC'))); } else if (preg_match('/^([-+]?)(\d+)([SMHDW])/', $offset, $d)) { $days = $hours = $minutes = $seconds = 0;