3 class mw_sourceml_sql_version_1_1_2 extends mw_data_version{
5 public function version(){
9 public function do_upgrade(){
13 $sgbd = $data->sgbd();
15 if($sgbd->table_exists("#--sources")){
17 /* ----------------------------------------------------------------------
18 nouvelle table groupe_status
21 if(!$sgbd->table_exists("#--groupe_status")){
23 !$data->data_create_table(
25 "table_name" => "groupe_status",
27 "id" => array("type" => "int", "autoincrement" => true),
28 "nom" => array("type" => "varchar")
32 "fields" => array("id"),
36 "options" => array("default_charset" => "utf8")
40 return "impossible de créer la table groupe_status";
43 $sql = "INSERT INTO #--groupe_status(id, nom) VALUES (1, 'admin')";
\r
45 $sql = "INSERT INTO #--groupe_status(id, nom) VALUES (2, 'editeur')";
\r
47 $sql = "INSERT INTO #--groupe_status(id, nom) VALUES (3, 'contributeur')";
51 return "impossible de remplir la table groupe_status";
55 /* ----------------------------------------------------------------------
56 nouvelle table source_groupes
57 sources.id_groupe passe dans source_groupes.id_groupe
60 if(!$sgbd->table_exists("#--source_groupes")){
62 !$data->data_create_table(
64 "table_name" => "source_groupes",
66 "id" => array("type" => "int", "autoincrement" => true),
67 "id_source" => array("type" => "int"),
68 "id_groupe" => array("type" => "int"),
69 "id_groupe_status" => array("type" => "int")
73 "fields" => array("id"),
77 "options" => array("default_charset" => "utf8")
81 return "impossible de créer la table source_groupes";
84 "INSERT INTO #--source_groupes(id_source, id_groupe, id_groupe_status)"
94 return "impossible d'importer les id_groupes dans source_groupes";
98 /* ----------------------------------------------------------------------
99 nouvelle table source_derivations
100 sources.derivation devient source_derivations.derivation
103 if(!$sgbd->table_exists("#--source_derivations")){
105 !$data->data_create_table(
107 "table_name" => "source_derivations",
109 "id" => array("type" => "int", "autoincrement" => true),
110 "id_source" => array("type" => "int"),
111 "derivation" => array("type" => "varchar")
115 "fields" => array("id"),
119 "options" => array("default_charset" => "utf8")
123 return "impossible de créer la table source_derivations";
126 "INSERT INTO #--source_derivations(id_source, derivation)"
130 ." FROM #--sources WHERE derivation IS NOT NULL";
135 return "impossible d'importer les derivation dans source_derivations";
139 /* ----------------------------------------------------------------------
141 maj source_infos : image avec id user
144 $SOURCE_HAS_ID_GROUPE = false;
146 $sources_desc = $sgbd->desc_table("#--sources");
147 if(isset($sources_desc["attributs"]["id_groupe"])){
148 $SOURCE_HAS_ID_GROUPE = true;
152 return "impossible de lire les champs de la table sources";
154 if($SOURCE_HAS_ID_GROUPE){
157 "SELECT #--sources.id as id_source, #--sources.id_groupe"
158 .", #--source_infos.id as id_source_info, #--source_infos.`value` as image"
160 ." LEFT JOIN #--source_infos"
161 ." ON (#--source_infos.id_source=#--sources.id AND #--source_infos.`key`='image')";
162 $rst = $sgbd->query($sql);
163 while($v_rst = $sgbd->fetch_assoc($rst)){
164 if($v_rst["image"] && !preg_match("/^[0-9]+\/.*$/", $v_rst["image"])){
167 $groupe = $data->data_read(
169 "table_name" => "groupes",
170 "index_name" => "id",
171 "index_value" => $v_rst["id_groupe"]
176 return "erreur lors de la lecture de l'utilisateur du groupe";
181 "table_name" => "source_infos",
182 "index_name" => "id",
183 "index_value" => $v_rst["id_source_info"],
185 "value" => $groupe["id_user"]."/".$v_rst["image"]
190 return "impossible de mettre a jour l'image des sources dans source_infos";
194 $sgbd->free_result($rst);
197 return "impossible de mettre a jour les images des sources";
202 /* ----------------------------------------------------------------------
204 maj image avec id user
208 $sql ="SELECT * FROM #--groupes";
209 $rst = $sgbd->query($sql);
210 while($v_rst = $sgbd->fetch_assoc($rst)){
211 if($v_rst["image"] && !preg_match("/^[0-9]+\/.*$/", $v_rst["image"])){
215 "table_name" => "groupes",
216 "index_name" => "id",
217 "index_value" => $v_rst["id"],
219 "image" => $v_rst["id_user"]."/".$v_rst["image"]
224 return "impossible de mettre a jour l'image des groupes";
228 $sgbd->free_result($rst);
231 return "impossible de mettre a jour les images des groupes";
234 /* ----------------------------------------------------------------------
236 sources.nom devient sources.titre
237 sources.status devient sources.id_class
238 suppression de sources.id_groupe
239 suppression de sources.derivation
243 $sources_desc = $sgbd->desc_table("#--sources");
246 return "impossible de lire les champs de la table sources";
249 !isset($sources_desc["attributs"]["titre"])
250 || isset($sources_desc["attributs"]["nom"])
251 || isset($sources_desc["attributs"]["status"])
252 || isset($sources_desc["attributs"]["id_groupe"])
253 || isset($sources_desc["attributs"]["derivation"])
255 $sql = "ALTER TABLE #--sources RENAME TO #--sources_tmp";
260 return "impossible de renommer la table sources en sources_tmp";
263 !$data->data_create_table(
265 "table_name" => "sources",
267 "id" => array("type" => "int", "autoincrement" => true),
268 "id_class" => array("type" => "int"),
269 "reference" => array("type" => "varchar", "null" => true),
270 "titre" => array("type" => "varchar", "null" => true),
271 "licence" => array("type" => "int", "null" => true),
272 "date_creation" => array("type" => "date", "null" => true),
273 "date_inscription" => array("type" => "datetime")
277 "fields" => array("id"),
281 "fields" => array("id_class")
284 "fields" => array("licence")
287 "options" => array("default_charset" => "utf8")
291 return "impossible de créer la table sources";
293 $attribut_names = array(
294 "id_class" => isset($sources_desc["attributs"]["status"]) ? "status" : "id_class",
295 "titre" => isset($sources_desc["attributs"]["nom"]) ? "nom" : "titre",
298 "INSERT INTO #--sources(id, id_class, reference, titre, licence, date_creation, date_inscription)"
301 .", ".$attribut_names["id_class"]
303 .", ".$attribut_names["titre"]
306 .", date_inscription"
307 ." FROM #--sources_tmp";
312 return "impossible d'importer sources_tmp dans sources";
315 $sgbd->query("DROP TABLE #--sources_tmp");
318 return "impossible de supprimer la table sources_tmp";
322 /* ----------------------------------------------------------------------
323 suppression de la table source_status_composition
326 if($sgbd->table_exists("#--source_status_composition")){
328 $sgbd->query("DROP TABLE #--source_status_composition");
331 return "impossible de supprimer la table source_status_composition";
335 } // if($sgbd->data_exists("sources"))
338 /* ###################################################################### */
339 /* ###################################################################### */
340 /* ----------------------------------------------------------------------
341 migration vers les tables en sml_(...) du plugin mw_sourceml
344 /* ----------------------------------------------------------------------
345 sources devient sml_sources
348 if($sgbd->table_exists("#--sources")){
350 $sgbd->query("ALTER TABLE #--sources RENAME TO #--sml_sources");
353 return "impossible de renommer sources en sml_sources";
358 /* ----------------------------------------------------------------------
359 source_groupes devient sml_sources_authors
360 elt id_groupe devient id_author
361 elt id_groupe_status devient id_sources_access
364 if($sgbd->table_exists("#--source_groupes")){
366 !$data->data_create_table(
368 "table_name" => "sml_sources_authors",
370 "id" => array("type" => "int", "autoincrement" => true),
371 "id_source" => array("type" => "int"),
372 "id_author" => array("type" => "int"),
373 "id_sources_access" => array("type" => "int"),
377 "fields" => array("id"),
381 "fields" => array("id_source")
384 "fields" => array("id_author")
387 "fields" => array("id_sources_access")
390 "options" => array("default_charset" => "utf8")
394 return "impossible de créer la table sources";
397 "INSERT INTO #--sml_sources_authors(id_source, id_author, id_sources_access)"
401 .", id_groupe_status"
402 ." FROM #--source_groupes";
407 return "impossible d'importer les derivation dans source_derivations";
410 $sgbd->query("DROP TABLE #--source_groupes");
413 return "impossible de supprimer la table source_groupes";
418 /* ----------------------------------------------------------------------
419 groupe_status devient sml_sources_access
423 if($sgbd->table_exists("#--groupe_status")){
425 !$data->data_create_table(
427 "table_name" => "sml_sources_access",
429 "id" => array("type" => "int", "autoincrement" => true),
430 "nom" => array("type" => "varchar"),
431 "intitule" => array("type" => "varchar"),
435 "fields" => array("id"),
439 "options" => array("default_charset" => "utf8")
443 return "impossible de créer la table sources";
446 $sql = "INSERT INTO #--sml_sources_access(id, nom, intitule) VALUES (1, 'admin', 'administrateur')";
\r
448 $sql = "INSERT INTO #--sml_sources_access(id, nom, intitule) VALUES (2, 'editeur', 'éditeur')";
\r
450 $sql = "INSERT INTO #--sml_sources_access(id, nom, intitule) VALUES (3, 'contributeur', 'contributeur')";
\r
454 return "impossible de remplir la table sml_sources_access";
457 $sgbd->query("DROP TABLE #--groupe_status");
460 return "impossible de supprimer la table groupe_status";
464 /* ----------------------------------------------------------------------
465 groupes devient sml_authors
468 if($sgbd->table_exists("#--groupes")){
470 $sgbd->query("ALTER TABLE #--groupes RENAME TO #--sml_authors");
473 return "impossible de renommer groupes en sml_authors";
477 /* ----------------------------------------------------------------------
478 licences devient sml_licences
481 if($sgbd->table_exists("#--licences")){
483 $sgbd->query("ALTER TABLE #--licences RENAME TO #--sml_licences");
486 return "impossible de renommer licences en sml_licences";
490 /* ----------------------------------------------------------------------
491 source_compositions devient sml_source_compositions
494 if($sgbd->table_exists("#--source_compositions")){
496 $sgbd->query("ALTER TABLE #--source_compositions RENAME TO #--sml_source_compositions");
499 return "impossible de renommer source_compositions en sml_source_compositions";
503 /* ----------------------------------------------------------------------
504 source_derivations devient sml_source_derivations
507 if($sgbd->table_exists("#--source_derivations")){
509 $sgbd->query("ALTER TABLE #--source_derivations RENAME TO #--sml_source_derivations");
512 return "impossible de renommer source_derivations en sml_source_derivations";
516 /* ----------------------------------------------------------------------
517 source_cache devient sml_source_cache
520 if($sgbd->table_exists("#--source_cache")){
522 $sgbd->query("ALTER TABLE #--source_cache RENAME TO #--sml_source_cache");
525 return "impossible de renommer source_cache en sml_source_cache";
529 /* ----------------------------------------------------------------------
530 source_status devient sml_classes
533 if($sgbd->table_exists("#--source_status")){
535 $sgbd->query("ALTER TABLE #--source_status RENAME TO #--sml_classes");
538 return "impossible de renommer source_status en sml_classes";
542 /* ----------------------------------------------------------------------
543 source_infos devient sml_sources_infos
546 if($sgbd->table_exists("#--source_infos")){
548 $sgbd->query("ALTER TABLE #--source_infos RENAME TO #--sml_sources_infos");
551 return "impossible de renommer source_infos en sml_sources_infos";
555 /* ----------------------------------------------------------------------
556 source_documents devient sml_source_documents
559 if($sgbd->table_exists("#--source_documents")){
561 $sgbd->query("ALTER TABLE #--source_documents RENAME TO #--sml_source_documents");
564 return "impossible de renommer source_documents en sml_source_documents";
569 /* ----------------------------------------------------------------------
570 nouvelle table sml_sources_invitations
573 if(!$sgbd->table_exists("#--sml_sources_invitations")){
575 !$data->data_create_table(
577 "table_name" => "sml_sources_invitations",
579 "id" => array("type" => "int", "autoincrement" => true),
580 "id_user" => array("type" => "int"),
581 "id_source" => array("type" => "int"),
582 "id_author" => array("type" => "int"),
583 "id_sources_access" => array("type" => "int"),
584 "date_invitation" => array("type" => "datetime")
588 "fields" => array("id"),
592 "options" => array("default_charset" => "utf8")
596 return "impossible de créer la table sml_sources_invitations";