#1111 Could not attach a UserRequest to a Problem (1-N links). Could not detach either! This fix requires attention: it is assumed that an item of a link set, if it is "modified" then its key to the current object has already been set.

SVN:trunk[3693]
This commit is contained in:
Romain Quetiez
2015-08-21 10:27:54 +00:00
parent a3aed6aafc
commit b1887ae431
3 changed files with 4 additions and 15 deletions

View File

@@ -1135,7 +1135,7 @@ class AttributeLinkedSet extends AttributeDefinition
}
// Both values are Object sets
return $val1->HasSameContents($val2, array($this->GetExtKeyToMe()));
return $val1->HasSameContents($val2);
}
/**

View File

@@ -1384,24 +1384,13 @@ abstract class DBObject implements iDisplay
foreach($aChanges['modified'] as $oLink)
{
// Make sure that the objects in the set point to "this"
$oLink->Set($oAttDef->GetExtKeyToMe(), $this->m_iKey);
// Objects in the set either remain attached or have been detached -> leave the link as is
$oLink->DBWrite();
}
foreach($aChanges['removed'] as $oLink)
{
// Objects can be removed from the set because:
// 1) They should no longer exist
// 2) They are about to be removed from the set BUT NOT deleted, their ExtKey has been reset
if ($oLink->IsModified() && ($oLink->Get($sExtKeyToMe) != $this->m_iKey))
{
$oLink->DBWrite();
}
else
{
$oLink->DBDelete();
}
$oLink->DBDelete();
}
}
}

View File

@@ -1318,7 +1318,7 @@ class DBObjectSetComparator
// Already marked as modified above
//$aResult['modified'][$oObj->GetKey()] = $oObj;
}
else if (!array_key_exists($sFingerprint, $this->aFingerprints1) && $oObj->IsNew())
else if (!array_key_exists($sFingerprint, $this->aFingerprints1))
{
$aResult['added'][] = $oObj;
}