load(ONYX.'config/root.xml') or trigger_error('Erreur du fichier de configuration',E_USER_ERROR); $xml->normalizeDocument(); //$xml->validate(); if($root = $xml->documentElement->getAttribute('root')) { if($root == substr(FILE,0,strlen($root))) { define('ROOT',$root); $search = substr(FILE,strlen($root)); $paths = explode('/',$search); $paths2 = $paths; foreach($paths as $key => $path) { for($i = $key - 1; $i >= 0; $i--) { $paths2[$key] = $paths[$i] . '/' . $paths2[$key]; } if($key != count($paths) - 1) $paths2[$key] .= '/'; } foreach($xml->getElementsByTagName('config') as $value) { $config[$value->getAttribute('match')] = $value; } $VAR = $ENV = $modules = array(); array_unshift($paths2,'*'); foreach($paths2 as $path) { if(isset($config[$path])) { $VAR = array_merge($VAR,parse_config($config[$path])); $ENV = array_merge($ENV,parse_config($config[$path],'env','option')); foreach($config[$path]->getElementsByTagName('module') as $module) { $modules[$module->getAttribute('name')] = $module; } } } $xml_modules = new DOMDocument(); $xml_modules->load(ONYX.'modules/modules.xml') or trigger_error('Erreur du fichier de modules',E_USER_ERROR); $xml_modules->normalizeDocument(); foreach($xml_modules->getElementsByTagName('module') as $module) { if(!ctype_alnum($module->getAttribute('name'))) trigger_error('Le nom du module contient des caracteres illegaux',E_USER_ERROR); $all_modules[$module->getAttribute('name')] = $module; } $all_opt = $load_modules = array(); foreach($modules as $name => $module) { if(isset($all_modules[$name]) && !in_array($name,$load_modules)) { if($require = $all_modules[$name]->getAttribute('require')) if(!in_array($require,$load_modules)) { trigger_error("Module '$name' requiert '$require'",E_USER_WARNING); continue; } $OPT = parse_config($module,'option'); $OPT = array_merge(parse_config($all_modules[$name]->getElementsByTagName('default')->item(0),'option'), $OPT); include_once(ONYX.'modules/'.$name.'/main.php'); $all_opt[$name] = $OPT; $load_modules[] = $name; } } if($xml->documentElement->getAttribute('cache')) Cache::set('_configuration_'.FILE,array('var' => $VAR,'env' => $ENV, 'root' => $root,'modules' => $load_modules,'opt' => $all_opt, 'check' => md5_file(ONYX.'config/root.xml').md5_file(ONYX.'modules/modules.xml'))); else Cache::del('_configuration_'.FILE); } else trigger_error('Fichier hors de la racine',E_USER_ERROR); } else trigger_error('Configuration erronnee',E_USER_ERROR); define('CACHED',FALSE); } error_reporting($ENV['error_level']); set_include_path(get_include_path() . PATH_SEPARATOR . ONYX.'include/'); ignore_user_abort($ENV['ignore_user_abort']); setLocale(LC_ALL,$ENV['locale']); date_default_timezone_set($ENV["timezone"]); if(isset($VAR['chrono'])) { function view_chrono() { global $chrono_start,$VAR; echo str_replace('$',round(microtime(TRUE) - $chrono_start,4),$VAR['chrono']); } register_shutdown_function('view_chrono'); } if($ENV['log_php']) ini_set('error_log',ONYX.'log/php.log'); foreach($ENV['ini'] as $name => $value) ini_set($name,$value); foreach($ENV['header'] as $name => $value) header($name.': '.$value); unset($xml,$root,$search,$paths,$paths2,$path,$key,$i,$value,$config,$modules,$module,$load_modules,$xml_modules,$all_modules,$name,$require,$OPT,$all_opt,$dir,$file,$ENV,$cached); ?>