Obsolescence: fixed OQL issue

SVN:trunk[4770]
This commit is contained in:
Romain Quetiez
2017-06-27 12:37:07 +00:00
parent b15621639b
commit c2b9716e28

View File

@@ -412,7 +412,8 @@ EOF
$oLinkSearch = $this->Get($sAttCode)->GetFilter();
if ($oAttDef->IsIndirect())
{
$oLinkingAttDef = MetaModel::GetAttributeDef($sLinkedClass, $oAttDef->GetExtKeyToRemote());
$sExtKeyToRemote = $oAttDef->GetExtKeyToRemote();
$oLinkingAttDef = MetaModel::GetAttributeDef($sLinkedClass, $sExtKeyToRemote);
$sTargetClass = $oLinkingAttDef->GetTargetClass();
if (!utils::ShowObsoleteData() && MetaModel::IsObsoletable($sTargetClass))
{
@@ -421,7 +422,9 @@ EOF
'=',
new ScalarExpression(0)
);
$oLinkSearch->AddConditionExpression($oNotObsolete);
$oNotObsoleteRemote = new DBObjectSearch($sTargetClass);
$oNotObsoleteRemote->AddConditionExpression($oNotObsolete);
$oLinkSearch->AddCondition_PointingTo($oNotObsoleteRemote, $sExtKeyToRemote);
}
}
$oLinkSet = new DBObjectSet($oLinkSearch);
@@ -3331,7 +3334,14 @@ EOF
$aFinalValues = array();
foreach($this->GetWriteableAttList(array_keys($aValues), $aErrors, $aAttFlags) as $sAttCode => $oAttDef)
{
$aFinalValues[$sAttCode] = $aValues[$sAttCode];
if ($oAttDef->IsLinkSet())
{
$aFinalValues[$sAttCode] = json_decode($aValues[$sAttCode], true);
}
else
{
$aFinalValues[$sAttCode] = $aValues[$sAttCode];
}
}
$this->UpdateObjectFromArray($aFinalValues);
return $aErrors;