From 3f5cef86665d068478fe7298f8b811e4de47b605 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Sun, 13 Apr 2008 05:15:39 -0400
Subject: [PATCH] - reverted r1295 - disable caching for unseen messages to allow marking as read remarked messages

---
 program/include/rcube_shared.inc |   16 ++++++++++------
 program/steps/mail/show.inc      |    6 +++---
 2 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/program/include/rcube_shared.inc b/program/include/rcube_shared.inc
index c9cf4fb..f3ff0aa 100644
--- a/program/include/rcube_shared.inc
+++ b/program/include/rcube_shared.inc
@@ -236,18 +236,22 @@
  * @param int Modified date as unix timestamp
  * @param string Etag value for caching
  */
-function send_modified_header($mdate, $etag=null)
+function send_modified_header($mdate, $etag=null, $skip_check=false)
 {
   if (headers_sent())
     return;
     
   $iscached = false;
-  if ($_SERVER['HTTP_IF_MODIFIED_SINCE'] && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $mdate)
-    $iscached = true;
-  
   $etag = $etag ? "\"$etag\"" : null;
-  if ($etag)
-    $iscached = ($_SERVER['HTTP_IF_NONE_MATCH'] == $etag);
+
+  if (!$skip_check)
+  {
+    if ($_SERVER['HTTP_IF_MODIFIED_SINCE'] && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $mdate)
+      $iscached = true;
+  
+    if ($etag)
+      $iscached = ($_SERVER['HTTP_IF_NONE_MATCH'] == $etag);
+  }
   
   if ($iscached)
     header("HTTP/1.x 304 Not Modified");
diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc
index 1fe4aa9..a530184 100644
--- a/program/steps/mail/show.inc
+++ b/program/steps/mail/show.inc
@@ -30,7 +30,7 @@
   // set message charset as default
   if (!empty($MESSAGE['headers']->charset))
     $IMAP->set_charset($MESSAGE['headers']->charset);
-  
+
   // go back to list if message not found (wrong UID)
   if (!$MESSAGE['headers'])
     {
@@ -53,13 +53,13 @@
   $mbox_name = $IMAP->get_mailbox_name();
   
   // calculate Etag for this request
-  $etag = md5($MESSAGE['UID'].$mbox_name.session_id().intval($MESSAGE['headers']->mdn_sent).intval($MESSAGE['headers']->seen).intval($MESSAGE['is_safe']).intval($PRINT_MODE));
+  $etag = md5($MESSAGE['UID'].$mbox_name.session_id().intval($MESSAGE['headers']->mdn_sent).intval($MESSAGE['is_safe']).intval($PRINT_MODE));
 
   // allow caching, unless remote images are present
   if ((bool)$MESSAGE['is_safe'])
     send_nocacheing_headers();
   else if (empty($CONFIG['devel_mode']))
-    send_modified_header($_SESSION['login_time'], $etag);
+    send_modified_header($_SESSION['login_time'], $etag, !$MESSAGE['headers']->seen);
 
   $MESSAGE['subject'] = rcube_imap::decode_mime_string($MESSAGE['headers']->subject, $MESSAGE['headers']->charset);
   $OUTPUT->set_pagetitle($MESSAGE['subject']);

--
Gitblit v1.9.1