From 92cd7f34b07e86062f2c024039e3309768b48ce6 Mon Sep 17 00:00:00 2001
From: Andy Wermke <andy@dev.next-step-software.com>
Date: Thu, 04 Apr 2013 10:10:23 -0400
Subject: [PATCH] Merge branch 'master' of https://github.com/roundcube/roundcubemail

---
 program/steps/mail/check_recent.inc |   20 +++++++++++++++-----
 1 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/program/steps/mail/check_recent.inc b/program/steps/mail/check_recent.inc
index 90d17c1..3649d14 100644
--- a/program/steps/mail/check_recent.inc
+++ b/program/steps/mail/check_recent.inc
@@ -25,7 +25,7 @@
     return;
 }
 
-$current = $RCMAIL->storage->get_folder();
+$current   = $RCMAIL->storage->get_folder();
 $check_all = $RCMAIL->action != 'refresh' || (bool)$RCMAIL->config->get('check_all_folders');
 
 // list of folders to check
@@ -34,9 +34,14 @@
 }
 else {
     $a_mailboxes = (array) $current;
-    if ($a_mailboxes[0] != 'INBOX')
+    if ($current != 'INBOX') {
         $a_mailboxes[] = 'INBOX';
+    }
 }
+
+// Control folders list from a plugin
+$plugin      = $RCMAIL->plugins->exec_hook('check_recent', array('folders' => $a_mailboxes, 'all' => $check_all));
+$a_mailboxes = $plugin['folders'];
 
 // check recent/unseen counts
 foreach ($a_mailboxes as $mbox_name) {
@@ -47,12 +52,12 @@
     }
 
     // Get mailbox status
-    $status = $RCMAIL->storage->folder_status($mbox_name);
+    $status = $RCMAIL->storage->folder_status($mbox_name, $diff);
 
     if ($status & 1) {
         // trigger plugin hook
         $RCMAIL->plugins->exec_hook('new_messages',
-            array('mailbox' => $mbox_name, 'is_current' => $is_current));
+            array('mailbox' => $mbox_name, 'is_current' => $is_current, 'diff' => $diff));
     }
 
     rcmail_send_unread_count($mbox_name, true, null,
@@ -70,13 +75,15 @@
         if (!empty($_GET['_quota']))
             $OUTPUT->command('set_quota', rcmail_quota_content());
 
+        $OUTPUT->set_env('exists', $RCMAIL->storage->count($mbox_name, 'EXISTS'));
+
         // "No-list" mode, don't get messages
         if (empty($_GET['_list']))
             continue;
 
         // get overall message count; allow caching because rcube_storage::folder_status() did a refresh
         $list_mode = $RCMAIL->storage->get_threading() ? 'THREADS' : 'ALL';
-        $all_count = $RCMAIL->storage->count(null, $list_mode, false, false);
+        $all_count = $RCMAIL->storage->count($mbox_name, $list_mode, false, false);
         $page      = $RCMAIL->storage->get_page();
         $page_size = $RCMAIL->storage->get_pagesize();
 
@@ -108,4 +115,7 @@
     }
 }
 
+// trigger refresh hook
+$RCMAIL->plugins->exec_hook('refresh', array());
+
 $OUTPUT->send();

--
Gitblit v1.9.1