aboutsummaryrefslogtreecommitdiffstats
path: root/apps/user_status/lib/Connector
diff options
context:
space:
mode:
Diffstat (limited to 'apps/user_status/lib/Connector')
-rw-r--r--apps/user_status/lib/Connector/UserStatus.php86
-rw-r--r--apps/user_status/lib/Connector/UserStatusProvider.php52
2 files changed, 138 insertions, 0 deletions
diff --git a/apps/user_status/lib/Connector/UserStatus.php b/apps/user_status/lib/Connector/UserStatus.php
new file mode 100644
index 00000000000..04467a99e5e
--- /dev/null
+++ b/apps/user_status/lib/Connector/UserStatus.php
@@ -0,0 +1,86 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\UserStatus\Connector;
+
+use DateTimeImmutable;
+use OCA\UserStatus\Db;
+use OCP\UserStatus\IUserStatus;
+
+class UserStatus implements IUserStatus {
+
+ /** @var string */
+ private $userId;
+
+ /** @var string */
+ private $status;
+
+ /** @var string|null */
+ private $message;
+
+ /** @var string|null */
+ private $icon;
+
+ /** @var DateTimeImmutable|null */
+ private $clearAt;
+
+ public function __construct(
+ private Db\UserStatus $internalStatus,
+ ) {
+ $this->userId = $this->internalStatus->getUserId();
+ $this->status = $this->internalStatus->getStatus();
+ $this->message = $this->internalStatus->getCustomMessage();
+ $this->icon = $this->internalStatus->getCustomIcon();
+
+ if ($this->internalStatus->getStatus() === IUserStatus::INVISIBLE) {
+ $this->status = IUserStatus::OFFLINE;
+ }
+ if ($this->internalStatus->getClearAt() !== null) {
+ $this->clearAt = DateTimeImmutable::createFromFormat('U', (string)$this->internalStatus->getClearAt());
+ }
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getUserId(): string {
+ return $this->userId;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getStatus(): string {
+ return $this->status;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getMessage(): ?string {
+ return $this->message;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getIcon(): ?string {
+ return $this->icon;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getClearAt(): ?DateTimeImmutable {
+ return $this->clearAt;
+ }
+
+ public function getInternal(): Db\UserStatus {
+ return $this->internalStatus;
+ }
+}
diff --git a/apps/user_status/lib/Connector/UserStatusProvider.php b/apps/user_status/lib/Connector/UserStatusProvider.php
new file mode 100644
index 00000000000..e84d69d1eb2
--- /dev/null
+++ b/apps/user_status/lib/Connector/UserStatusProvider.php
@@ -0,0 +1,52 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\UserStatus\Connector;
+
+use OC\UserStatus\ISettableProvider;
+use OCA\UserStatus\Service\StatusService;
+use OCP\UserStatus\IProvider;
+
+class UserStatusProvider implements IProvider, ISettableProvider {
+
+ /**
+ * UserStatusProvider constructor.
+ *
+ * @param StatusService $service
+ */
+ public function __construct(
+ private StatusService $service,
+ ) {
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getUserStatuses(array $userIds): array {
+ $statuses = $this->service->findByUserIds($userIds);
+
+ $userStatuses = [];
+ foreach ($statuses as $status) {
+ $userStatuses[$status->getUserId()] = new UserStatus($status);
+ }
+
+ return $userStatuses;
+ }
+
+ public function setUserStatus(string $userId, string $messageId, string $status, bool $createBackup, ?string $customMessage = null): void {
+ $this->service->setUserStatus($userId, $status, $messageId, $createBackup, $customMessage);
+ }
+
+ public function revertUserStatus(string $userId, string $messageId, string $status): void {
+ $this->service->revertUserStatus($userId, $messageId);
+ }
+
+ public function revertMultipleUserStatus(array $userIds, string $messageId, string $status): void {
+ $this->service->revertMultipleUserStatus($userIds, $messageId);
+ }
+}