From 77c9fd9f25cbee887278ba44269703b880472722 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Thu, 22 Nov 2012 19:38:41 +0100 Subject: Fix cache (in)validation after setting \Deleted flag --- CHANGELOG | 1 + program/include/rcube_imap.php | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index c24cdfc59..64db1eb3e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ CHANGELOG Roundcube Webmail =========================== +- Fix cache (in)validation after setting \Deleted flag - Fix keybord events on messages list in opera browser (#1488823) RELEASE 0.8.4 diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php index a9c00b5e5..5fab3b424 100644 --- a/program/include/rcube_imap.php +++ b/program/include/rcube_imap.php @@ -2172,10 +2172,10 @@ class rcube_imap extends rcube_storage $result = $this->conn->flag($folder, $uids, $flag); } - if ($result) { + if ($result && !$skip_cache) { // reload message headers if cached - // @TODO: update flags instead removing from cache - if (!$skip_cache && ($mcache = $this->get_mcache_engine())) { + // update flags instead removing from cache + if ($mcache = $this->get_mcache_engine()) { $status = strpos($flag, 'UN') !== 0; $mflag = preg_replace('/^UN/', '', $flag); $mcache->change_flag($folder, $all_mode ? null : explode(',', $uids), @@ -2187,8 +2187,12 @@ class rcube_imap extends rcube_storage $this->clear_messagecount($folder, 'SEEN'); $this->clear_messagecount($folder, 'UNSEEN'); } - else if ($flag == 'DELETED') { + else if ($flag == 'DELETED' || $flag == 'UNDELETED') { $this->clear_messagecount($folder, 'DELETED'); + // remove cached messages + if ($this->options['skip_deleted']) { + $this->clear_message_cache($folder, $all_mode ? null : explode(',', $uids)); + } } } -- cgit v1.2.3