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);