소스 검색

Compiler and co: implicit naming and reconciliation scheme

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@1985 a333f486-631f-4898-b8df-5754b55c2be0
romainq 13 년 전
부모
커밋
4525e2a6b8
1개의 변경된 파일34개의 추가작업 그리고 22개의 파일을 삭제
  1. 34 22
      setup/compiler.class.inc.php

+ 34 - 22
setup/compiler.class.inc.php

@@ -386,23 +386,29 @@ EOF;
 		$aClassParams['category'] = $this->GetPropString($oProperties, 'category', '');
 		$aClassParams['key_type'] = "'autoincrement'";
 	
-		$oNaming = $oProperties->GetUniqueElement('naming');
-		$oNameAttributes = $oNaming->GetUniqueElement('attributes');
-		$oAttributes = $oNameAttributes->getElementsByTagName('attribute');
-		$aNameAttCodes = array();
-		foreach($oAttributes as $oAttribute)
+		if ($oNaming = $oProperties->GetOptionalElement('naming'))
 		{
-			$aNameAttCodes[] = $oAttribute->getAttribute('id');
-		}
-		if (count($aNameAttCodes) > 1)
-		{
-			// New style...
-			$sNameAttCode = "array('".implode("', '", $aNameAttCodes)."')";
-		}
-		elseif (count($aNameAttCodes) == 1)
-		{
-			// New style...
-			$sNameAttCode = "'$aNameAttCodes[0]'";
+			$oNameAttributes = $oNaming->GetUniqueElement('attributes');
+			$oAttributes = $oNameAttributes->getElementsByTagName('attribute');
+			$aNameAttCodes = array();
+			foreach($oAttributes as $oAttribute)
+			{
+				$aNameAttCodes[] = $oAttribute->getAttribute('id');
+			}
+			if (count($aNameAttCodes) > 1)
+			{
+				// New style...
+				$sNameAttCode = "array('".implode("', '", $aNameAttCodes)."')";
+			}
+			elseif (count($aNameAttCodes) == 1)
+			{
+				// New style...
+				$sNameAttCode = "'$aNameAttCodes[0]'";
+			}
+			else
+			{
+				$sNameAttCode = "''";
+			}
 		}
 		else
 		{
@@ -421,14 +427,20 @@ EOF;
 		}
 		$aClassParams['state_attcode'] = "'$sStateAttCode'";
 	
-		$oReconciliation = $oProperties->GetUniqueElement('reconciliation');
-		$oReconcAttributes = $oReconciliation->getElementsByTagName('attribute');
-		$aReconcAttCodes = array();
-		foreach($oReconcAttributes as $oAttribute)
+		if ($oReconciliation = $oProperties->GetOptionalElement('reconciliation'))
+		{
+			$oReconcAttributes = $oReconciliation->getElementsByTagName('attribute');
+			$aReconcAttCodes = array();
+			foreach($oReconcAttributes as $oAttribute)
+			{
+				$aReconcAttCodes[] = $oAttribute->getAttribute('id');
+			}
+			$sReconcKeys = "array('".implode("', '", $aReconcAttCodes)."')";
+		}
+		else
 		{
-			$aReconcAttCodes[] = $oAttribute->getAttribute('id');
+			$sReconcKeys = "array()";
 		}
-		$sReconcKeys = "array('".implode("', '", $aReconcAttCodes)."')";
 		$aClassParams['reconc_keys'] = $sReconcKeys;
 	
 		$aClassParams['db_table'] = $this->GetPropString($oProperties, 'db_table', '');