mirror of
https://github.com/Pathduck/gallery3.git
synced 2026-07-27 02:04:31 -04:00
Merge pull request #132 from shadlaws/fix_2000
#2000 - Make legal_file::smash_extensions more robust.
This commit is contained in:
@@ -235,6 +235,10 @@ class legal_file_Core {
|
||||
* Reduce the given file to having a single extension.
|
||||
*/
|
||||
static function smash_extensions($filename) {
|
||||
if (!$filename) {
|
||||
// It's harmless, so return it before it causes issues with pathinfo.
|
||||
return $filename;
|
||||
}
|
||||
$parts = pathinfo($filename);
|
||||
$result = "";
|
||||
if ($parts["dirname"] != ".") {
|
||||
@@ -243,7 +247,7 @@ class legal_file_Core {
|
||||
$parts["filename"] = str_replace(".", "_", $parts["filename"]);
|
||||
$parts["filename"] = preg_replace("/[_]+/", "_", $parts["filename"]);
|
||||
$parts["filename"] = trim($parts["filename"], "_");
|
||||
$result .= "{$parts['filename']}.{$parts['extension']}";
|
||||
$result .= isset($parts["extension"]) ? "{$parts['filename']}.{$parts['extension']}" : $parts["filename"];
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,10 +136,18 @@ class Legal_File_Helper_Test extends Gallery_Unit_Test_Case {
|
||||
public function smash_extensions_test() {
|
||||
$this->assert_equal("foo_bar.jpg", legal_file::smash_extensions("foo.bar.jpg"));
|
||||
$this->assert_equal("foo_bar_baz.jpg", legal_file::smash_extensions("foo.bar.baz.jpg"));
|
||||
$this->assert_equal("foo_bar_baz.jpg", legal_file::smash_extensions("foo.bar.baz.jpg"));
|
||||
$this->assert_equal("foo_bar_baz.jpg", legal_file::smash_extensions("...foo...bar..baz...jpg"));
|
||||
$this->assert_equal("/path/to/foo_bar.jpg", legal_file::smash_extensions("/path/to/foo.bar.jpg"));
|
||||
$this->assert_equal("/path/to.to/foo_bar.jpg", legal_file::smash_extensions("/path/to.to/foo.bar.jpg"));
|
||||
$this->assert_equal("foo_bar-12345678.jpg", legal_file::smash_extensions("foo.bar-12345678.jpg"));
|
||||
}
|
||||
|
||||
public function smash_extensions_pass_thru_names_without_extensions_test() {
|
||||
$this->assert_equal("foo", legal_file::smash_extensions("foo"));
|
||||
$this->assert_equal("foo.", legal_file::smash_extensions("foo."));
|
||||
$this->assert_equal(".foo", legal_file::smash_extensions(".foo"));
|
||||
$this->assert_equal(".", legal_file::smash_extensions("."));
|
||||
$this->assert_equal("", legal_file::smash_extensions(""));
|
||||
$this->assert_equal(null, legal_file::smash_extensions(null));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user