From 7d6c3edcdd2730a46d59c186048e76fa72e364c7 Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Sat, 22 Aug 2015 15:35:28 +0200 Subject: [PATCH] Fix date filter on same day Fix #1379 --- app/config/services.yml | 1 + .../CustomDoctrineORMSubscriber.php | 38 +++++++++++++++++++ .../CoreBundle/Filter/EntryFilterType.php | 5 ++- 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 src/Wallabag/CoreBundle/Event/Subscriber/CustomDoctrineORMSubscriber.php diff --git a/app/config/services.yml b/app/config/services.yml index af22d381..b3ec7c51 100644 --- a/app/config/services.yml +++ b/app/config/services.yml @@ -4,6 +4,7 @@ parameters: security.authentication.provider.dao.class: Wallabag\CoreBundle\Security\Authentication\Provider\WallabagAuthenticationProvider security.encoder.digest.class: Wallabag\CoreBundle\Security\Authentication\Encoder\WallabagPasswordEncoder security.validator.user_password.class: Wallabag\CoreBundle\Security\Validator\WallabagUserPasswordValidator + lexik_form_filter.get_filter.doctrine_orm.class: Wallabag\CoreBundle\Event\Subscriber\CustomDoctrineORMSubscriber services: # used for tests 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 @@ +getFilterQuery()->getExpressionBuilder(); + $values = $event->getValues(); + $value = $values['value']; + + // left date should start at midnight + if (isset($value['left_date'][0]) && $value['left_date'][0] instanceOf \DateTime) { + $value['left_date'][0]->setTime(0, 0, 0); + } + + // right adte should end one second before midnight + if (isset($value['right_date'][0]) && $value['right_date'][0] instanceOf \DateTime) { + $value['right_date'][0]->setTime(23, 59, 59); + } + + if (isset($value['left_date'][0]) || isset($value['right_date'][0])) { + $event->setCondition($expr->dateTimeInRange($event->getField(), $value['left_date'][0], $value['right_date'][0])); + } + } +} diff --git a/src/Wallabag/CoreBundle/Filter/EntryFilterType.php b/src/Wallabag/CoreBundle/Filter/EntryFilterType.php index ff51785b..85d1a061 100644 --- a/src/Wallabag/CoreBundle/Filter/EntryFilterType.php +++ b/src/Wallabag/CoreBundle/Filter/EntryFilterType.php @@ -27,8 +27,9 @@ class EntryFilterType extends AbstractType ), 'format' => 'dd/MM/yyyy', 'widget' => 'single_text', - ), - )) + ), + ) + ) ->add('domainName', 'filter_text', array( 'apply_filter' => function (QueryInterface $filterQuery, $field, $values) { $value = $values['value']; -- 2.41.0