env(); $this->config_file = $env->path("content")."config/config.php"; if(file_exists($this->config_file)) return "le site est deja installé"; return true; } function index(){ $env = $this->env(); $data = $env->data(); $admin = array( "login" => "", "email" => "", "password" => "" ); if(($sgbds = $data->sgbds()) === false){ $env->erreur("impossible de lister les sgbds disponibles"); return; } $table_prefix = isset($_POST["table_prefix"]) ? $_POST["table_prefix"] : "mw_"; $env->add_table_prefix( array( "#--" => $table_prefix ) ); $current_sgbd = isset($sgbds["mw_pdo_sqlite"]) ? "mw_pdo_sqlite" : "mw_xml"; if($_POST){ if(!isset($_POST["sgbd"])){ $env->erreur("Parametre de SGBD manquant"); return; } $current_sgbd = $_POST["sgbd"]; $SGBD_FOUND = false; foreach($sgbds as $class_name => $sgbd){ if($current_sgbd == $class_name){ $SGBD_FOUND = true; break; } } if(!$SGBD_FOUND){ $env->erreur("SGBD inconnu: ".$current_sgbd); return; } if(!file_exists($template_file = $env->path("content")."config/templates/".$current_sgbd.".php")){ $env->erreur("le fichier de template pour la configuration avec ".$current_sgbd." n'existe pas"); return; } $params = array( "host" => isset($_POST[$current_sgbd."_host"]) ? $_POST[$current_sgbd."_host"] : "", "base" => isset($_POST[$current_sgbd."_base"]) ? $_POST[$current_sgbd."_base"] : "", "user" => isset($_POST[$current_sgbd."_user"]) ? $_POST[$current_sgbd."_user"] : "", "password" => isset($_POST[$current_sgbd."_password"]) ? $_POST[$current_sgbd."_password"] : "" ); $sgbds[$current_sgbd]->user = $params["user"]; $admin = array( "login" => trim($_POST["admin_login"]), "email" => trim($_POST["admin_email"]), "password" => $_POST["admin_password"] ); if(!$admin["login"]){ $env->message("merci de choisir un login pour l'administrateur"); } if(!$admin["email"]){ $env->message("merci de préciser l'email de l'administrateur"); } if($admin["password"]){ if($admin["password"] != $_POST["admin_password_confirm"]){ $env->message("la confirmation du mot de passe est incorrecte"); } } else $env->message("merci de choisir un mot de passe pour l'administrateur"); if(!$env->messages()){ $sgbds[$current_sgbd] = null; $impl = new $current_sgbd($params); $sgbds[$current_sgbd] = $impl; $data->set_sgbd( new mw_sgbd( $sgbds[$current_sgbd], $env ) ); $data->load_modules($env->path("mw_dir")."app/", "data/modules/".($current_sgbd == "mw_xml" ? "xml" : "sql")."/"); if( $current_sgbd == "mw_xml" ){ if(($res = $data->install_xml($params)) !== true){ $env->message($res); } } elseif( $current_sgbd == "mw_mysql" || $current_sgbd == "mw_pdo_mysql" ){ if(($res = $data->install_sql($params)) !== true){ $env->message($res); } } elseif( $current_sgbd == "mw_pdo_sqlite" ){ if(($res = $data->install_sqlite($params)) !== true){ $env->message($res); } } } if(!$env->messages()){ if(($roles = $data->init_roles()) === false){ $env->erreur("la base de données a été installée mais impossible de lire la liste des roles"); return; } $admin_roles = array(); foreach($roles as $id_role => $role){ if( ($role["nom"] == "admin") || ($role["nom"] == "membre") || ($role["nom"] == "webmaster") ){ $admin_roles[] = $id_role; } } if(!$data->add_user($admin["login"], md5($admin["password"]), $admin["email"], $admin_roles)){ $env->erreur("la base de données a été installée mais impossible d'ajouter l'administrateur"); return; } } if(!$env->messages()){ if(!$content = @file_get_contents($template_file)){ $env->erreur("impossible de lire le fichier de template pour la configuration avec ".$current_sgbd); return; } if( @file_put_contents( $this->config_file, str_replace( array( "[bdd_host]", "[bdd_base]", "[bdd_prefix]", "[bdd_user]", "[bdd_password]" ), array( $params["host"], $params["base"], $table_prefix, $params["user"], $params["password"] ), $content ) ) === false ){ $env->erreur("impossible de créer le fichier de configuration"); return; } $env->redirect( $env->url(), "le site a été installé" ); } } $env->set_out("sgbds", $sgbds); $env->set_out("current_sgbd", $current_sgbd); $env->set_out("table_prefix", $table_prefix); $env->set_out("admin", $admin); } } ?>