2 commits - lib/kolab lib/kolab_sync_data_calendar.php
Aleksander Machniak
machniak at kolabsys.com
Wed Sep 26 15:33:24 CEST 2012
lib/kolab/kolab_format_task.php | 5 ++++-
lib/kolab/kolab_storage.php | 22 +++++++++++++++++-----
lib/kolab/kolab_storage_cache.php | 1 -
lib/kolab/kolab_storage_folder.php | 5 +++--
lib/kolab_sync_data_calendar.php | 8 ++++++++
5 files changed, 32 insertions(+), 9 deletions(-)
New commits:
commit 6c84f9f6f331d7b98bfd5d285623026bd168c087
Author: Aleksander Machniak <alec at alec.pl>
Date: Wed Sep 26 15:32:27 2012 +0200
Fix lack of UID truncation on events import (#1034)
diff --git a/lib/kolab_sync_data_calendar.php b/lib/kolab_sync_data_calendar.php
index d441fde..e886a57 100644
--- a/lib/kolab_sync_data_calendar.php
+++ b/lib/kolab_sync_data_calendar.php
@@ -385,6 +385,14 @@ class kolab_sync_data_calendar extends kolab_sync_data
continue 2;
}
break;
+
+ case 'uid':
+ // If UID is too long, use auto-generated UID (#1034)
+ // It's because UID is used as ServerId which cannot be longer than 64 chars
+ if (strlen($value) > 64) {
+ $value = null;
+ }
+ break;
}
$this->setKolabDataItem($event, $name, $value);
commit 0b1976b728f804f770020cedb093f3085957b085
Author: Aleksander Machniak <alec at alec.pl>
Date: Wed Sep 26 14:03:55 2012 +0200
Update kolab_storage
diff --git a/lib/kolab/kolab_format_task.php b/lib/kolab/kolab_format_task.php
index b041b08..2a7a629 100644
--- a/lib/kolab/kolab_format_task.php
+++ b/lib/kolab/kolab_format_task.php
@@ -93,7 +93,7 @@ class kolab_format_task extends kolab_format_xcal
if ($due = $this->obj->due())
$object['due'] = self::php_datetime($due);
- // related-to points to parent taks; we only support one relation
+ // related-to points to parent task; we only support one relation
$related = self::vector2array($this->obj->relatedTo());
if (count($related))
$object['parent_id'] = $related[0];
@@ -137,6 +137,9 @@ class kolab_format_task extends kolab_format_xcal
if (!empty($this->data['alarms']))
$tags[] = 'x-has-alarms';
+ if ($this->data['parent_id'])
+ $tags[] = 'x-parent:' . $this->data['parent_id'];
+
return $tags;
}
}
diff --git a/lib/kolab/kolab_storage.php b/lib/kolab/kolab_storage.php
index 68a8e81..546d19a 100644
--- a/lib/kolab/kolab_storage.php
+++ b/lib/kolab/kolab_storage.php
@@ -25,8 +25,9 @@
class kolab_storage
{
const CTYPE_KEY = '/shared/vendor/kolab/folder-type';
+ const CTYPE_KEY_PRIVATE = '/private/vendor/kolab/folder-type';
const COLOR_KEY_SHARED = '/shared/vendor/kolab/color';
- const COLOR_KEY_PRIVATE = '/shared/vendor/kolab/color';
+ const COLOR_KEY_PRIVATE = '/private/vendor/kolab/color';
const SERVERSIDE_SUBSCRIPTION = 0;
const CLIENTSIDE_SUBSCRIPTION = 1;
@@ -389,10 +390,11 @@ class kolab_storage
$delim = self::$imap->get_hierarchy_delimiter();
$folder = rcube_charset::convert($folder, 'UTF7-IMAP');
- $folder = str_replace($delim, ' » ', $folder);
+ $folder = html::quote($folder);
+ $folder = str_replace(html::quote($delim), ' » ', $folder);
if ($prefix)
- $folder = $prefix . ' ' . $folder;
+ $folder = html::quote($prefix) . ' ' . $folder;
if (!$folder_ns)
$folder_ns = 'personal';
@@ -480,6 +482,7 @@ class kolab_storage
$names = array();
// Build SELECT field of parent folder
+ $attrs['is_escaped'] = true;
$select = new html_select($attrs);
$select->add('---', '');
@@ -536,13 +539,13 @@ class kolab_storage
$prefix = $root . $mbox;
// get folders types
- $folderdata = self::$imap->get_metadata($prefix, self::CTYPE_KEY);
+ $folderdata = self::$imap->get_metadata($prefix, array(self::CTYPE_KEY, self::CTYPE_KEY_PRIVATE));
if (!is_array($folderdata)) {
return array();
}
- $folderdata = array_map('implode', $folderdata);
+ $folderdata = array_map(array('kolab_storage', 'folder_select_metadata'), $folderdata);
$regexp = '/^' . preg_quote($filter, '/') . '(\..+)?$/';
// In some conditions we can skip LIST command (?)
@@ -583,4 +586,13 @@ class kolab_storage
return $folders;
}
+
+ /**
+ * Callback for array_map to select the correct annotation value
+ */
+ static function folder_select_metadata($types)
+ {
+ return $types[self::CTYPE_KEY_PRIVATE] ?: $types[self::CTYPE_KEY];
+ }
+
}
diff --git a/lib/kolab/kolab_storage_cache.php b/lib/kolab/kolab_storage_cache.php
index 88f12a2..c3e88da 100644
--- a/lib/kolab/kolab_storage_cache.php
+++ b/lib/kolab/kolab_storage_cache.php
@@ -406,7 +406,6 @@ class kolab_storage_cache
private function _sql_where($query)
{
$sql_where = '';
-
foreach ($query as $param) {
if ($param[1] == '=' && is_array($param[2])) {
$qvalue = '(' . join(',', array_map(array($this->db, 'quote'), $param[2])) . ')';
diff --git a/lib/kolab/kolab_storage_folder.php b/lib/kolab/kolab_storage_folder.php
index 6dc0e05..daa988f 100644
--- a/lib/kolab/kolab_storage_folder.php
+++ b/lib/kolab/kolab_storage_folder.php
@@ -76,8 +76,8 @@ class kolab_storage_folder
public function set_folder($name, $ftype = null)
{
if (!$ftype) {
- $metadata = $this->imap->get_metadata($name, array(kolab_storage::CTYPE_KEY));
- $this->type_annotation = $metadata[$name][kolab_storage::CTYPE_KEY];
+ $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;
@@ -430,6 +430,7 @@ class kolab_storage_folder
$headers = $this->imap->get_message_headers($msguid);
+ // Message doesn't exist?
if (empty($headers)) {
return false;
}
More information about the commits
mailing list