summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/files/filesystem.php5
-rw-r--r--lib/private/files/storage/storagefactory.php6
-rw-r--r--lib/public/files/storage/istoragefactory.php2
3 files changed, 12 insertions, 1 deletions
diff --git a/lib/private/files/filesystem.php b/lib/private/files/filesystem.php
index f90b2738d03..0a0c5c3612a 100644
--- a/lib/private/files/filesystem.php
+++ b/lib/private/files/filesystem.php
@@ -175,7 +175,10 @@ class Filesystem {
* @param callable $wrapper
*/
public static function addStorageWrapper($wrapperName, $wrapper) {
- self::getLoader()->addStorageWrapper($wrapperName, $wrapper);
+ if (!self::getLoader()->addStorageWrapper($wrapperName, $wrapper)) {
+ // do not re-wrap if storage with this name already existed
+ return;
+ }
$mounts = self::getMountManager()->getAll();
foreach ($mounts as $mount) {
diff --git a/lib/private/files/storage/storagefactory.php b/lib/private/files/storage/storagefactory.php
index c9e8d422f9d..9c1c7325b76 100644
--- a/lib/private/files/storage/storagefactory.php
+++ b/lib/private/files/storage/storagefactory.php
@@ -23,9 +23,15 @@ class StorageFactory implements IStorageFactory {
*
* @param string $wrapperName
* @param callable $callback
+ * @return true if the wrapper was added, false if there was already a wrapper with this
+ * name registered
*/
public function addStorageWrapper($wrapperName, $callback) {
+ if (isset($this->storageWrappers[$wrapperName])) {
+ return false;
+ }
$this->storageWrappers[$wrapperName] = $callback;
+ return true;
}
/**
diff --git a/lib/public/files/storage/istoragefactory.php b/lib/public/files/storage/istoragefactory.php
index 769d7011de4..48c12e44cdd 100644
--- a/lib/public/files/storage/istoragefactory.php
+++ b/lib/public/files/storage/istoragefactory.php
@@ -19,6 +19,8 @@ interface IStorageFactory {
*
* @param string $wrapperName
* @param callable $callback
+ * @return true if the wrapper was added, false if there was already a wrapper with this
+ * name registered
*/
public function addStorageWrapper($wrapperName, $callback);