mirror of
https://github.com/nextcloud/server.git
synced 2025-02-12 03:59:16 +00:00
33 lines
1 KiB
PHP
33 lines
1 KiB
PHP
<?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);
|
|
}
|
|
}
|