Page MenuHomePhorge

D5544.1775231943.diff
No OneTemporary

Authored By
Unknown
Size
5 KB
Referenced Files
None
Subscribers
None

D5544.1775231943.diff

diff --git a/plugins/kolab_activesync/config.inc.php.dist b/plugins/kolab_activesync/config.inc.php.dist
--- a/plugins/kolab_activesync/config.inc.php.dist
+++ b/plugins/kolab_activesync/config.inc.php.dist
@@ -3,3 +3,5 @@
// The page with Activesync clients configuration manual
$config['activesync_setup_url'] = 'https://kb.kolab.org/documentation/setting-up-an-activesync-client';
$config['activesync_reset_url'] = 'https://kb.kolab.org/documentation/reset-an-activesync-client';
+
+$config['activesync_uid_resolving'] = false;
diff --git a/plugins/kolab_activesync/kolab_activesync_ui.php b/plugins/kolab_activesync/kolab_activesync_ui.php
--- a/plugins/kolab_activesync/kolab_activesync_ui.php
+++ b/plugins/kolab_activesync/kolab_activesync_ui.php
@@ -119,14 +119,15 @@
// group folders by type (show only known types)
$use_fieldsets = rcube_utils::get_boolean($attrib['use-fieldsets'] ?? '');
+ $fast_mode = !$this->rc->config->get('activesync_uid_resolving');
$imei = $this->device['deviceid'];
$html = null;
foreach (['mail', 'contact', 'event', 'task', 'note'] as $type) {
- $subscriptions = $this->plugin->engine->list_subscriptions($imei, $type);
+ $subscriptions = $this->plugin->engine->list_subscriptions($imei, $type, $fast_mode);
$folders = [];
- foreach ($this->plugin->engine->list_folders($type) as $folder) {
+ foreach ($this->plugin->engine->list_folders($type, $fast_mode) as $folder) {
$f = $folder[0];
$subscribed = 0;
diff --git a/plugins/libkolab/lib/kolab_storage.php b/plugins/libkolab/lib/kolab_storage.php
--- a/plugins/libkolab/lib/kolab_storage.php
+++ b/plugins/libkolab/lib/kolab_storage.php
@@ -644,10 +644,11 @@
*
* @param string $folder IMAP folder name (UTF7-IMAP)
* @param string $folder_ns Will be set to namespace name of the folder
+ * @param bool $fast Disable resolving other user names
*
* @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, $fast = false)
{
self::setup();
@@ -679,8 +680,10 @@
$pos = strpos($folder, $delim);
$fid = $pos ? substr($folder, 0, $pos) : $folder;
- if ($user = self::folder_id2user($fid, true)) {
- $fid = str_replace($delim, '', $user);
+ if (!$fast) {
+ if ($user = self::folder_id2user($fid, true)) {
+ $fid = str_replace($delim, '', $user);
+ }
}
$prefix = "($fid)";
diff --git a/plugins/libkolab/lib/kolab_subscriptions.php b/plugins/libkolab/lib/kolab_subscriptions.php
--- a/plugins/libkolab/lib/kolab_subscriptions.php
+++ b/plugins/libkolab/lib/kolab_subscriptions.php
@@ -78,29 +78,37 @@
* Get list of all folders available for user
*
* @param string $type Folder type
+ * @param bool $fast Disable resolving of other user names
*
* @return array<array> List of folders (0 - path, 1 - displayname, 2 - optional folder object)
*/
- public function list_folders($type)
+ public function list_folders($type, $fast = false)
{
if ($this->folders_list !== null && $this->folders_type == $type) {
return $this->folders_list;
}
+ $imap_folder_prop = function ($folder) use ($fast) {
+ return [
+ $folder,
+ kolab_storage::object_prettyname($folder, $ns, $fast),
+ ];
+ };
+
if ($this->dav) {
if ($type == 'note') {
$result = [];
} elseif ($type == 'mail') {
$storage = $this->rc->get_storage();
$result = $storage->list_folders();
- $result = array_map([$this, 'imap_folder_prop'], $result);
+ $result = array_map($imap_folder_prop, $result);
} else {
$result = $this->dav->get_folders($type);
$result = array_map([$this, 'dav_folder_prop'], $result);
}
} else {
$result = kolab_storage::list_folders('', '*', $type, false);
- $result = array_map([$this, 'imap_folder_prop'], $result);
+ $result = array_map($imap_folder_prop, $result);
}
$this->folders_list = $result;
@@ -144,19 +152,20 @@
*
* @param string $deviceid Device IMEI identifier
* @param string $type Folder type
+ * @param bool $fast Disable resolving of other user names
*
* @return array<string,array> Folder subscription flags (0 - flag, 1 - display name, 2 - optional folder object)
*/
- public function list_subscriptions($deviceid, $type)
+ public function list_subscriptions($deviceid, $type, $fast = false)
{
if ($this->dav && $type == 'note') {
return [];
}
$result = $this->get_subscriptions($deviceid, $type);
-
$devicetype = $this->imei_to_type($deviceid);
- $folders = $this->list_folders($type);
+ $folders = $this->list_folders($type, $fast);
+
// Verify if subscribed folders still exist
if (!empty($result)) {
foreach ($result as $idx => $flag) {
@@ -551,17 +560,6 @@
return $this->icache["devicetype:{$userid}:{$imei}"] = $db->fetch_array($result)[0] ?? null;
}
- /**
- * IMAP folder properties for list_folders/list_subscriptions output
- */
- private static function imap_folder_prop($folder)
- {
- return [
- $folder,
- kolab_storage::object_prettyname($folder),
- ];
- }
-
/**
* DAV folder properties for list_folders/list_subscriptions output
*/

File Metadata

Mime Type
text/plain
Expires
Fri, Apr 3, 3:59 PM (7 h, 27 m ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18824598
Default Alt Text
D5544.1775231943.diff (5 KB)

Event Timeline