diff --git a/sources/application/search/criterionconversion/criteriontooql.class.inc.php b/sources/application/search/criterionconversion/criteriontooql.class.inc.php index cacbe96e9..4171538d6 100644 --- a/sources/application/search/criterionconversion/criteriontooql.class.inc.php +++ b/sources/application/search/criterionconversion/criteriontooql.class.inc.php @@ -216,9 +216,11 @@ class CriterionToOQL extends CriterionConversionAbstract if (count($aInValues) == 1) { + // Add 'AND 1' to group the 'OR' inside an AND list for OQL parsing return "((({$sRef} = '$sInList') OR {$sFilterOnUndefined}) AND 1)"; } + // Add 'AND 1' to group the 'OR' inside an AND list for OQL parsing return "(({$sRef} IN ('$sInList') OR {$sFilterOnUndefined}) AND 1)"; } diff --git a/sources/application/search/criterionconversion/criteriontosearchform.class.inc.php b/sources/application/search/criterionconversion/criteriontosearchform.class.inc.php index e22c58725..51755fb1e 100644 --- a/sources/application/search/criterionconversion/criteriontosearchform.class.inc.php +++ b/sources/application/search/criterionconversion/criteriontosearchform.class.inc.php @@ -423,27 +423,20 @@ class CriterionToSearchForm extends CriterionConversionAbstract switch ($sOperator) { case '=': + // Same as IN $aCriteria['operator'] = CriterionConversionAbstract::OP_IN; break; - case '!=': - if (!isset($aCriteria['values'][0])) - { - $aCriteria['operator'] = CriterionConversionAbstract::OP_NOT_EMPTY; - } - else - { - // Same as NOT IN - $aCriteria = self::RevertValues($aCriteria, $aFields); - } - break; case 'NOT IN': + case '!=': + // Same as NOT IN $aCriteria = self::RevertValues($aCriteria, $aFields); break; case 'IN': + // Nothing special to do break; case 'OR': case 'ISNULL': - // Special case when undefined and other values are selected + // Special case when undefined and/or other values are selected $aCriteria['operator'] = CriterionConversionAbstract::OP_IN; if (isset($aCriteria['has_undefined']) && $aCriteria['has_undefined']) { @@ -451,6 +444,7 @@ class CriterionToSearchForm extends CriterionConversionAbstract { $aCriteria['values'] = array(); } + // Convention for 'undefined' enums $aCriteria['values'][] = array('value' => 'null', 'label' => 'null'); } break;