diff --git a/core/metamodel.class.php b/core/metamodel.class.php index 60696cded..285db9460 100644 --- a/core/metamodel.class.php +++ b/core/metamodel.class.php @@ -2681,7 +2681,7 @@ abstract class MetaModel } return $aResult; } - public static function EnumReferencingClasses($sClass, $bSkipLinkingClasses = false) + public static function EnumReferencingClasses($sClass, $bSkipLinkingClasses = false, $bInnerJoinsOnly = false) { self::_check_subclass($sClass); @@ -2699,6 +2699,8 @@ abstract class MetaModel if (self::$m_aAttribOrigins[$sSomeClass][$sAttCode] != $sSomeClass) continue; if ($oAttDef->IsExternalKey() && ($oAttDef->GetTargetClass() == $sClass)) { + if ($bInnerJoinsOnly && $oAttDef->IsNullAllowed()) continue; + // Ok, I want this one $aExtKeys[] = $sAttCode; } } diff --git a/pages/UI.php b/pages/UI.php index b854e357f..ec6136aac 100644 --- a/pages/UI.php +++ b/pages/UI.php @@ -469,25 +469,88 @@ switch($operation) break; case 'delete': + case 'delete_confirmed': $sClass = utils::ReadParam('class', ''); $sClassLabel = MetaModel::GetName($sClass); $id = utils::ReadParam('id', ''); $oObj = $oContext->GetObject($sClass, $id); $sName = $oObj->GetName(); - $oMyChange = MetaModel::NewObject("CMDBChange"); - $oMyChange->Set("date", time()); - if (UserRights::GetUser() != UserRights::GetRealUser()) + if ($operation == 'delete_confirmed') { - $sUserString = UserRights::GetRealUser()." on behalf of ".UserRights::GetUser(); + $oMyChange = MetaModel::NewObject("CMDBChange"); + $oMyChange->Set("date", time()); + if (UserRights::GetUser() != UserRights::GetRealUser()) + { + $sUserString = UserRights::GetRealUser()." on behalf of ".UserRights::GetUser(); + } + else + { + $sUserString = UserRights::GetUser(); + } + $oMyChange->Set("userinfo", $sUserString); + $oMyChange->DBInsert(); + $oObj->DBDeleteTracked($oMyChange); + $oP->add("
".MetaModel::GetName($sRemoteClass)."\n"); + $oP->add("