diff --git a/core/dbobjectset.class.php b/core/dbobjectset.class.php index fc00fd564..8105d546f 100644 --- a/core/dbobjectset.class.php +++ b/core/dbobjectset.class.php @@ -741,8 +741,11 @@ class DBObjectSet { foreach($aVals as $sCode => $oExpr) { - $oScalarExpr = $oExpr->GetAsScalar($aScalarArgs); - $aConst[$sClassAlias][$sCode] = $oScalarExpr->GetValue(); + if (is_object($oExpr)) // Array_merge_recursive creates an array when the same key is present multiple times... ignore them + { + $oScalarExpr = $oExpr->GetAsScalar($aScalarArgs); + $aConst[$sClassAlias][$sCode] = $oScalarExpr->GetValue(); + } } } return $aConst; diff --git a/core/expression.class.inc.php b/core/expression.class.inc.php index 76c75783f..beea8d84a 100644 --- a/core/expression.class.inc.php +++ b/core/expression.class.inc.php @@ -299,13 +299,8 @@ class BinaryExpression extends Expression { $aResult[$this->m_oRightExpr->GetParent()][$this->m_oRightExpr->GetName()] = $this->m_oLeftExpr; } - else - { - // Strictly, this should be removed - $aResult = array_merge_recursive($this->m_oRightExpr->ListConstantFields(), $this->m_oLeftExpr->ListConstantFields()); - } } - else + else if ($this->m_sOperator == 'AND') { // Strictly, this should be done only for the AND operator $aResult = array_merge_recursive($this->m_oRightExpr->ListConstantFields(), $this->m_oLeftExpr->ListConstantFields());