From 2bad17ebdb79eb799642fbb03b1632e0d7eac8a2 Mon Sep 17 00:00:00 2001
From: Marcin Kurczewski <mkurczew@gmail.com>
Date: Mon, 17 Feb 2014 23:15:10 +0100
Subject: [PATCH] Fixed extension in saved posts

---
 src/Controllers/PostController.php |  5 +----
 src/Helpers/TextHelper.php         | 12 ++++++++++++
 src/Views/post-view.phtml          |  4 +---
 3 files changed, 14 insertions(+), 7 deletions(-)

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;
 					<i class="icon-dl"></i>
 					<span>
 						<?php
-							$mimes = ['image/jpeg' => '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));
 						?>
 					</span>