Load mount specific options from the mount config

This commit is contained in:
Robin Appelman 2014-12-16 13:33:58 +01:00
parent 532ba99f1c
commit 95a145f67f
3 changed files with 43 additions and 4 deletions

View file

@ -33,10 +33,11 @@ class ConfigAdapter implements IMountProvider {
$objectClass = $options['options']['objectstore']['class'];
$options['options']['objectstore'] = new $objectClass($options['options']['objectstore']);
}
$mountOptions = isset($options['mountOptions']) ? $options['mountOptions'] : [];
if (isset($options['personal']) && $options['personal']) {
$mounts[] = new PersonalMount($options['class'], $mountPoint, $options['options'], $loader);
$mounts[] = new PersonalMount($options['class'], $mountPoint, $options['options'], $loader, $mountOptions);
} else {
$mounts[] = new MountPoint($options['class'], $mountPoint, $options['options'], $loader);
$mounts[] = new MountPoint($options['class'], $mountPoint, $options['options'], $loader, $mountOptions);
}
}
return $mounts;

View file

@ -20,9 +20,22 @@ class MountPoint implements IMountPoint {
protected $storage = null;
protected $class;
protected $storageId;
/**
* Configuration options for the storage backend
*
* @var array
*/
protected $arguments = array();
protected $mountPoint;
/**
* Mount specific options
*
* @var array
*/
protected $mountOptions = array();
/**
* @var \OC\Files\Storage\StorageFactory $loader
*/
@ -31,10 +44,11 @@ class MountPoint implements IMountPoint {
/**
* @param string|\OC\Files\Storage\Storage $storage
* @param string $mountpoint
* @param array $arguments (optional)\
* @param array $arguments (optional) configuration for the storage backend
* @param \OCP\Files\Storage\IStorageFactory $loader
* @param array $mountOptions mount specific options
*/
public function __construct($storage, $mountpoint, $arguments = null, $loader = null) {
public function __construct($storage, $mountpoint, $arguments = null, $loader = null, $mountOptions = null) {
if (is_null($arguments)) {
$arguments = array();
}
@ -44,6 +58,10 @@ class MountPoint implements IMountPoint {
$this->loader = $loader;
}
if (!is_null($mountOptions)) {
$this->mountOptions = $mountOptions;
}
$mountpoint = $this->formatPath($mountpoint);
if ($storage instanceof Storage) {
$this->class = get_class($storage);
@ -161,4 +179,15 @@ class MountPoint implements IMountPoint {
public function wrapStorage($wrapper) {
$this->storage = $wrapper($this->mountPoint, $this->getStorage());
}
/**
* Get a mount option
*
* @param string $name Name of the mount option to get
* @param mixed $default Default value for the mount option
* @return mixed
*/
public function getOption($name, $default) {
return isset($this->mountOptions[$name]) ? $this->mountOptions[$name] : $default;
}
}

View file

@ -55,4 +55,13 @@ interface IMountPoint {
* @param callable $wrapper
*/
public function wrapStorage($wrapper);
/**
* Get a mount option
*
* @param string $name Name of the mount option to get
* @param mixed $default Default value for the mount option
* @return mixed
*/
public function getOption($name, $default);
}