55 lines
1.1 KiB
PHP
55 lines
1.1 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace Kanboard\Filter;
|
||
|
|
|
||
|
|
use Kanboard\Core\DateParser;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Base date filter class
|
||
|
|
*
|
||
|
|
* @package filter
|
||
|
|
* @author Kamil Ściana
|
||
|
|
*/
|
||
|
|
abstract class BaseDateRangeFilter extends BaseFilter
|
||
|
|
{
|
||
|
|
/**
|
||
|
|
* DateParser object
|
||
|
|
*
|
||
|
|
* @access protected
|
||
|
|
* @var DateParser
|
||
|
|
*/
|
||
|
|
protected $dateParser;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Set DateParser object
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @param DateParser $dateParser
|
||
|
|
* @return $this
|
||
|
|
*/
|
||
|
|
public function setDateParser(DateParser $dateParser)
|
||
|
|
{
|
||
|
|
$this->dateParser = $dateParser;
|
||
|
|
return $this;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Apply a date filter
|
||
|
|
*
|
||
|
|
* @access protected
|
||
|
|
* @param string $field
|
||
|
|
*/
|
||
|
|
protected function applyDateFilter($field)
|
||
|
|
{
|
||
|
|
$dates = explode('..', $this->value);
|
||
|
|
|
||
|
|
if (count($dates)=== 2) {
|
||
|
|
$timestampFrom = $this->dateParser->getTimestamp($dates[0]." 00:00");
|
||
|
|
$timestampTo = $this->dateParser->getTimestamp($dates[1]." 00:00");
|
||
|
|
|
||
|
|
$this->query->gte($field, $timestampFrom);
|
||
|
|
$this->query->lte($field, $timestampTo + 86399);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|