From a0a1a95591bd340a6c8ed79a38817e16f4759347 Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Thu, 28 May 2020 17:26:07 +0200 Subject: [PATCH] Search also the email and displayname in user mangement for groups Signed-off-by: Morris Jobke --- lib/private/Group/Database.php | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/lib/private/Group/Database.php b/lib/private/Group/Database.php index 8e6181a56cdbe..96988b7ef70f8 100644 --- a/lib/private/Group/Database.php +++ b/lib/private/Group/Database.php @@ -348,15 +348,27 @@ public function usersInGroup($gid, $search = '', $limit = -1, $offset = 0) { $this->fixDI(); $query = $this->dbConn->getQueryBuilder(); - $query->select('uid') - ->from('group_user') + $query->select('g.uid') + ->from('group_user', 'g') ->where($query->expr()->eq('gid', $query->createNamedParameter($gid))) - ->orderBy('uid', 'ASC'); + ->orderBy('g.uid', 'ASC'); if ($search !== '') { - $query->andWhere($query->expr()->like('uid', $query->createNamedParameter( - '%' . $this->dbConn->escapeLikeParameter($search) . '%' - ))); + $query->leftJoin('g', 'users', 'u', $query->expr()->eq('g.uid', 'u.uid')) + ->leftJoin('u', 'preferences', 'p', $query->expr()->andX( + $query->expr()->eq('userid', 'u.uid'), + $query->expr()->eq('appid', $query->expr()->literal('settings')), + $query->expr()->eq('configkey', $query->expr()->literal('email'))) + ) + // sqlite doesn't like re-using a single named parameter here + ->andWhere( + $query->expr()->orX( + $query->expr()->ilike('g.uid', $query->createNamedParameter('%' . $this->dbConn->escapeLikeParameter($search) . '%')), + $query->expr()->ilike('displayname', $query->createNamedParameter('%' . $this->dbConn->escapeLikeParameter($search) . '%')), + $query->expr()->ilike('configvalue', $query->createNamedParameter('%' . $this->dbConn->escapeLikeParameter($search) . '%')) + ) + ) + ->orderBy('uid_lower', 'ASC'); } if ($limit !== -1) {