diff --git a/src/Controllers/PostController.php b/src/Controllers/PostController.php index d2b59409..4980c2d9 100644 --- a/src/Controllers/PostController.php +++ b/src/Controllers/PostController.php @@ -501,14 +501,11 @@ class PostController if (!is_readable($path)) throw new SimpleException('Post file is not readable'); - $ext = substr($post->origName, strrpos($post->origName, '.') + 1); - if (strpos($post->origName, '.') === false) - $ext = 'dat'; $fn = sprintf('%s_%s_%s.%s', $this->config->main->title, $post->id, join(',', array_map(function($tag) { return $tag->name; }, $post->getTags())), - $ext); + TextHelper::resolveMimeType($post->mimeType) ?: 'dat'); $fn = preg_replace('/[[:^print:]]/', '', $fn); $ttl = 60 * 60 * 24 * 14; diff --git a/src/Helpers/TextHelper.php b/src/Helpers/TextHelper.php index 3796f4ea..0b805072 100644 --- a/src/Helpers/TextHelper.php +++ b/src/Helpers/TextHelper.php @@ -328,4 +328,16 @@ class TextHelper return $future ? 'in ' . round($diff / $mul) . ' years' : round($diff / $prevMul) . ' years ago'; } + + public static function resolveMimeType($mimeType) + { + $mimeTypes = [ + 'image/jpeg' => 'jpg', + 'image/gif' => 'gif', + 'image/png' => 'png', + 'application/x-shockwave-flash' => 'swf']; + return isset($mimeTypes[$mimeType]) + ? $mimeTypes[$mimeType] + : null; + } } diff --git a/src/Views/post-view.phtml b/src/Views/post-view.phtml index 86de76c3..c9812aee 100644 --- a/src/Views/post-view.phtml +++ b/src/Views/post-view.phtml @@ -163,11 +163,9 @@ $canEditAnything = count(array_filter($editPostPrivileges)) > 0; 'jpg', 'image/gif' => 'gif', 'image/png' => 'png', 'application/x-shockwave-flash' => 'swf']; - $mime = $this->context->transport->post->mimeType; printf( 'Download %s (%s)', - isset($mimes[$mime]) ? strtoupper($mimes[$mime]) : 'Unknown', + strtoupper(TextHelper::resolveMimeType($this->context->transport->post->mimeType)) ?: 'Unknown', TextHelper::useBytesUnits($this->context->transport->post->fileSize)); ?>