summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2015-01-14 22:39:19 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2015-01-14 22:39:19 +0100
commit337c43ce9266106c803e6593e2006fd2b11b4f81 (patch)
tree3f30c3f015f7110d1700d8dd6550227e66f60f40
parent64d7463ca369ccf7b141e6699f8973781e531bd4 (diff)
parent96dff341e271f2c662f35fe0888e7e0992a8d33b (diff)
downloadnextcloud-server-337c43ce9266106c803e6593e2006fd2b11b4f81.tar.gz
nextcloud-server-337c43ce9266106c803e6593e2006fd2b11b4f81.zip
Merge pull request #13317 from owncloud/partfile-fileinfo
Return valid fileinfo objects for part files
-rw-r--r--lib/private/files/view.php31
-rw-r--r--tests/lib/files/view.php14
2 files changed, 45 insertions, 0 deletions
diff --git a/lib/private/files/view.php b/lib/private/files/view.php
index 57441c8e680..76b7d34e756 100644
--- a/lib/private/files/view.php
+++ b/lib/private/files/view.php
@@ -906,6 +906,9 @@ class View {
if (!Filesystem::isValidPath($path)) {
return $data;
}
+ if (Cache\Scanner::isPartialFile($path)) {
+ return $this->getPartFileInfo($path);
+ }
$path = Filesystem::normalizePath($this->fakeRoot . '/' . $path);
$mount = Filesystem::getMountManager()->find($path);
@@ -1318,4 +1321,32 @@ class View {
return $result;
}
+
+ /**
+ * Get a fileinfo object for files that are ignored in the cache (part files)
+ *
+ * @param string $path
+ * @return \OCP\Files\FileInfo
+ */
+ private function getPartFileInfo($path) {
+ $mount = $this->getMount($path);
+ $storage = $mount->getStorage();
+ $internalPath = $mount->getInternalPath($this->getAbsolutePath($path));
+ return new FileInfo(
+ $this->getAbsolutePath($path),
+ $storage,
+ $internalPath,
+ [
+ 'fileid' => null,
+ 'mimetype' => $storage->getMimeType($internalPath),
+ 'name' => basename($path),
+ 'etag' => null,
+ 'size' => $storage->filesize($internalPath),
+ 'mtime' => $storage->filemtime($internalPath),
+ 'encrypted' => false,
+ 'permissions' => \OCP\Constants::PERMISSION_ALL
+ ],
+ $mount
+ );
+ }
}
diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php
index 25065967260..3ff19d7385d 100644
--- a/tests/lib/files/view.php
+++ b/tests/lib/files/view.php
@@ -703,6 +703,20 @@ class View extends \Test\TestCase {
$this->assertEquals($expectedPath, $view->getAbsolutePath($relativePath));
}
+ public function testPartFileInfo() {
+ $storage = new Temporary(array());
+ $scanner = $storage->getScanner();
+ \OC\Files\Filesystem::mount($storage, array(), '/test/');
+ $storage->file_put_contents('test.part', 'foobar');
+ $scanner->scan('');
+ $view = new \OC\Files\View('/test');
+ $info = $view->getFileInfo('test.part');
+
+ $this->assertInstanceOf('\OCP\Files\FileInfo', $info);
+ $this->assertNull($info->getId());
+ $this->assertEquals(6, $info->getSize());
+ }
+
function absolutePathProvider() {
return array(
array('/files/', ''),