Browse Source

Obsolescence: fixed OQL issue

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@4770 a333f486-631f-4898-b8df-5754b55c2be0
romainq 8 years ago
parent
commit
4d321cfa98
1 changed files with 13 additions and 3 deletions
  1. 13 3
      application/cmdbabstract.class.inc.php

+ 13 - 3
application/cmdbabstract.class.inc.php

@@ -412,7 +412,8 @@ EOF
 			$oLinkSearch = $this->Get($sAttCode)->GetFilter();
 			if ($oAttDef->IsIndirect())
 			{
-				$oLinkingAttDef = MetaModel::GetAttributeDef($sLinkedClass, $oAttDef->GetExtKeyToRemote());
+				$sExtKeyToRemote = $oAttDef->GetExtKeyToRemote();
+				$oLinkingAttDef = MetaModel::GetAttributeDef($sLinkedClass, $sExtKeyToRemote);
 				$sTargetClass = $oLinkingAttDef->GetTargetClass();
 				if (!utils::ShowObsoleteData() && MetaModel::IsObsoletable($sTargetClass))
 				{
@@ -421,7 +422,9 @@ EOF
 						'=',
 						new ScalarExpression(0)
 					);
-					$oLinkSearch->AddConditionExpression($oNotObsolete);
+					$oNotObsoleteRemote = new DBObjectSearch($sTargetClass);
+					$oNotObsoleteRemote->AddConditionExpression($oNotObsolete);
+					$oLinkSearch->AddCondition_PointingTo($oNotObsoleteRemote, $sExtKeyToRemote);
 				}
 			}
 			$oLinkSet = new DBObjectSet($oLinkSearch);
@@ -3331,7 +3334,14 @@ EOF
 		$aFinalValues = array();
 		foreach($this->GetWriteableAttList(array_keys($aValues), $aErrors, $aAttFlags) as $sAttCode => $oAttDef)
 		{
-			$aFinalValues[$sAttCode] = $aValues[$sAttCode];
+			if ($oAttDef->IsLinkSet())
+			{
+				$aFinalValues[$sAttCode] = json_decode($aValues[$sAttCode], true);
+			}
+			else
+			{
+				$aFinalValues[$sAttCode] = $aValues[$sAttCode];
+			}
 		}
 		$this->UpdateObjectFromArray($aFinalValues);
 		return $aErrors;