ajout d'un installeur en ligne
[mtweb] / mw / app / data / modules / sql / mw_data_sql_install.php
diff --git a/mw/app/data/modules/sql/mw_data_sql_install.php b/mw/app/data/modules/sql/mw_data_sql_install.php
new file mode 100644 (file)
index 0000000..19a8a8d
--- /dev/null
@@ -0,0 +1,138 @@
+<?php
+
+  class mw_data_sql_install extends mw_data{
+
+    function install_sql($params){
+      $env = $this->env();
+      $data = $env->data();
+      $sgbd = $data->sgbd();
+      $host = isset($params["host"]) ? $params["host"] : "";
+      $base = isset($params["base"]) ? $params["base"] : "";
+      $user = isset($params["user"]) ? $params["user"] : "";
+      $password = isset($params["password"]) ? $params["password"] : "";
+      try{
+        $sgbd->connect(
+          $host,
+          $base,
+          $user,
+          $password
+        );
+        $sgbd->select_db($base);
+      }
+      catch(Exception $e){
+        return $e->getMessage();
+      }
+      try{
+        $EXISTS =
+            $sgbd->table_exists("#--actions_roles")
+        ||  $sgbd->table_exists("#--config")
+        ||  $sgbd->table_exists("#--roles")
+        ||  $sgbd->table_exists("#--users")
+        ||  $sgbd->table_exists("#--users_roles");
+      }
+      catch(Exception $e){
+        return "impossible de savoir si les tables existent deja";
+      }
+      if($EXISTS){
+        return "des tables a installer existent deja en base. installation annulee";
+      }
+      try{
+
+        $sql =
+         "SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\"";
+        $sgbd->query($sql);
+
+        $sql =
+          "CREATE TABLE #--actions_roles("\r
+        ." id int(11) NOT NULL AUTO_INCREMENT,"\r
+        ." `action` varchar(255) NOT NULL,"\r
+        ." id_role int(11) NOT NULL,"\r
+        ." PRIMARY KEY (id),"\r
+        ." KEY id_role(id_role)"\r
+        .") DEFAULT CHARSET=utf8";
+        $sgbd->query($sql);
+
+        $sql =
+         "CREATE TABLE #--config("\r
+        ."  id int(11) NOT NULL AUTO_INCREMENT,"\r
+        ."  `key` varchar(255) NOT NULL,"\r
+        ."  `value` text NOT NULL,"\r
+        ."  PRIMARY KEY (id)"\r
+        .") DEFAULT CHARSET=utf8";
+        $sgbd->query($sql);
+
+        $sql =
+         "CREATE TABLE #--roles("\r
+        ."  id int(11) NOT NULL AUTO_INCREMENT,"\r
+        ."  nom varchar(255) NOT NULL,"\r
+        ."  intitule varchar(255) NOT NULL,"\r
+        ."  KEY id (id)"\r
+        .") DEFAULT CHARSET=utf8";
+        $sgbd->query($sql);
+
+        $sql =
+         "CREATE TABLE #--users("\r
+        ."  id int(11) NOT NULL AUTO_INCREMENT,"\r
+        ."  login varchar(255) NOT NULL,"\r
+        ."  password varchar(255) NOT NULL,"\r
+        ."  email varchar(255) NOT NULL,"\r
+        ."  PRIMARY KEY (id)"\r
+        .") DEFAULT CHARSET=utf8";
+        $sgbd->query($sql);
+
+        $sql =
+         "CREATE TABLE #--users_roles("\r
+        ."  id_user int(11) NOT NULL,"\r
+        ."  id_role int(11) NOT NULL,"\r
+        ."  PRIMARY KEY (id_user,id_role),"\r
+        ."  KEY id_role(id_role)"\r
+        .") DEFAULT CHARSET=utf8";
+        $sgbd->query($sql);
+
+      }
+      catch(Exception $e){
+        return "imposible de creer les tables en base";
+      }
+      try{
+        $sql =
+         "INSERT INTO #--actions_roles(`id`, `action`, `id_role`) VALUES"\r
+        ."(13, 'admin', 1),"\r
+        ."(14, 'users', 2),"\r
+        ."(19, 'users/identification', 0),"\r
+        ."(20, 'config', 3)";
+        $sgbd->query($sql);
+
+        $sql =
+         "INSERT INTO #--config(id, `key`, `value`) VALUES"\r
+        ."(1, 'site_name', 'mtweb'),"\r
+        ."(2, 'max_list', '10'),"\r
+        ."(3, 'description', ''),"\r
+        ."(4, 'out', 'default'),"\r
+        ."(5, 'start_action', ''),"\r
+        ."(6, 'contact_form', '0'),"\r
+        ."(8, 'email', ''),"\r
+        ."(9, 'captcha', '0'),"\r
+        ."(16, 'start_action_params', ''),"\r
+        ."(20, 'out_navig_menu_top', 'on'),"\r
+        ."(22, 'out_colonne', 'on'),"\r
+        ."(29, 'default_allow', '1')";
+        $sgbd->query($sql);
+
+        $sql =
+         "INSERT INTO #--roles(`id`, `nom`, `intitule`) VALUES"\r
+        ."(0, 'guest', 'invité'),"\r
+        ."(1, 'admin', 'administrateur'),"\r
+        ."(2, 'membre', 'membre'),"\r
+        ."(3, 'webmaster', 'webmaster')";
+        $sgbd->query($sql);
+
+      }
+      catch(Exception $e){
+        return "les tables ont ete ajoutees en base mais impossible d'y enregistrer les valeurs par defaut.";
+      }
+      return true;
+    }
+
+  }
+
+?>
\ No newline at end of file