aboutsummaryrefslogtreecommitdiffstats
path: root/apps/user_status/lib/Db
diff options
context:
space:
mode:
authorGeorg Ehrke <developer@georgehrke.com>2020-09-02 12:25:02 +0200
committerGeorg Ehrke <developer@georgehrke.com>2020-09-07 09:22:38 +0200
commit7fedd33825dc9eb2f3f9bddbc1b3f4301859206f (patch)
tree2a9bb8c11f53d3bfdb8911a25d03cc5ae88d01ee /apps/user_status/lib/Db
parent10df7198fe5a1318afaaf6396b64627f70245070 (diff)
downloadnextcloud-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.php22
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