diff --git a/lib/Db/CircleRequest.php b/lib/Db/CircleRequest.php index d017680b4..d3192e8bb 100644 --- a/lib/Db/CircleRequest.php +++ b/lib/Db/CircleRequest.php @@ -265,17 +265,14 @@ private function buildProbeCircle( $aliasMembership = $qb->generateAlias(CoreQueryBuilder::CIRCLE, CoreQueryBuilder::MEMBERSHIPS); - $limit = $qb->expr()->orX(); if (is_null($initiator)) { // to get unique result, enforce a limit on level=owner - $limit->add($qb->exprLimitInt('level', Member::LEVEL_OWNER, $aliasMembership)); + $limit = $qb->exprLimitInt('level', Member::LEVEL_OWNER, $aliasMembership); } else { - $limit->add( - $qb->exprLimit( - 'single_id', - $initiator->getSingleId(), - $aliasMembership - ) + $limit = $qb->exprLimit( + 'single_id', + $initiator->getSingleId(), + $aliasMembership ); $qb->completeProbeWithInitiator(CoreQueryBuilder::CIRCLE, 'single_id', $aliasMembership); } diff --git a/lib/Db/CoreQueryBuilder.php b/lib/Db/CoreQueryBuilder.php index bf6daab09..fa64006b2 100644 --- a/lib/Db/CoreQueryBuilder.php +++ b/lib/Db/CoreQueryBuilder.php @@ -372,22 +372,19 @@ public function filterCircleDetails(Circle $circle): void { } $expr = $this->expr(); - $orX = $expr->orX(); + $andX = null; if ($circle->getDisplayName() !== '') { - $andX = $expr->andX(); + $andX = []; foreach (explode(' ', $circle->getDisplayName()) as $word) { - $andX->add( - $expr->iLike( - $this->getDefaultSelectAlias() . '.' . 'display_name', - $this->createNamedParameter('%' . $word . '%') - ) + $andX[] = $expr->iLike( + $this->getDefaultSelectAlias() . '.' . 'display_name', + $this->createNamedParameter('%' . $word . '%') ); } - $orX->add($andX); } - if ($orX->count() > 0) { - $this->andWhere($orX); + if ($andX !== null) { + $this->andWhere(...$andX); } if ($circle->getSource() > 0) { @@ -572,46 +569,39 @@ protected function limitRemoteVisibility(string $alias, bool $sensitive, string $aliasRemoteCircleOwner = $this->generateAlias($aliasRemoteCircle, self::OWNER); $expr = $this->expr(); - $orX = $expr->orX(); - $orX->add( - $expr->eq($aliasRemote . '.type', $this->createNamedParameter(RemoteInstance::TYPE_GLOBALSCALE)) - ); + $orX = [$expr->eq($aliasRemote . '.type', $this->createNamedParameter(RemoteInstance::TYPE_GLOBALSCALE))]; - $orExtOrPassive = $expr->orX(); - $orExtOrPassive->add( - $expr->eq($aliasRemote . '.type', $this->createNamedParameter(RemoteInstance::TYPE_EXTERNAL)) - ); + $orExtOrPassive = [$expr->eq($aliasRemote . '.type', $this->createNamedParameter(RemoteInstance::TYPE_EXTERNAL))]; if (!$sensitive) { - $orExtOrPassive->add( - $expr->eq($aliasRemote . '.type', $this->createNamedParameter(RemoteInstance::TYPE_PASSIVE)) - ); + $orExtOrPassive[] = $expr->eq($aliasRemote . '.type', $this->createNamedParameter(RemoteInstance::TYPE_PASSIVE)); } else { if ($this->getDefaultSelectAlias() === CoreQueryBuilder::MEMBER) { - $orExtOrPassive->add($this->limitRemoteVisibility_Sensitive_Members($aliasRemote)); + $orExtOrPassive[] = $this->limitRemoteVisibility_Sensitive_Members($aliasRemote); } } - $orInstance = $expr->orX(); - $orInstance->add($expr->isNotNull($aliasRemoteMember . '.instance')); - $orInstance->add($expr->isNotNull($aliasRemoteCircleOwner . '.instance')); + $orInstance = $expr->orX( + $expr->isNotNull($aliasRemoteMember . '.instance'), + $expr->isNotNull($aliasRemoteCircleOwner . '.instance'), + ); - $andExternal = $expr->andX(); - $andExternal->add($orExtOrPassive); - $andExternal->add($orInstance); + $andExternal = $expr->andX( + $expr->orX(...$orExtOrPassive), + $orInstance, + ); - $orExtOrTrusted = $expr->orX(); - $orExtOrTrusted->add($andExternal); - $orExtOrTrusted->add( - $expr->eq($aliasRemote . '.type', $this->createNamedParameter(RemoteInstance::TYPE_TRUSTED)) + $orExtOrTrusted = $expr->orX( + $andExternal, + $expr->eq($aliasRemote . '.type', $this->createNamedParameter(RemoteInstance::TYPE_TRUSTED)), ); - $andTrusted = $expr->andX(); - $andTrusted->add($orExtOrTrusted); - $andTrusted->add($this->exprLimitBitwise('config', Circle::CFG_FEDERATED, $aliasCircle)); - $andTrusted->add($expr->emptyString($aliasOwner . '.instance')); - $orX->add($andTrusted); + $orX[] = $expr->andX( + $orExtOrTrusted, + $this->exprLimitBitwise('config', Circle::CFG_FEDERATED, $aliasCircle), + $expr->emptyString($aliasOwner . '.instance'), + ); - $this->andWhere($orX); + $this->andWhere($expr->orX(...$orX)); } @@ -682,38 +672,30 @@ public function filterDirectMembership(string $aliasMember, Member $member): voi } $expr = $this->expr(); - $andX = $expr->andX(); + $andX = []; if ($member->getUserId() !== '') { - $andX->add( - $expr->eq($aliasMember . '.user_id', $this->createNamedParameter($member->getUserId())) - ); + $andX[] = $expr->eq($aliasMember . '.user_id', $this->createNamedParameter($member->getUserId())); } if ($member->getSingleId() !== '') { - $andX->add( - $expr->eq($aliasMember . '.single_id', $this->createNamedParameter($member->getSingleId())) - ); + $andX[] = $expr->eq($aliasMember . '.single_id', $this->createNamedParameter($member->getSingleId())); } if ($member->getUserType() > 0) { - $andX->add( - $expr->eq($aliasMember . '.user_type', $this->createNamedParameter($member->getUserType())) - ); + $andX[] = $expr->eq($aliasMember . '.user_type', $this->createNamedParameter($member->getUserType())); } $this->limitToInstance($this->getInstance($member)); if ($member->getLevel() > 0) { - $andX->add( - $expr->gte( - $aliasMember . '.level', - $this->createNamedParameter($member->getLevel(), IQueryBuilder::PARAM_INT) - ) + $andX[] = $expr->gte( + $aliasMember . '.level', + $this->createNamedParameter($member->getLevel(), IQueryBuilder::PARAM_INT) ); } - $this->andWhere($andX); + $this->andWhere($expr->andX(...$andX)); } @@ -1200,18 +1182,15 @@ public function leftJoinInitiator( try { $aliasMembershipCircle = $this->generateAlias($aliasMembership, self::CONFIG, $options); - $orXMembershipCircle = $expr->orX(); - array_map( - function (string $alias) use ($orXMembershipCircle, $aliasMembershipCircle) { - $orXMembershipCircle->add( - $this->expr()->eq( - $alias . '.circle_id', - $aliasMembershipCircle . '.unique_id' - ) + $orXMembershipCircle = $expr->orX(...array_map( + function (string $alias) use ($aliasMembershipCircle) { + return $this->expr()->eq( + $alias . '.circle_id', + $aliasMembershipCircle . '.unique_id' ); }, $listMembershipCircleAlias - ); + )); $this->leftJoin( $aliasMembership, @@ -1338,78 +1317,72 @@ protected function limitInitiatorVisibility(string $alias): ICompositeExpression // - 0 (default), if initiator is member // - 2 (Personal), if initiator is owner) // - 4 (Visible to everyone) - $orX = $expr->orX(); + $orX = []; // filterPersonalCircles will remove access to Personal Circles as Owner if (!$this->getBool('filterPersonalCircles', $options, false)) { - $orX->add( - $expr->andX( - $this->exprLimitBitwise('config', Circle::CFG_PERSONAL, $aliasMembershipCircle), - $expr->eq($aliasMembership . '.level', $this->createNamedParameter(Member::LEVEL_OWNER)) - ) + $orX[] = $expr->andX( + $this->exprLimitBitwise('config', Circle::CFG_PERSONAL, $aliasMembershipCircle), + $expr->eq($aliasMembership . '.level', $this->createNamedParameter(Member::LEVEL_OWNER)) ); } $minimumLevel = $this->getInt('minimumLevel', $options); - $andXMember = $expr->andX(); - $orXLevelCheck = $expr->orX(); - - array_map( - function (string $alias) use ($orXLevelCheck, $minimumLevel) { - $orXLevelCheck->add( - $this->expr()->gte( - $alias . '.level', - $this->createNamedParameter($minimumLevel, self::PARAM_INT) - ) + $orXLevelCheck = $expr->orX(...array_map( + function (string $alias) use ($minimumLevel) { + return $this->expr()->gte( + $alias . '.level', + $this->createNamedParameter($minimumLevel, self::PARAM_INT) ); }, $levelCheck - ); - $andXMember->add($orXLevelCheck); + )); + $andXMember = [$orXLevelCheck]; if (!$this->getBool('includePersonalCircles', $options, false)) { - $andXMember->add( - $this->exprFilterBitwise( - 'config', Circle::CFG_PERSONAL, - $aliasMembershipCircle - ) + $andXMember[] = $this->exprFilterBitwise( + 'config', Circle::CFG_PERSONAL, + $aliasMembershipCircle ); } - $orX->add($andXMember); + $orX[] = $expr->andX(...$andXMember); if ($directMember !== '' && $this->getBool('allowRequestingMembership', $options, false)) { - $orX->add($expr->orX( + $orX[] = $expr->orX( $this->exprLimit('status', Member::STATUS_REQUEST, $directMember), $this->exprLimit('status', Member::STATUS_INVITED, $directMember) - )); + ); } if ($minimumLevel === 0 && $alias === self::CIRCLE) { - $orX->add($this->exprLimitBitwise('config', Circle::CFG_VISIBLE, $alias)); + $orX[] = $this->exprLimitBitwise('config', Circle::CFG_VISIBLE, $alias); } if ($this->getBool('includeNonVisibleCircles', $options)) { - $andXNonVisible = $expr->andX(); - $andXNonVisible->add($this->exprLimitBitwise('config', Circle::CFG_OPEN, $alias)); - $andXNonVisible->add($this->exprFilterBitwise('config', Circle::CFG_VISIBLE, $alias)); - $orX->add($andXNonVisible); + $orX[] = $expr->andX( + $this->exprLimitBitwise('config', Circle::CFG_OPEN, $alias), + $this->exprFilterBitwise('config', Circle::CFG_VISIBLE, $alias), + ); } if ($this->getBool('visitingSingleCircles', $options, false)) { - $orX->add($this->exprLimitBitwise('config', Circle::CFG_SINGLE, $alias)); + $orX[] = $this->exprLimitBitwise('config', Circle::CFG_SINGLE, $alias); } // if Member can be Visitor, we only filter access to Personal Circles if ($this->getBool('viewableThroughKeyhole', $options, false)) { - $andOpen = $expr->andX(); - $andOpen->add($this->exprLimitBitwise('config', Circle::CFG_OPEN, $alias)); - $andOpen->add($this->exprLimitBitwise('config', Circle::CFG_VISIBLE, $alias)); + $andOpen = [ + $this->exprLimitBitwise('config', Circle::CFG_OPEN, $alias), + $this->exprLimitBitwise('config', Circle::CFG_VISIBLE, $alias), + ]; if (!$this->configService->getAppValueBool(ConfigService::KEYHOLE_CFG_REQUEST)) { - $andOpen->add($this->exprFilterBitwise('config', Circle::CFG_REQUEST, $alias)); + $andOpen[] = $this->exprFilterBitwise('config', Circle::CFG_REQUEST, $alias); } - $orX->add($andOpen); + $orX[] = $expr->andX(...$andOpen); } + $orX = $expr->orX(...$orX); + $this->andWhere($orX); return $orX; @@ -1437,29 +1410,18 @@ public function filterCircles(string $aliasCircle, CircleProbe $probe): void { */ private function limitRemoteVisibility_Sensitive_Members(string $alias): ICompositeExpression { $expr = $this->expr(); - $andPassive = $expr->andX(); - $andPassive->add( - $expr->eq($alias . '.type', $this->createNamedParameter(RemoteInstance::TYPE_PASSIVE)) - ); - - $orMemberOrLevel = $expr->orX(); - $orMemberOrLevel->add( - $expr->eq($this->getDefaultSelectAlias() . '.instance', $alias . '.instance') - ); - // TODO: do we need this ? (display members from the local instance) - $orMemberOrLevel->add( - $expr->emptyString($this->getDefaultSelectAlias() . '.instance') - ); - - $orMemberOrLevel->add( - $expr->eq( - $this->getDefaultSelectAlias() . '.level', - $this->createNamedParameter(Member::LEVEL_OWNER) - ) + return $expr->andX( + $expr->eq($alias . '.type', $this->createNamedParameter(RemoteInstance::TYPE_PASSIVE)), + $expr->orX( + $expr->eq($this->getDefaultSelectAlias() . '.instance', $alias . '.instance'), + // TODO: do we need this ? (display members from the local instance) + $expr->emptyString($this->getDefaultSelectAlias() . '.instance'), + $expr->eq( + $this->getDefaultSelectAlias() . '.level', + $this->createNamedParameter(Member::LEVEL_OWNER) + ), + ), ); - $andPassive->add($orMemberOrLevel); - - return $andPassive; } diff --git a/lib/Db/DeprecatedRequestBuilder.php b/lib/Db/DeprecatedRequestBuilder.php index 65c4a39f9..f9dbe982e 100644 --- a/lib/Db/DeprecatedRequestBuilder.php +++ b/lib/Db/DeprecatedRequestBuilder.php @@ -368,16 +368,16 @@ protected function limitToLevel(IQueryBuilder $qb, int $level, $pf = '') { */ private function generateLimitToLevelMultipleTableRequest(IQueryBuilder $qb, int $level, $pf) { $expr = $qb->expr(); - $orX = $expr->orX(); + $orX = []; foreach ($pf as $p) { if ($p === 'g' && !$this->leftJoinedNCGroupAndUser) { continue; } - $orX->add($expr->gte($p . '.level', $qb->createNamedParameter($level))); + $orX[] = $expr->gte($p . '.level', $qb->createNamedParameter($level)); } - return $orX; + return $expr->orX(...$orX); } @@ -391,12 +391,11 @@ protected function limitToMembersAndAlmost(IQueryBuilder $qb) { $pf = ($qb->getType() === QueryBuilder::SELECT) ? $this->default_select_alias . '.' : ''; - $orX = $expr->orX(); - $orX->add($expr->eq($pf . 'status', $qb->createNamedParameter(DeprecatedMember::STATUS_MEMBER))); - $orX->add($expr->eq($pf . 'status', $qb->createNamedParameter(DeprecatedMember::STATUS_INVITED))); - $orX->add($expr->eq($pf . 'status', $qb->createNamedParameter(DeprecatedMember::STATUS_REQUEST))); - - $qb->andWhere($orX); + $qb->andWhere($expr->orX( + $expr->eq($pf . 'status', $qb->createNamedParameter(DeprecatedMember::STATUS_MEMBER)), + $expr->eq($pf . 'status', $qb->createNamedParameter(DeprecatedMember::STATUS_INVITED)), + $expr->eq($pf . 'status', $qb->createNamedParameter(DeprecatedMember::STATUS_REQUEST)), + )); } diff --git a/lib/Db/FileSharesRequest.php b/lib/Db/FileSharesRequest.php index d1f5e191d..394a67735 100644 --- a/lib/Db/FileSharesRequest.php +++ b/lib/Db/FileSharesRequest.php @@ -25,11 +25,11 @@ public function removeSharesFromMember(DeprecatedMember $member): void { $qb = $this->getFileSharesDeleteSql(); $expr = $qb->expr(); - $andX = $expr->andX(); - $andX->add($expr->eq('share_type', $qb->createNamedParameter(self::SHARE_TYPE))); - $andX->add($expr->eq('share_with', $qb->createNamedParameter($member->getCircleId()))); - $andX->add($expr->eq('uid_initiator', $qb->createNamedParameter($member->getUserId()))); - $qb->andWhere($andX); + $qb->andWhere($expr->andX( + $expr->eq('share_type', $qb->createNamedParameter(self::SHARE_TYPE)), + $expr->eq('share_with', $qb->createNamedParameter($member->getCircleId())), + $expr->eq('uid_initiator', $qb->createNamedParameter($member->getUserId())), + )); $qb->execute(); } @@ -42,10 +42,10 @@ public function removeSharesToCircleId(string $circleId): void { $qb = $this->getFileSharesDeleteSql(); $expr = $qb->expr(); - $andX = $expr->andX(); - $andX->add($expr->eq('share_type', $qb->createNamedParameter(self::SHARE_TYPE))); - $andX->add($expr->eq('share_with', $qb->createNamedParameter($circleId))); - $qb->andWhere($andX); + $qb->andWhere($expr->andX( + $expr->eq('share_type', $qb->createNamedParameter(self::SHARE_TYPE)), + $expr->eq('share_with', $qb->createNamedParameter($circleId)), + )); $qb->execute(); } diff --git a/lib/Db/GSSharesRequest.php b/lib/Db/GSSharesRequest.php index ca3f1a0de..abcce4f96 100644 --- a/lib/Db/GSSharesRequest.php +++ b/lib/Db/GSSharesRequest.php @@ -84,15 +84,14 @@ private function joinMembership(IQueryBuilder $qb, string $userId) { $qb->from(DeprecatedRequestBuilder::TABLE_MEMBERS, 'm'); $expr = $qb->expr(); - $andX = $expr->andX(); - $andX->add($expr->eq('m.user_id', $qb->createNamedParameter($userId))); - $andX->add($expr->eq('m.instance', $qb->createNamedParameter(''))); - $andX->add($expr->gt('m.level', $qb->createNamedParameter(0))); - $andX->add($expr->eq('m.user_type', $qb->createNamedParameter(DeprecatedMember::TYPE_USER))); - $andX->add($expr->eq('m.circle_id', 'gsh.circle_id')); - - $qb->andWhere($andX); + $qb->andWhere($expr->andX( + $expr->eq('m.user_id', $qb->createNamedParameter($userId)), + $expr->eq('m.instance', $qb->createNamedParameter('')), + $expr->gt('m.level', $qb->createNamedParameter(0)), + $expr->eq('m.user_type', $qb->createNamedParameter(DeprecatedMember::TYPE_USER)), + $expr->eq('m.circle_id', 'gsh.circle_id'), + )); } @@ -100,9 +99,10 @@ private function leftJoinMountPoint(IQueryBuilder $qb, string $userId) { $expr = $qb->expr(); $pf = '' . $this->default_select_alias . '.'; - $on = $expr->andX(); - $on->add($expr->eq('mp.user_id', $qb->createNamedParameter($userId))); - $on->add($expr->eq('mp.share_id', $pf . 'id')); + $on = $expr->andX( + $expr->eq('mp.user_id', $qb->createNamedParameter($userId)), + $expr->eq('mp.share_id', $pf . 'id'), + ); /** @noinspection PhpMethodParametersCountMismatchInspection */ $qb->selectAlias('mp.mountPoint', 'gsshares_mountpoint') diff --git a/lib/Db/RemoteRequest.php b/lib/Db/RemoteRequest.php index 73ec5d7e3..872d3ba78 100644 --- a/lib/Db/RemoteRequest.php +++ b/lib/Db/RemoteRequest.php @@ -162,13 +162,11 @@ public function getKnownInstances(): array { public function getOutgoingRecipient(Circle $circle, bool $broadcastAsFederated = false): array { $qb = $this->getRemoteSelectSql(); $expr = $qb->expr(); - $orX = $expr->orX(); - - $orX->add($qb->exprLimit('type', RemoteInstance::TYPE_GLOBALSCALE, '', false)); + $orX = [$qb->exprLimit('type', RemoteInstance::TYPE_GLOBALSCALE, '', false)]; if ($circle->isConfig(Circle::CFG_FEDERATED) || $broadcastAsFederated) { // get all TRUSTED - $orX->add($qb->exprLimit('type', RemoteInstance::TYPE_TRUSTED, '', false)); + $orX[] = $qb->exprLimit('type', RemoteInstance::TYPE_TRUSTED, '', false); // get EXTERNAL with Members $aliasMember = $qb->generateAlias(CoreQueryBuilder::REMOTE, CoreQueryBuilder::MEMBER); @@ -184,13 +182,13 @@ public function getOutgoingRecipient(Circle $circle, bool $broadcastAsFederated ) ); - $external = $expr->andX(); - $external->add($qb->exprLimit('type', RemoteInstance::TYPE_EXTERNAL, '', false)); - $external->add($expr->isNotNull($aliasMember . '.instance')); - $orX->add($external); + $orX[] = $expr->andX( + $qb->exprLimit('type', RemoteInstance::TYPE_EXTERNAL, '', false), + $expr->isNotNull($aliasMember . '.instance'), + ); } - $qb->andWhere($orX); + $qb->andWhere($expr->orX(...$orX)); return $this->getItemsFromRequest($qb); } @@ -245,11 +243,11 @@ public function getFromType(string $status): array { */ public function searchDuplicate(RemoteInstance $remoteInstance): RemoteInstance { $qb = $this->getRemoteSelectSql(); - $orX = $qb->expr()->orX(); - $orX->add($qb->exprLimit('href', $remoteInstance->getId(), '', false)); - $orX->add($qb->exprLimit('uid', $remoteInstance->getUid(true), '', false)); - $orX->add($qb->exprLimit('instance', $remoteInstance->getInstance(), '', false)); - $qb->andWhere($orX); + $qb->andWhere($qb->expr()->orX( + $qb->exprLimit('href', $remoteInstance->getId(), '', false), + $qb->exprLimit('uid', $remoteInstance->getUid(true), '', false), + $qb->exprLimit('instance', $remoteInstance->getInstance(), '', false), + )); return $this->getItemFromRequest($qb); } diff --git a/lib/Tools/Db/ExtendedQueryBuilder.php b/lib/Tools/Db/ExtendedQueryBuilder.php index cc43d78e2..2c8557141 100644 --- a/lib/Tools/Db/ExtendedQueryBuilder.php +++ b/lib/Tools/Db/ExtendedQueryBuilder.php @@ -214,16 +214,13 @@ public function limitToDBFieldDateTime(string $field, DateTime $date, bool $orNu . '.' : ''; $field = $pf . $field; - $orX = $expr->orX(); - $orX->add( - $expr->lte($field, $this->createNamedParameter($date, IQueryBuilder::PARAM_DATE)) - ); + $orX = [$expr->lte($field, $this->createNamedParameter($date, IQueryBuilder::PARAM_DATE))]; if ($orNull === true) { - $orX->add($expr->isNull($field)); + $orX[] = $expr->isNull($field); } - $this->andWhere($orX); + $this->andWhere($expr->orX(...$orX)); } @@ -245,12 +242,7 @@ public function limitToSince(int $timestamp, string $field): void { $pf = ($this->getType() === DBALQueryBuilder::SELECT) ? $this->getDefaultSelectAlias() . '.' : ''; $field = $pf . $field; - $orX = $expr->orX(); - $orX->add( - $expr->gte($field, $this->createNamedParameter($dTime, IQueryBuilder::PARAM_DATE)) - ); - - $this->andWhere($orX); + $this->andWhere($expr->gte($field, $this->createNamedParameter($dTime, IQueryBuilder::PARAM_DATE))); } @@ -459,13 +451,12 @@ public function exprLimitEmpty( } $expr = $this->expr(); - $orX = $expr->orX(); - $orX->add($expr->emptyString($field)); + $orX = [$expr->emptyString($field)]; if ($orNull) { - $orX->add($expr->isNull($field)); + $orX[] = $expr->isNull($field); } - return $orX; + return $expr->orX(...$orX); } /** @@ -485,13 +476,12 @@ public function exprLimitNull( } $expr = $this->expr(); - $orX = $expr->orX(); - $orX->add($expr->isNull($field)); + $orX = [$expr->isNull($field)]; if ($orEmpty) { - $orX->add($expr->emptyString($field)); + $orX[] = $expr->emptyString($field); } - return $orX; + return $expr->orX(...$orX); } @@ -509,16 +499,16 @@ public function exprLimitArray( string $alias = '', bool $cs = true, ): ICompositeExpression { - $andX = $this->expr()->andX(); + $andX = []; foreach ($values as $value) { if (is_integer($value)) { - $andX->add($this->exprLimitInt($field, $value, $alias)); + $andX[] = $this->exprLimitInt($field, $value, $alias); } else { - $andX->add($this->exprLimit($field, $value, $alias, $cs)); + $andX[] = $this->exprLimit($field, $value, $alias, $cs); } } - return $andX; + return $this->expr()->andX(...$andX); } /** @@ -799,13 +789,12 @@ public function exprFilterEmpty( } $expr = $this->expr(); - $andX = $expr->andX(); - $andX->add($expr->nonEmptyString($field)); + $andX = [$expr->nonEmptyString($field)]; if ($norNull) { - $andX->add($expr->isNotNull($field)); + $andX[] = $expr->isNotNull($field); } - return $andX; + return $expr->andX(...$andX); } /** @@ -825,13 +814,12 @@ public function exprFilterNull( } $expr = $this->expr(); - $andX = $expr->andX(); - $andX->add($expr->isNotNull($field)); + $andX = [$expr->isNotNull($field)]; if ($norEmpty) { - $andX->add($expr->nonEmptyString($field)); + $andX[] = $expr->nonEmptyString($field); } - return $andX; + return $expr->andX(...$andX); } @@ -853,16 +841,16 @@ public function exprFilterArray( $field = (($alias === '') ? $this->getDefaultSelectAlias() : $alias) . '.' . $field; } - $orX = $this->expr()->orX(); + $orX = []; foreach ($values as $value) { if (is_integer($value)) { - $orX->add($this->exprFilterInt($field, $value, $alias)); + $orX[] = $this->exprFilterInt($field, $value, $alias); } else { - $orX->add($this->exprFilter($field, $value, $alias, $cs)); + $orX[] = $this->exprFilter($field, $value, $alias, $cs); } } - return $orX; + return $this->expr()->orX(...$orX); }