aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_sharing/lib/External/Mount.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_sharing/lib/External/Mount.php')
-rw-r--r--apps/files_sharing/lib/External/Mount.php63
1 files changed, 63 insertions, 0 deletions
diff --git a/apps/files_sharing/lib/External/Mount.php b/apps/files_sharing/lib/External/Mount.php
new file mode 100644
index 00000000000..f50c379f85f
--- /dev/null
+++ b/apps/files_sharing/lib/External/Mount.php
@@ -0,0 +1,63 @@
+<?php
+
+/**
+ * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+namespace OCA\Files_Sharing\External;
+
+use OC\Files\Mount\MountPoint;
+use OC\Files\Mount\MoveableMount;
+use OC\Files\Storage\Storage;
+use OCA\Files_Sharing\ISharedMountPoint;
+
+class Mount extends MountPoint implements MoveableMount, ISharedMountPoint {
+
+ /**
+ * @param string|Storage $storage
+ * @param string $mountpoint
+ * @param array $options
+ * @param \OCA\Files_Sharing\External\Manager $manager
+ * @param \OC\Files\Storage\StorageFactory $loader
+ */
+ public function __construct(
+ $storage,
+ $mountpoint,
+ $options,
+ protected $manager,
+ $loader = null,
+ ) {
+ parent::__construct($storage, $mountpoint, $options, $loader, null, null, MountProvider::class);
+ }
+
+ /**
+ * Move the mount point to $target
+ *
+ * @param string $target the target mount point
+ * @return bool
+ */
+ public function moveMount($target) {
+ $result = $this->manager->setMountPoint($this->mountPoint, $target);
+ $this->setMountPoint($target);
+
+ return $result;
+ }
+
+ /**
+ * Remove the mount points
+ */
+ public function removeMount(): bool {
+ return $this->manager->removeShare($this->mountPoint);
+ }
+
+ /**
+ * Get the type of mount point, used to distinguish things like shares and external storage
+ * in the web interface
+ *
+ * @return string
+ */
+ public function getMountType() {
+ return 'shared';
+ }
+}