Browse Source
UserManager can now count disabled users
Users page takes advantage of that
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
pull/1234/head
Arthur Schiwon
9 years ago
committed by
Morris Jobke
No known key found for this signature in database
GPG Key ID: 9CE5ED29E7FCD38A
4 changed files with
60 additions and
8 deletions
-
lib/private/User/Manager.php
-
lib/public/IUserManager.php
-
settings/users.php
-
tests/lib/User/ManagerTest.php
|
|
@ -408,6 +408,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 |
|
|
|
* |
|
|
|
|
|
@ -154,6 +154,14 @@ interface IUserManager { |
|
|
|
*/ |
|
|
|
public function callForAllUsers(\Closure $callback, $search = ''); |
|
|
|
|
|
|
|
/** |
|
|
|
* returns how many users have logged in once |
|
|
|
* |
|
|
|
* @return int |
|
|
|
* @since 11.0.0 |
|
|
|
*/ |
|
|
|
public function countDisabledUsers(); |
|
|
|
|
|
|
|
/** |
|
|
|
* returns how many users have logged in once |
|
|
|
* |
|
|
|
|
|
@ -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'); |
|
|
|
|
|
@ -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
|
|
|
|