diff options
author | Aleksander Machniak <alec@alec.pl> | 2013-10-15 09:22:09 +0200 |
---|---|---|
committer | Aleksander Machniak <alec@alec.pl> | 2013-10-15 09:22:09 +0200 |
commit | 64c924ea06afa1eec463078a5d05fc908c12d10d (patch) | |
tree | 2c4cdb118b410a541111f1aff4bc6c1f9a9508e2 | |
parent | 902b9df7fb4856d3116b67358ed88347e835e237 (diff) |
Fix regression where wrong set of message identifiers was used
in sql query that was supposed to fetch list of messages from cache
-rw-r--r-- | program/lib/Roundcube/rcube_imap_cache.php | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/program/lib/Roundcube/rcube_imap_cache.php b/program/lib/Roundcube/rcube_imap_cache.php index 445d46360..a8166545e 100644 --- a/program/lib/Roundcube/rcube_imap_cache.php +++ b/program/lib/Roundcube/rcube_imap_cache.php @@ -327,7 +327,6 @@ class rcube_imap_cache return array(); } - $msgs = array_flip($msgs); $result = array(); if ($this->mode & self::MODE_MESSAGE) { @@ -340,6 +339,8 @@ class rcube_imap_cache ." AND uid IN (".$this->db->array2list($msgs, 'integer').")", $this->userid, $mailbox); + $msgs = array_flip($msgs); + while ($sql_arr = $this->db->fetch_assoc($sql_result)) { $uid = intval($sql_arr['uid']); $result[$uid] = $this->build_message($sql_arr); @@ -351,11 +352,13 @@ class rcube_imap_cache unset($msgs[$uid]); } } + + $msgs = array_flip($msgs); } // Fetch not found messages from IMAP server if (!empty($msgs)) { - $messages = $this->imap->fetch_headers($mailbox, array_keys($msgs), false, true); + $messages = $this->imap->fetch_headers($mailbox, $msgs, false, true); // Insert to DB and add to result list if (!empty($messages)) { |