From 3e2178db8fbc40c397bcc8126b2f55a2efcdb05a Mon Sep 17 00:00:00 2001 From: Denis Flaven Date: Tue, 13 Apr 2010 12:58:03 +0000 Subject: [PATCH] - Enhancement: support of ObjectSets with multiple objects per line. SVN:trunk[330] --- application/cmdbabstract.class.inc.php | 45 +++++++++++++++++++------- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/application/cmdbabstract.class.inc.php b/application/cmdbabstract.class.inc.php index ef89dbc6b..f540b12e6 100644 --- a/application/cmdbabstract.class.inc.php +++ b/application/cmdbabstract.class.inc.php @@ -599,24 +599,45 @@ abstract class cmdbAbstractObject extends CMDBObject static function DisplaySetAsXML(WebPage $oPage, CMDBObjectSet $oSet, $aParams = array()) { $oAppContext = new ApplicationContext(); - $sClassName = $oSet->GetFilter()->GetClass(); + $aClasses = $oSet->GetFilter()->GetSelectedClasses(); + $aAuthorizedClasses = array(); + foreach($aClasses as $sAlias => $sClassName) + { + if (UserRights::IsActionAllowed($sClassName, UR_ACTION_READ, $oSet) == UR_ALLOWED_YES) + { + $aAuthorizedClasses[$sAlias] = $sClassName; + } + } $aAttribs = array(); - $aList = MetaModel::GetZListItems($sClassName, 'details'); + $aList = array(); + $aList[$sClassName] = MetaModel::GetZListItems($sClassName, 'details'); $oPage->add("\n"); $oSet->Seek(0); - while ($oObj = $oSet->Fetch()) + while ($aObjects = $oSet->FetchAssoc()) { - $sClassName = get_class($oObj); - $oPage->add("<$sClassName id=\"".$oObj->GetKey()."\">\n"); - foreach(MetaModel::ListAttributeDefs($sClassName) as $sAttCode=>$oAttDef) + if (count($aAuthorizedClasses) > 1) { - if (($oAttDef->IsWritable()) && ($oAttDef->IsScalar()) && ($sAttCode != 'finalclass') ) - { - $sValue = $oObj->GetAsXML($sAttCode); - $oPage->add("<$sAttCode>$sValue\n"); - } + $oPage->add("\n"); + } + foreach($aAuthorizedClasses as $sAlias => $sClassName) + { + $oObj = $aObjects[$sAlias]; + $sClassName = get_class($oObj); + $oPage->add("<$sClassName alias=\"$sAlias\" id=\"".$oObj->GetKey()."\">\n"); + foreach(MetaModel::ListAttributeDefs($sClassName) as $sAttCode=>$oAttDef) + { + if (($oAttDef->IsWritable()) && ($oAttDef->IsScalar()) && ($sAttCode != 'finalclass') ) + { + $sValue = $oObj->GetAsXML($sAttCode); + $oPage->add("<$sAttCode>$sValue\n"); + } + } + $oPage->add("\n"); + } + if (count($aAuthorizedClasses) > 1) + { + $oPage->add("\n"); } - $oPage->add("\n"); } $oPage->add("\n"); }