Aleksander Machniak
2013-07-09 e89d8f1fec3743e9ee1018d3bab1a375ab79cebf
Performance fix: Do not ask for folder attributes if we know that folder do not exists
1 files modified
18 ■■■■■ changed files
program/steps/settings/folders.inc 18 ●●●●● patch | view | raw | blame | history
program/steps/settings/folders.inc
@@ -232,16 +232,16 @@
        // 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 @@
            $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);