2 commits - lib/kolab lib/kolab_sync_backend.php
Aleksander Machniak
machniak at kolabsys.com
Tue Oct 9 19:26:31 CEST 2012
lib/kolab/kolab_format_distributionlist.php | 4 +++
lib/kolab/kolab_storage.php | 32 +++++++++++++++++++++++++---
lib/kolab/kolab_storage_folder.php | 8 -------
lib/kolab_sync_backend.php | 13 ++---------
4 files changed, 37 insertions(+), 20 deletions(-)
New commits:
commit b4d24b0dca59bf0b8045bdcb24a49d300b9b2734
Author: Aleksander Machniak <alec at alec.pl>
Date: Tue Oct 9 19:26:08 2012 +0200
Fix detecting folder type
diff --git a/lib/kolab_sync_backend.php b/lib/kolab_sync_backend.php
index 1804614..522e1cf 100644
--- a/lib/kolab_sync_backend.php
+++ b/lib/kolab_sync_backend.php
@@ -631,21 +631,14 @@ class kolab_sync_backend
if ($folderdata && !empty($folderdata[$name])) {
$uid = $folderdata[$name][self::UID_KEY];
- $this->folder_uids[$name] = $uid;
- return $uid;
+ return $this->folder_uids[$name] = $uid;
}
*/
// Add type to folder UID hash, so type change can be detected by Syncroton
- if (!$type) {
- $metadata = $this->storage->get_metadata($name, kolab_storage::CTYPE_KEY);
- $type = $metadata[$name][kolab_storage::CTYPE_KEY];
- }
-
- $uid = md5($name . '!!' . $type);
+ $uid = $name . '!!' . ($type !== null ? $type : kolab_storage::folder_type($name));
+ $uid = md5($uid);
return $this->folder_uids[$name] = $uid;
-
- return $uid;
}
/**
commit ce0e5da59fde68db373c1529e962bdae0359f6d9
Author: Aleksander Machniak <alec at alec.pl>
Date: Tue Oct 9 19:21:21 2012 +0200
Update libkolab
diff --git a/lib/kolab/kolab_format_distributionlist.php b/lib/kolab/kolab_format_distributionlist.php
index a747b87..fcb94c1 100644
--- a/lib/kolab/kolab_format_distributionlist.php
+++ b/lib/kolab/kolab_format_distributionlist.php
@@ -71,6 +71,9 @@ class kolab_format_distributionlist extends kolab_format
$this->obj->setMembers($members);
+ // set type property for proper caching
+ $object['_type'] = 'distribution-list';
+
// cache this data
$this->data = $object;
unset($this->data['_formatobj']);
@@ -123,6 +126,7 @@ class kolab_format_distributionlist extends kolab_format
'changed' => self::php_datetime($this->obj->lastModified()),
'name' => $this->obj->name(),
'member' => array(),
+ '_type' => 'distribution-list',
);
$members = $this->obj->members();
diff --git a/lib/kolab/kolab_storage.php b/lib/kolab/kolab_storage.php
index 546d19a..e14156d 100644
--- a/lib/kolab/kolab_storage.php
+++ b/lib/kolab/kolab_storage.php
@@ -310,11 +310,14 @@ class kolab_storage
// save color in METADATA
// TODO: also save 'showalarams' and other properties here
- // TODO: change private/shared precedence depending on private or shared folder
if ($result && $prop['color']) {
- if (!($meta_saved = self::$imap->set_metadata($folder, array(self::COLOR_KEY_SHARED => $prop['color'])))) // try in shared namespace
- $meta_saved = self::$imap->set_metadata($folder, array(self::COLOR_KEY_PRIVATE => $prop['color'])); // try in private namespace
+ $meta_saved = false;
+ $ns = self::$imap->folder_namespace($folder);
+ if ($ns == 'personal') // save in shared namespace for personal folders
+ $meta_saved = self::$imap->set_metadata($folder, array(self::COLOR_KEY_SHARED => $prop['color']));
+ if (!$meta_saved) // try in private namespace
+ $meta_saved = self::$imap->set_metadata($folder, array(self::COLOR_KEY_PRIVATE => $prop['color']));
if ($meta_saved)
unset($prop['color']); // unsetting will prevent fallback to local user prefs
}
@@ -595,4 +598,27 @@ class kolab_storage
return $types[self::CTYPE_KEY_PRIVATE] ?: $types[self::CTYPE_KEY];
}
+
+ /**
+ * Returns type of IMAP folder
+ *
+ * @param string $folder Folder name (UTF7-IMAP)
+ *
+ * @return string Folder type
+ */
+ static function folder_type($folder)
+ {
+ $metadata = self::$imap->get_metadata($folder, array(self::CTYPE_KEY, self::CTYPE_KEY_PRIVATE));
+
+ if (!is_array($metadata)) {
+ return null;
+ }
+
+ if (!empty($metadata[$folder])) {
+ return self::folder_select_metadata($metadata[$folder]);
+ }
+
+ return 'mail';
+ }
+
}
diff --git a/lib/kolab/kolab_storage_folder.php b/lib/kolab/kolab_storage_folder.php
index daa988f..08bf669 100644
--- a/lib/kolab/kolab_storage_folder.php
+++ b/lib/kolab/kolab_storage_folder.php
@@ -75,13 +75,7 @@ class kolab_storage_folder
*/
public function set_folder($name, $ftype = null)
{
- if (!$ftype) {
- $metadata = $this->imap->get_metadata($name, array(kolab_storage::CTYPE_KEY, kolab_storage::CTYPE_KEY_PRIVATE));
- $this->type_annotation = $metadata[$name][kolab_storage::CTYPE_KEY_PRIVATE] ?: $metadata[$name][kolab_storage::CTYPE_KEY];
- }
- else {
- $this->type_annotation = $ftype;
- }
+ $this->type_annotation = $ftype ? $ftype : kolab_storage::folder_type($name);
list($this->type, $suffix) = explode('.', $this->type_annotation);
$this->default = $suffix == 'default';
More information about the commits
mailing list