diff --git a/admin/themes/default/js/user_list.js b/admin/themes/default/js/user_list.js index 2b3833983..af31f4f26 100644 --- a/admin/themes/default/js/user_list.js +++ b/admin/themes/default/js/user_list.js @@ -228,6 +228,16 @@ $( document ).ready(function() { $(".advanced-filter-select").change(update_user_list); $("#user_search").on("input", update_user_list); + // disables certain status, level and group filters if they do not have users + $(` + .advanced-filter-select[name="filter_status"] option:not(:selected), + .advanced-filter-select[name="filter_level"] option:not(:selected), + .advanced-filter-select[name="filter_group"] option:not(:selected) + `).each(function() { + if (!this.textContent.split(' ')[1]){ + $(this).prop('disabled', true); + } + }); /*View manager*/ diff --git a/admin/themes/default/template/user_list.tpl b/admin/themes/default/template/user_list.tpl index 851361239..28dc90120 100644 --- a/admin/themes/default/template/user_list.tpl +++ b/admin/themes/default/template/user_list.tpl @@ -293,7 +293,7 @@ $(document).ready(function() {
@@ -302,7 +302,7 @@ $(document).ready(function() {
@@ -311,7 +311,7 @@ $(document).ready(function() {
diff --git a/admin/user_list.php b/admin/user_list.php index 8d814aac9..13904f028 100644 --- a/admin/user_list.php +++ b/admin/user_list.php @@ -26,8 +26,10 @@ include(PHPWG_ROOT_PATH.'admin/include/user_tabs.inc.php'); $groups = array(); $query = ' -SELECT id, name +SELECT id, name, COUNT(ug.user_id) as nb_users_of FROM `'.GROUPS_TABLE.'` + LEFT JOIN `'. USER_GROUP_TABLE .'` ug ON id = ug.group_id + GROUP BY name ORDER BY name ASC ;'; $result = pwg_query($query); @@ -35,8 +37,11 @@ $result = pwg_query($query); while ($row = pwg_db_fetch_assoc($result)) { $groups[$row['id']] = $row['name']; + $groups_for_filter[$row['id']] = $row['nb_users_of'] ? $row['name'] . ' ('. $row['nb_users_of'] .')' : $row['name']; } +$template->assign('groups_for_filter', $groups_for_filter); + // +-----------------------------------------------------------------------+ // | Dates for filtering | // +-----------------------------------------------------------------------+ @@ -142,6 +147,23 @@ foreach (get_enums(USER_INFOS_TABLE, 'status') as $status) $label_of_status[$status] = l10n('user_status_'.$status); } +$query = ' +SELECT + status, + COUNT(*) AS nb_users_of + FROM '. USER_INFOS_TABLE .' + WHERE user_id != '. $conf['guest_id'] .' + GROUP BY status +'; + +$result = pwg_query($query); +while($row = pwg_db_fetch_assoc($result)) +{ + $nb_users_by_status[$row['status']] = l10n('user_status_'.$row['status']) . ' ('. $row['nb_users_of'] .')'; +} + +$nb_users_by_status = array_merge($label_of_status, $nb_users_by_status); + $pref_status_options = $label_of_status; // a simple "admin" can't set/remove statuses webmaster/admin @@ -154,14 +176,33 @@ if ('admin' == $user['status']) $template->assign('label_of_status', $label_of_status); $template->assign('pref_status_options', $pref_status_options); $template->assign('pref_status_selected', 'normal'); +$template->assign('nb_users_by_status', $nb_users_by_status); // user level options foreach ($conf['available_permission_levels'] as $level) { $level_options[$level] = l10n(sprintf('Level %d', $level)); } + +$query = ' +SELECT + level, + COUNT(*) AS nb_users_of + FROM '. USER_INFOS_TABLE .' + WHERE user_id != '. $conf['guest_id'] .' + GROUP BY level +'; + +$result = pwg_query($query); +$nb_users_by_level = $level_options; +while($row = pwg_db_fetch_assoc($result)) +{ + $nb_users_by_level[$row['level']] = l10n(sprintf('Level %d', $row['level'])) . ' ('. $row['nb_users_of'] .')'; +} + $template->assign('level_options', $level_options); $template->assign('level_selected', $default_user['level']); +$template->assign('nb_users_by_level', $nb_users_by_level); $query = ' SELECT id, name, is_default