X-Git-Url: http://git.dj3c1t.com/?a=blobdiff_plain;f=mw%2Fmw_app.php;h=4355487c0cba27c8dd130c930b0c59c360df3e4c;hb=e038560c5eed39411ef5a761fe32ad8de69982bb;hp=b198197fb30a43b2d7d8a7e9090f8548fb2b6242;hpb=0ada6496e6c552c473a5816734b38896ccdd345b;p=mtweb diff --git a/mw/mw_app.php b/mw/mw_app.php index b198197..4355487 100644 --- a/mw/mw_app.php +++ b/mw/mw_app.php @@ -8,22 +8,17 @@ var $config_file; var $config; var $bdd; - var $INITED; - var $logs; - var $DO_SETUP; - - function mw_app($path_file){ - - // executer le setup si le fichier de config est absent - $this->DO_SETUP = true; + var $error; + var $DO_INSTALL; + function mw_app($path_file, $DO_INSTALL = false){ + $this->DO_INSTALL = $DO_INSTALL; $this->path_file = $path_file; $this->pathes = array(); $this->config_file = ""; $this->config = array(); $this->bdd = array(); - $this->INITED = false; - $this->logs = array(); + $this->error = false; } function set_env(&$env){ @@ -34,15 +29,34 @@ return $this->env; } + function param($name){ + if(!isset($this->env)) return false; + return $this->env->param($name); + } + 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; + 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(){ @@ -56,16 +70,15 @@ !$this->path_file || !file_exists($this->path_file) ){ - $this->log("path_file introuvable: ".$this->path_file); + $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->log("path_file: ".$this->path_file); - $this->log("variable PATHES non defini"); + $this->error("variable PATHES non defini"); return false; } foreach($PATHES as $path_name => $path_value){ @@ -77,18 +90,18 @@ || !isset($this->pathes["mw_path"]) || !isset($this->pathes["content"]) ){ - $this->log("variable PATHES incomplete"); + $this->error("variable PATHES incomplete"); return false; } if( !file_exists($this->pathes["content"]) || !is_dir($this->pathes["content"]) ){ - $this->log("dossier content introuvable: ".$this->pathes["content"]); + $this->error("dossier content introuvable"); return false; } if(!is_writable($this->pathes["content"])){ - $this->log("Php ne peut pas ecrire dans le dossier content: ".$this->pathes["content"]); + $this->error("Php ne peut pas ecrire dans le dossier content"); return false; } return true; @@ -115,85 +128,102 @@ } } } - else $this->log("pas de fichier de config: ".$config_file); + else{ + if(!$this->DO_INSTALL){ + $this->error("fichier config.php manquant"); + return false; + } + } 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" : "")) + !($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(); - } + $this->error("des fichiers sont introuvables. impossible d'initialiser l'environnement"); + return false; + } + 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") + ){ + $this->error("des classes sont introuvables. impossible d'initialiser l'environnement"); + return false; + } + $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_versions(); + $env->load_config($this->bdd, $this->config); + $env->init(); + if(($res = $env->init_data_upgrades()) !== true){ + $this->error("impossible de lire les upgrades. ".$res); + return false; } - return $this->env(); + return true; } 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; + $env = $this->env(); + if(!is_callable(array($env, "run"))) return false; + $env->run($etat); + return true; } - function display(){ + function run_mod($mod_name, $valid_role = true){ $env = $this->env(); - if($env->etat_is_valid()){ - $template = $env->get_template(); - $layout = $env->init_layout(); - $template->render_layout($layout); + $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 log($content){ - $this->logs[] = array( - "time" => date("Y-m-d H:i:s"), - "value" => $content - ); + function install(){ + if($this->run_mod("install", false)){ + $this->display(); + } } - 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); + function upgrade(){ + if($this->run_mod("upgrade", 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")."
"; + function display(){ + $env = $this->env(); + if($env->etat_is_valid()){ + $template = $env->get_template(); + $layout = $env->init_layout(); + $template->render_layout($layout); } } - } + function error($content){ + $this->error = $content; + } -?> \ No newline at end of file + function get_error(){ + return isset($this->error) && $this->error ? $this->error : false; + } + + }