| <?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; |
| } |
| } |
|
|