From c8b12e1fdca2df0ac19772a75b356d3474b562d0 Mon Sep 17 00:00:00 2001 From: cdujeu Date: Fri, 26 Jun 2015 08:58:30 +0200 Subject: [PATCH] Follow-up for filename encoding for attachment headers and IE. --- core/src/core/classes/class.HTMLWriter.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/core/src/core/classes/class.HTMLWriter.php b/core/src/core/classes/class.HTMLWriter.php index 86a9391b54..835d2badc7 100644 --- a/core/src/core/classes/class.HTMLWriter.php +++ b/core/src/core/classes/class.HTMLWriter.php @@ -148,6 +148,15 @@ public static function javascriptErrorHandler($errorType, $errorMessage) die(""); } + public static function encodeAttachmentName($name){ + if (preg_match('/ MSIE /',$_SERVER['HTTP_USER_AGENT']) + || preg_match('/ WebKit /',$_SERVER['HTTP_USER_AGENT']) + || preg_match('/ Trident/',$_SERVER['HTTP_USER_AGENT'])) { + $name = str_replace("+", " ", urlencode(SystemTextEncoding::toUTF8($name))); + } + return $name; + } + /** * @static * @param string $attachmentName @@ -157,9 +166,7 @@ public static function javascriptErrorHandler($errorType, $errorMessage) */ public static function generateAttachmentsHeader(&$attachmentName, $dataSize, $isFile=true, $gzip=false) { - if (preg_match('/ MSIE /',$_SERVER['HTTP_USER_AGENT']) || preg_match('/ WebKit /',$_SERVER['HTTP_USER_AGENT']) || preg_match(‘/ Trident/’,$_SERVER[‘HTTP_USER_AGENT’])) { - $attachmentName = str_replace("+", " ", urlencode(SystemTextEncoding::toUTF8($attachmentName))); - } + $attachmentName = self::encodeAttachmentName($attachmentName); header("Content-Type: application/force-download; name=\"".$attachmentName."\""); header("Content-Transfer-Encoding: binary"); @@ -197,6 +204,8 @@ public static function generateAttachmentsHeader(&$attachmentName, $dataSize, $i public static function generateInlineHeaders($attachName, $fileSize, $mimeType) { + $attachName = self::encodeAttachmentName($attachName); + //Send headers header("Content-Type: " . $mimeType . "; name=\"" . $attachName . "\""); header("Content-Disposition: inline; filename=\"" . $attachName . "\"");