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
|
// find custom display name in folder METADATA
|
||||||
if (self::$config->get('kolab_custom_display_names', true) && self::setup()) {
|
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));
|
// For performance reasons ask for all folders, it will be cached as one cache entry
|
||||||
if (($name = $metadata[$folder][self::NAME_KEY_PRIVATE]) || ($name = $metadata[$folder][self::NAME_KEY_SHARED])) {
|
$metadata = self::$imap->get_metadata("*", array(self::NAME_KEY_PRIVATE, self::NAME_KEY_SHARED));
|
||||||
return $name;
|
|
||||||
|
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
|
// Build SELECT field of parent folder
|
||||||
|
@ -1018,7 +1022,7 @@ class kolab_storage
|
||||||
$folder->children = array(); // reset list
|
$folder->children = array(); // reset list
|
||||||
|
|
||||||
// skip top folders or ones with a custom displayname
|
// 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;
|
$tree->children[] = $folder;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -1631,8 +1635,9 @@ class kolab_storage
|
||||||
{
|
{
|
||||||
if (self::setup()) {
|
if (self::setup()) {
|
||||||
$keys = array(
|
$keys = array(
|
||||||
self::NAME_KEY_PRIVATE,
|
// For better performance we skip displayname here, see (self::custom_displayname())
|
||||||
self::NAME_KEY_SHARED,
|
// self::NAME_KEY_PRIVATE,
|
||||||
|
// self::NAME_KEY_SHARED,
|
||||||
self::CTYPE_KEY,
|
self::CTYPE_KEY,
|
||||||
self::CTYPE_KEY_PRIVATE,
|
self::CTYPE_KEY_PRIVATE,
|
||||||
self::COLOR_KEY_PRIVATE,
|
self::COLOR_KEY_PRIVATE,
|
||||||
|
|
|
@ -147,34 +147,7 @@ abstract class kolab_storage_folder_api
|
||||||
*/
|
*/
|
||||||
public function get_name()
|
public function get_name()
|
||||||
{
|
{
|
||||||
if ($name = $this->get_custom_displayname()) {
|
return kolab_storage::object_name($this->name);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Reference in a new issue