diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php index 174066f8136abd9abf7827f55a69a02afa91396c..c867531d983434cc99f9d7883f485405ce916587 100644 --- a/include/class.dynamic_forms.php +++ b/include/class.dynamic_forms.php @@ -1818,11 +1818,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 a7c54cf2169657b5ce75583e7d37af85e05efad9..39d17ebd3f2f9b03b8fd423b0ac42a8b6b137034 100644 --- a/include/class.forms.php +++ b/include/class.forms.php @@ -1890,11 +1890,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); }