diff options
author | Morris Jobke <hey@morrisjobke.de> | 2020-08-05 16:09:00 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-05 16:09:00 +0200 |
commit | 79fc7e78b7de7ee7bc749294ac79de4566fb04e9 (patch) | |
tree | 022cc740e4b3481ca6ef8f760566057200e10595 /lib/private | |
parent | 2b4b5db16d7655eb06263fe8fe75983c1833d16f (diff) | |
parent | 907d3542dc478a081b95bfaf2811b4381a22c76c (diff) | |
download | nextcloud-server-79fc7e78b7de7ee7bc749294ac79de4566fb04e9.tar.gz nextcloud-server-79fc7e78b7de7ee7bc749294ac79de4566fb04e9.zip |
Merge pull request #21138 from nextcloud/fix/noid/search-in-group-displayname-email
Search also the email and displayname in user mangement for groups
Diffstat (limited to 'lib/private')
-rw-r--r-- | lib/private/Group/Database.php | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/lib/private/Group/Database.php b/lib/private/Group/Database.php index 8e6181a56cd..97094c67728 100644 --- a/lib/private/Group/Database.php +++ b/lib/private/Group/Database.php @@ -348,15 +348,27 @@ class Database extends ABackend implements $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('p.userid', 'u.uid'), + $query->expr()->eq('p.appid', $query->expr()->literal('settings')), + $query->expr()->eq('p.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('u.displayname', $query->createNamedParameter('%' . $this->dbConn->escapeLikeParameter($search) . '%')), + $query->expr()->ilike('p.configvalue', $query->createNamedParameter('%' . $this->dbConn->escapeLikeParameter($search) . '%')) + ) + ) + ->orderBy('u.uid_lower', 'ASC'); } if ($limit !== -1) { |