From a621a9d7ecf334c4894ef8f5168eb6208e5ae0e4 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Wed, 14 Mar 2012 17:33:05 -0400
Subject: [PATCH] Accept DateTime object as input to format_date()

---
 program/include/main.inc |   32 ++++++++++++++++++++------------
 1 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/program/include/main.inc b/program/include/main.inc
index 798a1fe..ecb46ab 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -725,7 +725,7 @@
  * Convert the given date to a human readable form
  * This uses the date formatting properties from config
  *
- * @param mixed  Date representation (string or timestamp)
+ * @param mixed  Date representation (string, timestamp or DateTime object)
  * @param string Date format to use
  * @param bool   Enables date convertion according to user timezone
  *
@@ -735,23 +735,31 @@
 {
   global $RCMAIL, $CONFIG;
 
-  if (!empty($date))
-    $ts = rcube_strtotime($date);
-
-  if (empty($ts))
-    return '';
-
-  try {
-    $date = new DateTime("@".$ts);
+  if (is_a($date, 'DateTime')) {
+    $ts = $date->format('U');
+    $tzs = $date->getTimezone();
   }
-  catch (Exception $e) {
-    return '';
+  else {
+    $tzs = 'GMT';
+
+    if (!empty($date))
+      $ts = rcube_strtotime($date);
+
+    if (empty($ts))
+      return '';
+
+    try {
+      $date = new DateTime("@".$ts);
+    }
+    catch (Exception $e) {
+      return '';
+    }
   }
 
   try {
     // convert to the right timezone
     $stz = date_default_timezone_get();
-    $tz = new DateTimeZone($convert ? $RCMAIL->config->get('timezone') : 'GMT');
+    $tz = new DateTimeZone($convert ? $RCMAIL->config->get('timezone') : $tzs);
     $date->setTimezone($tz);
     date_default_timezone_set($tz->getName());
 

--
Gitblit v1.9.1