aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/Share20/ShareAttributes.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/Share20/ShareAttributes.php')
-rw-r--r--lib/private/Share20/ShareAttributes.php59
1 files changed, 59 insertions, 0 deletions
diff --git a/lib/private/Share20/ShareAttributes.php b/lib/private/Share20/ShareAttributes.php
new file mode 100644
index 00000000000..f90fbd9c6cd
--- /dev/null
+++ b/lib/private/Share20/ShareAttributes.php
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-FileCopyrightText: 2019-2022 ownCloud GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+namespace OC\Share20;
+
+use OCP\Share\IAttributes;
+
+class ShareAttributes implements IAttributes {
+ /** @var array */
+ private $attributes;
+
+ public function __construct() {
+ $this->attributes = [];
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function setAttribute(string $scope, string $key, mixed $value): IAttributes {
+ if (!\array_key_exists($scope, $this->attributes)) {
+ $this->attributes[$scope] = [];
+ }
+ $this->attributes[$scope][$key] = $value;
+ return $this;
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function getAttribute(string $scope, string $key): mixed {
+ if (\array_key_exists($scope, $this->attributes)
+ && \array_key_exists($key, $this->attributes[$scope])) {
+ return $this->attributes[$scope][$key];
+ }
+ return null;
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function toArray(): array {
+ $result = [];
+ foreach ($this->attributes as $scope => $keys) {
+ foreach ($keys as $key => $value) {
+ $result[] = [
+ 'scope' => $scope,
+ 'key' => $key,
+ 'value' => $value,
+ ];
+ }
+ }
+
+ return $result;
+ }
+}