summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2016-01-11 16:09:30 +0100
committerRobin Appelman <icewind@owncloud.com>2016-01-15 15:37:31 +0100
commit30d6222e64e14d589f2ab8b8ef2ec015fc7e1bd5 (patch)
treeed78e68098cdcdda7cab55a17a1b675e1b786d23
parentddbbe1742fda9b508da5c6369dc2a2d5e19cec95 (diff)
downloadnextcloud-server-30d6222e64e14d589f2ab8b8ef2ec015fc7e1bd5.tar.gz
nextcloud-server-30d6222e64e14d589f2ab8b8ef2ec015fc7e1bd5.zip
handle noopscanner in shared scanner
-rw-r--r--apps/files_sharing/lib/scanner.php29
-rw-r--r--apps/files_sharing/lib/sharedstorage.php2
2 files changed, 29 insertions, 2 deletions
diff --git a/apps/files_sharing/lib/scanner.php b/apps/files_sharing/lib/scanner.php
index bd6a28a4934..e9cc40ae42c 100644
--- a/apps/files_sharing/lib/scanner.php
+++ b/apps/files_sharing/lib/scanner.php
@@ -22,10 +22,14 @@
namespace OC\Files\Cache;
+use OC\Files\ObjectStore\NoopScanner;
+use OC\Files\Storage\Shared;
+
/**
* Scanner for SharedStorage
*/
class SharedScanner extends Scanner {
+ private $sourceScanner;
/**
* Returns metadata from the shared storage, but
@@ -35,12 +39,35 @@ class SharedScanner extends Scanner {
*
* @return array an array of metadata of the file
*/
- protected function getData($path){
+ public function getData($path) {
$data = parent::getData($path);
$sourcePath = $this->storage->getSourcePath($path);
list($sourceStorage, $internalPath) = \OC\Files\Filesystem::resolvePath($sourcePath);
$data['permissions'] = $sourceStorage->getPermissions($internalPath);
return $data;
}
+
+ private function getSourceScanner() {
+ if ($this->sourceScanner) {
+ return $this->sourceScanner;
+ }
+ if ($this->storage->instanceOfStorage('\OC\Files\Storage\Shared')) {
+ /** @var \OC\Files\Storage\Storage $storage */
+ list($storage) = $this->storage->resolvePath('');
+ $this->sourceScanner = $storage->getScanner();
+ return $this->sourceScanner;
+ } else {
+ return null;
+ }
+ }
+
+ public function scanFile($file, $reuseExisting = 0, $parentId = -1, $cacheData = null, $lock = true) {
+ $sourceScanner = $this->getSourceScanner();
+ if ($sourceScanner instanceof NoopScanner) {
+ return [];
+ } else {
+ return parent::scanFile($file, $reuseExisting, $parentId, $cacheData, $lock);
+ }
+ }
}
diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php
index 697856e1de5..542d0e9e48c 100644
--- a/apps/files_sharing/lib/sharedstorage.php
+++ b/apps/files_sharing/lib/sharedstorage.php
@@ -609,7 +609,7 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
* @param string $path
* @return array
*/
- private function resolvePath($path) {
+ public function resolvePath($path) {
$source = $this->getSourcePath($path);
return \OC\Files\Filesystem::resolvePath($source);
}