From ec28c54dbca77a3aad8d34a327c89458889f70ff Mon Sep 17 00:00:00 2001 From: Abijeet Date: Sat, 16 Dec 2017 17:18:05 +0530 Subject: Adds search by email function on the users screen. Fixes #7175. - Updated the query to fetch the users in users > everyone tab. - Updated the query to fetch the users in users > admin tab. - Tested to ensure that the disabled users are also being fetched. - Added test cases. Signed-off-by: Abijeet --- lib/private/User/Database.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'lib/private') diff --git a/lib/private/User/Database.php b/lib/private/User/Database.php index 471ff1f45ae..2d96369de63 100644 --- a/lib/private/User/Database.php +++ b/lib/private/User/Database.php @@ -194,7 +194,10 @@ class Database extends Backend implements IUserBackend { if ($search !== '') { $parameters[] = '%' . \OC::$server->getDatabaseConnection()->escapeLikeParameter($search) . '%'; $parameters[] = '%' . \OC::$server->getDatabaseConnection()->escapeLikeParameter($search) . '%'; - $searchLike = ' WHERE LOWER(`displayname`) LIKE LOWER(?) OR ' + $parameters[] = '%' . \OC::$server->getDatabaseConnection()->escapeLikeParameter($search) . '%'; + $searchLike .= ' LEFT JOIN `*PREFIX*preferences` ON `userid` = `uid` AND `appid` = \'settings\' AND `configkey` = \'email\''; + $searchLike .= ' WHERE LOWER(`configvalue`) LIKE LOWER(?)'; + $searchLike .= ' OR LOWER(`displayname`) LIKE LOWER(?) OR ' . 'LOWER(`uid`) LIKE LOWER(?)'; } @@ -288,8 +291,14 @@ class Database extends Backend implements IUserBackend { $parameters = []; $searchLike = ''; if ($search !== '') { + // Email + $parameters[] = '%' . \OC::$server->getDatabaseConnection()->escapeLikeParameter($search) . '%'; + $searchLike .= ' LEFT JOIN `*PREFIX*preferences` ON `userid` = `uid` AND `appid` = \'settings\' AND `configkey` = \'email\''; + $searchLike .= ' WHERE LOWER(`configvalue`) LIKE LOWER(?)'; + // UID $parameters[] = '%' . \OC::$server->getDatabaseConnection()->escapeLikeParameter($search) . '%'; - $searchLike = ' WHERE LOWER(`uid`) LIKE LOWER(?)'; + $searchLike .= ' OR LOWER(`uid`) LIKE LOWER(?)'; + // Display name $parameters[] = '%' . \OC::$server->getDatabaseConnection()->escapeLikeParameter($search) . '%'; $searchLike .= ' OR LOWER(`displayname`) LIKE LOWER(?)'; } -- cgit v1.2.3