$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)) {
// 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);