Changeset View
Changeset View
Standalone View
Standalone View
plugins/libkolab/lib/kolab_storage.php
Show First 20 Lines • Show All 618 Lines • ▼ Show 20 Lines | public static function custom_displayname($folder) | ||||
$metadata = self::$imap->get_metadata("*", array(self::NAME_KEY_PRIVATE, self::NAME_KEY_SHARED)); | $metadata = self::$imap->get_metadata("*", array(self::NAME_KEY_PRIVATE, self::NAME_KEY_SHARED)); | ||||
// If cache is disabled store result in memory | // If cache is disabled store result in memory | ||||
if (!self::$config->get('imap_cache')) { | if (!self::$config->get('imap_cache')) { | ||||
$_metadata = $metadata; | $_metadata = $metadata; | ||||
} | } | ||||
} | } | ||||
if ($data = $metadata[$folder]) { | if ($data = $metadata[$folder] ?? null) { | ||||
if (($name = $data[self::NAME_KEY_PRIVATE]) || ($name = $data[self::NAME_KEY_SHARED])) { | if (($name = $data[self::NAME_KEY_PRIVATE]) || ($name = $data[self::NAME_KEY_SHARED])) { | ||||
return $name; | return $name; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
return false; | return false; | ||||
} | } | ||||
/** | /** | ||||
* Getter for human-readable name of Kolab object (folder) | * Getter for human-readable name of Kolab object (folder) | ||||
* See http://wiki.kolab.org/UI-Concepts/Folder-Listing for reference | * See http://wiki.kolab.org/UI-Concepts/Folder-Listing for reference | ||||
* | * | ||||
* @param string $folder IMAP folder name (UTF7-IMAP) | * @param string $folder IMAP folder name (UTF7-IMAP) | ||||
* @param string $folder_ns Will be set to namespace name of the folder | * @param string $folder_ns Will be set to namespace name of the folder | ||||
* | * | ||||
* @return string Name of the folder-object | * @return string Name of the folder-object | ||||
*/ | */ | ||||
public static function object_prettyname($folder, &$folder_ns=null) | public static function object_prettyname($folder, &$folder_ns=null) | ||||
{ | { | ||||
self::setup(); | self::setup(); | ||||
$found = false; | $found = false; | ||||
$namespace = self::$imap->get_namespace(); | $namespace = self::$imap->get_namespace(); | ||||
$prefix = null; | |||||
if (!empty($namespace['shared'])) { | if (!empty($namespace['shared'])) { | ||||
foreach ($namespace['shared'] as $ns) { | foreach ($namespace['shared'] as $ns) { | ||||
if (strlen($ns[0]) && strpos($folder, $ns[0]) === 0) { | if (strlen($ns[0]) && strpos($folder, $ns[0]) === 0) { | ||||
$prefix = ''; | $prefix = ''; | ||||
$folder = substr($folder, strlen($ns[0])); | $folder = substr($folder, strlen($ns[0])); | ||||
$delim = $ns[1]; | $delim = $ns[1]; | ||||
$found = true; | $found = true; | ||||
▲ Show 20 Lines • Show All 245 Lines • ▼ Show 20 Lines | public static function list_folders($root = '', $mbox = '*', $filter = null, $subscribed = null, &$folderdata = array()) | ||||
// In case of an error, return empty list (?) | // In case of an error, return empty list (?) | ||||
if (!is_array($folders)) { | if (!is_array($folders)) { | ||||
return array(); | return array(); | ||||
} | } | ||||
// Filter folders list | // Filter folders list | ||||
foreach ($folders as $idx => $folder) { | foreach ($folders as $idx => $folder) { | ||||
$type = $folderdata[$folder]; | $type = $folderdata[$folder] ?? null; | ||||
if ($filter == 'mail' && empty($type)) { | if ($filter == 'mail' && empty($type)) { | ||||
continue; | continue; | ||||
} | } | ||||
if (empty($type) || !preg_match($regexp, $type)) { | if (empty($type) || !preg_match($regexp, $type)) { | ||||
unset($folders[$idx]); | unset($folders[$idx]); | ||||
} | } | ||||
} | } | ||||
Show All 37 Lines | class kolab_storage | ||||
* Wrapper for rcube_imap::list_folders_subscribed() | * Wrapper for rcube_imap::list_folders_subscribed() | ||||
* with support for temporarily subscribed folders | * with support for temporarily subscribed folders | ||||
*/ | */ | ||||
protected static function _imap_list_subscribed($root, $mbox, $filter = null) | protected static function _imap_list_subscribed($root, $mbox, $filter = null) | ||||
{ | { | ||||
$folders = self::$imap->list_folders_subscribed($root, $mbox); | $folders = self::$imap->list_folders_subscribed($root, $mbox); | ||||
// add temporarily subscribed folders | // add temporarily subscribed folders | ||||
if ($filter != 'mail' && self::$with_tempsubs && is_array($_SESSION['kolab_subscribed_folders'])) { | if ($filter != 'mail' && self::$with_tempsubs && is_array($_SESSION['kolab_subscribed_folders'] ?? null)) { | ||||
$folders = array_unique(array_merge($folders, $_SESSION['kolab_subscribed_folders'])); | $folders = array_unique(array_merge($folders, $_SESSION['kolab_subscribed_folders'])); | ||||
} | } | ||||
return $folders; | return $folders; | ||||
} | } | ||||
/** | /** | ||||
* Search for shared or otherwise not listed groupware folders the user has access | * Search for shared or otherwise not listed groupware folders the user has access | ||||
▲ Show 20 Lines • Show All 714 Lines • ▼ Show 20 Lines | public static function folder_id2user($folder_id, $as_string = false) | ||||
list(, $domain) = explode('@', $rcube->get_user_name()); | list(, $domain) = explode('@', $rcube->get_user_name()); | ||||
} | } | ||||
if ($name_attr === null) { | if ($name_attr === null) { | ||||
$name_attr = (array) ($rcube->config->get('kolab_users_name_field', $rcube->config->get('kolab_auth_name')) ?: 'name'); | $name_attr = (array) ($rcube->config->get('kolab_users_name_field', $rcube->config->get('kolab_auth_name')) ?: 'name'); | ||||
} | } | ||||
$token = $folder_id; | $token = $folder_id; | ||||
if ($domain && strpos($find, '@') === false) { | if ($domain && strpos($token, '@') === false) { | ||||
$token .= '@' . $domain; | $token .= '@' . $domain; | ||||
} | } | ||||
if ($cache === null) { | if ($cache === null) { | ||||
$cache = $rcube->get_cache_shared('kolab_users') ?: false; | $cache = $rcube->get_cache_shared('kolab_users') ?: false; | ||||
} | } | ||||
// use value cached in memory for repeated lookups | // use value cached in memory for repeated lookups | ||||
▲ Show 20 Lines • Show All 104 Lines • Show Last 20 Lines |