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 = false){
- $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 = "";
$this->error = false;
}
- function set_env(&$env){
+ public function set_env(&$env){
$this->env =& $env;
}
- function env(){
+ public function env(){
return $this->env;
}
- function param($name){
+ public function param($name){
if(!isset($this->env)) return false;
return $this->env->param($name);
}
- function init(){
+ 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) 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);
+ 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(
$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;
}
}
else{
- if(!$this->DO_SETUP){
+ if(!$this->DO_INSTALL){
$this->error("fichier config.php manquant");
return false;
}
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" : ""))
$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);
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();
}
}
- 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 get_error(){
+ public function get_error(){
return isset($this->error) && $this->error ? $this->error : false;
}