summaryrefslogtreecommitdiffstats
path: root/settings/Controller/UsersController.php
diff options
context:
space:
mode:
Diffstat (limited to 'settings/Controller/UsersController.php')
-rw-r--r--settings/Controller/UsersController.php49
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