mirror of
https://github.com/Combodo/iTop.git
synced 2026-05-18 23:08:46 +02:00
advanced search: ExternalFieldOqlExpression Check method
- handling of special case for the attribute "id" - clearer error message - typo SVN:b1312[5749]
This commit is contained in:
@@ -218,7 +218,8 @@ class ExternalFieldOqlExpression extends ExternalFieldExpression implements Chec
|
|||||||
$sParentAlias = null;
|
$sParentAlias = null;
|
||||||
foreach($this->m_aExpression as $i => $oFieldOqlExpression)
|
foreach($this->m_aExpression as $i => $oFieldOqlExpression)
|
||||||
{
|
{
|
||||||
if (is_null($sParentAlias))
|
|
||||||
|
if (is_null($sParentAlias))
|
||||||
{
|
{
|
||||||
$oFieldOqlExpression->RefreshAlias($oModelReflection, $aAliases, $sSourceQuery);
|
$oFieldOqlExpression->RefreshAlias($oModelReflection, $aAliases, $sSourceQuery);
|
||||||
}
|
}
|
||||||
@@ -229,19 +230,37 @@ class ExternalFieldOqlExpression extends ExternalFieldExpression implements Chec
|
|||||||
$oFieldOqlExpression->Check($oModelReflection, $aAliases, $sSourceQuery);
|
$oFieldOqlExpression->Check($oModelReflection, $aAliases, $sSourceQuery);
|
||||||
|
|
||||||
$sClass = $aAliases[$oFieldOqlExpression->GetParent()];
|
$sClass = $aAliases[$oFieldOqlExpression->GetParent()];
|
||||||
$sTargetClass = $oModelReflection->GetAttributeProperty($sClass, $oFieldOqlExpression->GetName(), 'targetclass');
|
|
||||||
if (is_null($sTargetClass))
|
$bLastIteration = ($i == (count($this->m_aExpression) - 1));
|
||||||
{
|
|
||||||
if ($i != (count($this->m_aExpression) - 1))
|
if (!$bLastIteration)
|
||||||
{
|
{
|
||||||
throw new OqlNormalizeException('Forbiden operation for attribute', $sSourceQuery, $oFieldOqlExpression->GetNameDetails(), $oModelReflection->GetFiltersList($sClass));
|
if ($oFieldOqlExpression->GetName() == 'id')
|
||||||
}
|
{
|
||||||
}
|
$sTargetClass = null;
|
||||||
else
|
}
|
||||||
{
|
else
|
||||||
$aAliases[$sTargetClass] = $sTargetClass;
|
{
|
||||||
$sParentAlias = $sTargetClass;
|
$sTargetClass = $oModelReflection->GetAttributeProperty($sClass, $oFieldOqlExpression->GetName(), 'targetclass');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (is_null($sTargetClass))
|
||||||
|
{
|
||||||
|
throw new OqlNormalizeException('Forbidden operation for attribute', $sSourceQuery, $oFieldOqlExpression->GetNameDetails(), $oModelReflection->GetFiltersList($sClass));
|
||||||
|
}
|
||||||
|
$aAliases[$sTargetClass] = $sTargetClass;
|
||||||
|
$sParentAlias = $sTargetClass;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($oFieldOqlExpression->GetName() != 'id')
|
||||||
|
{
|
||||||
|
if (!$oModelReflection->IsValidAttCode($sClass, $oFieldOqlExpression->GetName()))
|
||||||
|
{
|
||||||
|
throw new OqlNormalizeException('Invalid attribute', $sSourceQuery, $oFieldOqlExpression->GetNameDetails(), $oModelReflection->GetFiltersList($sClass));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user