Added order: support to searching

This commit is contained in:
Marcin Kurczewski 2014-10-01 22:23:18 +02:00
parent 17d898bc0c
commit 61e95ac708
3 changed files with 24 additions and 2 deletions

1
TODO
View file

@ -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-

View file

@ -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

View file

@ -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());
}
} }