Filesystem: add View->getPath to the cache api

This commit is contained in:
Robin Appelman 2013-01-27 00:13:16 +01:00
parent 9e2a066c7b
commit 17bcea1585
2 changed files with 38 additions and 0 deletions

View File

@ -932,4 +932,19 @@ class View {
return null;
}
}
/**
* Get the path of a file by id, relative to the view
*
* Note that the resulting path is not guarantied to be unique for the id, multiple paths can point to the same file
*
* @param int $id
* @return string
*/
public function getPath($id) {
list($storage, $internalPath) = Cache\Cache::getById($id);
$mount = Mount::findById($storage);
$fullPath = $mount->getMountPoint() . $internalPath;
return $this->getRelativePath($fullPath);
}
}

View File

@ -98,6 +98,29 @@ class View extends \PHPUnit_Framework_TestCase {
$this->assertEquals(array(), $rootView->getDirectoryContent('/non/existing'));
}
function testGetPath() {
$storage1 = $this->getTestStorage();
$storage2 = $this->getTestStorage();
$storage3 = $this->getTestStorage();
\OC\Files\Filesystem::mount($storage1, array(), '/');
\OC\Files\Filesystem::mount($storage2, array(), '/substorage');
\OC\Files\Filesystem::mount($storage3, array(), '/folder/anotherstorage');
$rootView = new \OC\Files\View('');
$cachedData = $rootView->getFileInfo('/foo.txt');
$id1 = $cachedData['fileid'];
$this->assertEquals('/foo.txt', $rootView->getPath($id1));
$cachedData = $rootView->getFileInfo('/substorage/foo.txt');
$id2 = $cachedData['fileid'];
$this->assertEquals('/substorage/foo.txt', $rootView->getPath($id2));
$folderView = new \OC\Files\View('/substorage');
$this->assertEquals('/foo.txt', $folderView->getPath($id2));
$this->assertNull($folderView->getPath($id1));
}
function testMountPointOverwrite() {
$storage1 = $this->getTestStorage(false);
$storage2 = $this->getTestStorage();