From 1c51c1a9d94582da32109cc21b58178d6d4b32e1 Mon Sep 17 00:00:00 2001 From: "Aleksander Machniak (Kolab Systems)" Date: Wed, 15 Jun 2011 11:23:59 +0200 Subject: [PATCH] Added rcube_kolab::folder_id() with improved ID generation method --- plugins/calendar/drivers/kolab/kolab_calendar.php | 8 ++++---- plugins/kolab_addressbook/kolab_addressbook.php | 2 +- plugins/kolab_core/rcube_kolab.php | 10 ++++++++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/plugins/calendar/drivers/kolab/kolab_calendar.php b/plugins/calendar/drivers/kolab/kolab_calendar.php index ecb58939..8f85c619 100644 --- a/plugins/calendar/drivers/kolab/kolab_calendar.php +++ b/plugins/calendar/drivers/kolab/kolab_calendar.php @@ -39,7 +39,6 @@ class kolab_calendar 'sensitivity'=>'sensitivity', 'show-time-as' => 'free_busy', 'alarm','alarms' - ); /** @@ -47,11 +46,11 @@ class kolab_calendar */ public function __construct($imap_folder = null) { - if ($imap_folder) + if (strlen($imap_folder)) $this->imap_folder = $imap_folder; - write_log('err_log',$imap_folder); + // ID is derrived from folder name - $this->id = strtolower(asciiwords(strtr($this->imap_folder, '/.', '--'))); + $this->id = rcube_kolab::folder_id($this->imap_folder); // fetch objects from the given IMAP folder $this->storage = rcube_kolab::get_storage($this->imap_folder); @@ -68,6 +67,7 @@ class kolab_calendar */ public function get_name() { + // @TODO: get namespace prefixes from IMAP $dispname = preg_replace(array('!INBOX/Calendar/!', '!^INBOX/!', '!^shared/!', '!^user/([^/]+)/!'), array('','','','(\\1) '), $this->imap_folder); return strlen($dispname) ? $dispname : $this->imap_folder; } diff --git a/plugins/kolab_addressbook/kolab_addressbook.php b/plugins/kolab_addressbook/kolab_addressbook.php index 20d986bd..7a97e672 100644 --- a/plugins/kolab_addressbook/kolab_addressbook.php +++ b/plugins/kolab_addressbook/kolab_addressbook.php @@ -202,7 +202,7 @@ class kolab_addressbook extends rcube_plugin else { foreach ($this->folders as $c_folder) { // create instance of rcube_contacts - $abook_id = strtolower(asciiwords(strtr($c_folder->name, '/.', '--'))); + $abook_id = rcube_kolab::folder_id($c_folder->name); $abook = new rcube_kolab_contacts($c_folder->name); $this->sources[$abook_id] = $abook; } diff --git a/plugins/kolab_core/rcube_kolab.php b/plugins/kolab_core/rcube_kolab.php index 7c837de0..d800d773 100644 --- a/plugins/kolab_core/rcube_kolab.php +++ b/plugins/kolab_core/rcube_kolab.php @@ -119,4 +119,14 @@ class rcube_kolab if (isset($_SESSION['__auth'])) unset($_SESSION['__auth']); } + + /** + * Creates folder ID from folder name + */ + public static function folder_id($folder) + { + $folder = rcube_charset_convert($folder, RCMAIL_CHARSET, 'UTF7-IMAP'); + return asciiwords(strtr($folder, '/.', '--')); + } + }