From e89d8f1fec3743e9ee1018d3bab1a375ab79cebf Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Tue, 9 Jul 2013 18:45:38 +0200 Subject: Performance fix: Do not ask for folder attributes if we know that folder do not exists --- program/steps/settings/folders.inc | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/program/steps/settings/folders.inc b/program/steps/settings/folders.inc index 34a72dd95..e2a3f8aaf 100644 --- a/program/steps/settings/folders.inc +++ b/program/steps/settings/folders.inc @@ -232,16 +232,16 @@ function rcube_subscription_form($attrib) // add any necessary "virtual" parent folders if ($parent_folder && !isset($seen[$parent_folder])) { for ($i=1; $i<=$level; $i++) { - $ancestor_folder = join($delimiter, array_slice($foldersplit, 0, $i)); - if ($ancestor_folder && !$seen[$ancestor_folder]++) { - $ancestor_name = rcube_charset_convert($foldersplit[$i-1], 'UTF7-IMAP'); - $list_folders[] = array( + $ancestor_folder = join($delimiter, array_slice($foldersplit, 0, $i)); + if ($ancestor_folder && !$seen[$ancestor_folder]++) { + $ancestor_name = rcube_charset_convert($foldersplit[$i-1], 'UTF7-IMAP'); + $list_folders[] = array( 'id' => $ancestor_folder, 'name' => $ancestor_name, 'level' => $i-1, 'virtual' => true, ); - } + } } } @@ -291,9 +291,11 @@ function rcube_subscription_form($attrib) $classes[] = 'virtual'; } - if (!$protected) { - $attrs = $STORAGE->folder_attributes($folder['id']); - $noselect = in_array('\\Noselect', $attrs); + // Check \Noselect flag (of existing folder) + if (!$protected && in_array($folder['id'], $a_unsubscribed)) { + $attrs = $STORAGE->folder_attributes($folder['id']); + $noselect = in_array('\\Noselect', $attrs); + } } $disabled = (($protected && $subscribed) || $noselect); -- cgit v1.2.3