From b39113ae3ea59db7058fe829fc0a5e4dfd49bac6 Mon Sep 17 00:00:00 2001 From: infoneo Date: Sat, 8 Jun 2013 18:39:25 +0300 Subject: [PATCH] Update mapper.php Now slugify is performed on whole filename (including extension). Changed method of adding index number (using regular expressions pathinfo() method removed). --- lib/files/mapper.php | 33 ++++++++------------------------- 1 file changed, 8 insertions(+), 25 deletions(-) diff --git a/lib/files/mapper.php b/lib/files/mapper.php index d9e116bf25..748b65dc4f 100644 --- a/lib/files/mapper.php +++ b/lib/files/mapper.php @@ -174,26 +174,7 @@ class Mapper $sluggedElements = array(); $last= end($pathElements); - $parts = pathinfo($last); - $filename = $parts['filename']; - $extension = $parts['extension']; - - - if ((preg_match('~[-\w]+~', $filename)) && (preg_match('~[-\w]+~', $extension))){ - - // rip off the extension ext from last element - array_pop($pathElements); - array_push($pathElements, $filename); - - } else { - - if (isset($parts['extension'])) { - unset($parts['extension']); - } - - } - foreach ($pathElements as $pathElement) { // remove empty elements if (empty($pathElement)) { @@ -206,13 +187,15 @@ class Mapper // apply index to file name if ($index !== null) { $last= array_pop($sluggedElements); - array_push($sluggedElements, $last.'-'.$index); - } + + // if filename contains periods - add index number before last period + if (preg_match('~\.[^\.]+$~i',$last,$extension)){ + array_push($sluggedElements, substr($last,0,-(strlen($extension[0]))).'-'.$index.$extension[0]); + } else { + // if filename doesn't contain periods add index ofter the last char + array_push($sluggedElements, $last.'-'.$index); + } - // add back the extension - if (isset($parts['extension'])) { - $last= array_pop($sluggedElements); - array_push($sluggedElements, $last.'.'.$parts['extension']); } $sluggedPath = $this->unchangedPhysicalRoot.implode('/', $sluggedElements);