X-Git-Url: http://git.dj3c1t.com/index.cgi?a=blobdiff_plain;f=mw%2Fmw_app.php;h=4e328b7a252109639c9d7c216ac61f81e7f618d4;hb=HEAD;hp=1c18b21f4a3089d2a1b41d2cf4f6b9ef6b7a3b88;hpb=b91d4ed0a098b00708072de6fecd8c5047cb586b;p=mtweb diff --git a/mw/mw_app.php b/mw/mw_app.php index 1c18b21..4e328b7 100644 --- a/mw/mw_app.php +++ b/mw/mw_app.php @@ -2,17 +2,17 @@ class mw_app{ - var $env; - var $path_file; - var $pathes; - var $config_file; - var $config; - var $bdd; - var $error; - var $DO_SETUP; - - function mw_app($path_file, $DO_SETUP = true){ - $this->DO_SETUP = $DO_SETUP; + public $env; + public $path_file; + public $pathes; + public $config_file; + public $config; + public $bdd; + public $error; + public $DO_INSTALL; + + public function __construct($path_file, $DO_INSTALL = false){ + $this->DO_INSTALL = $DO_INSTALL; $this->path_file = $path_file; $this->pathes = array(); $this->config_file = ""; @@ -21,28 +21,50 @@ $this->error = false; } - function set_env(&$env){ + public function set_env(&$env){ $this->env =& $env; } - function env(){ + public function env(){ return $this->env; } - function init(){ - if(!$this->init_pathes()) return false; - if(!$this->init_config()) return false; - if(!$this->init_env()) return false; - if($this->config_file) return true; - if($this->DO_SETUP) $this->setup(); - return false; + public function param($name){ + if(!isset($this->env)) return false; + return $this->env->param($name); + } + + public function init(){ + 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){ + 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); + public function init_pathes(){ + $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( @@ -52,12 +74,12 @@ $this->error("le fichier des chemins est introuvable"); return false; } - require_once $this->path_file; + require $this->path_file; if( !isset($PATHES) || !is_array($PATHES) ){ - $this->erreur("variable PATHES non defini"); + $this->error("variable PATHES non defini"); return false; } foreach($PATHES as $path_name => $path_value){ @@ -79,14 +101,18 @@ $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; } return true; } - function init_config(){ + public function init_config(){ if(file_exists($config_file = $this->pathes["content"]."config/config.php")){ $this->config_file = $config_file; require_once $this->config_file; @@ -108,7 +134,7 @@ } } else{ - if(!$this->DO_SETUP){ + if(!$this->DO_INSTALL){ $this->error("fichier config.php manquant"); return false; } @@ -116,7 +142,7 @@ return true; } - function init_env(){ + public function init_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" : "")) @@ -141,26 +167,58 @@ $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_plugins(); $env->load_config($this->bdd, $this->config); + $env->load_data(); + $env->load_sgbd(); + $env->plugins_loaded(); + $env->load_versions(); + $env->load_data_upgrades(); $env->init(); + $env->init_plugins(); return true; } - function run($etat = "", $params = array(), $valid_role = true){ + public function run($etat = "", $params = array(), $valid_role = true){ $env = $this->env(); if(!is_callable(array($env, "run"))) return false; - $env->run( - $etat ? - $etat - : (isset($_GET[$env->param("e")]) ? $_GET[$env->param("e")] : ""), - $params, - $valid_role - ); + $env->run($etat); return true; } - function display(){ + public 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; + } + + public function install(){ + if($this->run_mod("install", false)){ + $this->display(); + } + } + + public function upgrade(){ + $env = $this->env(); + $data = $env->data(); + $data->load_session(); + if($this->run_mod("upgrade", false)){ + $this->display(); + } + } + + public function display(){ $env = $this->env(); if($env->etat_is_valid()){ $template = $env->get_template(); @@ -169,20 +227,12 @@ } } - 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){ + public function error($content){ $this->error = $content; } - function show_error(){ - echo $this->error; + public function get_error(){ + return isset($this->error) && $this->error ? $this->error : false; } }