소스 검색

Fixed regression: server status was reset

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@161 a333f486-631f-4898-b8df-5754b55c2be0
romainq 15 년 전
부모
커밋
1c0cbb5a39
2개의 변경된 파일13개의 추가작업 그리고 5개의 파일을 삭제
  1. 4 0
      core/metamodel.class.php
  2. 9 5
      pages/UI.php

+ 4 - 0
core/metamodel.class.php

@@ -649,6 +649,10 @@ abstract class MetaModel
 		if (!empty($sStateAttCode))
 		{
 			$aStates = MetaModel::EnumStates($sClass);
+			if (!array_key_exists($sState, $aStates))
+			{
+				throw new CoreException("Invalid state '$sState' for class '$sClass', expecting a value in {".implode(', ', array_keys($aStates))."}");
+			}
 			$aCurrentState = $aStates[$sState];
 			if ( (array_key_exists('attribute_list', $aCurrentState)) && (array_key_exists($sAttCode, $aCurrentState['attribute_list'])) )
 			{

+ 9 - 5
pages/UI.php

@@ -428,12 +428,16 @@ switch($operation)
 					}
 					else if (!$oAttDef->IsExternalField())
 					{
-						$aAttributes[$sAttCode] = trim(utils::ReadPostedParam("attr_$sAttCode", null));
-						$previousValue = $oObj->Get($sAttCode);
-						if (!is_null($aAttributes[$sAttCode]) && ($previousValue != $aAttributes[$sAttCode]))
+						$rawValue = utils::ReadPostedParam("attr_$sAttCode", null);
+						if (!is_null($rawValue))
 						{
-							$oObj->Set($sAttCode, $aAttributes[$sAttCode]);
-							$bObjectModified = true;
+							$aAttributes[$sAttCode] = trim($rawValue);
+							$previousValue = $oObj->Get($sAttCode);
+							if ($previousValue != $aAttributes[$sAttCode])
+							{
+								$oObj->Set($sAttCode, $aAttributes[$sAttCode]);
+								$bObjectModified = true;
+							}
 						}
 					}
 				}