mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
Export/XML: documented options (no_localize / linksets) + added external fields and friendly name for the external keys, both on the exported objects and the links (linkets=1)
SVN:trunk[3697]
This commit is contained in:
@@ -749,8 +749,9 @@ class AttributeLinkedSet extends AttributeDefinition
|
||||
}
|
||||
}
|
||||
if ($sAttCode == $this->GetExtKeyToMe()) continue;
|
||||
if ($oAttDef->IsExternalField()) continue;
|
||||
if (!$oAttDef->IsDirectField()) continue;
|
||||
if ($oAttDef->IsExternalField() && ($oAttDef->GetKeyAttCode() == $this->GetExtKeyToMe())) continue;
|
||||
if (($oAttDef instanceof AttributeFriendlyName) && ($oAttDef->GetKeyAttCode() == $this->GetExtKeyToMe())) continue;
|
||||
if (($oAttDef instanceof AttributeFriendlyName) && ($oAttDef->GetKeyAttCode() == 'id')) continue;
|
||||
if (!$oAttDef->IsScalar()) continue;
|
||||
$sAttValue = $oObj->GetAsXML($sAttCode, $bLocalize);
|
||||
$sRes .= "<$sAttCode>$sAttValue</$sAttCode>\n";
|
||||
|
||||
@@ -28,7 +28,8 @@ class XMLBulkExport extends BulkExport
|
||||
public function DisplayUsage(Page $oP)
|
||||
{
|
||||
$oP->p(" * xml format options:");
|
||||
$oP->p(" *\tThere are no options for the XML format.");
|
||||
$oP->p(" *\tno_localize: set to 1 to retrieve non-localized values (for instance for ENUM values). Default is 0 (= localized values)");
|
||||
$oP->p(" *\tlinksets: set to 1 to retrieve links to related objects (1-N or N-N relations). Default is 0 (= only scalar fields)");
|
||||
}
|
||||
|
||||
public function EnumFormParts()
|
||||
@@ -86,7 +87,7 @@ class XMLBulkExport extends BulkExport
|
||||
$oSet = new DBObjectSet($this->oSearch);
|
||||
$this->aStatusInfo['position'] = 0;
|
||||
$this->aStatusInfo['total'] = $oSet->Count();
|
||||
$sData = "<"."?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Set>\n";
|
||||
$sData = "<"."?xml version=\"1.0\" encoding=\"UTF-8\"?".">\n<Set>\n";
|
||||
return $sData;
|
||||
}
|
||||
|
||||
@@ -105,16 +106,39 @@ class XMLBulkExport extends BulkExport
|
||||
|
||||
$aClasses = $this->oSearch->GetSelectedClasses();
|
||||
$aAuthorizedClasses = array();
|
||||
$aClass2Attributes = array();
|
||||
foreach($aClasses as $sAlias => $sClassName)
|
||||
{
|
||||
if (UserRights::IsActionAllowed($sClassName, UR_ACTION_BULK_READ, $oSet) && (UR_ALLOWED_YES || UR_ALLOWED_DEPENDS))
|
||||
{
|
||||
$aAuthorizedClasses[$sAlias] = $sClassName;
|
||||
$aAttributes = array();
|
||||
foreach(MetaModel::ListAttributeDefs($sClassName) as $sAttCode=>$oAttDef)
|
||||
{
|
||||
if ($oAttDef->IsLinkSet() && !$this->aStatusInfo['linksets'])
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (!$oAttDef->IsWritable())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
$aAttributes[$sAttCode] = $oAttDef;
|
||||
if ($oAttDef->IsExternalKey())
|
||||
{
|
||||
foreach(MetaModel::ListAttributeDefs($sClassName) as $sSubAttCode=>$oSubAttDef)
|
||||
{
|
||||
if ($oSubAttDef->IsExternalField() && ($oSubAttDef->GetKeyAttCode() == $sAttCode))
|
||||
{
|
||||
$aAttributes[$sAttCode.'_friendlyname'] = MetaModel::GetAttributeDef($sClassName, $sAttCode.'_friendlyname');
|
||||
$aAttributes[$sSubAttCode] = $oSubAttDef;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$aClass2Attributes[$sAlias] = $aAttributes;
|
||||
}
|
||||
}
|
||||
$aAttribs = array();
|
||||
$aList = array();
|
||||
$aList[$sAlias] = MetaModel::GetZListItems($sClassName, 'details');
|
||||
|
||||
$iPreviousTimeLimit = ini_get('max_execution_time');
|
||||
$iLoopTimeLimit = MetaModel::GetConfig()->Get('max_execution_time_per_loop');
|
||||
@@ -138,25 +162,16 @@ class XMLBulkExport extends BulkExport
|
||||
$sClassName = get_class($oObj);
|
||||
$sData .= "<$sClassName alias=\"$sAlias\" id=\"".$oObj->GetKey()."\">\n";
|
||||
}
|
||||
foreach(MetaModel::ListAttributeDefs($sClassName) as $sAttCode=>$oAttDef)
|
||||
foreach($aClass2Attributes[$sAlias] as $sAttCode=>$oAttDef)
|
||||
{
|
||||
if ($oAttDef->IsLinkSet() && !$this->aStatusInfo['linksets'])
|
||||
{
|
||||
// Skip link sets
|
||||
continue;
|
||||
}
|
||||
|
||||
if (is_null($oObj))
|
||||
{
|
||||
$sData .= "<$sAttCode>null</$sAttCode>\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($oAttDef->IsWritable() )
|
||||
{
|
||||
$sValue = $oObj->GetAsXML($sAttCode, $bLocalize);
|
||||
$sData .= "<$sAttCode>$sValue</$sAttCode>\n";
|
||||
}
|
||||
$sValue = $oObj->GetAsXML($sAttCode, $bLocalize);
|
||||
$sData .= "<$sAttCode>$sValue</$sAttCode>\n";
|
||||
}
|
||||
}
|
||||
$sData .= "</$sClassName>\n";
|
||||
|
||||
Reference in New Issue
Block a user