From fd28e65ed659a3a638d8c94e24187e548474a105 Mon Sep 17 00:00:00 2001 From: djmaze Date: Thu, 16 Sep 2021 14:36:38 +0200 Subject: [PATCH] Resolve Issue #144 --- .../0.0.0/app/libraries/MailSo/Base/Utils.php | 94 +++++++++---------- .../app/libraries/RainLoop/Actions/Raw.php | 13 ++- 2 files changed, 55 insertions(+), 52 deletions(-) diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Base/Utils.php b/snappymail/v/0.0.0/app/libraries/MailSo/Base/Utils.php index c909ce856..7acff4b91 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Base/Utils.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Base/Utils.php @@ -771,59 +771,53 @@ END; public static function ContentTypeType(string $sContentType, string $sFileName) : string { - $sResult = ''; $sContentType = \strtolower($sContentType); - if (0 === \strpos($sContentType, 'image/')) - { - $sResult = 'image'; - } - else - { - switch ($sContentType) - { - case 'application/zip': - case 'application/x-7z-compressed': - case 'application/x-rar-compressed': - case 'application/x-msdownload': - case 'application/vnd.ms-cab-compressed': - case 'application/x-gzip': - case 'application/x-bzip': - case 'application/x-bzip2': - case 'application/x-debian-package': - $sResult = 'archive'; - break; - case 'application/msword': - case 'application/rtf': - case 'application/vnd.ms-excel': - case 'application/vnd.ms-powerpoint': - case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': - case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': - case 'application/vnd.openxmlformats-officedocument.wordprocessingml.template': - case 'application/vnd.openxmlformats-officedocument.presentationml.presentation': - case 'application/vnd.oasis.opendocument.text': - case 'application/vnd.oasis.opendocument.spreadsheet': - $sResult = 'doc'; - break; - case 'application/pdf': - case 'application/x-pdf': - $sResult = 'pdf'; - break; - } - - if ('' === $sResult) - { - switch (\strtolower(static::GetFileExtension($sFileName))) - { - case 'zip': - case '7z': - case 'rar': - $sResult = 'archive'; - break; - } - } + if (0 === \strpos($sContentType, 'image/')) { + return 'image'; } - return $sResult; + switch ($sContentType) + { + case 'application/zip': + case 'application/x-7z-compressed': + case 'application/x-rar-compressed': + case 'application/x-msdownload': + case 'application/vnd.ms-cab-compressed': + case 'application/x-gzip': + case 'application/x-bzip': + case 'application/x-bzip2': + case 'application/x-debian-package': + return 'archive'; + + case 'application/msword': + case 'application/rtf': + case 'application/vnd.ms-excel': + case 'application/vnd.ms-powerpoint': + case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': + case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': + case 'application/vnd.openxmlformats-officedocument.wordprocessingml.template': + case 'application/vnd.openxmlformats-officedocument.presentationml.presentation': + case 'application/vnd.oasis.opendocument.text': + case 'application/vnd.oasis.opendocument.spreadsheet': + return 'doc'; + + case 'application/pdf': + case 'application/x-pdf': + return 'pdf'; + } + + switch (\strtolower(static::GetFileExtension($sFileName))) + { + case 'zip': + case '7z': + case 'rar': + return 'archive'; + + case 'pdf': + return 'pdf'; + } + + return ''; } /** diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Raw.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Raw.php index 1a51dc470..feb3c0167 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Raw.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Raw.php @@ -147,8 +147,12 @@ trait Raw $oAccount = $this->getAccountFromToken(); - $sContentTypeOut = empty($sContentTypeIn) ? - \MailSo\Base\Utils::MimeContentType($sFileNameIn) : $sContentTypeIn; + // https://github.com/the-djmaze/snappymail/issues/144 + if ('.pdf' === \substr($sFileNameIn,-4)) { + $sContentTypeOut = 'application/pdf'; // application/octet-stream + } else { + $sContentTypeOut = $sContentTypeIn ?: \MailSo\Base\Utils::MimeContentType($sFileNameIn); + } $sFileNameOut = $this->MainClearFileName($sFileNameIn, $sContentTypeIn, $sMimeIndex); @@ -204,6 +208,11 @@ trait Raw $sFileNameOut = $sFileName; } + // https://github.com/the-djmaze/snappymail/issues/144 + if ('.pdf' === \substr($sFileNameOut,-4)) { + $sContentTypeOut = 'application/pdf'; + } + $sFileNameOut = $self->MainClearFileName($sFileNameOut, $sContentTypeOut, $sMimeIndex); $self->cacheByKey($sRawKey);