summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2015-03-05 17:22:48 +0100
committerRobin Appelman <icewind@owncloud.com>2015-03-11 15:06:48 +0100
commit7adda887865d43ea66e4854826cbb64f942af42c (patch)
tree3bae4cebc69d414dee3a8f4c1c025ef1e25e9bd3 /lib
parent4f0f175f8b1e8719e4b5858322be3d2e30280add (diff)
downloadnextcloud-server-7adda887865d43ea66e4854826cbb64f942af42c.tar.gz
nextcloud-server-7adda887865d43ea66e4854826cbb64f942af42c.zip
Copy mount options to the storage
Diffstat (limited to 'lib')
-rw-r--r--lib/private/files/mount/mountpoint.php2
-rw-r--r--lib/private/files/storage/common.php18
-rw-r--r--lib/private/util.php8
3 files changed, 27 insertions, 1 deletions
diff --git a/lib/private/files/mount/mountpoint.php b/lib/private/files/mount/mountpoint.php
index 02bd8eaa70b..a187f4db109 100644
--- a/lib/private/files/mount/mountpoint.php
+++ b/lib/private/files/mount/mountpoint.php
@@ -195,7 +195,7 @@ class MountPoint implements IMountPoint {
$storage = $this->getStorage();
// storage can be null if it couldn't be initialized
if ($storage != null) {
- $this->storage = $wrapper($this->mountPoint, $storage);
+ $this->storage = $wrapper($this->mountPoint, $storage, $this);
}
}
diff --git a/lib/private/files/storage/common.php b/lib/private/files/storage/common.php
index 8549d5a1fad..db66feb4609 100644
--- a/lib/private/files/storage/common.php
+++ b/lib/private/files/storage/common.php
@@ -34,6 +34,8 @@ abstract class Common implements \OC\Files\Storage\Storage {
protected $watcher;
protected $storageCache;
+ protected $mountOptions = [];
+
/**
* @var string[]
*/
@@ -512,4 +514,20 @@ abstract class Common implements \OC\Files\Storage\Storage {
throw new InvalidCharacterInPathException();
}
}
+
+ /**
+ * @param array $options
+ */
+ public function setMountOptions(array $options) {
+ $this->mountOptions = $options;
+ }
+
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
+ public function getMountOption($name, $default = null) {
+ return isset($this->mountOptions[$name]) ? $this->mountOptions[$name] : $default;
+ }
}
diff --git a/lib/private/util.php b/lib/private/util.php
index 72802409da9..cf76ff5c08e 100644
--- a/lib/private/util.php
+++ b/lib/private/util.php
@@ -98,6 +98,14 @@ class OC_Util {
return false;
}
+ \OC\Files\Filesystem::addStorageWrapper('mount_options', function($mountPoint, \OCP\Files\Storage $storage, \OCP\Files\Mount\IMountPoint $mount) {
+ if($storage->instanceOfStorage('\OC\Files\Storage\Common')) {
+ /** @var \OC\Files\Storage\Common $storage */
+ $storage->setMountOptions($mount->getOptions());
+ }
+ return $storage;
+ });
+
//if we aren't logged in, there is no use to set up the filesystem
if ($user != "") {
\OC\Files\Filesystem::addStorageWrapper('oc_quota', function ($mountPoint, $storage) {