Selecting and counting users from the User-Group table needs DISTINCT to avoid duplicates.
In particular when using the catch-all group ("Default Group" setting)
the queries which count and select users from the User-Group table need
the "DISTINCT" option: the catch-all group is replaced by a '%'
wild-card in the query. As users may belong by design to more than one
group counting and selecting users comes out wrong. Even worse: the many
duplicates interfere with the paging logic of the user admin-settings.
Signed-off-by: Claus-Justus Heine <himself@claus-justus-heine.de>
This commit is contained in:
@@ -135,7 +135,7 @@ class QueryProvider implements \ArrayAccess
|
|||||||
"AND g.$gAdmin",
|
"AND g.$gAdmin",
|
||||||
|
|
||||||
Query::COUNT_GROUPS =>
|
Query::COUNT_GROUPS =>
|
||||||
"SELECT COUNT(ug.$ugGID) " .
|
"SELECT COUNT(DISTINCT ug.$ugUID) " .
|
||||||
"FROM $userGroup ug " .
|
"FROM $userGroup ug " .
|
||||||
"WHERE ug.$ugGID LIKE :$gidParam " .
|
"WHERE ug.$ugGID LIKE :$gidParam " .
|
||||||
"AND ug.$ugUID LIKE :$searchParam",
|
"AND ug.$ugUID LIKE :$searchParam",
|
||||||
@@ -152,7 +152,7 @@ class QueryProvider implements \ArrayAccess
|
|||||||
"WHERE g.$gGID = :$gidParam",
|
"WHERE g.$gGID = :$gidParam",
|
||||||
|
|
||||||
Query::FIND_GROUP_USERS =>
|
Query::FIND_GROUP_USERS =>
|
||||||
"SELECT ug.$ugUID AS uid " .
|
"SELECT DISTINCT ug.$ugUID AS uid " .
|
||||||
"FROM $userGroup ug " .
|
"FROM $userGroup ug " .
|
||||||
"WHERE ug.$ugGID LIKE :$gidParam " .
|
"WHERE ug.$ugGID LIKE :$gidParam " .
|
||||||
"AND ug.$ugUID LIKE :$searchParam " .
|
"AND ug.$ugUID LIKE :$searchParam " .
|
||||||
|
|||||||
Reference in New Issue
Block a user