diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2016-01-18 16:57:30 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2016-01-18 16:57:30 +0100 |
commit | 14c98b4df78a489cfdf4656cb66a79a13116ac17 (patch) | |
tree | ed48eff319ae53b2e94fca8e5ff518536b715068 /apps/files_sharing | |
parent | a32f8aa87a959bf0050cbd7f710a690427f5a1f2 (diff) | |
parent | 30d6222e64e14d589f2ab8b8ef2ec015fc7e1bd5 (diff) | |
download | nextcloud-server-14c98b4df78a489cfdf4656cb66a79a13116ac17.tar.gz nextcloud-server-14c98b4df78a489cfdf4656cb66a79a13116ac17.zip |
Merge pull request #21519 from owncloud/propagate-folder-size
propagate folder size in the same query for write updates
Diffstat (limited to 'apps/files_sharing')
-rw-r--r-- | apps/files_sharing/lib/scanner.php | 29 | ||||
-rw-r--r-- | apps/files_sharing/lib/sharedpropagator.php | 7 | ||||
-rw-r--r-- | apps/files_sharing/lib/sharedstorage.php | 2 |
3 files changed, 33 insertions, 5 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/sharedpropagator.php b/apps/files_sharing/lib/sharedpropagator.php index fd3e14b28f8..29735934499 100644 --- a/apps/files_sharing/lib/sharedpropagator.php +++ b/apps/files_sharing/lib/sharedpropagator.php @@ -32,12 +32,13 @@ class SharedPropagator extends Propagator { /** * @param string $internalPath * @param int $time - * @return array[] all propagated entries + * @param int $sizeDifference + * @return \array[] all propagated entries */ - public function propagateChange($internalPath, $time) { + public function propagateChange($internalPath, $time, $sizeDifference = 0) { $source = $this->storage->getSourcePath($internalPath); /** @var \OC\Files\Storage\Storage $storage */ list($storage, $sourceInternalPath) = \OC\Files\Filesystem::resolvePath($source); - return $storage->getPropagator()->propagateChange($sourceInternalPath, $time); + return $storage->getPropagator()->propagateChange($sourceInternalPath, $time, $sizeDifference); } } 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); } |