diff options
author | Morris Jobke <hey@morrisjobke.de> | 2015-01-15 11:15:15 +0100 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2015-01-15 11:15:15 +0100 |
commit | 9b7c1a00935538d78cc677ee5d0eea10fba1def5 (patch) | |
tree | d9882fe7dbd82437c6ed93f74527997f055d3dad /apps | |
parent | 8666d1d8554c930ee3c7adcd2b057ec7da329b93 (diff) | |
parent | a9f0582e3e23d87be1cff6cb85915ee57d77023c (diff) | |
download | nextcloud-server-9b7c1a00935538d78cc677ee5d0eea10fba1def5.tar.gz nextcloud-server-9b7c1a00935538d78cc677ee5d0eea10fba1def5.zip |
Merge pull request #13347 from owncloud/share-scanpermissionsfromsource
Use source storage permissions when scanning shared storage
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files_sharing/appinfo/app.php | 1 | ||||
-rw-r--r-- | apps/files_sharing/lib/scanner.php | 45 | ||||
-rw-r--r-- | apps/files_sharing/lib/sharedstorage.php | 2 |
3 files changed, 47 insertions, 1 deletions
diff --git a/apps/files_sharing/appinfo/app.php b/apps/files_sharing/appinfo/app.php index 83dc3441668..837ceacbab3 100644 --- a/apps/files_sharing/appinfo/app.php +++ b/apps/files_sharing/appinfo/app.php @@ -4,6 +4,7 @@ $l = \OC::$server->getL10N('files_sharing'); OC::$CLASSPATH['OC_Share_Backend_File'] = 'files_sharing/lib/share/file.php'; OC::$CLASSPATH['OC_Share_Backend_Folder'] = 'files_sharing/lib/share/folder.php'; OC::$CLASSPATH['OC\Files\Storage\Shared'] = 'files_sharing/lib/sharedstorage.php'; +OC::$CLASSPATH['OC\Files\Cache\SharedScanner'] = 'files_sharing/lib/scanner.php'; OC::$CLASSPATH['OC\Files\Cache\Shared_Cache'] = 'files_sharing/lib/cache.php'; OC::$CLASSPATH['OC\Files\Cache\Shared_Permissions'] = 'files_sharing/lib/permissions.php'; OC::$CLASSPATH['OC\Files\Cache\Shared_Updater'] = 'files_sharing/lib/updater.php'; diff --git a/apps/files_sharing/lib/scanner.php b/apps/files_sharing/lib/scanner.php new file mode 100644 index 00000000000..48c1ae9e084 --- /dev/null +++ b/apps/files_sharing/lib/scanner.php @@ -0,0 +1,45 @@ +<?php +/** + * ownCloud + * + * @author Vincent Petry + * @copyright 2015 Vincent Petry <pvince81@owncloud.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + */ + +namespace OC\Files\Cache; + +/** + * Scanner for SharedStorage + */ +class SharedScanner extends Scanner { + + /** + * Returns metadata from the shared storage, but + * with permissions from the source storage. + * + * @param string $path path of the file for which to retrieve metadata + * + * @return array an array of metadata of the file + */ + 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; + } +} + diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php index 1ac57053e25..d992f8f70b4 100644 --- a/apps/files_sharing/lib/sharedstorage.php +++ b/apps/files_sharing/lib/sharedstorage.php @@ -501,7 +501,7 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage { if (!$storage) { $storage = $this; } - return new \OC\Files\Cache\Scanner($storage); + return new \OC\Files\Cache\SharedScanner($storage); } public function getWatcher($path = '', $storage = null) { |