diff options
author | provokateurin <kate@provokateurin.de> | 2025-03-17 07:44:05 +0100 |
---|---|---|
committer | provokateurin <kate@provokateurin.de> | 2025-03-17 07:44:05 +0100 |
commit | 1f82047ac38e28b3bfd794611ba4f195df83c699 (patch) | |
tree | fc9e6b5b3a2b6fb6453bcc9d524c15e3e8bdc54c | |
parent | 4c09ba8f4d7e6265a11b4740033fa5f33b30b1e5 (diff) | |
download | nextcloud-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.php | 23 | ||||
-rw-r--r-- | lib/public/IUserManager.php | 5 |
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 |