| | <?php |
| |
|
| | namespace Kanboard\Filter; |
| |
|
| | use Kanboard\Core\DateParser; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | abstract class BaseDateFilter extends BaseFilter |
| | { |
| | |
| | |
| | |
| | |
| | |
| | |
| | protected $dateParser; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function setDateParser(DateParser $dateParser) |
| | { |
| | $this->dateParser = $dateParser; |
| | return $this; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | protected function parseOperator() |
| | { |
| | $operators = array( |
| | '<=' => 'lte', |
| | '>=' => 'gte', |
| | '<' => 'lt', |
| | '>' => 'gt', |
| | ); |
| |
|
| | foreach ($operators as $operator => $method) { |
| | if (strpos($this->value, $operator) === 0) { |
| | $this->value = substr($this->value, strlen($operator)); |
| | return $method; |
| | } |
| | } |
| |
|
| | return ''; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | protected function applyDateFilter($field) |
| | { |
| | $method = $this->parseOperator(); |
| | $timestamp = $this->dateParser->getTimestampFromIsoFormat($this->value); |
| |
|
| | if ($method !== '') { |
| | $this->query->$method($field, $this->getTimestampFromOperator($method, $timestamp)); |
| | } else { |
| | $this->query->gte($field, $timestamp); |
| | $this->query->lte($field, $timestamp + 86399); |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | protected function getTimestampFromOperator($method, $timestamp) |
| | { |
| | switch ($method) { |
| | case 'lte': |
| | return $timestamp + 86399; |
| | case 'lt': |
| | return $timestamp; |
| | case 'gte': |
| | return $timestamp; |
| | case 'gt': |
| | return $timestamp + 86400; |
| | } |
| |
|
| | return $timestamp; |
| | } |
| | } |
| |
|