env(); $data = $env->data(); $sgbd = $data->sgbd(); if($sgbd->data_exists("sources")){ /* ---------------------------------------------------------------------- nouvelle table groupe_status */ if(!$sgbd->data_exists("groupe_status")){ if(!$sgbd->create_data("groupe_status")) return "impossible de creer la table groupe_status"; if ( !$sgbd->add_data("groupe_status", array("nom" => "admin")) || !$sgbd->add_data("groupe_status", array("nom" => "editeur")) || !$sgbd->add_data("groupe_status", array("nom" => "contributeur")) ){ return "impossible de renseigner la table groupe_status"; } } /* ---------------------------------------------------------------------- nouvelle table source_groupes sources.id_groupe devient source_groupes.id_groupe maj sources.image avec id user */ if(!$sgbd->data_exists("source_groupes")){ if(!$sgbd->create_data("source_groupes")) return "impossible de creer la table source_groupes"; if(!($rst = $sgbd->open_data("sources"))){ return "impossible de lire la liste des sources"; } $erreur = ""; while($v_rst = $sgbd->fetch_data($rst)){ if(isset($v_rst)){ if(isset($v_rst["id"]) && isset($v_rst["id_groupe"])){ $id_source = $v_rst["id"]; unset($v_rst["id"]); $id_groupe = $v_rst["id_groupe"]; unset($v_rst["id_groupe"]); if(isset($v_rst["image"]) && $v_rst["image"] && !preg_match("/^[0-9]+\/.*$/", $v_rst["image"])){ if($groupe = $sgbd->get_data("groupes", $id_groupe)){ $v_rst["image"] = $groupe["id_user"]."/".$v_rst["image"]; } } if( !$sgbd->set_data( "sources", $id_source, $v_rst ) ){ $erreur = "impossible de mettre a jour les informations des sources (champ id_groupe)"; break; } if( !$sgbd->add_data( "source_groupes", array( "id_source" => $id_source, "id_groupe" => $id_groupe, "id_groupe_status" => 1 ) ) ){ $erreur = "impossible de mettre a jour les informations des sources (source_groupes)"; break; } } } else{ $erreur = "erreur lors de lecture des sources pour mettre a jour les derivations"; break; } } $sgbd->close_data($rst); if($erreur) return $erreur; } /* ---------------------------------------------------------------------- nouvelle table source_derivations sources.derivation devient source_derivations.derivation */ if(!$sgbd->data_exists("source_derivations")){ if(!$sgbd->create_data("source_derivations")){ return "impossible de créer la table source_derivations"; } if(!($rst = $sgbd->open_data("sources"))){ return "impossible de lire la liste des sources"; } $erreur = ""; while($v_rst = $sgbd->fetch_data($rst)){ if(isset($v_rst)){ if(isset($v_rst["id"]) && isset($v_rst["derivation"])){ $id_source = $v_rst["id"]; unset($v_rst["id"]); $derivation = $v_rst["derivation"]; unset($v_rst["derivation"]); if( !$sgbd->set_data( "sources", $id_source, $v_rst ) ){ $erreur = "impossible de mettre a jour les informations des sources (champ derivation)"; break; } if( !$sgbd->add_data( "source_derivations", array( "id_source" => $id_source, "derivation" => $derivation ) ) ){ $erreur = "impossible de mettre a jour les derivations"; break; } } } else{ $erreur = "erreur lors de lecture des sources pour mettre a jour les derivations"; break; } } $sgbd->close_data($rst); if($erreur) return $erreur; } /* ---------------------------------------------------------------------- groupes maj image avec id user */ if($sgbd->data_exists("groupes")){ if(!($rst = $sgbd->open_data("groupes"))){ return "impossible de lire la liste des groupes pour mettre a jour les chemins des images"; } $res = true; while($v_rst = $sgbd->fetch_data($rst)){ if(isset($v_rst)){ if(isset($v_rst["id"]) && isset($v_rst["id_user"]) && isset($v_rst["image"]) && $v_rst["image"]){ if(!preg_match("/^[0-9]+\/.*$/", $v_rst["image"])){ $id_groupe = $v_rst["id"]; unset($v_rst["id"]); $v_rst["image"] = $v_rst["id_user"]."/".$v_rst["image"]; if( !$sgbd->set_data( "groupes", $id_groupe, $v_rst ) ){ $res = "impossible de mettre a jour les images des groupes"; break; } } } } else{ $res = "erreur lors de lecture des groupes pour mettre a jour les images"; break; } } $sgbd->close_data($rst); if($res !== true) return $res; } /* ---------------------------------------------------------------------- sources sources.nom devient sources.titre */ if(!($rst = $sgbd->open_data("sources"))){ return "impossible de lire la liste des sources"; } $erreur = ""; while($v_rst = $sgbd->fetch_data($rst)){ if(isset($v_rst)){ if(isset($v_rst["id"])){ $id_source = $v_rst["id"]; unset($v_rst["id"]); $NEED_UPDATE = false; if(!isset($v_rst["titre"])){ $v_rst["titre"] = isset($v_rst["nom"]) ? $v_rst["nom"] : ""; $NEED_UPDATE = true; } if(isset($v_rst["nom"])){ unset($v_rst["nom"]); $NEED_UPDATE = true; } if($NEED_UPDATE){ if( !$sgbd->set_data( "sources", $id_source, $v_rst ) ){ $erreur = "impossible de mettre a jour les informations des sources"; break; } } } } else{ $erreur = "erreur lors de lecture des sources pour mettre a jour leurs informations"; break; } } $sgbd->close_data($rst); if($erreur) return $erreur; /* ---------------------------------------------------------------------- suppression de la table source_status_composition */ if($sgbd->data_exists("source_status_composition")){ if(!$sgbd->remove_data("source_status_composition")){ return "impossible de supprimer la table source_status_composition"; } } } // if($sgbd->data_exists("sources")) /* ###################################################################### */ /* ###################################################################### */ /* ---------------------------------------------------------------------- migration vers les tables en sml_(...) du plugin mw_sourceml */ $base_dir = $env->path("content")."data/xml/".$env->bdd("base"); $base_dir .= substr($base_dir, -1) != "/" ? "/" : ""; if(!is_dir($base_dir)){ return "impossible de trouver le dossier de la base"; } /* ---------------------------------------------------------------------- sources devient sml_sources elt status devient id_class */ if($sgbd->data_exists("sources")){ if(!@rename($base_dir."sources", $base_dir."sml_sources")){ return "impossible de renommer sources en sml_sources"; } if(!($rst = $sgbd->open_data("sml_sources"))){ return "impossible de lire sml_sources"; } $erreur = ""; while($v_rst = $sgbd->fetch_data($rst)){ if(isset($v_rst)){ if(isset($v_rst["id"])){ $NEED_UPDATE = false; if(isset($v_rst["status"])){ $id_class = $v_rst["status"]; unset($v_rst["status"]); $v_rst["id_class"] = $id_class; $NEED_UPDATE = true; } if(!$NEED_UPDATE) continue; if( !$sgbd->set_data( "sml_sources", $v_rst["id"], $v_rst ) ){ $erreur = "impossible de mettre a jour les informations de sml_sources"; break; } } } else{ $erreur = "erreur lors de lecture de sml_sources"; break; } } $sgbd->close_data($rst); if($erreur) return $erreur; } /* ---------------------------------------------------------------------- source_groupes devient sml_sources_authors elt id_groupe devient id_author elt id_groupe_status devient id_sources_access */ if($sgbd->data_exists("source_groupes")){ if(!@rename($base_dir."source_groupes", $base_dir."sml_sources_authors")){ return "impossible de renommer source_groupes en sml_sources_authors"; } if(!($rst = $sgbd->open_data("sml_sources_authors"))){ return "impossible de lire sml_sources_authors"; } $erreur = ""; while($v_rst = $sgbd->fetch_data($rst)){ if(isset($v_rst)){ if(isset($v_rst["id"])){ $NEED_UPDATE = false; if(isset($v_rst["id_groupe"])){ $id_author = $v_rst["id_groupe"]; unset($v_rst["id_groupe"]); $v_rst["id_author"] = $id_author; $NEED_UPDATE = true; } if(isset($v_rst["id_groupe_status"])){ $id_sources_access = $v_rst["id_groupe_status"]; unset($v_rst["id_groupe_status"]); $v_rst["id_sources_access"] = $id_sources_access; $NEED_UPDATE = true; } if(!$NEED_UPDATE) continue; if( !$sgbd->set_data( "sml_sources_authors", $v_rst["id"], $v_rst ) ){ $erreur = "impossible de mettre a jour les informations de sml_sources_authors"; break; } } } else{ $erreur = "erreur lors de lecture de sml_sources_authors"; break; } } $sgbd->close_data($rst); if($erreur) return $erreur; } /* ---------------------------------------------------------------------- groupe_status devient sml_sources_access nouvel elt intitule */ if($sgbd->data_exists("groupe_status")){ if(!@rename($base_dir."groupe_status", $base_dir."sml_sources_access")){ return "impossible de renommer groupe_status en sml_sources_access"; } if(!($rst = $sgbd->open_data("sml_sources_access"))){ return "impossible de lire sml_sources_access"; } $erreur = ""; while($v_rst = $sgbd->fetch_data($rst)){ if(isset($v_rst)){ if(isset($v_rst["id"]) && isset($v_rst["nom"]) && !isset($v_rst["intitule"])){ $intitule = ""; if($v_rst["nom"] == "admin") $intitule = "administrateur"; elseif($v_rst["nom"] == "editeur") $intitule = "éditeur"; elseif($v_rst["nom"] == "contributeur") $intitule = "contributeur"; if( !$sgbd->set_data( "sml_sources_access", $v_rst["id"], array( "nom" => $v_rst["nom"], "intitule" => $intitule ) ) ){ $erreur = "impossible de mettre a jour les informations de sml_sources_access"; break; } } } else{ $erreur = "erreur lors de lecture de sml_sources_access"; break; } } $sgbd->close_data($rst); if($erreur) return $erreur; } /* ---------------------------------------------------------------------- groupes devient sml_authors */ if($sgbd->data_exists("groupes")){ if(!@rename($base_dir."groupes", $base_dir."sml_authors")){ return "impossible de renommer groupes en sml_authors"; } } /* ---------------------------------------------------------------------- licences devient sml_licences */ if($sgbd->data_exists("licences")){ if(!@rename($base_dir."licences", $base_dir."sml_licences")){ return "impossible de renommer licences en sml_licences"; } } /* ---------------------------------------------------------------------- source_compositions devient sml_source_compositions */ if($sgbd->data_exists("source_compositions")){ if(!@rename($base_dir."source_compositions", $base_dir."sml_source_compositions")){ return "impossible de renommer source_compositions en sml_source_compositions"; } } /* ---------------------------------------------------------------------- source_derivations devient sml_source_derivations */ if($sgbd->data_exists("source_derivations")){ if(!@rename($base_dir."source_derivations", $base_dir."sml_source_derivations")){ return "impossible de renommer source_derivations en sml_source_derivations"; } } /* ---------------------------------------------------------------------- cache/sources devient sml_source_cache */ if($sgbd->data_exists("cache/sources")){ if(!@rename($base_dir."cache/sources", $base_dir."sml_source_cache")){ return "impossible de renommer cache/sources en sml_source_cache"; } if(file_exists($base_dir."cache/.index")) @unlink($base_dir."cache/.index"); @rmdir($base_dir."cache"); } /* ---------------------------------------------------------------------- source_status devient sml_classes */ if($sgbd->data_exists("source_status")){ if(!@rename($base_dir."source_status", $base_dir."sml_classes")){ return "impossible de renommer source_status en sml_classes"; } } /* ---------------------------------------------------------------------- nouvelle table sml_sources_invitations */ if(!$sgbd->data_exists("sml_sources_invitations")){ if(!$sgbd->create_data("sml_sources_invitations")){ return "impossible de creer la table sml_sources_invitations"; } } return true; } }