aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorredmatrix <redmatrix@redmatrix.me>2015-10-28 14:02:30 +1100
committerredmatrix <redmatrix@redmatrix.me>2015-10-28 14:02:30 +1100
commit3bc8d4d0ebd85788f338931af3c4e7a0d07bc9ee (patch)
tree10b1538f42e1149469e419e4ea34694cbaf3b434
parent65587be737e13e611f6e5ba67ee0301c312250b9 (diff)
parent8083a8658134654e9ad40f58ecd7ff9d0fb12161 (diff)
downloadvolse-hubzilla-3bc8d4d0ebd85788f338931af3c4e7a0d07bc9ee.tar.gz
volse-hubzilla-3bc8d4d0ebd85788f338931af3c4e7a0d07bc9ee.tar.bz2
volse-hubzilla-3bc8d4d0ebd85788f338931af3c4e7a0d07bc9ee.zip
Merge pull request #102 from kenrestivo/upload-fixes
Handle file names with more than one dot.
-rw-r--r--include/attach.php6
-rw-r--r--tests/upload_test.php29
2 files changed, 32 insertions, 3 deletions
diff --git a/include/attach.php b/include/attach.php
index a959a5bcb..1bba88c63 100644
--- a/include/attach.php
+++ b/include/attach.php
@@ -108,9 +108,9 @@ function z_mime_content_type($filename) {
'oth' => 'application/vnd.oasis.opendocument.text-web'
);
- $dot = strpos($filename, '.');
- if ($dot !== false) {
- $ext = strtolower(substr($filename, $dot + 1));
+ $last_dot = strrpos($filename, '.');
+ if ($last_dot !== false) {
+ $ext = strtolower(substr($filename, $last_dot + 1));
if (array_key_exists($ext, $mime_types)) {
return $mime_types[$ext];
}
diff --git a/tests/upload_test.php b/tests/upload_test.php
new file mode 100644
index 000000000..031315fba
--- /dev/null
+++ b/tests/upload_test.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * this file contains tests for the uploader
+ *
+ * @package test.util
+ */
+
+/** required, it is the file under test */
+require_once('include/attach.php');
+
+/**
+ * TestCase for the uploader
+ *
+ * @author ken restivo
+ * @package test.util
+ */
+class UploadTest extends PHPUnit_Framework_TestCase {
+ public function testFileNameMutipleDots() {
+ $multidots = "foo.bar.baz.0.1.3.ogg";
+ $this->assertEquals("audio/ogg", z_mime_content_type($multidots));
+ $this->assertNotEquals("application/octet-stream", z_mime_content_type($multidots));
+ }
+
+ public function testFileNameOneDot() {
+ $multidots = "foo.ogg";
+ $this->assertEquals("audio/ogg", z_mime_content_type($multidots));
+ $this->assertNotEquals("application/octet-stream", z_mime_content_type($multidots));
+ }
+} \ No newline at end of file