Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2020-05-28 18:26:07 +0300
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>2020-08-05 17:11:41 +0300
commit74e98940efc93dffe7e9bdc42a8cbe20065b390f (patch)
tree8b9cf2bc67c5c9daf6e0d3cc597ae34d286eed2e /lib
parent02680cf93d7ba38a467d8f505424eb357cee5816 (diff)
Search also the email and displayname in user mangement for groups
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
Diffstat (limited to 'lib')
-rw-r--r--lib/private/Group/Database.php24
1 files changed, 18 insertions, 6 deletions
diff --git a/lib/private/Group/Database.php b/lib/private/Group/Database.php
index ec8f7ea6f53..a8fa8ed25d7 100644
--- a/lib/private/Group/Database.php
+++ b/lib/private/Group/Database.php
@@ -345,15 +345,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) {