1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
<?php
namespace ICanBoogie\Facets\Criterion;
use ICanBoogie\ActiveRecord\Query;
class DateCriterion extends BasicCriterion
{
public function alter_query_with_value(Query $query, $value)
{
if (!$value)
{
return $query;
}
$field = $this->id;
list($year, $month, $day) = explode('-', $value) + [ 0, 0, 0 ];
if ($day)
{
$query->and("DATE(`$field`) = ?", "$year-$month-$day");
}
else if ($month)
{
$query->and("YEAR(`$field`) = ? AND MONTH(`$field`) = ?", (int) $year, (int) $month);
}
else if ($year)
{
$query->and("YEAR(`$field`) = ?", (int) $year);
}
return $query;
}
}