Thomas Bruederli
2014-04-08 94e797c1fbc5ae1ce3c57bdc5cdaabd3a9f8f911
Consider sort order in UID sort mode of multi-folder search results
2 files modified
15 ■■■■■ changed files
program/lib/Roundcube/rcube_imap.php 4 ●●●● patch | view | raw | blame | history
program/lib/Roundcube/rcube_result_multifolder.php 11 ●●●●● patch | view | raw | blame | history
program/lib/Roundcube/rcube_imap.php
@@ -988,6 +988,10 @@
                $a_msg_headers = array_slice(array_values($a_msg_headers), $from, $slice_length);
            }
            else {
                if ($this->sort_order != $search_set->get_parameters('ORDER')) {
                    $search_set->revert();
                }
                // slice resultset first...
                $fetch = array();
                foreach (array_slice($search_set->get(), $from, $slice_length) as $msg_id) {
program/lib/Roundcube/rcube_result_multifolder.php
@@ -130,6 +130,17 @@
    public function revert()
    {
        $this->order = $this->order == 'ASC' ? 'DESC' : 'ASC';
        $this->index = array();
        // revert order in all sub-sets
        foreach ($this->sets as $set) {
            if ($this->order != $set->get_parameters('ORDER')) {
                $set->revert();
            }
            $folder = $set->get_parameters('MAILBOX');
            $index = array_map(function($uid) use ($folder) { return $uid . '-' . $folder; }, $set->get());
            $this->index = array_merge($this->index, $index);
        }
    }