14 function mw_app($path_file, $DO_INSTALL = false){
15 $this->DO_INSTALL = $DO_INSTALL;
16 $this->path_file = $path_file;
17 $this->pathes = array();
18 $this->config_file = "";
19 $this->config = array();
24 function set_env(&$env){
32 function param($name){
33 if(!isset($this->env)) return false;
34 return $this->env->param($name);
38 if(!$this->init_pathes()) return $this->get_error();
39 if(!$this->init_config()) return $this->get_error();
40 if(!$this->init_env()) return $this->get_error();
41 if(!$this->config_file){
42 if($this->DO_INSTALL){
46 return $this->get_error();
49 if(($res = $env->data_upgrade_required()) === true){
56 return $this->get_error();
62 function init_pathes(){
63 $REQUEST_URI = $_SERVER["REQUEST_URI"];
64 if(($n = strpos($REQUEST_URI, "?")) !== false){
65 $REQUEST_URI = substr($REQUEST_URI, 0, $n);
67 $web_path = explode("/", preg_replace('#/+#','/',$REQUEST_URI));
68 $this->pathes["web"] = "";
69 for($i = 0; $i < count($web_path) - 1; $i++) $this->pathes["web"] .= $web_path[$i]."/";
72 || !file_exists($this->path_file)
74 $this->error("le fichier des chemins est introuvable");
77 require $this->path_file;
82 $this->error("variable PATHES non defini");
85 foreach($PATHES as $path_name => $path_value){
86 $this->pathes[$path_name] = $path_value;
87 $this->pathes[$path_name] .= $path_value && substr($path_value, -1) != "/" ? "/" : "";
90 !isset($this->pathes["mw_dir"])
91 || !isset($this->pathes["mw_path"])
92 || !isset($this->pathes["content"])
94 $this->error("variable PATHES incomplete");
98 !file_exists($this->pathes["content"])
99 || !is_dir($this->pathes["content"])
101 $this->error("dossier content introuvable");
105 !is_writable($this->pathes["content"])
106 || !is_writable($this->pathes["content"]."config")
107 || !is_writable($this->pathes["content"]."data")
109 $this->error("Php ne peut pas ecrire dans le dossier content");
115 function init_config(){
116 if(file_exists($config_file = $this->pathes["content"]."config/config.php")){
117 $this->config_file = $config_file;
118 require_once $this->config_file;
123 foreach($CONFIG as $config_name => $config_value){
124 $this->config[$config_name] = $config_value;
131 foreach($bdd as $bdd_key => $bdd_value){
132 $this->bdd[$bdd_key] = $bdd_value;
137 if(!$this->DO_INSTALL){
138 $this->error("fichier config.php manquant");
147 !($sxml_class_file = (file_exists($this->pathes["mw_dir"]."libs/sxml.php") ? $this->pathes["mw_dir"]."libs/sxml.php" : ""))
148 || !($empty_class_file = (file_exists($this->pathes["mw_dir"]."libs/empty_class.php") ? $this->pathes["mw_dir"]."libs/empty_class.php" : ""))
149 || !($env_class_file = (file_exists($this->pathes["mw_dir"]."env/mw_env.php") ? $this->pathes["mw_dir"]."env/mw_env.php" : ""))
151 $this->error("des fichiers sont introuvables. impossible d'initialiser l'environnement");
154 if(!class_exists("sxml")) require_once $sxml_class_file;
155 if(!class_exists("empty_class")) require_once $empty_class_file;
156 if(!class_exists("mw_env")) require_once $env_class_file;
158 !class_exists("sxml")
159 || !class_exists("empty_class")
160 || !class_exists("mw_env")
162 $this->error("des classes sont introuvables. impossible d'initialiser l'environnement");
165 $env = new mw_env(true);
166 $this->set_env($env);
167 $env->load_modules($this->pathes["mw_dir"], "env/modules/");
168 $env->set_config_file($this->config_file);
169 $env->set_PATHES($this->pathes);
170 $env->init_plugins();
171 $env->load_versions();
172 $env->load_config($this->bdd, $this->config);
174 $env->loaded_plugins();
175 if(($res = $env->init_data_upgrades()) !== true){
176 $this->error("impossible de lire les upgrades. ".$res);
182 function run($etat = "", $params = array(), $valid_role = true){
184 if(!is_callable(array($env, "run"))) return false;
189 function run_mod($mod_name, $valid_role = true){
192 if(isset($_GET[$env->param("e")])){
193 $etat = $env->valid_etat($_GET[$env->param("e")]);
194 if(!$etat || ($etat["mod"] != $mod_name)){
199 $etat = $env->valid_etat($mod_name);
201 if(!$etat) return false;
202 $env->run($etat, array(), $valid_role);
207 if($this->run_mod("install", false)){
214 $data = $env->data();
215 $data->load_session();
216 if($this->run_mod("upgrade", false)){
223 if($env->etat_is_valid()){
224 $template = $env->get_template();
225 $layout = $env->init_layout();
226 $template->render_layout($layout);
230 function error($content){
231 $this->error = $content;
234 function get_error(){
235 return isset($this->error) && $this->error ? $this->error : false;