diff options
Diffstat (limited to 'apps/user_status/lib/Connector')
-rw-r--r-- | apps/user_status/lib/Connector/UserStatus.php | 86 | ||||
-rw-r--r-- | apps/user_status/lib/Connector/UserStatusProvider.php | 52 |
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); + } +} |