//
function install($env){
- if($env->bdd("sgbd") == "xml") return $this->install_xml($env);
- else return $this->install_sql($env);
- }
-
- function install_xml($env){
- $data = $env->data();
- $sgbd = $data->sgbd();
- $EXISTS = $sgbd->data_exists("pages");
- if(!isset($EXISTS)){
- return "impossible de savoir si la table #--pages existe";
+ if(
+ $env->bdd("sgbd") == "mysql"
+ || $env->bdd("sgbd") == "pdo_mysql"
+ ){
+ return $this->install_mysql($env);
}
- if($EXISTS){
- return "la table #--pages existe deja";
+ elseif(
+ $env->bdd("sgbd") == "pdo_sqlite"
+ ){
+ return $this->install_sqlite($env);
}
- if(!$sgbd->create_data("pages")){
- return "imposible de creer la table #--pages";
+ elseif(
+ $env->bdd("sgbd") == "xml"
+ ){
+ return $this->install_xml($env);
}
- if(!$sgbd->add_data("actions_roles", array("action" => "pages/admin", "id_role" => "1"))){
- $sgbd->remove_data("pages");
- return "impossible d'ajouter un statut pour l'action pages/admin";
+ else{
+ return "Mode de stockage pour Mtweb (".$env->bdd("sgbd").") non supporté par mw_pages";
}
return true;
}
- function install_sql($env){
+ function install_mysql($env){
$data = $env->data();
$sgbd = $data->sgbd();
try{
return true;
}
+ function install_sqlite($env){
+ $data = $env->data();
+ $sgbd = $data->sgbd();
+ try{
+ $EXISTS = $sgbd->table_exists("#--pages");
+ }
+ catch(Exception $e){
+ return "impossible de savoir si la table #--pages existe";
+ }
+ if($EXISTS){
+ return "la table #--pages existe deja";
+ }
+ try{
+ $sql =
+ "CREATE TABLE #--pages("
+ ." `id` INTEGER PRIMARY KEY AUTOINCREMENT"
+ .", id_parent INTEGER NULL"
+ .", title TEXT NULL"
+ .", content TEXT NULL"
+ .", date_creation TEXT NOT NULL"
+ .", user_creation INTEGER NOT NULL"
+ .", date_last_update TEXT NOT NULL"
+ .", user_last_update INTEGER NOT NULL"
+ .", enabled INTEGER NOT NULL DEFAULT '1'"
+ .", position INTEGER NOT NULL DEFAULT '0'"
+ .")";
+ $sgbd->query($sql);
+ }
+ catch(Exception $e){
+ return "imposible de creer la table #--pages";
+ }
+ try{
+ $sgbd->query("INSERT INTO #--actions_roles(action, id_role) VALUES('pages/admin', 1)");
+ }
+ catch(Exception $e){
+ try{
+ $sgbd->query("DROP TABLE #--pages");
+ }
+ catch(Exception $e){}
+ return "impossible d'ajouter un statut pour l'action pages/admin";
+ }
+ return true;
+ }
+
+ function install_xml($env){
+ $data = $env->data();
+ $sgbd = $data->sgbd();
+ $EXISTS = $sgbd->data_exists("pages");
+ if(!isset($EXISTS)){
+ return "impossible de savoir si la table #--pages existe";
+ }
+ if($EXISTS){
+ return "la table #--pages existe deja";
+ }
+ if(!$sgbd->create_data("pages")){
+ return "imposible de creer la table #--pages";
+ }
+ if(!$sgbd->add_data("actions_roles", array("action" => "pages/admin", "id_role" => "1"))){
+ $sgbd->remove_data("pages");
+ return "impossible d'ajouter un statut pour l'action pages/admin";
+ }
+ return true;
+ }
+
// ---------------------------------------------------------------------------------
// uninstall
//