From ac0fc383fd43e8955b0ab22f70463159b14c74b0 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Mon, 23 Dec 2013 05:33:41 -0500
Subject: [PATCH] Fix so message flags modified by another client are applied on the list on refresh (#1485186)

---
 program/steps/mail/check_recent.inc |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/program/steps/mail/check_recent.inc b/program/steps/mail/check_recent.inc
index 3aa7b3e..60da68a 100644
--- a/program/steps/mail/check_recent.inc
+++ b/program/steps/mail/check_recent.inc
@@ -114,6 +114,24 @@
             $OUTPUT->command('update_selection');
         }
     }
+    // handle flag updates
+    else if ($is_current && ($uids = rcube_utils::get_input_value('_uids', rcube_utils::INPUT_GPC))) {
+        $data = $RCMAIL->storage->folder_data($mbox_name);
+
+        if (empty($_SESSION['list_mod_seq']) || $_SESSION['list_mod_seq'] != $data['HIGHESTMODSEQ']) {
+            $flags = $RCMAIL->storage->list_flags($mbox_name, explode(',', $uids), $_SESSION['list_mod_seq']);
+            foreach ($flags as $idx => $row) {
+                $flags[$idx] = array_change_key_case(array_map('intval', $row));
+            }
+
+            // remember last HIGHESTMODSEQ value (if supported)
+            if (!empty($data['HIGHESTMODSEQ'])) {
+                $_SESSION['list_mod_seq'] = $data['HIGHESTMODSEQ'];
+            }
+
+            $RCMAIL->output->set_env('recent_flags', $flags);
+        }
+    }
 }
 
 // trigger refresh hook

--
Gitblit v1.9.1