]> git.agnieray.net Git - galette.git/commitdiff
Fix free search, add tests
authorJohan Cwiklinski <johan@x-tnd.be>
Wed, 17 Nov 2021 06:55:43 +0000 (07:55 +0100)
committerJohan Cwiklinski <johan@x-tnd.be>
Wed, 17 Nov 2021 06:55:56 +0000 (07:55 +0100)
This reverts "Do not remove empty free search filter to prevent issues  displaying form again"
commit ab31f3b73091a80630c95f0722279371be46ac41.

galette/lib/Galette/Filters/AdvancedMembersList.php
galette/lib/Galette/Repository/Members.php
tests/Galette/Repository/tests/units/Members.php

index 406f82363e955e847b712f326dcd584ba39967ce..f787fac8edd395bedbaf565cc5707c5da474bbfd 100644 (file)
@@ -558,6 +558,10 @@ class AdvancedMembersList extends MembersList
                     }
                     break;
                 case 'free_search':
+                    if (isset($this->_free_search['empty']) && !isset($value['empty'])) {
+                        unset($this->_free_search['empty']);
+                    }
+
                     if ($this->isValidFreeSearch($value)) {
                         //should this happen?
                         $values = [$value];
index 235cabe668f9d0fda48ed95e464c53854de5cd2b..ec89161ca433c4559cf69db0a645a39ac0273e5c 100644 (file)
@@ -1496,7 +1496,11 @@ class Members
                         $qry_pattern
                     );
                 } else {
-                    $qry .= 'LOWER(' . $prefix . $fs['field'] . ') ' .
+                    $field = $prefix . $fs['field'];
+                    if ($zdb->isPostgres()) {
+                        $field = 'CAST('.$field.' AS TEXT)';
+                    }
+                    $qry .= 'LOWER(' . $field . ') ' .
                         $qop . ' ' . $zdb->platform->quoteValue($fs['search']);
                 }
 
index bf3d64366bb0bf2453dc2984faee69664c089924..dfb362e7419a6a22320c0e2d94b7ca440c6616ef 100644 (file)
@@ -467,6 +467,21 @@ class Members extends GaletteTestCase
 
         $this->integer($list->count())->isIdenticalTo(5);
 
+        //search on status from free search
+        $filters = new \Galette\Filters\AdvancedMembersList();
+        $filters->free_search = [
+            'idx' => 1,
+            'field' => \Galette\Entity\Status::PK,
+            'type' => 0,
+            'search' => \Galette\Entity\Status::DEFAULT_STATUS,
+            'log_op' => $filters::OP_AND,
+            'qry_op' => $filters::OP_EQUALS
+        ];
+        $members = new \Galette\Repository\Members($filters);
+        $list = $members->getList();
+
+        $this->integer($list->count())->isIdenticalTo(5);
+
         //search on contribution amount
         $filters = new \Galette\Filters\AdvancedMembersList();
         $filters->contrib_min_amount = 30.0;