aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorprovokateurin <kate@provokateurin.de>2025-03-17 07:44:05 +0100
committerprovokateurin <kate@provokateurin.de>2025-03-17 07:44:05 +0100
commit1f82047ac38e28b3bfd794611ba4f195df83c699 (patch)
treefc9e6b5b3a2b6fb6453bcc9d524c15e3e8bdc54c
parent4c09ba8f4d7e6265a11b4740033fa5f33b30b1e5 (diff)
downloadnextcloud-server-fix/user-manager/limit-enabled-users-counting-seen.tar.gz
nextcloud-server-fix/user-manager/limit-enabled-users-counting-seen.zip
fix(User\Manager): Only count currently enabled users when counting seen usersfix/user-manager/limit-enabled-users-counting-seen
Signed-off-by: provokateurin <kate@provokateurin.de>
-rw-r--r--lib/private/User/Manager.php23
-rw-r--r--lib/public/IUserManager.php5
2 files changed, 15 insertions, 13 deletions
diff --git a/lib/private/User/Manager.php b/lib/private/User/Manager.php
index 62a7b39be16..8ecf0994a10 100644
--- a/lib/private/User/Manager.php
+++ b/lib/private/User/Manager.php
@@ -607,18 +607,21 @@ class Manager extends PublicEmitter implements IUserManager {
return $count;
}
- /**
- * returns how many users have logged in once
- *
- * @return int
- * @since 11.0.0
- */
- public function countSeenUsers() {
+ public function countSeenUsers(): int {
$queryBuilder = \OC::$server->getDatabaseConnection()->getQueryBuilder();
$queryBuilder->select($queryBuilder->func()->count('*'))
- ->from('preferences')
- ->where($queryBuilder->expr()->eq('appid', $queryBuilder->createNamedParameter('login')))
- ->andWhere($queryBuilder->expr()->eq('configkey', $queryBuilder->createNamedParameter('lastLogin')));
+ ->from('preferences', 'p1')
+ ->leftJoin('p1', 'preferences', 'p2', $queryBuilder->expr()->andX(
+ $queryBuilder->expr()->eq('p1.userid', 'p2.userid'),
+ $queryBuilder->expr()->eq('p2.appid', $queryBuilder->createNamedParameter('core')),
+ $queryBuilder->expr()->eq('p2.configkey', $queryBuilder->createNamedParameter('enabled')),
+ ))
+ ->where($queryBuilder->expr()->eq('p1.appid', $queryBuilder->createNamedParameter('login')))
+ ->andWhere($queryBuilder->expr()->eq('p1.configkey', $queryBuilder->createNamedParameter('lastLogin')))
+ ->andWhere($queryBuilder->expr()->orX(
+ $queryBuilder->expr()->isNull('p2.configvalue'),
+ $queryBuilder->expr()->eq('p2.configvalue', $queryBuilder->createNamedParameter('true'), IQueryBuilder::PARAM_STR),
+ ));
$query = $queryBuilder->execute();
diff --git a/lib/public/IUserManager.php b/lib/public/IUserManager.php
index 50eaa9c98b7..f2c96de4ec4 100644
--- a/lib/public/IUserManager.php
+++ b/lib/public/IUserManager.php
@@ -190,12 +190,11 @@ interface IUserManager {
public function countDisabledUsers();
/**
- * returns how many users have logged in once
+ * returns how many enabled users have logged in once
*
- * @return int
* @since 11.0.0
*/
- public function countSeenUsers();
+ public function countSeenUsers(): int;
/**
* @param \Closure $callback