X-Git-Url: http://git.dj3c1t.com/?a=blobdiff_plain;f=mw%2Fmw_app.php;h=38d094d86f1c1f1e3c550b52734a740a03ec6f29;hb=af318ad7150a54780f3912d7fbf805c7382b2785;hp=d1f614884f09f76f72e21ce0d15957a1183c4bae;hpb=bec31526c19092982057acabfe12e121442ec19b;p=mtweb diff --git a/mw/mw_app.php b/mw/mw_app.php index d1f6148..38d094d 100644 --- a/mw/mw_app.php +++ b/mw/mw_app.php @@ -9,10 +9,10 @@ var $config; var $bdd; var $error; - var $DO_SETUP; + var $DO_INSTALL; - function mw_app($path_file, $DO_SETUP = false){ - $this->DO_SETUP = $DO_SETUP; + function mw_app($path_file, $DO_INSTALL = false){ + $this->DO_INSTALL = $DO_INSTALL; $this->path_file = $path_file; $this->pathes = array(); $this->config_file = ""; @@ -38,16 +38,33 @@ if(!$this->init_pathes()) return $this->get_error(); if(!$this->init_config()) return $this->get_error(); if(!$this->init_env()) return $this->get_error(); - if($this->config_file) return true; - if($this->DO_SETUP) $this->setup(); - return $this->get_error(); + if(!$this->config_file){ + if($this->DO_INSTALL){ + $this->install(); + exit; + } + return $this->get_error(); + } + $env = $this->env(); + if(($res = $env->data_upgrade_required()) === true){ + $this->upgrade(); + exit; + } + else{ + if($res !== false){ + $this->error($res); + return $this->get_error(); + } + } + return true; } function init_pathes(){ - if(($n = strpos($_SERVER["REQUEST_URI"], "?")) !== false){ - $_SERVER["REQUEST_URI"] = substr($_SERVER["REQUEST_URI"], 0, $n); + $REQUEST_URI = $_SERVER["REQUEST_URI"]; + if(($n = strpos($REQUEST_URI, "?")) !== false){ + $REQUEST_URI = substr($REQUEST_URI, 0, $n); } - $web_path = explode("/", preg_replace('#/+#','/',$_SERVER["REQUEST_URI"])); + $web_path = explode("/", preg_replace('#/+#','/',$REQUEST_URI)); $this->pathes["web"] = ""; for($i = 0; $i < count($web_path) - 1; $i++) $this->pathes["web"] .= $web_path[$i]."/"; if( @@ -84,7 +101,11 @@ $this->error("dossier content introuvable"); return false; } - if(!is_writable($this->pathes["content"])){ + if( + !is_writable($this->pathes["content"]) + || !is_writable($this->pathes["content"]."config") + || !is_writable($this->pathes["content"]."data") + ){ $this->error("Php ne peut pas ecrire dans le dossier content"); return false; } @@ -113,7 +134,7 @@ } } else{ - if(!$this->DO_SETUP){ + if(!$this->DO_INSTALL){ $this->error("fichier config.php manquant"); return false; } @@ -150,6 +171,11 @@ $env->load_versions(); $env->load_config($this->bdd, $this->config); $env->init(); + $env->loaded_plugins(); + if(($res = $env->init_data_upgrades()) !== true){ + $this->error("impossible de lire les upgrades. ".$res); + return false; + } return true; } @@ -160,6 +186,38 @@ return true; } + function run_mod($mod_name, $valid_role = true){ + $env = $this->env(); + $etat = false; + if(isset($_GET[$env->param("e")])){ + $etat = $env->valid_etat($_GET[$env->param("e")]); + if(!$etat || ($etat["mod"] != $mod_name)){ + $etat = false; + } + } + if(!$etat){ + $etat = $env->valid_etat($mod_name); + } + if(!$etat) return false; + $env->run($etat, array(), $valid_role); + return true; + } + + function install(){ + if($this->run_mod("install", false)){ + $this->display(); + } + } + + function upgrade(){ + $env = $this->env(); + $data = $env->data(); + $data->load_session(); + if($this->run_mod("upgrade", false)){ + $this->display(); + } + } + function display(){ $env = $this->env(); if($env->etat_is_valid()){ @@ -169,14 +227,6 @@ } } - function setup(){ - $env = $this->env(); - $etat = isset($_GET[$env->param("e")]) ? $_GET[$env->param("e")] : "install"; - $env->run($etat, array(), false); - $this->display(); - exit; - } - function error($content){ $this->error = $content; }