From 9aae1b7fc399b5d2cecb8f0d0df6a2ae4e749786 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Fri, 26 Jun 2015 03:20:43 -0400
Subject: [PATCH] Fix so microseconds macro (u) in log_date_format works (#1490446)

---
 program/lib/Roundcube/rcube.php       |    6 +-----
 CHANGELOG                             |    1 +
 program/lib/Roundcube/rcube_utils.php |   23 +++++++++++++++++++++++
 3 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index c838f49..ff9e5d9 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -10,6 +10,7 @@
 - Plugin API: Added message_ready hook
 - Plugin API: Add special onload() method to execute plugin actions before startup (session and GUI initialization)
 - Implemented UI element to jump to specified page of the messages list (#1485235)
+- Fix so microseconds macro (u) in log_date_format works (#1490446)
 - Fix so unrecognized TNEF attachments are displayed on the list of attachments (#1490351)
 - Fix "Importing..." message does not hide on error (#1490422)
 - Fix Compose action in addressbook for results from multiple addressbooks (#1490413)
diff --git a/program/lib/Roundcube/rcube.php b/program/lib/Roundcube/rcube.php
index 6b0c6b8..02e11e2 100644
--- a/program/lib/Roundcube/rcube.php
+++ b/program/lib/Roundcube/rcube.php
@@ -1231,11 +1231,7 @@
             $session_key = intval(self::$instance->config->get('log_session_id', 8));
         }
 
-        if (empty($date_format)) {
-            $date_format = 'd-M-Y H:i:s O';
-        }
-
-        $date = date($date_format);
+        $date = rcube_utils::date_format($date_format);
 
         // trigger logging hook
         if (is_object(self::$instance) && is_object(self::$instance->plugins)) {
diff --git a/program/lib/Roundcube/rcube_utils.php b/program/lib/Roundcube/rcube_utils.php
index 00311f0..23fc3f8 100644
--- a/program/lib/Roundcube/rcube_utils.php
+++ b/program/lib/Roundcube/rcube_utils.php
@@ -1149,4 +1149,27 @@
 
         return $random;
     }
+
+    /**
+     * Format current date according to specified format.
+     * This method supports microseconds (u).
+     *
+     * @param string $format Date format (default: 'd-M-Y H:i:s O')
+     *
+     * @return string Formatted date
+     */
+    public static function date_format($format = null)
+    {
+        if (empty($format)) {
+            $format = 'd-M-Y H:i:s O';
+        }
+
+        if (strpos($format, 'u') !== false
+            && ($date = date_create_from_format('U.u.e', microtime(true) . '.' . date_default_timezone_get()))
+        ) {
+            return $date->format($format);
+        }
+
+        return date($format);
+    }
 }

--
Gitblit v1.9.1