From 78925f8f1a9afb9475a9cf9ad1b35daade23da85 Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Thu, 17 Sep 2009 08:07:58 -0400 Subject: [PATCH] - Fix incorrect count of new messages in folder list when using multiple IMAP clients (#1485995) - Fix all folders checking for new messages with disabled caching (#1486128) --- program/steps/mail/folders.inc | 23 +++++++++++++++++------ 1 files changed, 17 insertions(+), 6 deletions(-) diff --git a/program/steps/mail/folders.inc b/program/steps/mail/folders.inc index b84398f..73d4ae8 100644 --- a/program/steps/mail/folders.inc +++ b/program/steps/mail/folders.inc @@ -5,7 +5,7 @@ | program/steps/mail/folders.inc | | | | This file is part of the RoundCube Webmail client | - | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland | + | Copyright (C) 2005-2009, RoundCube Dev. - Switzerland | | Licensed under the GNU GPL | | | | PURPOSE: | @@ -18,10 +18,14 @@ $Id$ */ +// only process ajax requests +if (!$OUTPUT->ajax_call) + return; + $mbox_name = $IMAP->get_mailbox_name(); // send EXPUNGE command -if ($_action=='expunge' && ($mbox = get_input_value('_mbox', RCUBE_INPUT_POST))) +if ($RCMAIL->action=='expunge' && ($mbox = get_input_value('_mbox', RCUBE_INPUT_POST))) { $success = $IMAP->expunge($mbox); @@ -29,7 +33,7 @@ if ($success && !empty($_REQUEST['_reload'])) { $OUTPUT->command('message_list.clear'); - $_action = 'list'; + $RCMAIL->action = 'list'; return; } else @@ -37,10 +41,15 @@ } // clear mailbox -else if ($_action=='purge' && ($mbox = get_input_value('_mbox', RCUBE_INPUT_POST))) +else if ($RCMAIL->action=='purge' && ($mbox = get_input_value('_mbox', RCUBE_INPUT_POST))) { - // we should only be purging trash and junk - if($mbox == $CONFIG['trash_mbox'] || $mbox == $CONFIG['junk_mbox']) + $delimiter = $IMAP->get_hierarchy_delimiter(); + $trash_regexp = '/^' . preg_quote($CONFIG['trash_mbox'] . $delimiter, '/') . '/'; + $junk_regexp = '/^' . preg_quote($CONFIG['junk_mbox'] . $delimiter, '/') . '/'; + + // we should only be purging trash and junk (or their subfolders) + if ($mbox == $CONFIG['trash_mbox'] || $mbox == $CONFIG['junk_mbox'] + || preg_match($trash_regexp, $mbox) || preg_match($junk_regexp, $mbox)) { $success = $IMAP->clear_mailbox($mbox); @@ -51,6 +60,7 @@ $OUTPUT->command('message_list.clear'); $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text()); $OUTPUT->command('set_unread_count', $mbox_name, 0); + $_SESSION['unseen_count'][$mbox_name] = 0; } else $commands = "// purged: $success"; @@ -58,4 +68,5 @@ } $OUTPUT->send($commands); + ?> -- Gitblit v1.9.1