mirror of
https://github.com/flarum/core.git
synced 2025-10-15 08:55:53 +02:00
Query Namespace (#2645)
Move shared classes in search and filter namespaces to a new query namespace
This commit is contained in:
committed by
GitHub
parent
e37fdef709
commit
a9526917b8
62
src/Query/ApplyQueryParametersTrait.php
Normal file
62
src/Query/ApplyQueryParametersTrait.php
Normal file
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* For detailed copyright and license information, please view the
|
||||
* LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Flarum\Query;
|
||||
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
trait ApplyQueryParametersTrait
|
||||
{
|
||||
/**
|
||||
* Apply sort criteria to a discussion query.
|
||||
*
|
||||
* @param AbstractQueryState $query
|
||||
* @param array $sort
|
||||
*/
|
||||
protected function applySort(AbstractQueryState $query, array $sort = null)
|
||||
{
|
||||
$sort = $sort ?: $query->getDefaultSort();
|
||||
|
||||
if (is_callable($sort)) {
|
||||
$sort($query->getQuery());
|
||||
} else {
|
||||
foreach ($sort as $field => $order) {
|
||||
if (is_array($order)) {
|
||||
foreach ($order as $value) {
|
||||
$query->getQuery()->orderByRaw(Str::snake($field).' != ?', [$value]);
|
||||
}
|
||||
} else {
|
||||
$query->getQuery()->orderBy(Str::snake($field), $order);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param AbstractQueryState $query
|
||||
* @param int $offset
|
||||
*/
|
||||
protected function applyOffset(AbstractQueryState $query, $offset)
|
||||
{
|
||||
if ($offset > 0) {
|
||||
$query->getQuery()->skip($offset);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param AbstractQueryState $query
|
||||
* @param int|null $limit
|
||||
*/
|
||||
protected function applyLimit(AbstractQueryState $query, $limit)
|
||||
{
|
||||
if ($limit > 0) {
|
||||
$query->getQuery()->take($limit);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user