Browse Source

Filesystem: add View->getPath to the cache api

tags/v5.0.0alpha1
Robin Appelman 11 years ago
parent
commit
17bcea1585
2 changed files with 38 additions and 0 deletions
  1. 15
    0
      lib/files/view.php
  2. 23
    0
      tests/lib/files/view.php

+ 15
- 0
lib/files/view.php 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);
}
}

+ 23
- 0
tests/lib/files/view.php 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();

Loading…
Cancel
Save