@@ -372,22 +372,19 @@ public function filterCircleDetails(Circle $circle): void {
372372 }
373373
374374 $ expr = $ this ->expr ();
375- $ orX = $ expr -> orX () ;
375+ $ andX = null ;
376376 if ($ circle ->getDisplayName () !== '' ) {
377- $ andX = $ expr -> andX () ;
377+ $ andX = [] ;
378378 foreach (explode (' ' , $ circle ->getDisplayName ()) as $ word ) {
379- $ andX ->add (
380- $ expr ->iLike (
381- $ this ->getDefaultSelectAlias () . '. ' . 'display_name ' ,
382- $ this ->createNamedParameter ('% ' . $ word . '% ' )
383- )
379+ $ andX [] = $ expr ->iLike (
380+ $ this ->getDefaultSelectAlias () . '. ' . 'display_name ' ,
381+ $ this ->createNamedParameter ('% ' . $ word . '% ' )
384382 );
385383 }
386- $ orX ->add ($ andX );
387384 }
388385
389- if ($ orX -> count () > 0 ) {
390- $ this ->andWhere ($ orX );
386+ if ($ andX !== null ) {
387+ $ this ->andWhere (... $ andX );
391388 }
392389
393390 if ($ circle ->getSource () > 0 ) {
@@ -572,46 +569,39 @@ protected function limitRemoteVisibility(string $alias, bool $sensitive, string
572569 $ aliasRemoteCircleOwner = $ this ->generateAlias ($ aliasRemoteCircle , self ::OWNER );
573570
574571 $ expr = $ this ->expr ();
575- $ orX = $ expr ->orX ();
576- $ orX ->add (
577- $ expr ->eq ($ aliasRemote . '.type ' , $ this ->createNamedParameter (RemoteInstance::TYPE_GLOBALSCALE ))
578- );
572+ $ orX = [$ expr ->eq ($ aliasRemote . '.type ' , $ this ->createNamedParameter (RemoteInstance::TYPE_GLOBALSCALE ))];
579573
580- $ orExtOrPassive = $ expr ->orX ();
581- $ orExtOrPassive ->add (
582- $ expr ->eq ($ aliasRemote . '.type ' , $ this ->createNamedParameter (RemoteInstance::TYPE_EXTERNAL ))
583- );
574+ $ orExtOrPassive = [$ expr ->eq ($ aliasRemote . '.type ' , $ this ->createNamedParameter (RemoteInstance::TYPE_EXTERNAL ))];
584575 if (!$ sensitive ) {
585- $ orExtOrPassive ->add (
586- $ expr ->eq ($ aliasRemote . '.type ' , $ this ->createNamedParameter (RemoteInstance::TYPE_PASSIVE ))
587- );
576+ $ orExtOrPassive [] = $ expr ->eq ($ aliasRemote . '.type ' , $ this ->createNamedParameter (RemoteInstance::TYPE_PASSIVE ));
588577 } else {
589578 if ($ this ->getDefaultSelectAlias () === CoreQueryBuilder::MEMBER ) {
590- $ orExtOrPassive-> add ( $ this ->limitRemoteVisibility_Sensitive_Members ($ aliasRemote) );
579+ $ orExtOrPassive[] = $ this ->limitRemoteVisibility_Sensitive_Members ($ aliasRemote );
591580 }
592581 }
593582
594- $ orInstance = $ expr ->orX ();
595- $ orInstance ->add ($ expr ->isNotNull ($ aliasRemoteMember . '.instance ' ));
596- $ orInstance ->add ($ expr ->isNotNull ($ aliasRemoteCircleOwner . '.instance ' ));
583+ $ orInstance = $ expr ->orX (
584+ $ expr ->isNotNull ($ aliasRemoteMember . '.instance ' ),
585+ $ expr ->isNotNull ($ aliasRemoteCircleOwner . '.instance ' ),
586+ );
597587
598- $ andExternal = $ expr ->andX ();
599- $ andExternal ->add ($ orExtOrPassive );
600- $ andExternal ->add ($ orInstance );
588+ $ andExternal = $ expr ->andX (
589+ $ expr ->orX (...$ orExtOrPassive ),
590+ $ orInstance ,
591+ );
601592
602- $ orExtOrTrusted = $ expr ->orX ();
603- $ orExtOrTrusted ->add ($ andExternal );
604- $ orExtOrTrusted ->add (
605- $ expr ->eq ($ aliasRemote . '.type ' , $ this ->createNamedParameter (RemoteInstance::TYPE_TRUSTED ))
593+ $ orExtOrTrusted = $ expr ->orX (
594+ $ andExternal ,
595+ $ expr ->eq ($ aliasRemote . '.type ' , $ this ->createNamedParameter (RemoteInstance::TYPE_TRUSTED )),
606596 );
607597
608- $ andTrusted = $ expr ->andX ();
609- $ andTrusted -> add ( $ orExtOrTrusted);
610- $ andTrusted -> add ( $ this ->exprLimitBitwise ('config ' , Circle::CFG_FEDERATED , $ aliasCircle ));
611- $ andTrusted -> add ( $ expr ->emptyString ($ aliasOwner . '.instance ' ));
612- $ orX -> add ( $ andTrusted );
598+ $ orX [] = $ expr ->andX (
599+ $ orExtOrTrusted,
600+ $ this ->exprLimitBitwise ('config ' , Circle::CFG_FEDERATED , $ aliasCircle ),
601+ $ expr ->emptyString ($ aliasOwner . '.instance ' ),
602+ );
613603
614- $ this ->andWhere ($ orX );
604+ $ this ->andWhere ($ expr -> orX (... $ orX ) );
615605 }
616606
617607
@@ -682,38 +672,30 @@ public function filterDirectMembership(string $aliasMember, Member $member): voi
682672 }
683673
684674 $ expr = $ this ->expr ();
685- $ andX = $ expr -> andX () ;
675+ $ andX = [] ;
686676
687677 if ($ member ->getUserId () !== '' ) {
688- $ andX ->add (
689- $ expr ->eq ($ aliasMember . '.user_id ' , $ this ->createNamedParameter ($ member ->getUserId ()))
690- );
678+ $ andX [] = $ expr ->eq ($ aliasMember . '.user_id ' , $ this ->createNamedParameter ($ member ->getUserId ()));
691679 }
692680
693681 if ($ member ->getSingleId () !== '' ) {
694- $ andX ->add (
695- $ expr ->eq ($ aliasMember . '.single_id ' , $ this ->createNamedParameter ($ member ->getSingleId ()))
696- );
682+ $ andX [] = $ expr ->eq ($ aliasMember . '.single_id ' , $ this ->createNamedParameter ($ member ->getSingleId ()));
697683 }
698684
699685 if ($ member ->getUserType () > 0 ) {
700- $ andX ->add (
701- $ expr ->eq ($ aliasMember . '.user_type ' , $ this ->createNamedParameter ($ member ->getUserType ()))
702- );
686+ $ andX [] = $ expr ->eq ($ aliasMember . '.user_type ' , $ this ->createNamedParameter ($ member ->getUserType ()));
703687 }
704688
705689 $ this ->limitToInstance ($ this ->getInstance ($ member ));
706690
707691 if ($ member ->getLevel () > 0 ) {
708- $ andX ->add (
709- $ expr ->gte (
710- $ aliasMember . '.level ' ,
711- $ this ->createNamedParameter ($ member ->getLevel (), IQueryBuilder::PARAM_INT )
712- )
692+ $ andX [] = $ expr ->gte (
693+ $ aliasMember . '.level ' ,
694+ $ this ->createNamedParameter ($ member ->getLevel (), IQueryBuilder::PARAM_INT )
713695 );
714696 }
715697
716- $ this ->andWhere ($ andX );
698+ $ this ->andWhere ($ expr -> andX (... $ andX ) );
717699 }
718700
719701
@@ -1200,18 +1182,15 @@ public function leftJoinInitiator(
12001182
12011183 try {
12021184 $ aliasMembershipCircle = $ this ->generateAlias ($ aliasMembership , self ::CONFIG , $ options );
1203- $ orXMembershipCircle = $ expr ->orX ();
1204- array_map (
1205- function (string $ alias ) use ($ orXMembershipCircle , $ aliasMembershipCircle ) {
1206- $ orXMembershipCircle ->add (
1207- $ this ->expr ()->eq (
1208- $ alias . '.circle_id ' ,
1209- $ aliasMembershipCircle . '.unique_id '
1210- )
1185+ $ orXMembershipCircle = $ expr ->orX (...array_map (
1186+ function (string $ alias ) use ($ aliasMembershipCircle ) {
1187+ return $ this ->expr ()->eq (
1188+ $ alias . '.circle_id ' ,
1189+ $ aliasMembershipCircle . '.unique_id '
12111190 );
12121191 },
12131192 $ listMembershipCircleAlias
1214- );
1193+ )) ;
12151194
12161195 $ this ->leftJoin (
12171196 $ aliasMembership ,
@@ -1338,78 +1317,72 @@ protected function limitInitiatorVisibility(string $alias): ICompositeExpression
13381317 // - 0 (default), if initiator is member
13391318 // - 2 (Personal), if initiator is owner)
13401319 // - 4 (Visible to everyone)
1341- $ orX = $ expr -> orX () ;
1320+ $ orX = [] ;
13421321
13431322 // filterPersonalCircles will remove access to Personal Circles as Owner
13441323 if (!$ this ->getBool ('filterPersonalCircles ' , $ options , false )) {
1345- $ orX ->add (
1346- $ expr ->andX (
1347- $ this ->exprLimitBitwise ('config ' , Circle::CFG_PERSONAL , $ aliasMembershipCircle ),
1348- $ expr ->eq ($ aliasMembership . '.level ' , $ this ->createNamedParameter (Member::LEVEL_OWNER ))
1349- )
1324+ $ orX [] = $ expr ->andX (
1325+ $ this ->exprLimitBitwise ('config ' , Circle::CFG_PERSONAL , $ aliasMembershipCircle ),
1326+ $ expr ->eq ($ aliasMembership . '.level ' , $ this ->createNamedParameter (Member::LEVEL_OWNER ))
13501327 );
13511328 }
13521329
13531330 $ minimumLevel = $ this ->getInt ('minimumLevel ' , $ options );
1354- $ andXMember = $ expr ->andX ();
1355- $ orXLevelCheck = $ expr ->orX ();
1356-
1357- array_map (
1358- function (string $ alias ) use ($ orXLevelCheck , $ minimumLevel ) {
1359- $ orXLevelCheck ->add (
1360- $ this ->expr ()->gte (
1361- $ alias . '.level ' ,
1362- $ this ->createNamedParameter ($ minimumLevel , self ::PARAM_INT )
1363- )
1331+ $ orXLevelCheck = $ expr ->orX (...array_map (
1332+ function (string $ alias ) use ($ minimumLevel ) {
1333+ return $ this ->expr ()->gte (
1334+ $ alias . '.level ' ,
1335+ $ this ->createNamedParameter ($ minimumLevel , self ::PARAM_INT )
13641336 );
13651337 },
13661338 $ levelCheck
1367- );
1368- $ andXMember-> add ( $ orXLevelCheck) ;
1339+ )) ;
1340+ $ andXMember = [ $ orXLevelCheck] ;
13691341
13701342 if (!$ this ->getBool ('includePersonalCircles ' , $ options , false )) {
1371- $ andXMember ->add (
1372- $ this ->exprFilterBitwise (
1373- 'config ' , Circle::CFG_PERSONAL ,
1374- $ aliasMembershipCircle
1375- )
1343+ $ andXMember [] = $ this ->exprFilterBitwise (
1344+ 'config ' , Circle::CFG_PERSONAL ,
1345+ $ aliasMembershipCircle
13761346 );
13771347 }
1378- $ orX-> add ( $ andXMember );
1348+ $ orX[] = $ expr -> andX (... $ andXMember );
13791349
13801350 if ($ directMember !== '' && $ this ->getBool ('allowRequestingMembership ' , $ options , false )) {
1381- $ orX-> add ( $ expr ->orX (
1351+ $ orX[] = $ expr ->orX (
13821352 $ this ->exprLimit ('status ' , Member::STATUS_REQUEST , $ directMember ),
13831353 $ this ->exprLimit ('status ' , Member::STATUS_INVITED , $ directMember )
1384- )) ;
1354+ );
13851355 }
13861356
13871357 if ($ minimumLevel === 0 && $ alias === self ::CIRCLE ) {
1388- $ orX-> add ( $ this ->exprLimitBitwise ('config ' , Circle::CFG_VISIBLE , $ alias) );
1358+ $ orX[] = $ this ->exprLimitBitwise ('config ' , Circle::CFG_VISIBLE , $ alias );
13891359 }
13901360
13911361 if ($ this ->getBool ('includeNonVisibleCircles ' , $ options )) {
1392- $ andXNonVisible = $ expr ->andX ();
1393- $ andXNonVisible -> add ( $ this ->exprLimitBitwise ('config ' , Circle::CFG_OPEN , $ alias ));
1394- $ andXNonVisible -> add ( $ this ->exprFilterBitwise ('config ' , Circle::CFG_VISIBLE , $ alias ));
1395- $ orX -> add ( $ andXNonVisible );
1362+ $ orX [] = $ expr ->andX (
1363+ $ this ->exprLimitBitwise ('config ' , Circle::CFG_OPEN , $ alias ),
1364+ $ this ->exprFilterBitwise ('config ' , Circle::CFG_VISIBLE , $ alias ),
1365+ );
13961366 }
13971367
13981368 if ($ this ->getBool ('visitingSingleCircles ' , $ options , false )) {
1399- $ orX-> add ( $ this ->exprLimitBitwise ('config ' , Circle::CFG_SINGLE , $ alias) );
1369+ $ orX[] = $ this ->exprLimitBitwise ('config ' , Circle::CFG_SINGLE , $ alias );
14001370 }
14011371
14021372 // if Member can be Visitor, we only filter access to Personal Circles
14031373 if ($ this ->getBool ('viewableThroughKeyhole ' , $ options , false )) {
1404- $ andOpen = $ expr ->andX ();
1405- $ andOpen ->add ($ this ->exprLimitBitwise ('config ' , Circle::CFG_OPEN , $ alias ));
1406- $ andOpen ->add ($ this ->exprLimitBitwise ('config ' , Circle::CFG_VISIBLE , $ alias ));
1374+ $ andOpen = [
1375+ $ this ->exprLimitBitwise ('config ' , Circle::CFG_OPEN , $ alias ),
1376+ $ this ->exprLimitBitwise ('config ' , Circle::CFG_VISIBLE , $ alias ),
1377+ ];
14071378 if (!$ this ->configService ->getAppValueBool (ConfigService::KEYHOLE_CFG_REQUEST )) {
1408- $ andOpen-> add ( $ this ->exprFilterBitwise ('config ' , Circle::CFG_REQUEST , $ alias) );
1379+ $ andOpen[] = $ this ->exprFilterBitwise ('config ' , Circle::CFG_REQUEST , $ alias );
14091380 }
1410- $ orX-> add ( $ andOpen );
1381+ $ orX[] = $ expr -> andX (... $ andOpen );
14111382 }
14121383
1384+ $ orX = $ expr ->orX (...$ orX );
1385+
14131386 $ this ->andWhere ($ orX );
14141387
14151388 return $ orX ;
@@ -1437,29 +1410,18 @@ public function filterCircles(string $aliasCircle, CircleProbe $probe): void {
14371410 */
14381411 private function limitRemoteVisibility_Sensitive_Members (string $ alias ): ICompositeExpression {
14391412 $ expr = $ this ->expr ();
1440- $ andPassive = $ expr ->andX ();
1441- $ andPassive ->add (
1442- $ expr ->eq ($ alias . '.type ' , $ this ->createNamedParameter (RemoteInstance::TYPE_PASSIVE ))
1443- );
1444-
1445- $ orMemberOrLevel = $ expr ->orX ();
1446- $ orMemberOrLevel ->add (
1447- $ expr ->eq ($ this ->getDefaultSelectAlias () . '.instance ' , $ alias . '.instance ' )
1448- );
1449- // TODO: do we need this ? (display members from the local instance)
1450- $ orMemberOrLevel ->add (
1451- $ expr ->emptyString ($ this ->getDefaultSelectAlias () . '.instance ' )
1452- );
1453-
1454- $ orMemberOrLevel ->add (
1455- $ expr ->eq (
1456- $ this ->getDefaultSelectAlias () . '.level ' ,
1457- $ this ->createNamedParameter (Member::LEVEL_OWNER )
1458- )
1413+ return $ expr ->andX (
1414+ $ expr ->eq ($ alias . '.type ' , $ this ->createNamedParameter (RemoteInstance::TYPE_PASSIVE )),
1415+ $ expr ->orX (
1416+ $ expr ->eq ($ this ->getDefaultSelectAlias () . '.instance ' , $ alias . '.instance ' ),
1417+ // TODO: do we need this ? (display members from the local instance)
1418+ $ expr ->emptyString ($ this ->getDefaultSelectAlias () . '.instance ' ),
1419+ $ expr ->eq (
1420+ $ this ->getDefaultSelectAlias () . '.level ' ,
1421+ $ this ->createNamedParameter (Member::LEVEL_OWNER )
1422+ ),
1423+ ),
14591424 );
1460- $ andPassive ->add ($ orMemberOrLevel );
1461-
1462- return $ andPassive ;
14631425 }
14641426
14651427
0 commit comments