diff --git a/src/Search/Filters/TagFilter.php b/src/Search/Filters/TagFilter.php index 52ab98c1..4fee563a 100644 --- a/src/Search/Filters/TagFilter.php +++ b/src/Search/Filters/TagFilter.php @@ -10,6 +10,8 @@ class TagFilter extends BasicFilter implements IFilter const ORDER_USAGE_COUNT = 'usages'; const REQUIREMENT_PARTIAL_TAG_NAME = 'partialTagName'; + const REQUIREMENT_CREATION_TIME = 'creationTime'; + const REQUIREMENT_LAST_EDIT_TIME = 'lastEditTime'; const REQUIREMENT_CATEGORY = 'category'; public function __construct() diff --git a/src/Search/Parsers/TagSearchParser.php b/src/Search/Parsers/TagSearchParser.php index 5405b6d4..3e77c204 100644 --- a/src/Search/Parsers/TagSearchParser.php +++ b/src/Search/Parsers/TagSearchParser.php @@ -24,18 +24,33 @@ class TagSearchParser extends AbstractSearchParser $filter->addRequirement($requirement); } - protected function decorateFilterFromNamedToken(IFilter $filter, NamedSearchToken $namedToken) + protected function decorateFilterFromNamedToken(IFilter $filter, NamedSearchToken $token) { - if ($this->matches($namedToken->getKey(), ['category'])) + if ($this->matches($token->getKey(), ['creation_time', 'creation_date', 'date'])) { - return $this->addRequirementFromToken( - $filter, - $namedToken, - TagFilter::REQUIREMENT_CATEGORY, - self::ALLOW_COMPOSITE); + $this->addRequirementFromDateRangeToken( + $filter, $token, TagFilter::REQUIREMENT_CREATION_TIME); + return; } - throw new NotSupportedException('Unknown token: ' . $namedToken->getKey()); + if ($this->matches($token->getKey(), ['edit_time', 'edit_date'])) + { + $this->addRequirementFromDateRangeToken( + $filter, $token, TagFilter::REQUIREMENT_LAST_EDIT_TIME); + return; + } + + if ($this->matches($token->getKey(), ['category'])) + { + $this->addRequirementFromToken( + $filter, + $token, + TagFilter::REQUIREMENT_CATEGORY, + self::ALLOW_COMPOSITE); + return; + } + + throw new NotSupportedException('Unknown token: ' . $token->getKey()); } protected function getOrderColumnMap()