3 class mw_install_index extends mw_controller{
7 public function validate(){
9 $this->config_file = $env->path("content")."config/config.php";
10 if(file_exists($this->config_file)) return "le site est deja installé";
14 public function index(){
22 if(($sgbds = $env->sgbds()) === false){
23 $env->erreur("impossible de lister les sgbds disponibles");
26 $table_prefix = isset($_POST["table_prefix"]) ? $_POST["table_prefix"] : "mw_";
27 $env->add_table_prefix(
29 "#--" => $table_prefix
32 $current_sgbd = isset($sgbds["mw_pdo_sqlite"]) ? "mw_pdo_sqlite" : "mw_xml";
34 if(!isset($_POST["sgbd"])){
35 $env->erreur("Parametre de SGBD manquant");
38 $current_sgbd = $_POST["sgbd"];
40 foreach($sgbds as $class_name => $sgbd){
41 if($current_sgbd == $class_name){
47 $env->erreur("SGBD inconnu: ".$current_sgbd);
50 if(!file_exists($template_file = $env->path("content")."config/templates/".$current_sgbd.".php")){
51 $env->erreur("le fichier de template pour la configuration avec ".$current_sgbd." n'existe pas");
55 "host" => isset($_POST[$current_sgbd."_host"]) ? $_POST[$current_sgbd."_host"] : "",
56 "base" => isset($_POST[$current_sgbd."_base"]) ? $_POST[$current_sgbd."_base"] : "",
57 "user" => isset($_POST[$current_sgbd."_user"]) ? $_POST[$current_sgbd."_user"] : "",
58 "password" => isset($_POST[$current_sgbd."_password"]) ? $_POST[$current_sgbd."_password"] : ""
60 $sgbds[$current_sgbd]->user = $params["user"];
62 "login" => trim($_POST["admin_login"]),
63 "email" => trim($_POST["admin_email"]),
64 "password" => $_POST["admin_password"]
67 $env->message("merci de choisir un login pour l'administrateur");
70 $env->message("merci de préciser l'email de l'administrateur");
72 if($admin["password"]){
73 if($admin["password"] != $_POST["admin_password_confirm"]){
74 $env->message("la confirmation du mot de passe est incorrecte");
77 else $env->message("merci de choisir un mot de passe pour l'administrateur");
78 if(!$env->messages()){
79 $sgbds[$current_sgbd] = null;
80 $impl = new $current_sgbd($env, $params);
81 $sgbds[$current_sgbd] = $impl;
82 $data->set_sgbd($sgbds[$current_sgbd]);
83 $data->load_modules($env->path("mw_dir")."app/", "data/modules/".($current_sgbd == "mw_xml" ? "xml" : "sql")."/");
85 $current_sgbd == "mw_xml"
87 if(($res = $data->install_xml($params)) !== true){
92 $current_sgbd == "mw_mysql"
93 || $current_sgbd == "mw_pdo_mysql"
95 if(($res = $data->install_sql($params)) !== true){
100 $current_sgbd == "mw_pdo_sqlite"
102 if(($res = $data->install_sqlite($params)) !== true){
107 if(!$env->messages()){
108 if(($roles = $data->init_roles()) === false){
109 $env->erreur("la base de données a été installée mais impossible de lire la liste des roles");
112 $admin_roles = array();
113 foreach($roles as $id_role => $role){
115 ($role["nom"] == "admin")
116 || ($role["nom"] == "membre")
117 || ($role["nom"] == "webmaster")
119 $admin_roles[] = $id_role;
122 if(!$data->add_user($admin["login"], md5($admin["password"]), $admin["email"], $admin_roles)){
123 $env->erreur("la base de données a été installée mais impossible d'ajouter l'administrateur");
127 if(!$env->messages()){
128 if(!$content = @file_get_contents($template_file)){
129 $env->erreur("impossible de lire le fichier de template pour la configuration avec ".$current_sgbd);
154 $env->erreur("impossible de créer le fichier de configuration");
157 require_once $this->config_file;
162 $env->set_config($CONFIG);
168 foreach($bdd as $bdd_key => $bdd_value){
169 if($bdd_key == "table_prefix"){
170 if(!($table_prefix = $env->bdd("table_prefix"))){
171 $env->erreur("impossible de lire les prefixes de tables");
174 foreach($table_prefix as $prefix_code => $prefix_value) break;
175 if(!isset($prefix_code)){
176 $env->erreur("impossible de lire le code pour le prefixe de tables");
179 $table_prefix[$prefix_code] = $bdd_value;
180 $env->add_table_prefix($table_prefix);
183 $env->set_bdd($bdd_key, $bdd_value);
187 if(($plugins = $env->plugins("DESC")) === false){
188 $env->erreur("impossible de lister les plugins");
190 foreach($plugins as $plugin_name => $plugin){
191 if(!$plugin["installed"]){
192 $env->run("config/plugins/install", array("get" => array("id" => $plugin_name)), false);
193 if($env->erreurs()) return;
194 $env->load_plugin($plugin_name);
196 if(!$plugin["enabled"]){
197 $env->run("config/plugins/enable", array("get" => array("id" => $plugin_name)), false);
198 if($env->erreurs()) return;
199 $env->load_plugin($plugin_name);
204 "le site a été installé"
208 $env->set_out("sgbds", $sgbds);
209 $env->set_out("current_sgbd", $current_sgbd);
210 $env->set_out("table_prefix", $table_prefix);
211 $env->set_out("admin", $admin);