From 2bf3cc6fc3a1255a878778f05e1b0d745c5059c6 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Sun, 13 Jun 2010 06:15:25 -0400
Subject: [PATCH] - Use user's timezone in Date header, not server's timezone (#1486119)

---
 CHANGELOG                       |    1 +
 program/steps/mail/func.inc     |   26 +++++++++++++++++++++++++-
 program/steps/mail/sendmail.inc |    2 +-
 3 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 2b418d8..d81d1cb 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG RoundCube Webmail
 ===========================
 
+- Use user's timezone in Date header, not server's timezone (#1486119)
 - Add option to set separate footer for HTML messages (#1486660)
 - Add real SMTP error description to displayed error messages (#1485927)
 - Fix some IMAP errors handling when opening the message (#1485443)
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index defb6f9..c748914 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -1478,7 +1478,7 @@
 
     // compose headers array
     $headers = array(
-      'Date' => date('r'),
+      'Date' => rcmail_user_date(),
       'From' => $sender,
       'To'   => $message->headers->mdn_to,
       'Subject' => rcube_label('receiptread') . ': ' . $message->subject,
@@ -1523,6 +1523,30 @@
   return false;
 }
 
+// Returns RFC2822 formatted current date in user's timezone
+function rcmail_user_date()
+{
+  global $CONFIG;
+
+  // get user's timezone
+  if ($CONFIG['timezone'] === 'auto') {
+  console($_SESSION['timezone']);
+    $tz = isset($_SESSION['timezone']) ? $_SESSION['timezone'] : date('Z')/3600;
+  }
+  else {
+    $tz = $CONFIG['timezone'];
+    if ($CONFIG['dst_active'])
+      $tz++;
+  }
+
+  $date = time() + $tz * 60 * 60;
+  $date = gmdate('r', $date);
+  $date = preg_replace('/[+-][0-9]{4}$/', sprintf('%+05d', $tz * 100), $date);
+
+  return $date;
+}
+
+
 function rcmail_search_filter($attrib)
 {
   global $OUTPUT, $CONFIG;
diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc
index f94950e..e229234 100644
--- a/program/steps/mail/sendmail.inc
+++ b/program/steps/mail/sendmail.inc
@@ -287,7 +287,7 @@
   $headers['Received'] = $http_header;
 }
 
-$headers['Date'] = date('r');
+$headers['Date'] = rcmail_user_date();
 $headers['From'] = rcube_charset_convert($identity_arr['string'], RCMAIL_CHARSET, $message_charset);
 $headers['To'] = $mailto;
 

--
Gitblit v1.9.1