Added order: support to searching
This commit is contained in:
parent
17d898bc0c
commit
61e95ac708
3 changed files with 24 additions and 2 deletions
1
TODO
1
TODO
|
@ -7,7 +7,6 @@ everything related to posts:
|
||||||
- comment count
|
- comment count
|
||||||
- regard safety settings
|
- regard safety settings
|
||||||
- regard disliked settings
|
- regard disliked settings
|
||||||
- add search form (query, order and safety) to post list presenter
|
|
||||||
- add warning if no posts were found
|
- add warning if no posts were found
|
||||||
- search filters
|
- search filters
|
||||||
- comment:rr-
|
- comment:rr-
|
||||||
|
|
|
@ -22,7 +22,12 @@ abstract class AbstractSearchParser
|
||||||
foreach ($tokens as $token)
|
foreach ($tokens as $token)
|
||||||
{
|
{
|
||||||
if ($token instanceof \Szurubooru\SearchServices\Tokens\NamedSearchToken)
|
if ($token instanceof \Szurubooru\SearchServices\Tokens\NamedSearchToken)
|
||||||
$this->decorateFilterFromNamedToken($filter, $token);
|
{
|
||||||
|
if ($token->getKey() === 'order')
|
||||||
|
$filter->setOrder(array_merge($filter->getOrder(), $this->getOrder($token->getValue())));
|
||||||
|
else
|
||||||
|
$this->decorateFilterFromNamedToken($filter, $token);
|
||||||
|
}
|
||||||
elseif ($token instanceof \Szurubooru\SearchServices\Tokens\SearchToken)
|
elseif ($token instanceof \Szurubooru\SearchServices\Tokens\SearchToken)
|
||||||
$this->decorateFilterFromToken($filter, $token);
|
$this->decorateFilterFromToken($filter, $token);
|
||||||
else
|
else
|
||||||
|
|
|
@ -30,4 +30,22 @@ class UserSearchParserTest extends AbstractTestCase
|
||||||
$filter = $this->userSearchParser->createFilterFromInputReader($this->inputReader);
|
$filter = $this->userSearchParser->createFilterFromInputReader($this->inputReader);
|
||||||
$this->assertEquals([UserFilter::ORDER_NAME => UserFilter::ORDER_DESC], $filter->getOrder());
|
$this->assertEquals([UserFilter::ORDER_NAME => UserFilter::ORDER_DESC], $filter->getOrder());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testTokenOrder()
|
||||||
|
{
|
||||||
|
$this->inputReader->query = 'order:name,desc';
|
||||||
|
$filter = $this->userSearchParser->createFilterFromInputReader($this->inputReader);
|
||||||
|
$this->assertEquals([UserFilter::ORDER_NAME => UserFilter::ORDER_DESC], $filter->getOrder());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testParamAndTokenOrder()
|
||||||
|
{
|
||||||
|
$this->inputReader->order = 'registration_time,desc';
|
||||||
|
$this->inputReader->query = 'order:name,desc';
|
||||||
|
$filter = $this->userSearchParser->createFilterFromInputReader($this->inputReader);
|
||||||
|
$this->assertEquals([
|
||||||
|
UserFilter::ORDER_REGISTRATION_TIME => UserFilter::ORDER_DESC,
|
||||||
|
UserFilter::ORDER_NAME => UserFilter::ORDER_DESC],
|
||||||
|
$filter->getOrder());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue