From 7fedd33825dc9eb2f3f9bddbc1b3f4301859206f Mon Sep 17 00:00:00 2001 From: Georg Ehrke Date: Wed, 2 Sep 2020 12:25:02 +0200 Subject: Better cleanup routine for statuses Signed-off-by: Georg Ehrke --- apps/user_status/lib/Service/StatusService.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'apps/user_status/lib/Service') diff --git a/apps/user_status/lib/Service/StatusService.php b/apps/user_status/lib/Service/StatusService.php index 06441f60059..1e1e5b1fcc5 100644 --- a/apps/user_status/lib/Service/StatusService.php +++ b/apps/user_status/lib/Service/StatusService.php @@ -341,6 +341,11 @@ class StatusService { */ private function processStatus(UserStatus $status): UserStatus { $clearAt = $status->getClearAt(); + + if ($status->getStatusTimestamp() < $this->timeFactory->getTime() - self::INVALIDATE_STATUS_THRESHOLD + && (!$status->getIsUserDefined() || $status->getStatus() === self::ONLINE)) { + $this->cleanStatus($status); + } if ($clearAt !== null && $clearAt < $this->timeFactory->getTime()) { $this->cleanStatusMessage($status); } @@ -351,6 +356,17 @@ class StatusService { return $status; } + /** + * @param UserStatus $status + */ + private function cleanStatus(UserStatus $status): void { + $status->setStatus(self::OFFLINE); + $status->setStatusTimestamp($this->timeFactory->getTime()); + $status->setIsUserDefined(false); + + $this->mapper->update($status); + } + /** * @param UserStatus $status */ -- cgit v1.2.3