Protects against temporary objects that exist only in memory (id < 0)

SVN:trunk[2202]
This commit is contained in:
Denis Flaven
2012-09-25 08:29:06 +00:00
parent 2f9922f7df
commit aa9c7c7091

View File

@@ -451,7 +451,7 @@ abstract class DBObject
// //
$sExtKeyAttCode = $oAttDef->GetKeyAttCode(); $sExtKeyAttCode = $oAttDef->GetKeyAttCode();
if ($iRemote = $this->Get($sExtKeyAttCode)) if (($iRemote = $this->Get($sExtKeyAttCode)) && ($iRemote > 0)) // Objects in memory have negative IDs
{ {
$oExtKeyAttDef = MetaModel::GetAttributeDef(get_class($this), $sExtKeyAttCode); $oExtKeyAttDef = MetaModel::GetAttributeDef(get_class($this), $sExtKeyAttCode);
$oRemote = MetaModel::GetObject($oExtKeyAttDef->GetTargetClass(), $iRemote); $oRemote = MetaModel::GetObject($oExtKeyAttDef->GetTargetClass(), $iRemote);
@@ -558,8 +558,16 @@ abstract class DBObject
//return $this->Get($sAttCode.'_friendlyname'); //return $this->Get($sAttCode.'_friendlyname');
$sTargetClass = $oAtt->GetTargetClass(EXTKEY_ABSOLUTE); $sTargetClass = $oAtt->GetTargetClass(EXTKEY_ABSOLUTE);
$iTargetKey = $this->Get($sAttCode); $iTargetKey = $this->Get($sAttCode);
$sLabel = $this->Get($sAttCode.'_friendlyname'); if ($iTargetKey < 0)
return $this->MakeHyperLink($sTargetClass, $iTargetKey, $sLabel); {
// the key points to an object that exists only in memory... no hyperlink points to it yet
return '';
}
else
{
$sLabel = $this->Get($sAttCode.'_friendlyname');
return $this->MakeHyperLink($sTargetClass, $iTargetKey, $sLabel);
}
} }
// That's a standard attribute (might be an ext field or a direct field, etc.) // That's a standard attribute (might be an ext field or a direct field, etc.)