123456789101112131415161718192021222324252627282930313233 |
- <?php
- /**
- * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
- * SPDX-License-Identifier: AGPL-3.0-or-later
- */
- namespace OC\Files\Search\QueryOptimizer;
- use OC\Files\Search\SearchBinaryOperator;
- use OCP\Files\Search\ISearchBinaryOperator;
- use OCP\Files\Search\ISearchOperator;
- class FlattenNestedBool extends QueryOptimizerStep {
- public function processOperator(ISearchOperator &$operator) {
- if (
- $operator instanceof SearchBinaryOperator && (
- $operator->getType() === ISearchBinaryOperator::OPERATOR_OR ||
- $operator->getType() === ISearchBinaryOperator::OPERATOR_AND
- )
- ) {
- $newArguments = [];
- foreach ($operator->getArguments() as $oldArgument) {
- if ($oldArgument instanceof SearchBinaryOperator && $oldArgument->getType() === $operator->getType()) {
- $newArguments = array_merge($newArguments, $oldArgument->getArguments());
- } else {
- $newArguments[] = $oldArgument;
- }
- }
- $operator->setArguments($newArguments);
- }
- parent::processOperator($operator);
- }
- }
|