diff --git a/settings/Controller/UsersController.php b/settings/Controller/UsersController.php index 93cc040de62..08c3cc90b63 100644 --- a/settings/Controller/UsersController.php +++ b/settings/Controller/UsersController.php @@ -187,31 +187,38 @@ class UsersController extends Controller { }); } - if ($this->isAdmin) { - $disabledUsers = $isLDAPUsed ? -1 : $this->userManager->countDisabledUsers(); - $userCount = $isLDAPUsed ? 0 : array_reduce($this->userManager->countUsers(), function($v, $w) { - return $v + (int)$w; - }, 0); - } else { - // User is subadmin ! - // Map group list to names to retrieve the countDisabledUsersOfGroups - $userGroups = $this->groupManager->getUserGroups($user); - $groupsNames = []; - $userCount = 0; + $disabledUsers = -1; + $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 - } - }; - $userCount += $isLDAPUsed ? 0 : $this->userManager->countUsersOfGroups($groupsInfo->getGroups()); - $disabledUsers = $isLDAPUsed ? -1 : $this->userManager->countDisabledUsersOfGroups($groupsNames); + if(!$isLDAPUsed) { + if ($this->isAdmin) { + $disabledUsers = $this->userManager->countDisabledUsers(); + $userCount = array_reduce($this->userManager->countUsers(), function($v, $w) { + return $v + (int)$w; + }, 0); + } else { + // User is subadmin ! + // Map group list to names to retrieve the countDisabledUsersOfGroups + $userGroups = $this->groupManager->getUserGroups($user); + $groupsNames = []; + + 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 + } + }; + $userCount += $this->userManager->countUsersOfGroups($groupsInfo->getGroups()); + $disabledUsers = $this->userManager->countDisabledUsersOfGroups($groupsNames); + } + + $userCount -= $disabledUsers; } + $disabledUsersGroup = [ 'id' => 'disabled', 'name' => 'Disabled users', @@ -240,7 +247,7 @@ class UsersController extends Controller { $serverData['isAdmin'] = $this->isAdmin; $serverData['sortGroups'] = $sortGroupsBy; $serverData['quotaPreset'] = $quotaPreset; - $serverData['userCount'] = $userCount - $disabledUsers; + $serverData['userCount'] = $userCount; $serverData['languages'] = $languages; $serverData['defaultLanguage'] = $this->config->getSystemValue('default_language', 'en'); // Settings diff --git a/settings/src/store/users.js b/settings/src/store/users.js index 1b174b21bf4..0933bb2692f 100644 --- a/settings/src/store/users.js +++ b/settings/src/store/users.js @@ -98,8 +98,8 @@ const mutations = { let group = state.groups.find(groupSearch => groupSearch.id == gid); let user = state.users.find(user => user.id == userid); // increase count if user is enabled - if (group && user.enabled) { - group.usercount++; + if (group && user.enabled && state.userCount > 0) { + group.usercount++; } let groups = user.groups; groups.push(gid); @@ -109,7 +109,7 @@ const mutations = { let group = state.groups.find(groupSearch => groupSearch.id == gid); let user = state.users.find(user => user.id == userid); // lower count if user is enabled - if (group && user.enabled) { + if (group && user.enabled && state.userCount > 0) { group.usercount--; } let groups = user.groups; @@ -135,12 +135,14 @@ const mutations = { let user = state.users.find(user => user.id == userid); user.enabled = enabled; // increment or not - state.groups.find(group => group.id == 'disabled').usercount += enabled ? -1 : 1; - state.userCount += enabled ? 1 : -1; - user.groups.forEach(group => { - // Increment disabled count - state.groups.find(groupSearch => groupSearch.id == group).disabled += enabled ? -1 : 1; - }); + if (state.userCount > 0) { + state.groups.find(group => group.id === 'disabled').usercount += enabled ? -1 : 1 + state.userCount += enabled ? 1 : -1 + user.groups.forEach(group => { + // Increment disabled count + state.groups.find(groupSearch => groupSearch.id === group).disabled += enabled ? -1 : 1 + }) + } }, setUserData(state, { userid, key, value }) { if (key === 'quota') { diff --git a/settings/src/views/Users.vue b/settings/src/views/Users.vue index dcbef1cd799..b38af6b5b21 100644 --- a/settings/src/views/Users.vue +++ b/settings/src/views/Users.vue @@ -392,6 +392,10 @@ export default { || disabledGroup.utils.counter === -1) // add disabled if ldap enabled ) { groups.unshift(disabledGroup); + if (disabledGroup.utils.counter === -1) { + // hides the counter instead of showing -1 + delete disabledGroup.utils.counter + } } }