3 namespace Wallabag\CoreBundle\Event\Subscriber
;
5 use Lexik\Bundle\FormFilterBundle\Event\GetFilterConditionEvent
;
6 use Lexik\Bundle\FormFilterBundle\Event\Subscriber\DoctrineORMSubscriber
;
7 use Symfony\Component\EventDispatcher\EventSubscriberInterface
;
10 * This custom class override the default behavior of LexikFilterBundle on `filter_date_range`
11 * It converts a date_range to date_time_range to add hour to be able to grab a whole day (from 00:00:00 to 23:59:59).
13 class CustomDoctrineORMSubscriber
extends DoctrineORMSubscriber
implements EventSubscriberInterface
15 public function filterDateRange(GetFilterConditionEvent
$event)
17 $expr = $event->getFilterQuery()->getExpressionBuilder();
18 $values = $event->getValues();
19 $value = $values['value'];
21 // left date should start at midnight
22 if (isset($value['left_date'][0]) && $value['left_date'][0] instanceof \DateTime
) {
23 $value['left_date'][0]->setTime(0, 0, 0);
26 // right adte should end one second before midnight
27 if (isset($value['right_date'][0]) && $value['right_date'][0] instanceof \DateTime
) {
28 $value['right_date'][0]->setTime(23, 59, 59);
31 if (isset($value['left_date'][0]) || isset($value['right_date'][0])) {
32 $event->setCondition($expr->dateTimeInRange($event->getField(), $value['left_date'][0], $value['right_date'][0]));