diff --git a/plugins/libkolab/lib/kolab_storage.php b/plugins/libkolab/lib/kolab_storage.php index 65326248..db7e0ba3 100644 --- a/plugins/libkolab/lib/kolab_storage.php +++ b/plugins/libkolab/lib/kolab_storage.php @@ -579,9 +579,13 @@ class kolab_storage { // find custom display name in folder METADATA if (self::$config->get('kolab_custom_display_names', true) && self::setup()) { - $metadata = self::$imap->get_metadata($folder, array(self::NAME_KEY_PRIVATE, self::NAME_KEY_SHARED)); - if (($name = $metadata[$folder][self::NAME_KEY_PRIVATE]) || ($name = $metadata[$folder][self::NAME_KEY_SHARED])) { - return $name; + // For performance reasons ask for all folders, it will be cached as one cache entry + $metadata = self::$imap->get_metadata("*", array(self::NAME_KEY_PRIVATE, self::NAME_KEY_SHARED)); + + if ($data = $metadata[$folder]) { + if (($name = $data[self::NAME_KEY_PRIVATE]) || ($name = $data[self::NAME_KEY_SHARED])) { + return $name; + } } } @@ -765,7 +769,7 @@ class kolab_storage } } - $names[$name] = $folder->get_name(); + $names[$name] = $c_folder->get_name(); } // Build SELECT field of parent folder @@ -1018,7 +1022,7 @@ class kolab_storage $folder->children = array(); // reset list // skip top folders or ones with a custom displayname - if (count($path) < 1 || $folder->get_custom_displayname()) { + if (count($path) < 1 || kolab_storage::custom_displayname($folder->name)) { $tree->children[] = $folder; } else { @@ -1631,8 +1635,9 @@ class kolab_storage { if (self::setup()) { $keys = array( - self::NAME_KEY_PRIVATE, - self::NAME_KEY_SHARED, + // For better performance we skip displayname here, see (self::custom_displayname()) + // self::NAME_KEY_PRIVATE, + // self::NAME_KEY_SHARED, self::CTYPE_KEY, self::CTYPE_KEY_PRIVATE, self::COLOR_KEY_PRIVATE, diff --git a/plugins/libkolab/lib/kolab_storage_folder_api.php b/plugins/libkolab/lib/kolab_storage_folder_api.php index 3aa7c45b..fd5b53e0 100644 --- a/plugins/libkolab/lib/kolab_storage_folder_api.php +++ b/plugins/libkolab/lib/kolab_storage_folder_api.php @@ -147,34 +147,7 @@ abstract class kolab_storage_folder_api */ public function get_name() { - if ($name = $this->get_custom_displayname()) { - return $name; - } - - return kolab_storage::object_prettyname($this->name); - } - - /** - * Get the custom display name of this folder - * - * @return string Folder custom name - */ - public function get_custom_displayname() - { - $rcmail = rcube::get_instance(); - - // find custom display name in folder METADATA - if ($rcmail->config->get('kolab_custom_display_names', true)) { - $metadata = $this->get_metadata(); - - if ($name = $metadata[kolab_storage::NAME_KEY_PRIVATE]) { - return $name; - } - - if ($name = $metadata[kolab_storage::NAME_KEY_SHARED]) { - return $name; - } - } + return kolab_storage::object_name($this->name); } /**