* @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);
- }
}
/**
/**
* Returns the mount manager
*
- * @return \OC\Files\Filesystem\Mount\Manager
+ * @return \OC\Files\Mount\Manager
*/
public static function getMountManager() {
if (!self::$mounts) {
*
* @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;
}