3232use OCP \Collaboration \Collaborators \ISearchResult ;
3333use OCP \Collaboration \Collaborators \SearchResultType ;
3434use OCP \IConfig ;
35+ use OCP \IGroup ;
3536use OCP \IGroupManager ;
3637use OCP \IUser ;
3738use OCP \IUserManager ;
@@ -75,11 +76,11 @@ public function search($search, $limit, $offset, ISearchResult $searchResult) {
7576 $ userGroups = [];
7677 if ($ this ->shareWithGroupOnly ) {
7778 // Search in all the groups this user is part of
78- $ userGroups = $ this ->groupManager ->getUserGroupIds ($ this ->userSession ->getUser ());
79+ $ userGroups = $ this ->groupManager ->getUserGroups ($ this ->userSession ->getUser ());
7980 foreach ($ userGroups as $ userGroup ) {
80- $ usersTmp = $ this -> groupManager -> displayNamesInGroup ( $ userGroup , $ search , $ limit , $ offset );
81- foreach ($ usersTmp as $ uid => $ userDisplayName ) {
82- $ users [( string ) $ uid ] = $ userDisplayName ;
81+ $ usersInGroup = $ userGroup -> searchDisplayName ( $ search , $ limit , $ offset );
82+ foreach ($ usersInGroup as $ user ) {
83+ $ users [$ user -> getUID () ] = $ user ;
8384 }
8485 }
8586 } else {
@@ -88,7 +89,7 @@ public function search($search, $limit, $offset, ISearchResult $searchResult) {
8889 $ currentUserGroups = $ this ->groupManager ->getUserGroupIds ($ this ->userSession ->getUser ());
8990 foreach ($ usersTmp as $ user ) {
9091 if ($ user ->isEnabled ()) { // Don't keep deactivated users
91- $ users [( string ) $ user ->getUID ()] = $ user-> getDisplayName () ;
92+ $ users [$ user ->getUID ()] = $ user ;
9293
9394 $ addToWideResults = false ;
9495 if ($ this ->shareeEnumeration && !$ this ->shareeEnumerationInGroupOnly ) {
@@ -123,9 +124,15 @@ public function search($search, $limit, $offset, ISearchResult $searchResult) {
123124
124125 $ foundUserById = false ;
125126 $ lowerSearch = strtolower ($ search );
126- foreach ($ users as $ uid => $ userDisplayName ) {
127+ foreach ($ users as $ uid => $ user ) {
128+ $ userDisplayName = $ user ->getDisplayName ();
129+ $ userEmail = $ user ->getEMailAddress ();
127130 $ uid = (string ) $ uid ;
128- if (strtolower ($ uid ) === $ lowerSearch || strtolower ($ userDisplayName ) === $ lowerSearch ) {
131+ if (
132+ strtolower ($ uid ) === $ lowerSearch ||
133+ strtolower ($ userDisplayName ) === $ lowerSearch ||
134+ strtolower ($ userEmail ) === $ lowerSearch
135+ ) {
129136 if (strtolower ($ uid ) === $ lowerSearch ) {
130137 $ foundUserById = true ;
131138 }
@@ -156,7 +163,10 @@ public function search($search, $limit, $offset, ISearchResult $searchResult) {
156163
157164 if ($ this ->shareWithGroupOnly ) {
158165 // Only add, if we have a common group
159- $ commonGroups = array_intersect ($ userGroups , $ this ->groupManager ->getUserGroupIds ($ user ));
166+ $ userGroupIds = array_map (function (IGroup $ group ) {
167+ return $ group ->getGID ();
168+ }, $ userGroups );
169+ $ commonGroups = array_intersect ($ userGroupIds , $ this ->groupManager ->getUserGroupIds ($ user ));
160170 $ addUser = !empty ($ commonGroups );
161171 }
162172
@@ -179,6 +189,9 @@ public function search($search, $limit, $offset, ISearchResult $searchResult) {
179189
180190 $ type = new SearchResultType ('users ' );
181191 $ searchResult ->addResultSet ($ type , $ result ['wide ' ], $ result ['exact ' ]);
192+ if (count ($ result ['exact ' ])) {
193+ $ searchResult ->markExactIdMatch ($ type );
194+ }
182195
183196 return $ hasMoreResults ;
184197 }
0 commit comments