Merge pull request #2454 from owncloud/fixing-file-mapper-ext-master
Fixing file mapper ext master
This commit is contained in:
commit
bbeb657c03
|
@ -167,31 +167,40 @@ class Mapper
|
|||
$query->execute(array($logicPath, $physicalPath, md5($logicPath), md5($physicalPath)));
|
||||
}
|
||||
|
||||
private function slugifyPath($path, $index=null) {
|
||||
public function slugifyPath($path, $index=null) {
|
||||
$path = $this->stripRootFolder($path, $this->unchangedPhysicalRoot);
|
||||
|
||||
$pathElements = explode('/', $path);
|
||||
$sluggedElements = array();
|
||||
|
||||
// rip off the extension ext from last element
|
||||
$last= end($pathElements);
|
||||
$parts = pathinfo($last);
|
||||
$filename = $parts['filename'];
|
||||
array_pop($pathElements);
|
||||
array_push($pathElements, $filename);
|
||||
|
||||
foreach ($pathElements as $pathElement) {
|
||||
// remove empty elements
|
||||
if (empty($pathElement)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// TODO: remove file ext before slugify on last element
|
||||
$sluggedElements[] = self::slugify($pathElement);
|
||||
}
|
||||
|
||||
//
|
||||
// TODO: add the index before the file extension
|
||||
//
|
||||
// apply index to file name
|
||||
if ($index !== null) {
|
||||
$last= end($sluggedElements);
|
||||
array_pop($sluggedElements);
|
||||
$last= array_pop($sluggedElements);
|
||||
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);
|
||||
return $this->stripLast($sluggedPath);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
<?php
|
||||
/**
|
||||
* ownCloud
|
||||
*
|
||||
* @author Thomas Müller
|
||||
* @copyright 2013 Thomas Müller thomas.mueller@owncloud.com
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace Test\Files;
|
||||
|
||||
class Mapper extends \PHPUnit_Framework_TestCase {
|
||||
|
||||
/**
|
||||
* @var \OC\Files\Mapper
|
||||
*/
|
||||
private $mapper = null;
|
||||
|
||||
public function setUp() {
|
||||
$this->mapper = new \OC\Files\Mapper('D:/');
|
||||
}
|
||||
|
||||
public function testSlugifyPath() {
|
||||
// with extension
|
||||
$this->assertEquals('D:/text.txt', $this->mapper->slugifyPath('D:/text.txt'));
|
||||
$this->assertEquals('D:/text-2.txt', $this->mapper->slugifyPath('D:/text.txt', 2));
|
||||
$this->assertEquals('D:/a/b/text.txt', $this->mapper->slugifyPath('D:/a/b/text.txt'));
|
||||
|
||||
// without extension
|
||||
$this->assertEquals('D:/text', $this->mapper->slugifyPath('D:/text'));
|
||||
$this->assertEquals('D:/text-2', $this->mapper->slugifyPath('D:/text', 2));
|
||||
$this->assertEquals('D:/a/b/text', $this->mapper->slugifyPath('D:/a/b/text'));
|
||||
|
||||
// with double dot
|
||||
$this->assertEquals('D:/text-text.txt', $this->mapper->slugifyPath('D:/text.text.txt'));
|
||||
$this->assertEquals('D:/text-text-2.txt', $this->mapper->slugifyPath('D:/text.text.txt', 2));
|
||||
$this->assertEquals('D:/a/b/text-text.txt', $this->mapper->slugifyPath('D:/a/b/text.text.txt'));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue