diff --git a/core/attributedef.class.inc.php b/core/attributedef.class.inc.php
index d6188015c..76491c7f8 100644
--- a/core/attributedef.class.inc.php
+++ b/core/attributedef.class.inc.php
@@ -133,7 +133,31 @@ abstract class AttributeDefinition
public function GetNullValue() {return null;}
public function GetCode() {return $this->m_sCode;}
public function GetLabel() {return Dict::S('Class:'.$this->m_sHostClass.'/Attribute:'.$this->m_sCode, $this->m_sCode);}
+ public function GetLabel_Obsolete()
+ {
+ // Written for compatibility with a data model written prior to version 0.9.1
+ if (array_key_exists('label', $this->m_aParams))
+ {
+ return $this->m_aParams['label'];
+ }
+ else
+ {
+ return $this->GetLabel();
+ }
+ }
public function GetDescription() {return Dict::S('Class:'.$this->m_sHostClass.'/Attribute:'.$this->m_sCode.'+', '');}
+ public function GetDescription_Obsolete()
+ {
+ // Written for compatibility with a data model written prior to version 0.9.1
+ if (array_key_exists('description', $this->m_aParams))
+ {
+ return $this->m_aParams['description'];
+ }
+ else
+ {
+ return $this->GetDescription();
+ }
+ }
public function GetValuesDef() {return null;}
public function GetPrerequisiteAttributes() {return array();}
//public function IsSearchableStd() {return $this->Get("search_std");}
diff --git a/core/metamodel.class.php b/core/metamodel.class.php
index 88c06a077..f4470f571 100644
--- a/core/metamodel.class.php
+++ b/core/metamodel.class.php
@@ -198,6 +198,19 @@ abstract class MetaModel
$sStringCode = 'Class:'.$sClass;
return Dict::S($sStringCode, $sClass);
}
+ final static public function GetName_Obsolete($sClass)
+ {
+ // Written for compatibility with a data model written prior to version 0.9.1
+ self::_check_subclass($sClass);
+ if (array_key_exists('name', self::$m_aClassParams[$sClass]))
+ {
+ return self::$m_aClassParams[$sClass]['name'];
+ }
+ else
+ {
+ return self::GetName($sClass);
+ }
+ }
final static public function GetCategory($sClass)
{
self::_check_subclass($sClass);
@@ -214,6 +227,19 @@ abstract class MetaModel
$sStringCode = 'Class:'.$sClass.'+';
return Dict::S($sStringCode, '');
}
+ final static public function GetClassDescription_Obsolete($sClass)
+ {
+ // Written for compatibility with a data model written prior to version 0.9.1
+ self::_check_subclass($sClass);
+ if (array_key_exists('description', self::$m_aClassParams[$sClass]))
+ {
+ return self::$m_aClassParams[$sClass]['description'];
+ }
+ else
+ {
+ return self::GetDescription($sClass);
+ }
+ }
final static public function IsAutoIncrementKey($sClass)
{
self::_check_subclass($sClass);
@@ -679,7 +705,7 @@ abstract class MetaModel
public static function GetStateLabel($sClass, $sStateValue)
{
$sStateAttrCode = self::GetStateAttributeCode($sClass);
- return Dict::S("Class:$sClass/Attribute:$sStateAttrCode/Value:$sStateValue+");
+ return Dict::S("Class:$sClass/Attribute:$sStateAttrCode/Value:$sStateValue", $sStateValue);
// I've decided the current implementation, because I need
// to get the description as well -GetAllowedValues does not render the description,
@@ -692,7 +718,7 @@ abstract class MetaModel
public static function GetStateDescription($sClass, $sStateValue)
{
$sStateAttrCode = self::GetStateAttributeCode($sClass);
- return Dict::S("Class:$sClass/Attribute:$sStateAttrCode/Value:$sStateValue+");
+ return Dict::S("Class:$sClass/Attribute:$sStateAttrCode/Value:$sStateValue+", '');
}
public static function EnumTransitions($sClass, $sStateCode)
@@ -2112,16 +2138,25 @@ abstract class MetaModel
return $aDataDump;
}
- public static function MakeDictionaryTemplate()
+ protected static function MakeDictEntry($sKey, $sValueFromOldSystem, $sDefaultValue, &$bNotInDico)
+ {
+ $sValue = Dict::S($sKey, 'x-no-nothing');
+ if ($sValue == 'x-no-nothing')
+ {
+ $bNotInDico = true;
+ $sValue = $sValueFromOldSystem;
+ if (strlen($sValue) == 0)
+ {
+ $sValue = $sDefaultValue;
+ }
+ }
+ return " '$sKey' => '".str_replace("'", "\\'", $sValue)."',\n";
+ }
+
+ public static function MakeDictionaryTemplate($sModules = '', $sOutputFilter = 'NotInDictionary')
{
$sRes = '';
- foreach (Dict::GetLanguages() as $sLanguageCode => $aLanguageData)
- {
- list($aMissing, $aUnexpected, $aNotTranslated, $aOK) = Dict::MakeStats($sLanguageCode, 'EN US');
- echo "
Stats for language: $sLanguageCode
\n";
- echo "- Missing:".count($aMissing)."
- Unexpected:".count($aUnexpected)."
- NotTranslated:".count($aNotTranslated)."
- OK:".count($aOK)."
\n";
- }
$sRes .= "// Dictionnay conventions\n";
$sRes .= htmlentities("// Class:\n");
$sRes .= htmlentities("// Class:+\n");
@@ -2135,7 +2170,14 @@ abstract class MetaModel
// Note: I did not use EnumCategories(), because a given class maybe found in several categories
// Need to invent the "module", to characterize the origins of a class
- $aModules = array('bizmodel', 'core/cmdb', 'gui' , 'application', 'addon/userrights');
+ if (strlen($sModules) == 0)
+ {
+ $aModules = array('bizmodel', 'core/cmdb', 'gui' , 'application', 'addon/userrights');
+ }
+ else
+ {
+ $aModules = explode(', ', $sModules);
+ }
$sRes .= "//////////////////////////////////////////////////////////////////////\n";
$sRes .= "// Note: The classes have been grouped by categories: ".implode(', ', $aModules)."\n";
@@ -2152,51 +2194,71 @@ abstract class MetaModel
{
if (self::IsAbstract($sClass)) continue;
- $sRes .= "//\n";
- $sRes .= "// Class: $sClass\n";
- $sRes .= "//\n";
- $sRes .= "\n";
- $sRes .= "Dict::Add('EN US', 'English', 'English', array(\n";
- $sRes .= " 'Class:$sClass' => '".self::GetName($sClass)."',\n";
- $sRes .= " 'Class:$sClass+' => '".self::GetClassDescription($sClass)."',\n";
+ $bNotInDico = false;
+
+ $sClassRes = "//\n";
+ $sClassRes .= "// Class: $sClass\n";
+ $sClassRes .= "//\n";
+ $sClassRes .= "\n";
+ $sClassRes .= "Dict::Add('EN US', 'English', 'English', array(\n";
+ $sClassRes .= self::MakeDictEntry("Class:$sClass", self::GetName_Obsolete($sClass), $sClass, $bNotInDico);
+ $sClassRes .= self::MakeDictEntry("Class:$sClass+", self::GetClassDescription_Obsolete($sClass), '', $bNotInDico);
foreach(self::ListAttributeDefs($sClass) as $sAttCode => $oAttDef)
{
// Skip this attribute if not originaly defined in this class
if (self::$m_aAttribOrigins[$sClass][$sAttCode] != $sClass) continue;
- $sRes .= " 'Class:$sClass/Attribute:$sAttCode' => '".$oAttDef->GetLabel()."',\n";
- $sRes .= " 'Class:$sClass/Attribute:$sAttCode+' => '".$oAttDef->GetDescription()."',\n";
+ $sClassRes .= self::MakeDictEntry("Class:$sClass/Attribute:$sAttCode", $oAttDef->GetLabel_Obsolete(), $sAttCode, $bNotInDico);
+ $sClassRes .= self::MakeDictEntry("Class:$sClass/Attribute:$sAttCode+", $oAttDef->GetDescription_Obsolete(), '', $bNotInDico);
if ($oAttDef instanceof AttributeEnum)
{
if (self::GetStateAttributeCode($sClass) == $sAttCode)
{
foreach (self::EnumStates($sClass) as $sStateCode => $aStateData)
{
- $sValue = str_replace("'", "\\'", $aStateData['label']);
- $sValuePlus = str_replace("'", "\\'", $aStateData['description']);
- $sRes .= " 'Class:$sClass/Attribute:$sAttCode/Value:$sStateCode' => '$sValue',\n";
- $sRes .= " 'Class:$sClass/Attribute:$sAttCode/Value:$sStateCode+' => '$sValuePlus',\n";
+ if (array_key_exists('label', $aStateData))
+ {
+ $sValue = $aStateData['label'];
+ }
+ else
+ {
+ $sValue = MetaModel::GetStateLabel($sClass, $sStateCode);
+ }
+ if (array_key_exists('description', $aStateData))
+ {
+ $sValuePlus = $aStateData['description'];
+ }
+ else
+ {
+ $sValuePlus = MetaModel::GetStateDescription($sClass, $sStateCode);
+ }
+ $sClassRes .= self::MakeDictEntry("Class:$sClass/Attribute:$sAttCode/Value:$sStateCode", $sValue, '', $bNotInDico);
+ $sClassRes .= self::MakeDictEntry("Class:$sClass/Attribute:$sAttCode/Value:$sStateCode+", $sValuePlus, '', $bNotInDico);
}
}
else
{
foreach ($oAttDef->GetAllowedValues() as $sKey => $value)
{
- $sValue = str_replace("'", "\\'", $value);
- $sRes .= " 'Class:$sClass/Attribute:$sAttCode/Value:$sKey' => '$sValue',\n";
- $sRes .= " 'Class:$sClass/Attribute:$sAttCode/Value:$sKey+' => '$sValue',\n";
+ $sClassRes .= self::MakeDictEntry("Class:$sClass/Attribute:$sAttCode/Value:$sKey", $sValue, '', $bNotInDico);
+ $sClassRes .= self::MakeDictEntry("Class:$sClass/Attribute:$sAttCode/Value:$sKey+", $sValue, '', $bNotInDico);
}
}
}
}
foreach(self::EnumStimuli($sClass) as $sStimulusCode => $oStimulus)
{
- $sRes .= " 'Class:$sClass/Stimulus:$sStimulusCode' => '".$oStimulus->GetLabel()."',\n";
- $sRes .= " 'Class:$sClass/Stimulus:$sStimulusCode+' => '".$oStimulus->GetDescription()."',\n";
+ $sClassRes .= self::MakeDictEntry("Class:$sClass/Stimulus:$sStimulusCode", $oStimulus->GetLabel_Obsolete(), '', $bNotInDico);
+ $sClassRes .= self::MakeDictEntry("Class:$sClass/Stimulus:$sStimulusCode+", $oStimulus->GetDescription_Obsolete(), '', $bNotInDico);
}
- $sRes .= "));\n";
- $sRes .= "\n";
+ $sClassRes .= "));\n";
+ $sClassRes .= "\n";
+
+ if ($bNotInDico || ($sOutputFilter != 'NotInDictionary'))
+ {
+ $sRes .= $sClassRes;
+ }
}
}
return $sRes;
diff --git a/core/stimulus.class.inc.php b/core/stimulus.class.inc.php
index 47ef17c19..1d27bd080 100644
--- a/core/stimulus.class.inc.php
+++ b/core/stimulus.class.inc.php
@@ -50,6 +50,32 @@ class ObjectStimulus
return Dict::S('Class:'.$this->m_sHostClass.'/Stimulus:'.$this->m_sCode.'+', '');
}
+ public function GetLabel_Obsolete()
+ {
+ // Written for compatibility with a data model written prior to version 0.9.1
+ if (array_key_exists('label', $this->m_aParams))
+ {
+ return $this->m_aParams['label'];
+ }
+ else
+ {
+ return $this->GetLabel();
+ }
+ }
+
+ public function GetDescription_Obsolete()
+ {
+ // Written for compatibility with a data model written prior to version 0.9.1
+ if (array_key_exists('description', $this->m_aParams))
+ {
+ return $this->m_aParams['description'];
+ }
+ else
+ {
+ return $this->GetDescription();
+ }
+ }
+
// obsolete- public function Get($sParamName) {return $this->m_aParams[$sParamName];}
// Note: I could factorize this code with the parameter management made for the AttributeDef class
diff --git a/pages/ITopConsultant.php b/pages/ITopConsultant.php
index 9020e46b8..a14a05847 100644
--- a/pages/ITopConsultant.php
+++ b/pages/ITopConsultant.php
@@ -263,7 +263,8 @@ function printMenu($sConfigFile)
echo "Target database: $sConfigFile
\n";
echo "$sClassCount classes referenced in the model
\n";
echo "\n";
- echo MetaModel::MakeDictionaryTemplate();
+ echo MetaModel::MakeDictionaryTemplate($sCategories, $sOutputFilter);
echo "
\n";
break;
case "checkmodel":