From 38bf401cf88bc88d3b4d96fee8d2166cc2cac8c6 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Sun, 01 Dec 2013 04:55:13 -0500 Subject: [PATCH] Fix performance of listing writeable folders (#1489451) --- CHANGELOG | 2 ++ program/lib/Roundcube/rcube_imap.php | 9 +++++++++ 2 files changed, 11 insertions(+), 0 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index e485ff6..ee80c55 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,8 @@ CHANGELOG Roundcube Webmail =========================== +- Fix performance of listing writeable folders (#1489451) + RELEASE 1.0-beta ---------------- - Fix handling of invalid closing tags in HTML messages (#1489446) diff --git a/program/lib/Roundcube/rcube_imap.php b/program/lib/Roundcube/rcube_imap.php index fdda1d4..dc53058 100644 --- a/program/lib/Roundcube/rcube_imap.php +++ b/program/lib/Roundcube/rcube_imap.php @@ -2843,12 +2843,21 @@ /** * Filter the given list of folders according to access rights + * + * For performance reasons we assume user has full rights + * on all personal folders. */ protected function filter_rights($a_folders, $rights) { $regex = '/('.$rights.')/'; + foreach ($a_folders as $idx => $folder) { + if ($this->folder_namespace($folder) == 'personal') { + continue; + } + $myrights = join('', (array)$this->my_rights($folder)); + if ($myrights !== null && !preg_match($regex, $myrights)) { unset($a_folders[$idx]); } -- Gitblit v1.9.1