From 0bbf8622773554348ff9dc200e7e01411a81be0b Mon Sep 17 00:00:00 2001 From: pdontthink Date: Wed, 1 Apr 2009 20:39:41 +0000 Subject: [PATCH] Make our Date header RFC-compliant. Redundant timezone info does not comply with RFC 822 section 5.1 git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@13496 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- class/deliver/Deliver.class.php | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/class/deliver/Deliver.class.php b/class/deliver/Deliver.class.php index 9952a06e..d86a125b 100644 --- a/class/deliver/Deliver.class.php +++ b/class/deliver/Deliver.class.php @@ -858,7 +858,7 @@ class Deliver { * @return string $result with timezone and offset */ function timezone () { - global $invert_time; + global $invert_time, $show_timezone_name; $diff_second = date('Z'); if ($invert_time) { @@ -872,9 +872,24 @@ class Deliver { $diff_second = abs($diff_second); $diff_hour = floor ($diff_second / 3600); $diff_minute = floor (($diff_second-3600*$diff_hour) / 60); - $zonename = '('.strftime('%Z').')'; - $result = sprintf ("%s%02d%02d %s", $sign, $diff_hour, $diff_minute, - $zonename); + + // If an administrator wants to add the timezone name to the + // end of the date header, they can set $show_timezone_name + // to boolean TRUE in config/config_local.php, but that is + // NOT RFC-822 compliant (see section 5.1). Moreover, some + // Windows users reported that strftime('%Z') was returning + // the full zone name (not the abbreviation) which in some + // cases included 8-bit characters (not allowed as is in headers). + // The PHP manual actually does NOT promise what %Z will return + // for strftime!: "The time zone offset/abbreviation option NOT + // given by %z (depends on operating system)" + // + if ($show_timezone_name) { + $zonename = '('.strftime('%Z').')'; + $result = sprintf ("%s%02d%02d %s", $sign, $diff_hour, $diff_minute, $zonename); + } else { + $result = sprintf ("%s%02d%02d", $sign, $diff_hour, $diff_minute); + } return ($result); } -- 2.25.1