Prechádzať zdrojové kódy

OQL normalization and dashlets have been made independent from the class MetaModel (adjusted the API)

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@2773 a333f486-631f-4898-b8df-5754b55c2be0
romainq 12 rokov pred
rodič
commit
00e7fad774

+ 1 - 1
core/metamodel.class.php

@@ -174,7 +174,7 @@ abstract class MetaModel
 		// (it is not possible to guess it when called as myderived::...)
 		if (!array_key_exists($sClass, self::$m_aClassParams))
 		{
-			throw new CoreException("Unknown class '$sClass', expected a value in {".implode(', ', array_keys(self::$m_aClassParams))."}");
+			throw new CoreException("Unknown class '$sClass'");
 		}
 	}
 

+ 15 - 3
core/modelreflection.class.inc.php

@@ -31,12 +31,13 @@ interface ModelReflection
 	public function GetName($sClass);
 	public function GetLabel($sClass, $sAttCodeEx);
 	public function ListAttributes($sClass, $sScope = null);
-	public function GetAttributeProperty($sClass, $sAttCode, $sPropName);
+	public function GetAttributeProperty($sClass, $sAttCode, $sPropName, $default = null);
 	public function GetAllowedValues_att($sClass, $sAttCode);
 	public function HasChildrenClasses($sClass);
 	public function GetClasses($sCategories = '');
 	public function IsValidClass($sClass);
 	public function IsSameFamilyBranch($sClassA, $sClassB);
+	public function GetParentClass($sClass);
 	public function GetFiltersList($sClass);
 	public function IsValidFilterCode($sClass, $sFilterCode);
 }
@@ -103,15 +104,21 @@ class ModelReflectionRuntime implements ModelReflection
  
 	public function GetAttributeProperty($sClass, $sAttCode, $sPropName, $default = null)
 	{
+		$ret = $default;
+
 		$oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
 		$aParams = $oAttDef->GetParams();
 		if (array_key_exists($sPropName, $aParams))
 		{
 			$ret = $aParams[$sPropName];
 		}
-		else
+
+		if ($oAttDef instanceof AttributeHierarchicalKey)
 		{
-			$ret = $default;
+			if ($sPropName == 'targetclass')
+			{
+				$ret = $sClass;
+			}
 		}
 		return $ret;
 	}
@@ -141,6 +148,11 @@ class ModelReflectionRuntime implements ModelReflection
 		return MetaModel::IsSameFamilyBranch($sClassA, $sClassB);
 	}
 
+	public function GetParentClass($sClass)
+	{
+		return MetaModel::GetParentClass($sClass);
+	}
+
 	public function GetFiltersList($sClass)
 	{
 		return MetaModel::GetFiltersList($sClass);