]> source.dussan.org Git - nextcloud-server.git/commitdiff
Allow to overwrite share target mountpoints 19321/head
authorJoas Schilling <coding@schilljs.com>
Thu, 6 Feb 2020 16:09:09 +0000 (17:09 +0100)
committerJoas Schilling <coding@schilljs.com>
Mon, 17 Feb 2020 08:04:19 +0000 (09:04 +0100)
Signed-off-by: Joas Schilling <coding@schilljs.com>
apps/files_sharing/lib/SharedMount.php
lib/composer/composer/autoload_classmap.php
lib/composer/composer/autoload_static.php
lib/public/Share/Events/VerifyMountPointEvent.php [new file with mode: 0644]

index a1a011a9b7d69e864086cfbe759191f601115ede..91f3c39ba0505a5b3605edc0949800d7e09fd914 100644 (file)
@@ -33,7 +33,9 @@ use OC\Files\Filesystem;
 use OC\Files\Mount\MountPoint;
 use OC\Files\Mount\MoveableMount;
 use OC\Files\View;
+use OCP\EventDispatcher\IEventDispatcher;
 use OCP\Files\Storage\IStorageFactory;
+use OCP\Share\Events\VerifyMountPointEvent;
 
 /**
  * Shared mount points can be moved by the user
@@ -91,6 +93,12 @@ class SharedMount extends MountPoint implements MoveableMount {
                $mountPoint = basename($share->getTarget());
                $parent = dirname($share->getTarget());
 
+               $event = new VerifyMountPointEvent($share, $this->recipientView, $parent);
+               /** @var IEventDispatcher $dispatcher */
+               $dispatcher = \OC::$server->query(IEventDispatcher::class);
+               $dispatcher->dispatchTyped($event);
+               $parent = $event->getParent();
+
                if ($folderExistCache->hasKey($parent)) {
                        $parentExists = $folderExistCache->get($parent);
                } else {
index d66039ae1fda4d909765d004bbc64e009eecc9cb..c9b1ab1f2d22808737db52563d706198962afcfe 100644 (file)
@@ -428,6 +428,7 @@ return array(
     'OCP\\Settings\\ISubAdminSettings' => $baseDir . '/lib/public/Settings/ISubAdminSettings.php',
     'OCP\\Share' => $baseDir . '/lib/public/Share.php',
     'OCP\\Share\\Events\\ShareCreatedEvent' => $baseDir . '/lib/public/Share/Events/ShareCreatedEvent.php',
+    'OCP\\Share\\Events\\VerifyMountPointEvent' => $baseDir . '/lib/public/Share/Events/VerifyMountPointEvent.php',
     'OCP\\Share\\Exceptions\\GenericShareException' => $baseDir . '/lib/public/Share/Exceptions/GenericShareException.php',
     'OCP\\Share\\Exceptions\\IllegalIDChangeException' => $baseDir . '/lib/public/Share/Exceptions/IllegalIDChangeException.php',
     'OCP\\Share\\Exceptions\\ShareNotFound' => $baseDir . '/lib/public/Share/Exceptions/ShareNotFound.php',
index 0a65eae24bbfb5a353023937e2d9dee29c2bf9ec..1d1c385ed7ba260bc175349960c2181f03eb3aa0 100644 (file)
@@ -457,6 +457,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
         'OCP\\Settings\\ISubAdminSettings' => __DIR__ . '/../../..' . '/lib/public/Settings/ISubAdminSettings.php',
         'OCP\\Share' => __DIR__ . '/../../..' . '/lib/public/Share.php',
         'OCP\\Share\\Events\\ShareCreatedEvent' => __DIR__ . '/../../..' . '/lib/public/Share/Events/ShareCreatedEvent.php',
+        'OCP\\Share\\Events\\VerifyMountPointEvent' => __DIR__ . '/../../..' . '/lib/public/Share/Events/VerifyMountPointEvent.php',
         'OCP\\Share\\Exceptions\\GenericShareException' => __DIR__ . '/../../..' . '/lib/public/Share/Exceptions/GenericShareException.php',
         'OCP\\Share\\Exceptions\\IllegalIDChangeException' => __DIR__ . '/../../..' . '/lib/public/Share/Exceptions/IllegalIDChangeException.php',
         'OCP\\Share\\Exceptions\\ShareNotFound' => __DIR__ . '/../../..' . '/lib/public/Share/Exceptions/ShareNotFound.php',
diff --git a/lib/public/Share/Events/VerifyMountPointEvent.php b/lib/public/Share/Events/VerifyMountPointEvent.php
new file mode 100644 (file)
index 0000000..75914f9
--- /dev/null
@@ -0,0 +1,83 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2020, Joas Schilling <coding@schilljs.com>
+ *
+ * @author Joas Schilling <coding@schilljs.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\Share\Events;
+
+use OC\Files\View;
+use OCP\EventDispatcher\Event;
+use OCP\Share\IShare;
+
+/**
+ * @since 19.0.0
+ */
+class VerifyMountPointEvent extends Event {
+
+       /** @var IShare */
+       private $share;
+       /** @var View */
+       private $view;
+       /** @var string */
+       private $parent;
+
+       /**
+        * @since 19.0.0
+        */
+       public function __construct(IShare $share,
+                                                               View $view,
+                                                               string $parent) {
+               parent::__construct();
+
+               $this->share = $share;
+               $this->view = $view;
+               $this->parent = $parent;
+       }
+
+       /**
+        * @since 19.0.0
+        */
+       public function getShare(): IShare {
+               return $this->share;
+       }
+
+       /**
+        * @since 19.0.0
+        */
+       public function getView(): View {
+               return $this->view;
+       }
+
+       /**
+        * @since 19.0.0
+        */
+       public function getParent(): string {
+               return $this->parent;
+       }
+
+       /**
+        * @since 19.0.0
+        */
+       public function setParent(string $parent): void {
+               $this->parent = $parent;
+       }
+}