From 0e2e44a269b46f0db67769327679ae8c3391f0ed Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 10 Jan 2022 14:30:55 +0100 Subject: [PATCH] Changes for #180 --- dev/Model/Attachment.js | 10 +--- .../app/libraries/MailSo/Mail/Attachment.php | 49 +++++++++++-------- 2 files changed, 29 insertions(+), 30 deletions(-) diff --git a/dev/Model/Attachment.js b/dev/Model/Attachment.js index 6988e76c5..df1da1527 100644 --- a/dev/Model/Attachment.js +++ b/dev/Model/Attachment.js @@ -132,19 +132,11 @@ export class AttachmentModel extends AbstractModel { return serverRequestRaw('View', this.download); } - /** - * @returns {string} - */ - linkThumbnail() { - return this.hasThumbnail() ? serverRequestRaw('ViewThumbnail', this.download) : ''; - } - /** * @returns {string} */ linkThumbnailPreviewStyle() { - const link = this.linkThumbnail(); - return link ? 'background:url(' + link + ')' : ''; + return this.hasThumbnail() ? 'background:url(' + serverRequestRaw('ViewThumbnail', this.download) + ')' : ''; } /** diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Attachment.php b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Attachment.php index 9e270e614..741bfd4e4 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Attachment.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Attachment.php @@ -63,29 +63,36 @@ class Attachment implements \JsonSerializable public function FileName(bool $bCalculateOnEmpty = false) : string { - $sFileName = ''; - if ($this->oBodyStructure) - { - $sFileName = $this->oBodyStructure->FileName(); - if ($bCalculateOnEmpty && !\strlen(\trim($sFileName))) - { - $sMimeType = \strtolower(\trim($this->MimeType())); - if ('message/rfc822' === $sMimeType) - { - $sFileName = 'message'.$this->MimeIndex().'.eml'; - } - else if ('text/calendar' === $sMimeType) - { - $sFileName = 'calendar'.$this->MimeIndex().'.ics'; - } - else if (\strlen($sMimeType)) - { - $sFileName = \str_replace('/', $this->MimeIndex().'.', $sMimeType); - } - } + if (!$this->oBodyStructure) { + return ''; } - return $sFileName; + $sFileName = \trim($this->oBodyStructure->FileName()); + if (\strlen($sFileName) || !$bCalculateOnEmpty) { + return $sFileName; + } + + $sIdx = '-' . $this->MimeIndex(); + + $sMimeType = \strtolower(\trim($this->MimeType())); + if ('message/rfc822' === $sMimeType) { + return "message{$sIdx}.eml"; + } + if ('text/calendar' === $sMimeType) { + return "calendar{$sIdx}.ics"; + } + if ('text/plain' === $sMimeType) { + return "part{$sIdx}.txt"; + } + if (\preg_match('@text/(vcard|html|csv|xml|css|asp)@', $sMimeType, $aMatch) + || \preg_match('@image/(png|jpeg|gif|bmp|cgm|ief|tiff|webp)@', $sMimeType, $aMatch)) { + return "part{$sIdx}.{$aMatch[1]}"; + } + if (\strlen($sMimeType)) { + return \str_replace('/', $sIdx.'.', $sMimeType); + } + + return ($this->oBodyStructure->IsInline() ? 'part' : 'inline' ) . $sIdx; } public function MimeType() : string