summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2015-01-15 11:15:15 +0100
committerMorris Jobke <hey@morrisjobke.de>2015-01-15 11:15:15 +0100
commit9b7c1a00935538d78cc677ee5d0eea10fba1def5 (patch)
treed9882fe7dbd82437c6ed93f74527997f055d3dad /apps
parent8666d1d8554c930ee3c7adcd2b057ec7da329b93 (diff)
parenta9f0582e3e23d87be1cff6cb85915ee57d77023c (diff)
downloadnextcloud-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.php1
-rw-r--r--apps/files_sharing/lib/scanner.php45
-rw-r--r--apps/files_sharing/lib/sharedstorage.php2
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) {