diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php index ccbbfd2205a64ce64b526e6db37fddcf34677439..45f42c0ad05f7b80e38654aee85fcf6e67a2d96c 100644 --- a/include/class.dynamic_forms.php +++ b/include/class.dynamic_forms.php @@ -1809,11 +1809,12 @@ class SelectionField extends FormField { function getSearchQ($method, $value, $name=false) { $name = $name ?: $this->get('name'); + $val = '"?'.implode('("|,|$)|"?', array_keys($value)).'("|,|$)'; switch ($method) { case '!includes': - return Q::not(array("{$name}__intersect" => array_keys($value))); + return Q::not(array("{$name}__regex" => $val)); case 'includes': - return new Q(array("{$name}__intersect" => array_keys($value))); + return new Q(array("{$name}__regex" => $val)); default: return parent::getSearchQ($method, $value, $name); } diff --git a/include/class.forms.php b/include/class.forms.php index c097dd995ab0f8e48336215bb6acf578e0dfb440..e913b7a646b1e357beb76f92c6fd04d41c53c2cd 100644 --- a/include/class.forms.php +++ b/include/class.forms.php @@ -1740,11 +1740,12 @@ class ChoiceField extends FormField { function getSearchQ($method, $value, $name=false) { $name = $name ?: $this->get('name'); + $val = '"?'.implode('("|,|$)|"?', array_keys($value)).'("|,|$)'; switch ($method) { case '!includes': - return Q::not(array("{$name}__in" => array_keys($value))); + return Q::not(array("{$name}__regex" => $val)); case 'includes': - return new Q(array("{$name}__in" => array_keys($value))); + return new Q(array("{$name}__regex" => $val)); default: return parent::getSearchQ($method, $value, $name); }