diff options
Diffstat (limited to 'settings/Controller/UsersController.php')
-rw-r--r-- | settings/Controller/UsersController.php | 49 |
1 files changed, 22 insertions, 27 deletions
diff --git a/settings/Controller/UsersController.php b/settings/Controller/UsersController.php index 0638c18c466..f19efefbb68 100644 --- a/settings/Controller/UsersController.php +++ b/settings/Controller/UsersController.php @@ -187,34 +187,35 @@ class UsersController extends Controller { list($adminGroup, $groups) = $groupsInfo->get(); if ($this->isAdmin) { - $subAdmins = $this->groupManager->getSubAdmin()->getAllSubAdmins(); - // New class returns IUser[] so convert back - $result = []; - foreach ($subAdmins as $subAdmin) { - $result[] = [ - 'gid' => $subAdmin['group']->getGID(), - 'uid' => $subAdmin['user']->getUID(), - ]; - } - $subAdmins = $result; + $disabledUsers = $isLDAPUsed ? 0 : $this->userManager->countDisabledUsers(); + $userCount = array_reduce($this->userManager->countUsers(), function($v, $w) { + return $v + (int)$w; + }, 0); } else { - /* Retrieve group IDs from $groups array, so we can pass that information into OC_Group::displayNamesInGroups() */ - $gids = array(); - foreach($groups as $group) { - if (isset($group['id'])) { - $gids[] = $group['id']; + // User is subadmin ! + // Map group list to names to retrieve the countDisabledUsersOfGroups + $userGroups = $this->groupManager->getUserGroups($user); + $groupsNames = []; + $userCount = 0; + + foreach($groups as $key => $group) { + // $userCount += (int)$group['usercount']; + array_push($groupsNames, $group['name']); + // we prevent subadmins from looking up themselves + // so we lower the count of the groups he belongs to + if (array_key_exists($group['id'], $userGroups)) { + $groups[$key]['usercount']--; + $userCount = -1; // we also lower from one the total count } - } - $subAdmins = false; + }; + $userCount += $this->userManager->countUsersOfGroups($groupsInfo->getGroups()); + $disabledUsers = $isLDAPUsed ? 0 : $this->userManager->countDisabledUsersOfGroups($groupsNames); } - - $disabledUsers = $isLDAPUsed ? 0 : $this->userManager->countDisabledUsers(); $disabledUsersGroup = [ 'id' => 'disabled', 'name' => 'Disabled users', 'usercount' => $disabledUsers ]; - $allGroups = array_merge_recursive($adminGroup, $groups); /* QUOTAS PRESETS */ $quotaPreset = $this->config->getAppValue('files', 'quota_preset', '1 GB, 5 GB, 10 GB'); @@ -227,11 +228,6 @@ class UsersController extends Controller { \OC::$server->getEventDispatcher()->dispatch('OC\Settings\Users::loadAdditionalScripts'); - /* TOTAL USERS COUNT */ - $userCount = array_reduce($this->userManager->countUsers(), function($v, $w) { - return $v + (int)$w; - }, 0); - /* LANGUAGES */ $languages = $this->l10nFactory->getLanguages(); @@ -241,10 +237,9 @@ class UsersController extends Controller { $serverData['groups'] = array_merge_recursive($adminGroup, [$disabledUsersGroup], $groups); // Various data $serverData['isAdmin'] = $this->isAdmin; - $serverData['subadmins'] = $subAdmins; $serverData['sortGroups'] = $sortGroupsBy; $serverData['quotaPreset'] = $quotaPreset; - $serverData['userCount'] = $userCount-$disabledUsers; + $serverData['userCount'] = $userCount - $disabledUsers; $serverData['languages'] = $languages; $serverData['defaultLanguage'] = $this->config->getSystemValue('default_language', 'en'); // Settings |