From 77c9fd9f25cbee887278ba44269703b880472722 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Fri, 23 Nov 2012 03:27:44 -0500
Subject: [PATCH] Fix cache (in)validation after setting \Deleted flag
---
program/include/rcube_imap.php | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index a9c00b5..5fab3b4 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -2172,10 +2172,10 @@
$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 @@
$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));
+ }
}
}
--
Gitblit v1.9.1