/** * Import XML-Code and create a Cluster-Template * @param string XML-Code * @param string Category ID where the clt will be created. * @return integer new id */ function XmlImportClusterTemplate($xmlString, $categoryId = "0") { global $db; $xmlOptions = array(XML_OPTION_CASE_FOLDING => TRUE, XML_OPTION_SKIP_WHITE => TRUE); $xml =& new XPath(FALSE, $xmlOptions); $xml->importFromString($xmlString); $id = $xml->getAttributes('/NX:CLUSTERTEMPLATE[1]', 'ID'); $mtId = $xml->getAttributes('/NX:CLUSTERTEMPLATE[1]', 'METATEMPLATE'); $newId = translateXmlGUID($id); $mtId = translateXmlGUID($mtId); createClusterTemplate(urldecode($xml->getAttributes('/NX:CLUSTERTEMPLATE[1]', 'NAME')), urldecode($xml->getAttributes('/NX:CLUSTERTEMPLATE[1]', 'DESCRIPTION')), urldecode($xml->getData('/NX:CLUSTERTEMPLATE[1]/NX:LAYOUT[1]')), $categoryId, $mtId, $newId); if ($xml->hasChildNodes('/NX:CLUSTERTEMPLATE[1]')) { $i = 1; while ($xml->getNode("/NX:CLUSTERTEMPLATE[1]/NX:CLUSTERTEMPLATEITEM[{$i}]")) { $config = "null"; $type = $xml->getAttributes("/NX:CLUSTERTEMPLATE[1]/NX:CLUSTERTEMPLATEITEM[{$i}]", "TYPE"); $itemCfg = urldecode($xml->getAttributes("/NX:CLUSTERTEMPLATE[1]/NX:CLUSTERTEMPLATEITEM[{$i}]", "CONFIGURATION")); if ($type == 2 || $type == 5) { $config = getDBCell("modules", "MODULE_ID", "UPPER(MODULE_NAME) = '" . strtoupper(urldecode($itemCfg)) . "'"); } else { if ($type == 4) { $config = translateXmlGUID($itemCfg); } } createClusterTemplateFigure(urldecode($xml->getAttributes("/NX:CLUSTERTEMPLATE[1]/NX:CLUSTERTEMPLATEITEM[{$i}]", "NAME")), $newId, $xml->getAttributes("/NX:CLUSTERTEMPLATE[1]/NX:CLUSTERTEMPLATEITEM[{$i}]", "POSITION"), $xml->getAttributes("/NX:CLUSTERTEMPLATE[1]/NX:CLUSTERTEMPLATEITEM[{$i}]", "MAXCARD"), $xml->getAttributes("/NX:CLUSTERTEMPLATE[1]/NX:CLUSTERTEMPLATEITEM[{$i}]", "MINCARD"), $config, $type); $i++; } } return $newId; }
function testCreateClusterTemplate() { $clt = createClusterTemplate("name", "description", "layout", 0, 0); $this->assertDBCount(1); deleteClusterTemplate($clt); }