aboutsummaryrefslogtreecommitdiffstats
path: root/apps/dav/lib/Storage/PublicShareWrapper.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/dav/lib/Storage/PublicShareWrapper.php')
-rw-r--r--apps/dav/lib/Storage/PublicShareWrapper.php38
1 files changed, 38 insertions, 0 deletions
diff --git a/apps/dav/lib/Storage/PublicShareWrapper.php b/apps/dav/lib/Storage/PublicShareWrapper.php
new file mode 100644
index 00000000000..fb24abda9d0
--- /dev/null
+++ b/apps/dav/lib/Storage/PublicShareWrapper.php
@@ -0,0 +1,38 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\DAV\Storage;
+
+use OC\Files\Storage\Wrapper\Wrapper;
+use OCP\Share\IShare;
+
+class PublicShareWrapper extends Wrapper {
+
+ private IShare $share;
+
+ /**
+ * @param array $arguments ['storage' => $storage, 'share' => $share]
+ *
+ * $storage: The storage the permissions mask should be applied on
+ * $share: The share to use in case no share is found
+ */
+ public function __construct($arguments) {
+ parent::__construct($arguments);
+ $this->share = $arguments['share'];
+ }
+
+ public function getShare(): IShare {
+ $storage = parent::getWrapperStorage();
+ if (method_exists($storage, 'getShare')) {
+ /** @var \OCA\Files_Sharing\SharedStorage $storage */
+ return $storage->getShare();
+ }
+
+ return $this->share;
+ }
+}