From 5e3eab90a6f811f050585ebacab9f08575e366c0 Mon Sep 17 00:00:00 2001 From: Romain Quetiez Date: Mon, 15 Sep 2014 14:02:03 +0000 Subject: [PATCH] #986 Search form: handle indirect external keys -reintegrated from trunk SVN:2.0.3[3331] --- application/cmdbabstract.class.inc.php | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/application/cmdbabstract.class.inc.php b/application/cmdbabstract.class.inc.php index fbd7e7799c..9aa272ee5e 100644 --- a/application/cmdbabstract.class.inc.php +++ b/application/cmdbabstract.class.inc.php @@ -1436,20 +1436,24 @@ abstract class cmdbAbstractObject extends CMDBObject implements iDisplay } $oAttDef = MetaModel::GetAttributeDef($sClassName, $sFilterCode); - if ($oAttDef->IsExternalKey()) + if ($oAttDef->IsExternalKey(EXTKEY_ABSOLUTE)) { - $sTargetClass = $oAttDef->GetTargetClass(); + $oKeyAttDef = $oAttDef->GetFinalAttDef(); + $sKeyAttClass = $oKeyAttDef->GetHostClass(); + $sKeyAttCode = $oKeyAttDef->GetCode(); + + $sTargetClass = $oKeyAttDef->GetTargetClass(); $oSearch = new DBObjectSearch($sTargetClass); $oSearch->SetModifierProperty('UserRightsGetSelectFilter', 'bSearchMode', true); $oAllowedValues = new DBObjectSet($oSearch); - $iFieldSize = $oAttDef->GetMaxSize(); - $iMaxComboLength = $oAttDef->GetMaximumComboLength(); - $sHtml .= " "; + $iFieldSize = $oKeyAttDef->GetMaxSize(); + $iMaxComboLength = $oKeyAttDef->GetMaximumComboLength(); + $sHtml .= " "; $aExtKeyParams = $aExtraParams; - $aExtKeyParams['iFieldSize'] = $oAttDef->GetMaxSize(); - $aExtKeyParams['iMinChars'] = $oAttDef->GetMinAutoCompleteChars(); - $sHtml .= UIExtKeyWidget::DisplayFromAttCode($oPage, $sFilterCode, $sClassName, $oAttDef->GetLabel(), $oAllowedValues, $sFilterValue, $sSearchFormId.'search_'.$sFilterCode, false, $sFilterCode, '', $aExtKeyParams, true); + $aExtKeyParams['iFieldSize'] = $oKeyAttDef->GetMaxSize(); + $aExtKeyParams['iMinChars'] = $oKeyAttDef->GetMinAutoCompleteChars(); + $sHtml .= UIExtKeyWidget::DisplayFromAttCode($oPage, $sKeyAttCode, $sKeyAttClass, $oAttDef->GetLabel(), $oAllowedValues, $sFilterValue, $sSearchFormId.'search_'.$sFilterCode, false, $sFilterCode, '', $aExtKeyParams, true); } else {