From 3b06e30558cab4f4d732db38702ed26999acd3a8 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Fri, 13 Jan 2017 10:40:44 +1300 Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20add=20extension=20dot=20in=20Fi?= =?UTF-8?q?leNameFilter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit File names are generally valid without an extension (although they might be disallowed by upload constraints), so the filter should deal gracefully with them (“myfile” should return “myfile”, not “myfile.”) --- src/Assets/FileNameFilter.php | 3 ++- tests/php/Assets/FileNameFilterTest.php | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Assets/FileNameFilter.php b/src/Assets/FileNameFilter.php index 756b4e5ea..c73572e7d 100644 --- a/src/Assets/FileNameFilter.php +++ b/src/Assets/FileNameFilter.php @@ -77,7 +77,8 @@ class FileNameFilter extends Object // Safeguard against empty file names $nameWithoutExt = pathinfo($name, PATHINFO_FILENAME); if (empty($nameWithoutExt)) { - $name = $this->getDefaultName() . '.' . $ext; + $name = $this->getDefaultName(); + $name .= $ext ? '.' . $ext : ''; } return $name; diff --git a/tests/php/Assets/FileNameFilterTest.php b/tests/php/Assets/FileNameFilterTest.php index 04689ce40..bd4261f27 100644 --- a/tests/php/Assets/FileNameFilterTest.php +++ b/tests/php/Assets/FileNameFilterTest.php @@ -142,4 +142,11 @@ class FileNameFilterTest extends SapphireTest $filter = new FileNameFilter(); $this->assertEquals('test-document.txt', $filter->filter($name)); } + + public function testDoesntAddExtensionWhenMissing() + { + $name = 'no-extension'; + $filter = new FileNameFilter(); + $this->assertEquals('no-extension', $filter->filter($name)); + } }