Branch 'kolab-syncroton-1.0' - 4 commits - lib/kolab_sync_backend.php lib/kolab_sync_data.php

Jeroen van Meeuwen vanmeeuwen at kolabsys.com
Wed Sep 19 17:24:24 CEST 2012


 lib/kolab_sync_backend.php |   20 ++++++++++++++++++++
 lib/kolab_sync_data.php    |   14 ++++++++++----
 2 files changed, 30 insertions(+), 4 deletions(-)

New commits:
commit 6601556cc58bf66006d1cd61ee212a3d47ef7fd7
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Wed Sep 19 17:23:01 2012 +0200

    Make sure the default folder is found, used and communicated as being the default folder

diff --git a/lib/kolab_sync_data.php b/lib/kolab_sync_data.php
index ec2ca79..0cdb25c 100644
--- a/lib/kolab_sync_data.php
+++ b/lib/kolab_sync_data.php
@@ -207,6 +207,8 @@ abstract class kolab_sync_data implements Syncroton_Data_IData
      */
     protected function getDefaultFolder()
     {
+        $default = null;
+
         // Check if there's any folder configured for sync
         $folders = $this->backend->folders_list($this->device->deviceid, $this->modelName);
 
@@ -223,7 +225,10 @@ abstract class kolab_sync_data implements Syncroton_Data_IData
 
         // Return first on the list if there's no default
         if (empty($default)) {
-            $default = $folders[key($folders)];
+            $keys = array_keys($folders);
+            $key = array_shift($keys);
+            $default = $folders[$key];
+            $default['type'] = kolab_sync_backend::default_type_id_for_type($default['type']);
         }
 
         // Remember real folder ID and set ID/name to root folder


commit ef0d25b6a9e3a46a0d54f3b368a9aa8d1b6415b1
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Wed Sep 19 17:22:17 2012 +0200

    Let's not use the same variable name for the iteratee and the result

diff --git a/lib/kolab_sync_data.php b/lib/kolab_sync_data.php
index 1ef5efb..ec2ca79 100644
--- a/lib/kolab_sync_data.php
+++ b/lib/kolab_sync_data.php
@@ -183,18 +183,19 @@ abstract class kolab_sync_data implements Syncroton_Data_IData
      */
     public function getAllFolders()
     {
+        $_list = array();
         $list = array();
 
         // device supports multiple folders ?
         if (in_array(strtolower($this->device->devicetype), array('iphone', 'ipad', 'thundertine', 'windowsphone'))) {
             // get the folders the user has access to
-            $list = $this->backend->folders_list($this->device->deviceid, $this->modelName);
+            $_list = $this->backend->folders_list($this->device->deviceid, $this->modelName);
         }
         else if ($default = $this->getDefaultFolder()) {
-            $list = array($default['serverId'] => $default);
+            $_list = array($default['serverId'] => $default);
         }
 
-        foreach ($list as $idx => $folder) {
+        foreach ($_list as $idx => $folder) {
             $list[$idx] = new Syncroton_Model_Folder($folder);
         }
 


commit ccd2cd18917f5dc269955e8a85e5b4a1acff732a
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Wed Sep 19 17:21:32 2012 +0200

    Do not include only folders that we can find are marked as default for their type

diff --git a/lib/kolab_sync_backend.php b/lib/kolab_sync_backend.php
index eb3aae4..a8fc4f2 100644
--- a/lib/kolab_sync_backend.php
+++ b/lib/kolab_sync_backend.php
@@ -406,6 +406,9 @@ class kolab_sync_backend
                 'event.default',
                 'contact.default',
                 'task.default',
+                'event',
+                'contact',
+                'task'
             );
 
             $foldertypes = array_map('implode', $foldertypes);


commit 74c2044d13c51c52a6f43614c3c0a514565ca555
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Wed Sep 19 17:19:36 2012 +0200

    Add a function to convert a given type id to its existing default type id, if it exists

diff --git a/lib/kolab_sync_backend.php b/lib/kolab_sync_backend.php
index b8f5463..eb3aae4 100644
--- a/lib/kolab_sync_backend.php
+++ b/lib/kolab_sync_backend.php
@@ -110,6 +110,23 @@ class kolab_sync_backend
         $this->storage->set_pagesize(999999);
     }
 
+    public static function default_type_id_for_type($type) {
+        if (!isset(self::$types[$type])) {
+            return $type;
+        }
+
+        $type_str = self::$types[$type];
+
+        $default_type_str = self::$types[$type] . ".default";
+
+        $default_type_id = array_search($default_type_str, self::$types);
+
+        if (!$default_type_id) {
+            return $type;
+        } else {
+            return $default_type_id;
+        }
+    }
 
     /**
      * List known devices





More information about the commits mailing list