summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/files/cache/scanner.php13
-rw-r--r--lib/private/files/storage/common.php17
-rw-r--r--lib/private/files/storage/storage.php6
-rw-r--r--lib/private/files/storage/wrapper/encryption.php23
-rw-r--r--lib/private/files/storage/wrapper/wrapper.php8
5 files changed, 57 insertions, 10 deletions
diff --git a/lib/private/files/cache/scanner.php b/lib/private/files/cache/scanner.php
index 0878b6c60a0..c1ba7c01461 100644
--- a/lib/private/files/cache/scanner.php
+++ b/lib/private/files/cache/scanner.php
@@ -109,17 +109,10 @@ class Scanner extends BasicEmitter {
\OCP\Util::writeLog('OC\Files\Cache\Scanner', "!!! Path '$path' is not accessible or present !!!", \OCP\Util::DEBUG);
return null;
}
- $data = array();
- $data['mimetype'] = $this->storage->getMimeType($path);
- $data['mtime'] = $this->storage->filemtime($path);
- if ($data['mimetype'] == 'httpd/unix-directory') {
- $data['size'] = -1; //unknown
- } else {
- $data['size'] = $this->storage->filesize($path);
- }
- $data['etag'] = $this->storage->getETag($path);
- $data['storage_mtime'] = $data['mtime'];
+
+ $data = $this->storage->getData($path);
$data['permissions'] = $permissions;
+
return $data;
}
diff --git a/lib/private/files/storage/common.php b/lib/private/files/storage/common.php
index 66ed713e22d..0294fc4b5be 100644
--- a/lib/private/files/storage/common.php
+++ b/lib/private/files/storage/common.php
@@ -580,4 +580,21 @@ abstract class Common implements Storage {
}
return $result;
}
+
+ /**
+ * @inheritdoc
+ */
+ public function getData($path) {
+ $data = [];
+ $data['mimetype'] = $this->getMimeType($path);
+ $data['mtime'] = $this->filemtime($path);
+ if ($data['mimetype'] == 'httpd/unix-directory') {
+ $data['size'] = -1; //unknown
+ } else {
+ $data['size'] = $this->filesize($path);
+ }
+ $data['etag'] = $this->getETag($path);
+ $data['storage_mtime'] = $data['mtime'];
+ return $data;
+ }
}
diff --git a/lib/private/files/storage/storage.php b/lib/private/files/storage/storage.php
index 4b75fa9da89..9fda743afcf 100644
--- a/lib/private/files/storage/storage.php
+++ b/lib/private/files/storage/storage.php
@@ -70,4 +70,10 @@ interface Storage extends \OCP\Files\Storage {
*/
public function getStorageCache();
+ /**
+ * @param $path
+ * @return array
+ */
+ public function getData($path);
+
}
diff --git a/lib/private/files/storage/wrapper/encryption.php b/lib/private/files/storage/wrapper/encryption.php
index 01bd861e3a2..df91b7189dc 100644
--- a/lib/private/files/storage/wrapper/encryption.php
+++ b/lib/private/files/storage/wrapper/encryption.php
@@ -111,6 +111,29 @@ class Encryption extends Wrapper {
}
/**
+ * @param $path
+ * @return array
+ */
+ public function getData($path) {
+ $data = $this->storage->getData($path);
+ $fullPath = $this->getFullPath($path);
+
+ if (isset($this->unencryptedSize[$fullPath])) {
+ $size = $this->unencryptedSize[$fullPath];
+
+ $data['encrypted'] = true;
+ $data['size'] = $size;
+ } else {
+ $info = $this->getCache()->get($path);
+ if (isset($info['fileid']) && $info['encrypted']) {
+ $data['encrypted'] = true;
+ $data['size'] = $info['size'];
+ }
+ }
+
+ return $data;
+ }
+ /**
* see http://php.net/manual/en/function.file_get_contents.php
*
* @param string $path
diff --git a/lib/private/files/storage/wrapper/wrapper.php b/lib/private/files/storage/wrapper/wrapper.php
index 2552c926e02..0bea457c877 100644
--- a/lib/private/files/storage/wrapper/wrapper.php
+++ b/lib/private/files/storage/wrapper/wrapper.php
@@ -525,4 +525,12 @@ class Wrapper implements \OC\Files\Storage\Storage {
public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) {
return $this->storage->moveFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath);
}
+
+ /**
+ * @param $path
+ * @return array
+ */
+ public function getData($path) {
+ return $this->storage->getData($path);
+ }
}