@@ -359,31 +359,44 @@ public function searchInGroup(string $gid, string $search = '', int $limit = -1,
359359 $ this ->fixDI ();
360360
361361 $ query = $ this ->dbConn ->getQueryBuilder ();
362- $ query ->select ('g.uid ' , 'u. displayname ' );
362+ $ query ->select ('g.uid ' , 'dn.value AS displayname ' );
363363
364364 $ query ->from ('group_user ' , 'g ' )
365365 ->where ($ query ->expr ()->eq ('gid ' , $ query ->createNamedParameter ($ gid )))
366366 ->orderBy ('g.uid ' , 'ASC ' );
367367
368- $ query ->leftJoin ('g ' , 'users ' , 'u ' , $ query ->expr ()->eq ('g.uid ' , 'u.uid ' ));
368+ // Join displayname and email from oc_accounts_data
369+ $ query ->leftJoin ('g ' , 'accounts_data ' , 'dn ' ,
370+ $ query ->expr ()->andX (
371+ $ query ->expr ()->eq ('dn.uid ' , 'g.uid ' ),
372+ $ query ->expr ()->eq ('dn.name ' , $ query ->expr ()->literal ('displayname ' ))
373+ )
374+ );
375+
376+ $ query ->leftJoin ('g ' , 'accounts_data ' , 'em ' ,
377+ $ query ->expr ()->andX (
378+ $ query ->expr ()->eq ('em.uid ' , 'g.uid ' ),
379+ $ query ->expr ()->eq ('em.name ' , $ query ->expr ()->literal ('email ' ))
380+ )
381+ );
369382
370383 if ($ search !== '' ) {
371- $ query ->leftJoin ('u ' , 'preferences ' , 'p ' , $ query ->expr ()->andX (
372- $ query ->expr ()->eq ('p.userid ' , 'u.uid ' ),
373- $ query ->expr ()->eq ('p.appid ' , $ query ->expr ()->literal ('settings ' )),
374- $ query ->expr ()->eq ('p.configkey ' , $ query ->expr ()->literal ('email ' ))
375- ))
376- // sqlite doesn't like re-using a single named parameter here
377- ->andWhere (
378- $ query ->expr ()->orX (
379- $ query ->expr ()->ilike ('g.uid ' , $ query ->createNamedParameter ('% ' . $ this ->dbConn ->escapeLikeParameter ($ search ) . '% ' )),
380- $ query ->expr ()->ilike ('u.displayname ' , $ query ->createNamedParameter ('% ' . $ this ->dbConn ->escapeLikeParameter ($ search ) . '% ' )),
381- $ query ->expr ()->ilike ('p.configvalue ' , $ query ->createNamedParameter ('% ' . $ this ->dbConn ->escapeLikeParameter ($ search ) . '% ' ))
382- )
384+ // sqlite doesn't like re-using a single named parameter here
385+ $ searchParam1 = $ query ->createNamedParameter ('% ' . $ this ->dbConn ->escapeLikeParameter ($ search ) . '% ' );
386+ $ searchParam2 = $ query ->createNamedParameter ('% ' . $ this ->dbConn ->escapeLikeParameter ($ search ) . '% ' );
387+ $ searchParam3 = $ query ->createNamedParameter ('% ' . $ this ->dbConn ->escapeLikeParameter ($ search ) . '% ' );
388+
389+ $ query ->andWhere (
390+ $ query ->expr ()->orX (
391+ $ query ->expr ()->ilike ('g.uid ' , $ searchParam1 ),
392+ $ query ->expr ()->ilike ('dn.value ' , $ searchParam2 ),
393+ $ query ->expr ()->ilike ('em.value ' , $ searchParam3 )
383394 )
384- ->orderBy ('u.uid_lower ' , 'ASC ' );
395+ )
396+ ->orderBy ('g.uid ' , 'ASC ' );
385397 }
386398
399+
387400 if ($ limit !== -1 ) {
388401 $ query ->setMaxResults ($ limit );
389402 }
0 commit comments