3 class mtweb_sql_version_0_11_2 extends mw_data_version{
13 $sgbd = $data->sgbd();
15 if(($env->bdd("sgbd") == "pdo_mysql") || ($env->bdd("sgbd") == "mysql")){
16 if(!$data->set_sgbd_param("SQL_MODE", "NO_AUTO_VALUE_ON_ZERO")){
17 return "imposible de parametrer SQL_MODE en NO_AUTO_VALUE_ON_ZERO";
21 /* ----------------------------------------------------------------------
24 element id_status devient id_role
27 if(!$sgbd->table_exists("#--actions_roles")){
28 if(!$sgbd->table_exists("#--action_status")){
29 return "impossible de trouver la table action_status";
32 !$data->data_create_table(
34 "table_name" => "actions_roles",
36 "id" => array("type" => "int", "autoincrement" => true),
37 "action" => array("type" => "varchar"),
38 "id_role" => array("type" => "int")
42 "fields" => array("id"),
46 "fields" => array("id_role")
49 "options" => array("default_charset" => "utf8")
53 return "impossible de créer la table actions_roles";
57 "INSERT INTO #--actions_roles(action, id_role)"
58 ." SELECT action, id_status"
59 ." FROM #--action_status";
64 return "impossible d'importer action_status dans actions_roles";
67 "INSERT INTO #--actions_roles(action, id_role) VALUES('config', 3)";
72 return "impossible d'ajouter la protection d'accès webmaster dans actions_roles";
75 $sgbd->query("DROP TABLE #--action_status");
78 return "impossible de supprimer la table action_status";
82 /* ----------------------------------------------------------------------
85 plus d'element creation_default
86 nouvel element intitule
89 if(!$sgbd->table_exists("#--roles")){
90 if(!$sgbd->table_exists("#--user_status")){
91 return "impossible de trouver la table user_status";
94 !$data->data_create_table(
96 "table_name" => "roles",
98 "id" => array("type" => "int", "autoincrement" => true),
99 "nom" => array("type" => "varchar"),
100 "intitule" => array("type" => "varchar")
104 "fields" => array("id"),
108 "options" => array("default_charset" => "utf8")
112 return "impossible de créer la table roles";
115 $sql = "INSERT INTO #--roles(id, nom, intitule) VALUES (0, 'guest', 'invité')";
\r
117 $sql = "INSERT INTO #--roles(id, nom, intitule) VALUES (1, 'admin', 'administrateur')";
118 $sgbd->query($sql);
\r
119 $sql = "INSERT INTO #--roles(id, nom, intitule) VALUES (2, 'membre', 'membre')";
120 $sgbd->query($sql);
\r
121 $sql = "INSERT INTO #--roles(id, nom, intitule) VALUES (3, 'webmaster', 'webmaster')";
125 return "impossible de remplir la table roles";
128 $sgbd->query("DROP TABLE #--user_status");
131 return "impossible de supprimer la table user_status";
135 /* ----------------------------------------------------------------------
136 nouvelle table users_roles
137 importer users.status dans users_roles.id_role
140 if(!$sgbd->table_exists("#--users_roles")){
142 !$data->data_create_table(
144 "table_name" => "users_roles",
146 "id_user" => array("type" => "int"),
147 "id_role" => array("type" => "int")
151 "fields" => array("id_user", "id_role"),
155 "fields" => array("id_role")
158 "options" => array("default_charset" => "utf8")
162 return "impossible de créer la table users_roles";
164 if(($users = $data->data_list(array("table_name" => "users"))) === false){
165 return "impossible de lire la table des utilisateurs";
167 foreach($users["list"] as $user){
171 "table_name" => "users_roles",
173 "id_user" => $user["id"],
174 "id_role" => $user["status"]
179 return "erreur lors de l'insertion des roles dans users_roles";
182 $sql = "ALTER TABLE #--users RENAME TO #--users_tmp";
187 return "impossible de renommer la table users en users_tmp";
190 !$data->data_create_table(
192 "table_name" => "users",
194 "id" => array("type" => "int", "autoincrement" => true),
195 "login" => array("type" => "varchar"),
196 "password" => array("type" => "varchar"),
197 "email" => array("type" => "varchar")
201 "fields" => array("id"),
205 "options" => array("default_charset" => "utf8")
209 return "impossible de créer la table users";
212 "INSERT INTO #--users(id, login, password, email)"
213 ." SELECT id, login, password, email"
214 ." FROM #--users_tmp";
219 return "impossible d'importer users_tmp dans users";
222 $sgbd->query("DROP TABLE #--users_tmp");
225 return "impossible de supprimer la table users_tmp";
229 /* ----------------------------------------------------------------------
230 nouvelle table versions
233 if(!$sgbd->table_exists("#--versions")){
235 !$data->data_create_table(
237 "table_name" => "versions",
239 "id" => array("type" => "int", "autoincrement" => true),
240 "application" => array("type" => "varchar"),
241 "version" => array("type" => "varchar")
245 "fields" => array("id"),
249 "options" => array("default_charset" => "utf8")
253 return "impossible de créer la table versions";