@@ -348,15 +348,27 @@ public function usersInGroup($gid, $search = '', $limit = -1, $offset = 0) {
348348 $ this ->fixDI ();
349349
350350 $ query = $ this ->dbConn ->getQueryBuilder ();
351- $ query ->select ('uid ' )
352- ->from ('group_user ' )
351+ $ query ->select ('g. uid ' )
352+ ->from ('group_user ' , ' g ' )
353353 ->where ($ query ->expr ()->eq ('gid ' , $ query ->createNamedParameter ($ gid )))
354- ->orderBy ('uid ' , 'ASC ' );
354+ ->orderBy ('g. uid ' , 'ASC ' );
355355
356356 if ($ search !== '' ) {
357- $ query ->andWhere ($ query ->expr ()->like ('uid ' , $ query ->createNamedParameter (
358- '% ' . $ this ->dbConn ->escapeLikeParameter ($ search ) . '% '
359- )));
357+ $ query ->leftJoin ('g ' , 'users ' , 'u ' , $ query ->expr ()->eq ('g.uid ' , 'u.uid ' ))
358+ ->leftJoin ('u ' , 'preferences ' , 'p ' , $ query ->expr ()->andX (
359+ $ query ->expr ()->eq ('userid ' , 'u.uid ' ),
360+ $ query ->expr ()->eq ('appid ' , $ query ->expr ()->literal ('settings ' )),
361+ $ query ->expr ()->eq ('configkey ' , $ query ->expr ()->literal ('email ' )))
362+ )
363+ // sqlite doesn't like re-using a single named parameter here
364+ ->andWhere (
365+ $ query ->expr ()->orX (
366+ $ query ->expr ()->ilike ('g.uid ' , $ query ->createNamedParameter ('% ' . $ this ->dbConn ->escapeLikeParameter ($ search ) . '% ' )),
367+ $ query ->expr ()->ilike ('displayname ' , $ query ->createNamedParameter ('% ' . $ this ->dbConn ->escapeLikeParameter ($ search ) . '% ' )),
368+ $ query ->expr ()->ilike ('configvalue ' , $ query ->createNamedParameter ('% ' . $ this ->dbConn ->escapeLikeParameter ($ search ) . '% ' ))
369+ )
370+ )
371+ ->orderBy ('uid_lower ' , 'ASC ' );
360372 }
361373
362374 if ($ limit !== -1 ) {
0 commit comments