#830 Regression introduced in the beta. Related to the management of query arguments

SVN:trunk[2980]
This commit is contained in:
Romain Quetiez
2013-11-25 15:10:09 +00:00
parent b62b9caaf2
commit dd1cf43d41
2 changed files with 21 additions and 10 deletions

View File

@@ -738,14 +738,8 @@ class DBObjectSet
{
foreach($aVals as $sCode => $oExpr)
{
if ($oExpr instanceof ScalarExpression)
{
$aConst[$sClassAlias][$sCode] = $oExpr->GetValue();
}
else //Variable
{
$aConst[$sClassAlias][$sCode] = $aScalarArgs[$oExpr->GetName()];
}
$oScalarExpr = $oExpr->GetAsScalar($aScalarArgs);
$aConst[$sClassAlias][$sCode] = $oScalarExpr->GetValue();
}
}
return $aConst;

View File

@@ -647,12 +647,29 @@ class VariableExpression extends UnaryExpression
public function GetAsScalar($aArgs)
{
$value = '';
$value = null;
if (array_key_exists($this->m_sName, $aArgs))
{
$value = $aArgs[$this->m_sName];
}
else
elseif (($iPos = strpos($this->m_sName, '->')) !== false)
{
$sParamName = substr($this->m_sName, 0, $iPos);
if (array_key_exists($sParamName.'->object()', $aArgs))
{
$sAttCode = substr($this->m_sName, $iPos + 2);
$oObj = $aArgs[$sParamName.'->object()'];
if ($sAttCode == 'id')
{
$value = $oObj->GetKey();
}
else
{
$value = $oObj->Get($sAttCode);
}
}
}
if (is_null($value))
{
throw new MissingQueryArgument('Missing query argument', array('expecting'=>$this->m_sName, 'available'=>array_keys($aArgs)));
}