doXML(); array_push($nodes, $nObj); } $atmStates = new DOMDocument(); $lib = $atmStates->createElement("library"); $lib = $atmStates->appendChild($lib); setHandlers($nodes, $graphObj["edges"]); foreach ($nodes as $node) { for ($i=1; $i <5; $i++) { if (!in_array($i, $node->handlers)) $node->setHandler($i, ""); } $content = $atmStates->importNode($node->root, true); $lib->appendChild($content); } $fh = fopen($atmStatesFile, 'w'); fwrite($fh, $atmStates->saveXML()); fclose($fh); print(""); writeATMFile($atmFile, $nodes); //now, compile and replace demo $cmd = $compiler . " " . $demobuilder; //write it to a compile batch script $batchScript = fopen("compile.bat", 'w'); fwrite($batchScript, $cmd); exec("compile.bat"); //overwrite compiled demo $copyCmd = "copy " . $src . " " . $dst; exec($copyCmd); function setHandlers($nodes, $edges) { $snodes = array(); foreach ($edges as $edge ) { $sNode = getNodeByUID($nodes, $edge["from"]); $tNode = getNodeByUID($nodes, $edge["to"]); $sNode->setHandler($edge["sourceButton"], $tNode->getName()); } } function writeATMFile($file, $nodes) { $doc = new DOMDocument(); $doc->load($file); $atmNode = $doc->getElementsByTagName("atm")->item(0); while ($atmNode->firstChild != null) $atmNode->removeChild($atmNode->firstChild); $i = 0; foreach ($nodes as $node) { $s = $doc->createElement($node->getName()); $s->setAttribute("name", $node->getName()); $i == 0 ? $s->setAttribute("apply", "true") : $s->setAttribute("apply", "false"); $atmNode->appendChild($s); $i++; } //$atmNode = $newAtmNode; $doc->save($file); } function getNodeByUID($nodes, $uid) { foreach ($nodes as $node) { if ($node->uid == $uid) return $node; } } ?>