diff options
author | Aleksander Machniak <alec@alec.pl> | 2013-12-02 13:24:52 +0100 |
---|---|---|
committer | Aleksander Machniak <alec@alec.pl> | 2013-12-02 13:24:52 +0100 |
commit | 9b22f58d4ebc54a251941c48b15e9d9d71a54205 (patch) | |
tree | 582e030ed0e2f4f48c8174f6e4c0fd7771dfa261 | |
parent | 3b338f1e4f76c48c13eaa1166342168f06d5ab80 (diff) | |
parent | 38bf401cf88bc88d3b4d96fee8d2166cc2cac8c6 (diff) |
Merge branch 'master' of github.com:roundcube/roundcubemail
-rw-r--r-- | CHANGELOG | 4 | ||||
-rw-r--r-- | program/lib/Roundcube/rcube_imap.php | 9 |
2 files changed, 13 insertions, 0 deletions
@@ -1,6 +1,10 @@ CHANGELOG Roundcube Webmail =========================== +- Fix performance of listing writeable folders (#1489451) + +RELEASE 1.0-beta +---------------- - Fix handling of invalid closing tags in HTML messages (#1489446) - Set real content-type for file downloads (#1489439) - Update TinyMCE to version 3.5.10 (#1489442) diff --git a/program/lib/Roundcube/rcube_imap.php b/program/lib/Roundcube/rcube_imap.php index fdda1d4b2..dc5305808 100644 --- a/program/lib/Roundcube/rcube_imap.php +++ b/program/lib/Roundcube/rcube_imap.php @@ -2843,12 +2843,21 @@ class rcube_imap extends rcube_storage /** * 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]); } |