public attr / function, constructeurs __construct
[mtweb] / mw / app / data / modules / sql / mw_data_sql_install.php
1 <?php
2
3   class mw_data_sql_install extends mw_data{
4
5     public function install_sql($params){
6       $env = $this->env();
7       $data = $env->data();
8       $sgbd = $data->sgbd();
9       $host = isset($params["host"]) ? $params["host"] : "";
10       $base = isset($params["base"]) ? $params["base"] : "";
11       $user = isset($params["user"]) ? $params["user"] : "";
12       $password = isset($params["password"]) ? $params["password"] : "";
13       try{
14         $sgbd->connect(
15           $host,
16           $base,
17           $user,
18           $password
19         );
20         $sgbd->select_db($base);
21       }
22       catch(Exception $e){
23         return $e->getMessage();
24       }
25       if(!($version = $env->version("mtweb"))){
26         return "impossible de lire la version de mtweb";
27       }
28       try{
29         $EXISTS =
30             $sgbd->table_exists("#--actions_roles")
31         ||  $sgbd->table_exists("#--config")
32         ||  $sgbd->table_exists("#--roles")
33         ||  $sgbd->table_exists("#--users")
34         ||  $sgbd->table_exists("#--users_roles")
35         ||  $sgbd->table_exists("#--versions");
36       }
37       catch(Exception $e){
38         return "impossible de savoir si les tables existent deja";
39       }
40       if($EXISTS){
41         return "des tables a installer existent deja en base. installation annulee";
42       }
43       try{
44
45         $sql =
46          "SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\"";
47         $sgbd->query($sql);
48
49         $sql =
50           "CREATE TABLE #--actions_roles("\r
51         ." id int(11) NOT NULL AUTO_INCREMENT,"\r
52         ." `action` varchar(255) NOT NULL,"\r
53         ." id_role int(11) NOT NULL,"\r
54         ." PRIMARY KEY (id),"\r
55         ." KEY id_role(id_role)"\r
56         .") DEFAULT CHARSET=utf8";
57         $sgbd->query($sql);
58
59         $sql =
60          "CREATE TABLE #--config("\r
61         ."  id int(11) NOT NULL AUTO_INCREMENT,"\r
62         ."  `key` varchar(255) NOT NULL,"\r
63         ."  `value` text NOT NULL,"\r
64         ."  PRIMARY KEY (id)"\r
65         .") DEFAULT CHARSET=utf8";
66         $sgbd->query($sql);
67
68         $sql =
69          "CREATE TABLE #--roles("\r
70         ."  id int(11) NOT NULL AUTO_INCREMENT,"\r
71         ."  nom varchar(255) NOT NULL,"\r
72         ."  intitule varchar(255) NOT NULL,"\r
73         ."  KEY id (id)"\r
74         .") DEFAULT CHARSET=utf8";
75         $sgbd->query($sql);
76
77         $sql =
78          "CREATE TABLE #--users("\r
79         ."  id int(11) NOT NULL AUTO_INCREMENT,"\r
80         ."  login varchar(255) NOT NULL,"\r
81         ."  password varchar(255) NOT NULL,"\r
82         ."  email varchar(255) NOT NULL,"\r
83         ."  PRIMARY KEY (id)"\r
84         .") DEFAULT CHARSET=utf8";
85         $sgbd->query($sql);
86
87         $sql =
88          "CREATE TABLE #--users_roles("\r
89         ."  id_user int(11) NOT NULL,"\r
90         ."  id_role int(11) NOT NULL,"\r
91         ."  PRIMARY KEY (id_user,id_role),"\r
92         ."  KEY id_role(id_role)"\r
93         .") DEFAULT CHARSET=utf8";
94         $sgbd->query($sql);
95
96         $sql =
97          "CREATE TABLE #--versions("
98         ."  id INT(11) NOT NULL AUTO_INCREMENT,"
99         ."  application VARCHAR(255) NOT NULL,"
100         ."  version VARCHAR(255) NOT NULL,"
101         ."  PRIMARY KEY (id)"
102         .") DEFAULT CHARSET=utf8";
103         $sgbd->query($sql);
104
105       }
106       catch(Exception $e){
107         return "imposible de creer les tables en base";
108       }
109       try{
110         $sql =
111          "INSERT INTO #--actions_roles(`id`, `action`, `id_role`) VALUES"\r
112         ."(13, 'admin', 1),"\r
113         ."(14, 'users', 2),"\r
114         ."(19, 'users/identification', 0),"\r
115         ."(20, 'config', 3)";
116         $sgbd->query($sql);
117
118         $sql =
119          "INSERT INTO #--config(id, `key`, `value`) VALUES"\r
120         ."(1, 'site_name', 'mtweb'),"\r
121         ."(2, 'max_list', '10'),"\r
122         ."(3, 'description', ''),"\r
123         ."(4, 'out', 'default'),"\r
124         ."(5, 'start_action', ''),"\r
125         ."(6, 'contact_form', '0'),"\r
126         ."(8, 'email', ''),"\r
127         ."(9, 'captcha', '0'),"\r
128         ."(16, 'start_action_params', ''),"\r
129         ."(20, 'out_navig_menu_top', 'on'),"\r
130         ."(22, 'out_colonne', 'on'),"\r
131         ."(29, 'default_allow', '1')";
132         $sgbd->query($sql);
133
134         $sql =
135          "INSERT INTO #--roles(`id`, `nom`, `intitule`) VALUES"\r
136         ."(0, 'guest', 'invité'),"\r
137         ."(1, 'admin', 'administrateur'),"\r
138         ."(2, 'membre', 'membre'),"\r
139         ."(3, 'webmaster', 'webmaster')";
140         $sgbd->query($sql);
141
142         $sql =
143          "INSERT INTO #--versions(`application`, `version`) VALUES"\r
144         ."('mtweb', ".$this->eq($version).")";
145         $sgbd->query($sql);
146
147       }
148       catch(Exception $e){
149         return "les tables ont ete ajoutees en base mais impossible d'y enregistrer les valeurs par defaut.";
150       }
151       return true;
152     }
153
154   }