diff options
author | Georg Ehrke <developer@georgehrke.com> | 2020-09-02 12:25:02 +0200 |
---|---|---|
committer | Georg Ehrke <developer@georgehrke.com> | 2020-09-07 09:22:38 +0200 |
commit | 7fedd33825dc9eb2f3f9bddbc1b3f4301859206f (patch) | |
tree | 2a9bb8c11f53d3bfdb8911a25d03cc5ae88d01ee /apps/user_status/lib/Db | |
parent | 10df7198fe5a1318afaaf6396b64627f70245070 (diff) | |
download | nextcloud-server-7fedd33825dc9eb2f3f9bddbc1b3f4301859206f.tar.gz nextcloud-server-7fedd33825dc9eb2f3f9bddbc1b3f4301859206f.zip |
Better cleanup routine for statuses
Signed-off-by: Georg Ehrke <developer@georgehrke.com>
Diffstat (limited to 'apps/user_status/lib/Db')
-rw-r--r-- | apps/user_status/lib/Db/UserStatusMapper.php | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/apps/user_status/lib/Db/UserStatusMapper.php b/apps/user_status/lib/Db/UserStatusMapper.php index 0f3693a4d21..3bae5b37807 100644 --- a/apps/user_status/lib/Db/UserStatusMapper.php +++ b/apps/user_status/lib/Db/UserStatusMapper.php @@ -25,6 +25,7 @@ declare(strict_types=1); namespace OCA\UserStatus\Db; +use OCA\UserStatus\Service\StatusService; use OCP\AppFramework\Db\QBMapper; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IDBConnection; @@ -81,7 +82,7 @@ class UserStatusMapper extends QBMapper { ->select('*') ->from($this->tableName) ->orderBy('status_timestamp', 'DESC') - ->where($qb->expr()->notIn('status', $qb->createNamedParameter(['online', 'away'], IQueryBuilder::PARAM_STR_ARRAY))) + ->where($qb->expr()->notIn('status', $qb->createNamedParameter([StatusService::ONLINE, StatusService::AWAY], IQueryBuilder::PARAM_STR_ARRAY))) ->orWhere($qb->expr()->isNotNull('message_id')) ->orWhere($qb->expr()->isNotNull('custom_icon')) ->orWhere($qb->expr()->isNotNull('custom_message')); @@ -126,6 +127,25 @@ class UserStatusMapper extends QBMapper { } /** + * @param int $olderThan + * @param int $now + */ + public function clearStatusesOlderThan(int $olderThan, int $now): void { + $qb = $this->db->getQueryBuilder(); + $qb->update($this->tableName) + ->set('status', $qb->createNamedParameter(StatusService::OFFLINE)) + ->set('is_user_defined', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL)) + ->set('status_timestamp', $qb->createNamedParameter($now, IQueryBuilder::PARAM_INT)) + ->where($qb->expr()->lte('status_timestamp', $qb->createNamedParameter($olderThan, IQueryBuilder::PARAM_INT))) + ->andWhere($qb->expr()->orX( + $qb->expr()->eq('is_user_defined', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL), IQueryBuilder::PARAM_BOOL), + $qb->expr()->eq('status', $qb->createNamedParameter(StatusService::ONLINE)) + )); + + $qb->execute(); + } + + /** * Clear all statuses older than a given timestamp * * @param int $timestamp |