Performance: Better displayname annotation handling
This commit is contained in:
parent
644df15bad
commit
46f962833f
2 changed files with 13 additions and 35 deletions
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Reference in a new issue