Filesystem: add View->getPath to the cache api
This commit is contained in:
parent
9e2a066c7b
commit
17bcea1585
|
@ -932,4 +932,19 @@ class View {
|
||||||
return null;
|
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'));
|
$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() {
|
function testMountPointOverwrite() {
|
||||||
$storage1 = $this->getTestStorage(false);
|
$storage1 = $this->getTestStorage(false);
|
||||||
$storage2 = $this->getTestStorage();
|
$storage2 = $this->getTestStorage();
|
||||||
|
|
Loading…
Reference in New Issue