aboutsummaryrefslogtreecommitdiffstats
path: root/apps/user_status/lib/Connector/UserStatus.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/user_status/lib/Connector/UserStatus.php')
-rw-r--r--apps/user_status/lib/Connector/UserStatus.php86
1 files changed, 86 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;
+ }
+}