aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag/CoreBundle/Filter/EntryFilterType.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Wallabag/CoreBundle/Filter/EntryFilterType.php')
-rw-r--r--src/Wallabag/CoreBundle/Filter/EntryFilterType.php48
1 files changed, 27 insertions, 21 deletions
diff --git a/src/Wallabag/CoreBundle/Filter/EntryFilterType.php b/src/Wallabag/CoreBundle/Filter/EntryFilterType.php
index 32de21ca..c38be832 100644
--- a/src/Wallabag/CoreBundle/Filter/EntryFilterType.php
+++ b/src/Wallabag/CoreBundle/Filter/EntryFilterType.php
@@ -2,12 +2,17 @@
2 2
3namespace Wallabag\CoreBundle\Filter; 3namespace Wallabag\CoreBundle\Filter;
4 4
5use Doctrine\ORM\EntityRepository;
6use Lexik\Bundle\FormFilterBundle\Filter\Query\QueryInterface;
7use Lexik\Bundle\FormFilterBundle\Filter\Form\Type\NumberRangeFilterType;
8use Lexik\Bundle\FormFilterBundle\Filter\Form\Type\DateRangeFilterType;
9use Lexik\Bundle\FormFilterBundle\Filter\Form\Type\TextFilterType;
10use Lexik\Bundle\FormFilterBundle\Filter\Form\Type\CheckboxFilterType;
11use Lexik\Bundle\FormFilterBundle\Filter\Form\Type\ChoiceFilterType;
5use Symfony\Component\Form\AbstractType; 12use Symfony\Component\Form\AbstractType;
6use Symfony\Component\Form\FormBuilderInterface; 13use Symfony\Component\Form\FormBuilderInterface;
7use Symfony\Component\OptionsResolver\OptionsResolver; 14use Symfony\Component\OptionsResolver\OptionsResolver;
8use Lexik\Bundle\FormFilterBundle\Filter\Query\QueryInterface; 15use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
9use Doctrine\ORM\EntityRepository;
10use Wallabag\UserBundle\Entity\User;
11 16
12class EntryFilterType extends AbstractType 17class EntryFilterType extends AbstractType
13{ 18{
@@ -18,19 +23,19 @@ class EntryFilterType extends AbstractType
18 * Repository & user are used to get a list of language entries for this user. 23 * Repository & user are used to get a list of language entries for this user.
19 * 24 *
20 * @param EntityRepository $entryRepository 25 * @param EntityRepository $entryRepository
21 * @param User $user 26 * @param TokenStorage $token
22 */ 27 */
23 public function __construct(EntityRepository $entryRepository, User $user) 28 public function __construct(EntityRepository $entryRepository, TokenStorage $token)
24 { 29 {
25 $this->repository = $entryRepository; 30 $this->repository = $entryRepository;
26 $this->user = $user; 31 $this->user = $token->getToken()->getUser();
27 } 32 }
28 33
29 public function buildForm(FormBuilderInterface $builder, array $options) 34 public function buildForm(FormBuilderInterface $builder, array $options)
30 { 35 {
31 $builder 36 $builder
32 ->add('readingTime', 'filter_number_range') 37 ->add('readingTime', NumberRangeFilterType::class)
33 ->add('createdAt', 'filter_date_range', array( 38 ->add('createdAt', DateRangeFilterType::class, array(
34 'left_date_options' => array( 39 'left_date_options' => array(
35 'attr' => array( 40 'attr' => array(
36 'placeholder' => 'dd/mm/yyyy', 41 'placeholder' => 'dd/mm/yyyy',
@@ -47,20 +52,20 @@ class EntryFilterType extends AbstractType
47 ), 52 ),
48 ) 53 )
49 ) 54 )
50 ->add('domainName', 'filter_text', array( 55 ->add('domainName', TextFilterType::class, array(
51 'apply_filter' => function (QueryInterface $filterQuery, $field, $values) { 56 'apply_filter' => function (QueryInterface $filterQuery, $field, $values) {
52 $value = $values['value']; 57 $value = $values['value'];
53 if (strlen($value) <= 2 || empty($value)) { 58 if (strlen($value) <= 2 || empty($value)) {
54 return; 59 return;
55 } 60 }
56 $expression = $filterQuery->getExpr()->like($field, $filterQuery->getExpr()->literal('%'.$value.'%')); 61 $expression = $filterQuery->getExpr()->like($field, $filterQuery->getExpr()->literal('%'.$value.'%'));
57 62
58 return $filterQuery->createCondition($expression); 63 return $filterQuery->createCondition($expression);
59 }, 64 },
60 )) 65 ))
61 ->add('isArchived', 'filter_checkbox') 66 ->add('isArchived', CheckboxFilterType::class)
62 ->add('isStarred', 'filter_checkbox') 67 ->add('isStarred', CheckboxFilterType::class)
63 ->add('previewPicture', 'filter_checkbox', array( 68 ->add('previewPicture', CheckboxFilterType::class, array(
64 'apply_filter' => function (QueryInterface $filterQuery, $field, $values) { 69 'apply_filter' => function (QueryInterface $filterQuery, $field, $values) {
65 if (false === $values['value']) { 70 if (false === $values['value']) {
66 return; 71 return;
@@ -71,13 +76,14 @@ class EntryFilterType extends AbstractType
71 return $filterQuery->createCondition($expression); 76 return $filterQuery->createCondition($expression);
72 }, 77 },
73 )) 78 ))
74 ->add('language', 'filter_choice', array( 79 ->add('language', ChoiceFilterType::class, array(
75 'choices' => $this->repository->findDistinctLanguageByUser($this->user->getId()), 80 'choices' => array_flip($this->repository->findDistinctLanguageByUser($this->user->getId())),
81 'choices_as_values' => true,
76 )) 82 ))
77 ; 83 ;
78 } 84 }
79 85
80 public function getName() 86 public function getBlockPrefix()
81 { 87 {
82 return 'entry_filter'; 88 return 'entry_filter';
83 } 89 }