Filesystem: add View->getPath to the cache api
This commit is contained in:
parent
9e2a066c7b
commit
17bcea1585
2 changed files with 38 additions and 0 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in a new issue