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();
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);
$oRemote = MetaModel::GetObject($oExtKeyAttDef->GetTargetClass(), $iRemote);
@@ -558,8 +558,16 @@ abstract class DBObject
//return $this->Get($sAttCode.'_friendlyname');
$sTargetClass = $oAtt->GetTargetClass(EXTKEY_ABSOLUTE);
$iTargetKey = $this->Get($sAttCode);
$sLabel = $this->Get($sAttCode.'_friendlyname');
return $this->MakeHyperLink($sTargetClass, $iTargetKey, $sLabel);
if ($iTargetKey < 0)
{
// 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.)