aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag/CoreBundle/Event/Subscriber/CustomDoctrineORMSubscriber.php
diff options
context:
space:
mode:
authorJeremy Benoist <jeremy.benoist@gmail.com>2015-08-22 15:35:28 +0200
committerJeremy Benoist <jeremy.benoist@gmail.com>2015-08-22 15:36:07 +0200
commit7d6c3edcdd2730a46d59c186048e76fa72e364c7 (patch)
treec115d44214f2e57509f133967ad76397b1c9a717 /src/Wallabag/CoreBundle/Event/Subscriber/CustomDoctrineORMSubscriber.php
parentec00964de22a338d8f814c5440f8e09f542fdbbf (diff)
downloadwallabag-7d6c3edcdd2730a46d59c186048e76fa72e364c7.tar.gz
wallabag-7d6c3edcdd2730a46d59c186048e76fa72e364c7.tar.zst
wallabag-7d6c3edcdd2730a46d59c186048e76fa72e364c7.zip
Fix date filter on same day
Fix #1379
Diffstat (limited to 'src/Wallabag/CoreBundle/Event/Subscriber/CustomDoctrineORMSubscriber.php')
-rw-r--r--src/Wallabag/CoreBundle/Event/Subscriber/CustomDoctrineORMSubscriber.php38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/Wallabag/CoreBundle/Event/Subscriber/CustomDoctrineORMSubscriber.php b/src/Wallabag/CoreBundle/Event/Subscriber/CustomDoctrineORMSubscriber.php
new file mode 100644
index 00000000..20ced679
--- /dev/null
+++ b/src/Wallabag/CoreBundle/Event/Subscriber/CustomDoctrineORMSubscriber.php
@@ -0,0 +1,38 @@
1<?php
2
3namespace Wallabag\CoreBundle\Event\Subscriber;
4
5use Lexik\Bundle\FormFilterBundle\Event\Subscriber\DoctrineORMSubscriber;
6use Lexik\Bundle\FormFilterBundle\Event\GetFilterConditionEvent;
7use Symfony\Component\EventDispatcher\EventSubscriberInterface;
8
9/**
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)
12 */
13class CustomDoctrineORMSubscriber extends DoctrineORMSubscriber implements EventSubscriberInterface
14{
15 /**
16 * @param GetFilterConditionEvent $event
17 */
18 public function filterDateRange(GetFilterConditionEvent $event)
19 {
20 $expr = $event->getFilterQuery()->getExpressionBuilder();
21 $values = $event->getValues();
22 $value = $values['value'];
23
24 // left date should start at midnight
25 if (isset($value['left_date'][0]) && $value['left_date'][0] instanceOf \DateTime) {
26 $value['left_date'][0]->setTime(0, 0, 0);
27 }
28
29 // right adte should end one second before midnight
30 if (isset($value['right_date'][0]) && $value['right_date'][0] instanceOf \DateTime) {
31 $value['right_date'][0]->setTime(23, 59, 59);
32 }
33
34 if (isset($value['left_date'][0]) || isset($value['right_date'][0])) {
35 $event->setCondition($expr->dateTimeInRange($event->getField(), $value['left_date'][0], $value['right_date'][0]));
36 }
37 }
38}