Thomas Bruederli
2014-04-14 f97fe4ee084cd3fd286625cb9fe4ec9b5c5a9d6d
Allow to search in multiple folders with rcube_imap::search_once(); always set folder property in message header struct
1 files modified
36 ■■■■■ changed files
program/lib/Roundcube/rcube_imap.php 36 ●●●●● patch | view | raw | blame | history
program/lib/Roundcube/rcube_imap.php
@@ -1544,19 +1544,26 @@
     */
    public function search_once($folder = null, $str = 'ALL')
    {
        if (!$str) {
            $str = 'ALL';
        }
        if (!strlen($folder)) {
            $folder = $this->folder;
        }
        if (!$this->check_connection()) {
            return new rcube_result_index();
        }
        $index = $this->conn->search($folder, $str, true);
        if (!$str) {
            $str = 'ALL';
        }
        // multi-folder search
        if (is_array($folder) && count($folder) > 1) {
            $searcher = new rcube_imap_search($this->options, $this->conn);
            $index = $searcher->exec($folder, $str, $this->default_charset);
        }
        else {
            $folder = is_array($folder) ? $folder[0] : $folder;
            if (!strlen($folder)) {
                $folder = $this->folder;
            }
            $index = $this->conn->search($folder, $str, true);
        }
        return $index;
    }
@@ -1707,13 +1714,13 @@
     */
    public function get_message_headers($uid, $folder = null, $force = false)
    {
        if (!strlen($folder)) {
            $folder = $this->folder;
        }
        // decode combined UID-folder identifier
        if (preg_match('/^\d+-.+/', $uid)) {
            list($uid, $folder) = explode('-', $uid, 2);
        }
        if (!strlen($folder)) {
            $folder = $this->folder;
        }
        // get cached headers
@@ -1726,6 +1733,9 @@
        else {
            $headers = $this->conn->fetchHeader(
                $folder, $uid, true, true, $this->get_fetch_headers());
            if (is_object($headers))
                $headers->folder = $folder;
        }
        return $headers;