# HG changeset patch # User Tom Fredrik "BFG" Klaussen # Date 1338318503 -7200 # Node ID a20bb1b51aadfc7b1918a50e810c8e7efe1d25ef # Parent ba6f0818018bd503d0c3d1157c94d50f86c0d3d6# Parent 60e73809887a7d3c584be576e368d51c01db1398 Merge. diff -r 60e73809887a -r a20bb1b51aad flag.php --- a/flag.php Mon May 28 23:13:17 2012 +0200 +++ b/flag.php Tue May 29 21:08:23 2012 +0200 @@ -1,4 +1,6 @@ $val) { - if (file_exists($l)) { - $lang=$l; - break; + if ($langs) { + foreach ($langs as $l => $val) { + if (file_exists($l)) { + $lang=$l; + break; + } } } } -$title="Dummy title"; - -$config=loadFile("${lang}/${name}.xml"); - -$confFile="${lang}/${name}.xml"; -if (!file_exists($confFile)) { - errorPage("Resource not available"); -} -$doc = new DOMDocument(); -$doc->load($confFile); - -$includes=$doc->getElementsByTagName("include"); -$recurse=0; - -while($includes->length>0) { - if(++$recurse>MAX_RECURSE) { - errorPage('Recursion limit exceeded', 500); - } - foreach ($includes as $include) { - $src=$include->getAttribute("src"); - $subdoc = new DOMDocument(); - $subdoc->load("${lang}/${src}"); - $parent=$include->parentNode; - $xml=getElementByTagName($subdoc,"xml"); - foreach($xml->childNodes as $child) { - $text=$subdoc->saveXml($child); - $clonedChild=$doc->importNode($child,true); - $parent->insertBefore($clonedChild,$include); - } - $parent->removeChild($include); - } - $includes=$doc->getElementsByTagName("include"); -} - -$head=getElementByTagName($doc,"head"); -$title=$head->getAttribute("title"); - -$css=getElementByTagName($head,"css"); -$css=$doc->saveXML($css); -$css=preg_replace('/\s*<\/?\s*css\s*>\s*/s', '', $css); - -$body=getElementByTagName($doc,"body"); -$files=$body->getElementsByTagName("file"); - - -$out= ''; - -$out.= ' - - - '; - -$out.= "$title"; -$out.= ' - -'; -$out.= "$css"; -$out.= ' - - -
-'; - function getParam($param) { $param_type=$param->getAttribute("type"); $param_value; @@ -127,6 +73,91 @@ return $param_value; } +function getInput($master, $param) { + $out=''; + + $lang=$GLOBALS['lang']; + $name=$param->getAttribute("id"); + $conf=$_GET[$name]; + $GLOBALS[$name]=$conf; + if (!$conf) + $conf=$param->getAttribute("default"); + $config=loadFile("${lang}/${conf}.xml"); + + $confFile="${lang}/${conf}.xml"; + if (!file_exists($confFile)) { + errorPage("Resource not available"); + } + $doc = new DOMDocument(); + $doc->load($confFile); + + $includes=$doc->getElementsByTagName("include"); + $recurse=0; + + while($includes->length>0) { + if(++$recurse>MAX_RECURSE) { + errorPage('Recursion limit exceeded', 500); + } + foreach ($includes as $include) { + $src=$include->getAttribute("src"); + $subdoc = new DOMDocument(); + $subdoc->load("${lang}/${src}"); + $parent=$include->parentNode; + $xml=getElementByTagName($subdoc,"xml"); + foreach($xml->childNodes as $child) { + $text=$subdoc->saveXml($child); + $clonedChild=$doc->importNode($child,true); + $parent->insertBefore($clonedChild,$include); + } + $parent->removeChild($include); + } + $includes=$doc->getElementsByTagName("include"); + } + + $head=getElementByTagName($doc,"head"); + $title=$head->getAttribute("title"); + + if($title) { + $values=$master->getElementsByTagName("param"); + foreach ($values as $value) { + if ($value->getAttribute("type")=="input_config") { + if ($value->getAttribute("id")=="title") { + $tmp = new DOMDocument(); + $tmp->loadXml("${title}"); + $parent=$value->parentNode; + $parent->removeChild($value); + $parent->appendChild(new DOMText($tmp->textContent)); + } + } + } + } + + $css=getElementByTagName($head,"css"); + $css=$doc->saveXML($css); + $css=preg_replace('/\s*<\/?\s*css\s*>\s*/s', '', $css); + + if($css) { + $values=$master->getElementsByTagName("param"); + foreach ($values as $value) { + if ($value->getAttribute("type")=="input_config") { + if ($value->getAttribute("id")=="css") { + $tmp = new DOMDocument(); + $tmp->loadXml("${css}"); + $parent=$value->parentNode; + foreach($tmp->firstChild->childNodes as $node) { + $clonedChild=$master->importNode($node,true); + $parent->insertBefore($clonedChild,$value); + } + $parent->removeChild($value); + } + } + } + } + + + $body=getElementByTagName($doc,"body"); + $files=$body->getElementsByTagName("file"); + foreach ($files as $file) { $script=$file->getAttribute("script"); if ($script) { @@ -172,11 +203,30 @@ $out.= $file_content; } -$out.=' -
- - -'; + $doc = new DOMDocument(); + $doc->loadXml("${out}"); + + return $doc; +} + +$master = new DOMDocument(); +$master->load("master.xml"); + +$params=$master->getElementsByTagName("param"); +foreach ($params as $param) { + if ($param->getAttribute("type") == "input") { + $doc=getInput($master,$param); -print $out; + $parent=$param->parentNode; + foreach ($doc->firstChild->childNodes as $child) { + $clonedChild=$master->importNode($child,true); + $parent->insertBefore($clonedChild,$param); + } + $parent->removeChild($param); + + } +} + +print $master->saveXml($master); + ?>