lib/kolab_sync_data_calendar.php lib/kolab_sync_data.php lib/kolab_sync_data_tasks.php

Aleksander Machniak machniak at kolabsys.com
Fri Sep 27 10:45:13 CEST 2013


 lib/kolab_sync_data.php          |   20 +++++++++++++++++++-
 lib/kolab_sync_data_calendar.php |    2 +-
 lib/kolab_sync_data_tasks.php    |    6 +++---
 3 files changed, 23 insertions(+), 5 deletions(-)

New commits:
commit d2b160d80b14f0ab134ed6547d80a77e41a38f59
Author: Aleksander Machniak <alec at alec.pl>
Date:   Fri Sep 27 10:41:47 2013 +0200

    Fixed alarms synchronization in direction from device to server (Bug #2178)

diff --git a/lib/kolab_sync_data.php b/lib/kolab_sync_data.php
index bdfcbb7..eae8630 100644
--- a/lib/kolab_sync_data.php
+++ b/lib/kolab_sync_data.php
@@ -875,7 +875,7 @@ abstract class kolab_sync_data implements Syncroton_Data_IData
     /**
      * Returns ActiveSync settings of specified folder
      *
-     * @param string $name  Folder name (UTF7-IMAP)
+     * @param string $name Folder name (UTF7-IMAP)
      *
      * @return array Folder settings
      */
@@ -896,6 +896,24 @@ abstract class kolab_sync_data implements Syncroton_Data_IData
     }
 
     /**
+     * Returns real folder name for specified folder ID
+     */
+    protected function getFolderName($folderid)
+    {
+        if ($folderid == $this->defaultRootFolder) {
+            $default  = $this->getDefaultFolder();
+
+            if (!is_array($default)) {
+                return null;
+            }
+
+            $folderid = isset($default['realid']) ? $default['realid'] : $default['serverId'];
+        }
+
+        return $this->backend->folder_id2name($folderid, $this->device->deviceid);
+    }
+
+    /**
      * Convert contact from xml to kolab format
      *
      * @param Syncroton_Model_IEntry $data     Contact data
diff --git a/lib/kolab_sync_data_calendar.php b/lib/kolab_sync_data_calendar.php
index 092f0e9..d305dde 100644
--- a/lib/kolab_sync_data_calendar.php
+++ b/lib/kolab_sync_data_calendar.php
@@ -326,8 +326,8 @@ class kolab_sync_data_calendar extends kolab_sync_data implements Syncroton_Data
      */
     public function toKolab(Syncroton_Model_IEntry $data, $folderid, $entry = null, $timezone = null)
     {
-        $foldername   = $this->backend->folder_id2name($folderid, $this->device->deviceid);
         $event        = !empty($entry) ? $entry : array();
+        $foldername   = isset($event['_mailbox']) ? $event['_mailbox'] : $this->getFolderName($folderid);
         $config       = $this->getFolderConfig($foldername);
         $is_exception = $data instanceof Syncroton_Model_EventException;
 
diff --git a/lib/kolab_sync_data_tasks.php b/lib/kolab_sync_data_tasks.php
index 608c808..bade8a6 100644
--- a/lib/kolab_sync_data_tasks.php
+++ b/lib/kolab_sync_data_tasks.php
@@ -108,7 +108,7 @@ class kolab_sync_data_tasks extends kolab_sync_data
      */
     public function getEntry(Syncroton_Model_SyncCollection $collection, $serverId, $as_array = false)
     {
-        $task  = is_array($serverId) ? $serverId : $this->getObject($collection->collectionId, $serverId);
+        $task   = is_array($serverId) ? $serverId : $this->getObject($collection->collectionId, $serverId);
         $config = $this->getFolderConfig($task['_mailbox']);
         $result = array();
 
@@ -168,8 +168,8 @@ class kolab_sync_data_tasks extends kolab_sync_data
      */
     public function toKolab(Syncroton_Model_IEntry $data, $folderid, $entry = null)
     {
-        $foldername = $this->backend->folder_id2name($folderid, $this->device->deviceid);
-        $task      = !empty($entry) ? $entry : array();
+        $task       = !empty($entry) ? $entry : array();
+        $foldername = isset($task['_mailbox']) ? $task['_mailbox'] : $this->getFolderName($folderid);
         $config     = $this->getFolderConfig($foldername);
 
         $task['allday'] = 0;




More information about the commits mailing list