summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@arthur-schiwon.de>2017-04-26 12:37:48 +0200
committerMorris Jobke <hey@morrisjobke.de>2017-04-29 00:59:09 -0300
commit668fe7df51e097a762d9f03e0329a06d0751cd78 (patch)
tree5d4cb3e398e6cfee2122af5838db617a6c7c62a2
parent8f5f26c88d53b13a9ea7e5d9fe531decf0356879 (diff)
downloadnextcloud-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.php22
-rw-r--r--lib/public/IUserManager.php8
-rw-r--r--settings/users.php13
-rw-r--r--tests/lib/User/ManagerTest.php25
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