Apply wrappers to existing mounts before registering it

This commit is contained in:
Robin Appelman 2015-01-23 13:48:35 +01:00
parent 67f1534e0f
commit 960ff4f136
2 changed files with 11 additions and 8 deletions

View File

@ -175,15 +175,11 @@ class Filesystem {
* @param callable $wrapper
*/
public static function addStorageWrapper($wrapperName, $wrapper) {
if (!self::getLoader()->addStorageWrapper($wrapperName, $wrapper)) {
$mounts = self::getMountManager()->getAll();
if (!self::getLoader()->addStorageWrapper($wrapperName, $wrapper, $mounts)) {
// do not re-wrap if storage with this name already existed
return;
}
$mounts = self::getMountManager()->getAll();
foreach ($mounts as $mount) {
$mount->wrapStorage($wrapper);
}
}
/**
@ -201,7 +197,7 @@ class Filesystem {
/**
* Returns the mount manager
*
* @return \OC\Files\Filesystem\Mount\Manager
* @return \OC\Files\Mount\Manager
*/
public static function getMountManager() {
if (!self::$mounts) {

View File

@ -23,13 +23,20 @@ class StorageFactory implements IStorageFactory {
*
* @param string $wrapperName name of the wrapper
* @param callable $callback callback
* @param \OCP\Files\Mount\IMountPoint[] $existingMounts existing mount points to apply the wrapper to
* @return bool true if the wrapper was added, false if there was already a wrapper with this
* name registered
*/
public function addStorageWrapper($wrapperName, $callback) {
public function addStorageWrapper($wrapperName, $callback, $existingMounts = []) {
if (isset($this->storageWrappers[$wrapperName])) {
return false;
}
// apply to existing mounts before registering it to prevent applying it double in MountPoint::createStorage
foreach ($existingMounts as $mount) {
$mount->wrapStorage($callback);
}
$this->storageWrappers[$wrapperName] = $callback;
return true;
}