]> git.agnieray.net Git - galette.git/commitdiff
Free search params were broken from saved searches; closes #1367
authorJohan Cwiklinski <jcwiklinski@teclib.com>
Thu, 28 Nov 2019 07:36:02 +0000 (08:36 +0100)
committerJohan Cwiklinski <jcwiklinski@teclib.com>
Thu, 28 Nov 2019 22:38:50 +0000 (23:38 +0100)
galette/lib/Galette/Entity/SavedSearch.php
galette/lib/Galette/Filters/AdvancedMembersList.php

index 425211cab46049f0b2b059df98be2b7355d8718c..3afa27036891d989324f41f8ad4feeee88feaf63 100644 (file)
@@ -133,7 +133,7 @@ class SavedSearch
         $pk = self::PK;
         $this->id = $rs->$pk;
         $this->name = $rs->name;
-        $this->parameters = json_decode($rs->parameters);
+        $this->parameters = json_decode($rs->parameters, true);
         $this->author_id = $rs->id_adh;
         $this->creation_date = $rs->creation_date;
         $this->form = $rs->form;
index 2fc1b0740700f72e43d144672503f59a11fabf2b..e547b0a6b9155864eb35c83923388afb16bedf78 100644 (file)
@@ -509,16 +509,17 @@ class AdvancedMembersList extends MembersList
                     if (isset($this->_free_search['empty'])) {
                         unset($this->_free_search['empty']);
                     }
-                    if (is_array($value)) {
-                        if (isset($value['field'])
-                            && isset($value['search'])
-                            && isset($value['log_op'])
-                            && isset($value['qry_op'])
-                            && isset($value['idx'])
-                            && isset($value['type'])
-                        ) {
+
+                    if ($this->isValidFreeSearch($value)) {
+                        //should this happen?
+                        $values = [$value];
+                    } else {
+                        $values = $value;
+                    }
+
+                    foreach ($values as $value) {
+                        if ($this->isValidFreeSearch($value)) {
                             $id = $value['idx'];
-                            unset($value['idx']);
 
                             //handle value according to type
                             switch ($value['type']) {
@@ -548,12 +549,6 @@ class AdvancedMembersList extends MembersList
                                 Analog::WARNING
                             );
                         }
-                    } else {
-                        Analog::log(
-                            '[AdvancedMembersList] Value for free filter should be an '
-                            .'array (' . gettype($value) . ' given',
-                            Analog::WARNING
-                        );
                     }
                     break;
                 default:
@@ -584,4 +579,29 @@ class AdvancedMembersList extends MembersList
             }
         }
     }
+
+    /**
+     * Validate free search internal array
+     *
+     * @param array $data Array to validate
+     *
+     * @return boolean
+     */
+    public static function isValidFreeSearch($data)
+    {
+        if (!is_array($data)) {
+            Analog::log(
+                '[AdvancedMembersList] Value for free filter should be an '
+                .'array (' . gettype($data) . ' given',
+                Analog::WARNING
+            );
+            return false;
+        }
+        return isset($data['field'])
+            && isset($data['search'])
+            && isset($data['log_op'])
+            && isset($data['qry_op'])
+            && isset($data['idx'])
+            && isset($data['type']);
+    }
 }