/**
 * 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);
 }