diff options
author | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2017-04-26 12:37:48 +0200 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2017-04-29 00:59:09 -0300 |
commit | 668fe7df51e097a762d9f03e0329a06d0751cd78 (patch) | |
tree | 5d4cb3e398e6cfee2122af5838db617a6c7c62a2 | |
parent | 8f5f26c88d53b13a9ea7e5d9fe531decf0356879 (diff) | |
download | nextcloud-server-668fe7df51e097a762d9f03e0329a06d0751cd78.tar.gz nextcloud-server-668fe7df51e097a762d9f03e0329a06d0751cd78.zip |
UserManager can now count disabled users
Users page takes advantage of that
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
-rw-r--r-- | lib/private/User/Manager.php | 22 | ||||
-rw-r--r-- | lib/public/IUserManager.php | 8 | ||||
-rw-r--r-- | settings/users.php | 13 | ||||
-rw-r--r-- | tests/lib/User/ManagerTest.php | 25 |
4 files changed, 60 insertions, 8 deletions
diff --git a/lib/private/User/Manager.php b/lib/private/User/Manager.php index 4a87dc7161c..0477f23e552 100644 --- a/lib/private/User/Manager.php +++ b/lib/private/User/Manager.php @@ -412,6 +412,28 @@ class Manager extends PublicEmitter implements IUserManager { * returns how many users have logged in once * * @return int + * @since 12.0.0 + */ + public function countDisabledUsers() { + $queryBuilder = \OC::$server->getDatabaseConnection()->getQueryBuilder(); + $queryBuilder->select($queryBuilder->createFunction('COUNT(*)')) + ->from('preferences') + ->where($queryBuilder->expr()->eq('appid', $queryBuilder->createNamedParameter('core'))) + ->andWhere($queryBuilder->expr()->eq('configkey', $queryBuilder->createNamedParameter('enabled'))) + ->andWhere($queryBuilder->expr()->eq('configvalue', $queryBuilder->createNamedParameter('false'))); + + $query = $queryBuilder->execute(); + + $result = (int)$query->fetchColumn(); + $query->closeCursor(); + + return $result; + } + + /** + * returns how many users have logged in once + * + * @return int * @since 11.0.0 */ public function countSeenUsers() { diff --git a/lib/public/IUserManager.php b/lib/public/IUserManager.php index 1ec392dfd82..6c6724487de 100644 --- a/lib/public/IUserManager.php +++ b/lib/public/IUserManager.php @@ -160,6 +160,14 @@ interface IUserManager { * @return int * @since 11.0.0 */ + public function countDisabledUsers(); + + /** + * returns how many users have logged in once + * + * @return int + * @since 11.0.0 + */ public function countSeenUsers(); /** diff --git a/settings/users.php b/settings/users.php index 9f3433aa33a..4d214bf9502 100644 --- a/settings/users.php +++ b/settings/users.php @@ -45,6 +45,7 @@ $groupManager = \OC::$server->getGroupManager(); // Set the sort option: SORT_USERCOUNT or SORT_GROUPNAME $sortGroupsBy = \OC\Group\MetaData::SORT_USERCOUNT; +$isLDAPUsed = false; if (\OC_App::isEnabled('user_ldap')) { $isLDAPUsed = $groupManager->isBackendUsed('\OCA\User_LDAP\Group_LDAP') @@ -95,17 +96,13 @@ if($isAdmin) { } $subAdmins = false; } -$disabledUsers = 0; -foreach (OC_User::getUsers() as $uid) { - if(!$userManager->get($uid)->isEnabled()) { - $disabledUsers++; - } -} -$disabledUsersGroup = array( + +$disabledUsers = $isLDAPUsed ? 0 : $userManager->countDisabledUsers(); +$disabledUsersGroup = [ 'id' => '_disabledUsers', 'name' => '_disabledUsers', 'usercount' => $disabledUsers -); +]; // load preset quotas $quotaPreset=$config->getAppValue('files', 'quota_preset', '1 GB, 5 GB, 10 GB'); diff --git a/tests/lib/User/ManagerTest.php b/tests/lib/User/ManagerTest.php index aaee64f1863..cf725aae671 100644 --- a/tests/lib/User/ManagerTest.php +++ b/tests/lib/User/ManagerTest.php @@ -510,6 +510,31 @@ class ManagerTest extends TestCase { $this->assertEquals(7 + 16, $users); } + public function testCountUsersOnlyDisabled() { + $manager = \OC::$server->getUserManager(); + // count other users in the db before adding our own + $countBefore = $manager->countDisabledUsers(); + + //Add test users + $user1 = $manager->createUser('testdisabledcount1', 'testdisabledcount1'); + + $user2 = $manager->createUser('testdisabledcount2', 'testdisabledcount2'); + $user2->setEnabled(false); + + $user3 = $manager->createUser('testdisabledcount3', 'testdisabledcount3'); + + $user4 = $manager->createUser('testdisabledcount4', 'testdisabledcount4'); + $user4->setEnabled(false); + + $this->assertEquals($countBefore + 2, $manager->countDisabledUsers()); + + //cleanup + $user1->delete(); + $user2->delete(); + $user3->delete(); + $user4->delete(); + } + public function testCountUsersOnlySeen() { $manager = \OC::$server->getUserManager(); // count other users in the db before adding our own |