DO_SETUP = true; $this->path_file = $path_file; $this->pathes = array(); $this->config_file = ""; $this->config = array(); $this->bdd = array(); $this->INITED = false; $this->logs = array(); } function set_env(&$env){ $this->env =& $env; } function env(){ return $this->env; } function init(){ $this->INITED = $this->init_pathes() && $this->init_config() && $this->init_env(); if(!$this->INITED) return false; if($this->config_file) return true; $this->setup(); return false; } function init_pathes(){ if(($n = strpos($_SERVER["REQUEST_URI"], "?")) !== false){ $_SERVER["REQUEST_URI"] = substr($_SERVER["REQUEST_URI"], 0, $n); } $web_path = explode("/", preg_replace('#/+#','/',$_SERVER["REQUEST_URI"])); $this->pathes["web"] = ""; for($i = 0; $i < count($web_path) - 1; $i++) $this->pathes["web"] .= $web_path[$i]."/"; if( !$this->path_file || !file_exists($this->path_file) ){ $this->log("path_file introuvable: ".$this->path_file); return false; } require_once $this->path_file; if( !isset($PATHES) || !is_array($PATHES) ){ $this->log("path_file: ".$this->path_file); $this->log("variable PATHES non defini"); return false; } foreach($PATHES as $path_name => $path_value){ $this->pathes[$path_name] = $path_value; $this->pathes[$path_name] .= $path_value && substr($path_value, -1) != "/" ? "/" : ""; } if( !isset($this->pathes["mw_dir"]) || !isset($this->pathes["mw_path"]) || !isset($this->pathes["content"]) ){ $this->log("variable PATHES incomplete"); return false; } if( !file_exists($this->pathes["content"]) || !is_dir($this->pathes["content"]) ){ $this->log("dossier content introuvable: ".$this->pathes["content"]); return false; } if(!is_writable($this->pathes["content"])){ $this->log("Php ne peut pas ecrire dans le dossier content: ".$this->pathes["content"]); return false; } return true; } function init_config(){ if(file_exists($config_file = $this->pathes["content"]."config/config.php")){ $this->config_file = $config_file; require_once $this->config_file; if( isset($CONFIG) && is_array($CONFIG) ){ foreach($CONFIG as $config_name => $config_value){ $this->config[$config_name] = $config_value; } } if( isset($bdd) && is_array($bdd) ){ foreach($bdd as $bdd_key => $bdd_value){ $this->bdd[$bdd_key] = $bdd_value; } } } else $this->log("pas de fichier de config: ".$config_file); return true; } function init_env(){ $env = false; $this->set_env($env); if( ($sxml_class_file = (file_exists($this->pathes["mw_dir"]."libs/sxml.php") ? $this->pathes["mw_dir"]."libs/sxml.php" : "")) && ($empty_class_file = (file_exists($this->pathes["mw_dir"]."libs/empty_class.php") ? $this->pathes["mw_dir"]."libs/empty_class.php" : "")) && ($env_class_file = (file_exists($this->pathes["mw_dir"]."env/mw_env.php") ? $this->pathes["mw_dir"]."env/mw_env.php" : "")) ){ if(!class_exists("sxml")) require_once $sxml_class_file; if(!class_exists("empty_class")) require_once $empty_class_file; if(!class_exists("mw_env")) require_once $env_class_file; if( class_exists("sxml") && class_exists("empty_class") && class_exists("mw_env") ){ $env = new mw_env(true); $this->set_env($env); $env->load_modules($this->pathes["mw_dir"], "env/modules/"); $env->set_config_file($this->config_file); $env->set_PATHES($this->pathes); $env->init_plugins(); $env->load_config($this->bdd, $this->config); $env->init(); } } return $this->env(); } function run($etat = "", $params = array(), $valid_role = true){ if($this->INITED){ $env = $this->env(); $etat = ($etat === false ? false : ($etat ? $etat : (isset($_GET[$env->param("e")]) ? $_GET[$env->param("e")] : ""))); if($etat !== false) $env->run($etat, $params, $valid_role); return true; } $this->log("run sans init. l'application ne s'est pas executee"); return false; } function display(){ $env = $this->env(); if($env->etat_is_valid()){ $template = $env->get_template(); $layout = $env->init_layout(); $template->render_layout($layout); } } function log($content){ $this->logs[] = array( "time" => date("Y-m-d H:i:s"), "value" => $content ); } function setup(){ if($this->DO_SETUP){ $env = $this->env(); $etat = isset($_GET[$env->param("e")]) ? $_GET[$env->param("e")] : "install"; $env->run($etat, array(), false); $this->display(); exit; } } function show_logs(){ foreach($this->logs as $log_time => $log_value){ $log_value = is_bool($log_value) ? "bool(".($log_value ? "true" : "false").")" : $log_value; echo PHP_SAPI == "cli" ? "\n".print_r($log_value, true)."\n" : "
".htmlentities(print_r($log_value, true), ENT_QUOTES, "UTF-8")."
"; } } } ?>