Copy mount options to the storage
This commit is contained in:
parent
4f0f175f8b
commit
7adda88786
|
@ -195,7 +195,7 @@ class MountPoint implements IMountPoint {
|
||||||
$storage = $this->getStorage();
|
$storage = $this->getStorage();
|
||||||
// storage can be null if it couldn't be initialized
|
// storage can be null if it couldn't be initialized
|
||||||
if ($storage != null) {
|
if ($storage != null) {
|
||||||
$this->storage = $wrapper($this->mountPoint, $storage);
|
$this->storage = $wrapper($this->mountPoint, $storage, $this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,8 @@ abstract class Common implements \OC\Files\Storage\Storage {
|
||||||
protected $watcher;
|
protected $watcher;
|
||||||
protected $storageCache;
|
protected $storageCache;
|
||||||
|
|
||||||
|
protected $mountOptions = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string[]
|
* @var string[]
|
||||||
*/
|
*/
|
||||||
|
@ -512,4 +514,20 @@ abstract class Common implements \OC\Files\Storage\Storage {
|
||||||
throw new InvalidCharacterInPathException();
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,6 +98,14 @@ class OC_Util {
|
||||||
return false;
|
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 we aren't logged in, there is no use to set up the filesystem
|
||||||
if ($user != "") {
|
if ($user != "") {
|
||||||
\OC\Files\Filesystem::addStorageWrapper('oc_quota', function ($mountPoint, $storage) {
|
\OC\Files\Filesystem::addStorageWrapper('oc_quota', function ($mountPoint, $storage) {
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
namespace Test\Files;
|
namespace Test\Files;
|
||||||
|
|
||||||
use OC\Files\Cache\Watcher;
|
use OC\Files\Cache\Watcher;
|
||||||
|
use OC\Files\Filesystem;
|
||||||
|
use OC\Files\Mount\MountPoint;
|
||||||
use OC\Files\Storage\Temporary;
|
use OC\Files\Storage\Temporary;
|
||||||
|
|
||||||
class TemporaryNoTouch extends \OC\Files\Storage\Temporary {
|
class TemporaryNoTouch extends \OC\Files\Storage\Temporary {
|
||||||
|
@ -975,4 +977,12 @@ class View extends \Test\TestCase {
|
||||||
$view = new \OC\Files\View('');
|
$view = new \OC\Files\View('');
|
||||||
$this->assertTrue($view->rename('/test/foo.txt', '/test/foo/bar.txt'));
|
$this->assertTrue($view->rename('/test/foo.txt', '/test/foo/bar.txt'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testSetMountOptionsInStorage() {
|
||||||
|
$mount = new MountPoint('\OC\Files\Storage\Temporary', '/asd/', [[]], Filesystem::getLoader(), ['foo' => 'bar']);
|
||||||
|
Filesystem::getMountManager()->addMount($mount);
|
||||||
|
/** @var \OC\Files\Storage\Common $storage */
|
||||||
|
$storage = $mount->getStorage();
|
||||||
|
$this->assertEquals($storage->getMountOption('foo'), 'bar');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue