From 0a44f34c2c5bfca55de91a30d07b371e819052a7 Mon Sep 17 00:00:00 2001 From: Stephen Abello Date: Wed, 23 May 2018 10:11:23 +0000 Subject: [PATCH] =?UTF-8?q?N=C2=B01444=20:=20fixed=20regression=20introduc?= =?UTF-8?q?ed=20in=20[r5724]=20&=20[r5773]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SVN:trunk[5809] --- core/dbobjectsearch.class.php | 4 +++- core/oql/expression.class.inc.php | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/core/dbobjectsearch.class.php b/core/dbobjectsearch.class.php index 5f1f3bf85..8c2b24eb0 100644 --- a/core/dbobjectsearch.class.php +++ b/core/dbobjectsearch.class.php @@ -508,7 +508,9 @@ class DBObjectSearch extends DBSearch $oParamExpression = new VariableExpression($sInParamName); $this->SetInternalParams(array($sInParamName => $aValues)); - $oInCondition = new BinaryExpression($oFieldExpression, $sOperator, $oParamExpression); + $oListExpression = new ListExpression(array($oParamExpression)); + + $oInCondition = new BinaryExpression($oFieldExpression, $sOperator, $oListExpression); $this->AddConditionExpression($oInCondition); } diff --git a/core/oql/expression.class.inc.php b/core/oql/expression.class.inc.php index d0b4bf505..73c42d195 100644 --- a/core/oql/expression.class.inc.php +++ b/core/oql/expression.class.inc.php @@ -303,6 +303,10 @@ class BinaryExpression extends Expression { throw new CoreException('Expecting an Expression object on the right hand', array('found_class' => get_class($oRightExpr))); } + if ( (($sOperator == "IN") || ($sOperator == "NOT IN")) && !$oRightExpr instanceof ListExpression) + { + throw new CoreException("Expecting a List Expression object on the right hand for operator $sOperator", array('found_class' => get_class($oRightExpr))); + } $this->m_oLeftExpr = $oLeftExpr; $this->m_oRightExpr = $oRightExpr; $this->m_sOperator = $sOperator; @@ -1286,7 +1290,7 @@ class VariableExpression extends UnaryExpression $res = CMDBSource::Quote($aArgs[$this->m_sName]); if (is_array($res)) { - $res = '('.implode(', ', $res).')'; + $res = implode(', ', $res); } return $res; }