<?php
// Converts php's crappy xml->php array to something much more usable
function xml2php($file) {
$xml_parser = xml_parser_create();
if( !($fp = fopen($file, "r")) ) {
die("Config error: unable to open config file");
}
$data = fread( $fp, filesize($file) );
fclose($fp);
xml_parser_set_option( $xml_parser, XML_OPTION_CASE_FOLDING, 0 );
xml_parse_into_struct( $xml_parser, $data, $vals, $index );
xml_parser_free( $xml_parser );
$params = array();
$level = array();
foreach( $vals as $xml_elem ) {
if( $xml_elem['type'] == 'open' ) {
if( array_key_exists('attributes',$xml_elem) ) {
list( $level[$xml_elem['level']], $extra ) = array_values( $xml_elem['attributes'] );
} else {
$level[$xml_elem['level']] = $xml_elem['tag'];
}
}
if( $xml_elem['type'] == 'complete' ) {
$start_level = 1;
$php_stmt = '$params';
while( $start_level < $xml_elem['level'] ) {
$php_stmt .= '[$level['.$start_level.']]';
$start_level++;
}
$php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];';
eval( $php_stmt );
}
}
return $params['xml'];
}
$configFile = "includes/config.xml.inc.php";
$GLOBALS['config'] = xml2php( $configFile );
/* To access config vars, use the $GLOBALS['config'] array */
?>