1,13 → 1,13 |
<?php |
|
class MigrationObs extends Cel { |
|
const bdd_cel_migration = 'cel'; |
const bdd_utilisateurs = 'cel_old'; |
|
public static $bdd_cel_migration; |
public static $bdd_utilisateurs; |
|
const truncate = true; //Doit on vider les tables de destination ? |
|
const dry_run = true; |
const dry_run = false; |
|
/** Tableau associatif permettant de stocker l'avancement dans une boucle. |
* La clé est un md5 du message à afficher au démarrage de la boucle. |
85,6 → 85,19 |
*/ |
public function getElement($params) { |
|
if(!isset($this->config['database_cel']['database_migration']) || $this->config['database_cel']['database_migration'] == '') { |
echo 'Attention la variable de configuration database_migration dans la section database_cel, contenant la base de données d\'arrivée, doit être remplie '."\n"; |
exit; |
} |
|
if(!isset($this->config['database_ident']['database']) || $this->config['database_ident']['database'] == '') { |
echo 'Attention la variable de configuration database dans la section database_ident, contenant la base de données utilisateurs, doit être remplie '."\n"; |
exit; |
} |
|
self::$bdd_cel_migration = $this->config['database_cel']['database_migration']; |
self::$bdd_utilisateurs = $this->config['database_ident']['database']; |
|
echo "--MIGRATION DES OBSERVATIONS --------------------------------------\n"; |
//1. TEMPORAIRE : vider les tables de destinations |
if (self::truncate) { |
95,7 → 108,7 |
'`cel_obs`', '`cel_obs_images`', '`cel_obs_mots_cles`', '`cel_utilisateurs`', '`cel_utilisateurs`', '`cel_zones_geo`'); |
foreach ($nouvellesTables as $nomTable) { |
echo 'Vider la table '.$nomTable.'...'; |
$requeteTruncate = 'TRUNCATE TABLE '.self::bdd_cel_migration.'.'.$nomTable; |
$requeteTruncate = 'TRUNCATE TABLE '.self::$bdd_cel_migration.'.'.$nomTable; |
$resultatTruncate = $this->executerRequete($requeteTruncate); |
echo "ok \n"; |
} |
142,7 → 155,7 |
echo "\n-------------------------------------------------------------------\n"; |
echo "--SELECTION DES UTILISATEURS---------------------------------------\n\n"; |
|
$requete_selection_utilisateurs = 'SELECT U_ID as id, U_MAIL as mail, U_NAME as nom, U_SURNAME as prenom, U_PASSWD as pass FROM '.self::bdd_utilisateurs.'.annuaire_tela'; |
$requete_selection_utilisateurs = 'SELECT U_ID as id, U_MAIL as mail, U_NAME as nom, U_SURNAME as prenom, U_PASSWD as pass FROM '.self::$bdd_utilisateurs.'.annuaire_tela'; |
$tableau_utilisateurs = $this->executerRequete($requete_selection_utilisateurs); |
|
foreach( $tableau_utilisateurs as &$utilisateur) { |
204,7 → 217,7 |
$nbTotal = 0; |
$tabUtilisateurs = $this->tableau_utilisateurs; |
while (!empty($tabUtilisateurs)) { |
$requete_insertion_utilisateurs = 'INSERT INTO '.self::bdd_cel_migration.'.cel_utilisateurs '. |
$requete_insertion_utilisateurs = 'INSERT INTO '.self::$bdd_cel_migration.'.cel_utilisateurs '. |
'(id_utilisateur, prenom, nom, courriel, mot_de_passe) '. |
'VALUES '; |
$sous_requete_insertion = ''; |
234,7 → 247,6 |
$nbTotal ++; |
$this->afficherAvancement('Migration utilisateurs (par '.$pas.')', $nbTotal); |
} else { |
exit($requete_insertion_utilisateurs); |
exit('Erreur lors de la migration des utilisateurs '."\n"); |
} |
} |
258,7 → 270,7 |
|
$zones_geo = $this->executerRequete($requete_selection_zones_geo); |
|
$requete_insertion_nouvelles_zones_geo = 'INSERT INTO '.self::bdd_cel_migration.'.cel_zones_geo '. |
$requete_insertion_nouvelles_zones_geo = 'INSERT INTO '.self::$bdd_cel_migration.'.cel_zones_geo '. |
'(id_zone_geo, code, nom, utm_secteur, utm_x, utm_y, wgs84_latitude, wgs84_longitude, date_modification) '. |
'VALUES '; |
|
334,7 → 346,7 |
'ORDER BY identifiant LIMIT '.$i.','.$pas; |
$observations = $this->requeter($requete_selection_obs); |
|
$requete_insertion_observations = 'INSERT IGNORE INTO '.self::bdd_cel_migration.'.cel_obs ('; |
$requete_insertion_observations = 'INSERT IGNORE INTO '.self::$bdd_cel_migration.'.cel_obs ('; |
|
foreach ($this->tableau_nouveau_ancien as $nouveau_champ => $ancien_champ) { |
$requete_insertion_observations .= $nouveau_champ.','; |
347,7 → 359,7 |
foreach($observations as $observation) { |
$nouvelle_observation = $this->traiterLigneObservation($observation); |
|
$nouvelle_observation = array_map(array($this,'proteger'),$nouvelle_observation); |
$nouvelle_observation = array_map(array($this,'protegerSiNonNull'),$nouvelle_observation); |
$requete_insertion_observations .= '('.join(',',array_values($nouvelle_observation)).'),'; |
} |
|
354,7 → 366,6 |
$requete_insertion_observations = rtrim($requete_insertion_observations, ','); |
|
$migration_observations = $this->executerRequeteSimple($requete_insertion_observations); |
//exit($requete_insertion_observations); |
} else { |
echo 'Fin de migration des observations '."\n"."\n"; |
return; |
368,8 → 379,7 |
} |
} |
if (sizeof($this->communesOubliees) > 0) { |
echo "\nxxxxxxxxx communes oubliées : ".sizeof($this->communnesOubliees)." xxxxxxxxx \\n"; |
echo var_dump(array_keys($this->communesOubliees)); |
echo "\nxxxxxxxxx communes oubliées : ".sizeof($this->communesOubliees)." xxxxxxxxx \\n"; |
} |
echo "\n---------------------------------------------------------------- OK\n\n"; |
} |
388,6 → 398,14 |
} |
|
} else { |
if($obs[$ancien_champ_obs] == '000null' || $obs[$ancien_champ_obs] == 'null' || trim($obs[$ancien_champ_obs]) == '') { |
$obs[$ancien_champ_obs] = 'NULL'; |
} |
|
if(($ancien_champ_obs == 'coord_x' || $ancien_champ_obs == 'coord_y') && ($obs[$ancien_champ_obs] == '0' || $obs[$ancien_champ_obs] == 0)) { |
$obs[$ancien_champ_obs] = 'NULL'; |
} |
|
$nouvelle_obs[$nouveau_champ_obs] = $obs[$ancien_champ_obs]; |
} |
} |
394,6 → 412,13 |
return $nouvelle_obs; |
} |
|
private function protegerSiNonNull($valeur) { |
if($valeur != 'NULL') { |
$valeur = $this->proteger($valeur); |
} |
return $valeur; |
} |
|
private function estUnChampATraiter($champ) { |
return strpos($champ,'traiter') !== false; |
} |
408,8 → 433,8 |
$retour = $ligne_observation['mots_cles']; |
if (isset($this->tableau_mots_cles[$mail_observation])) { |
$mots_cles_tableau = $this->parserMotsCles($mail_observation, $ligne_observation['mots_cles'], ';'); |
$retour = join(';',$mots_cles_tableau); |
$retour = ltrim($retour,';;') ; |
$retour = join(',',$mots_cles_tableau); |
$retour = ltrim($retour,',,') ; |
} |
|
return $retour; |
469,7 → 494,6 |
$retour = $mail_observation; |
if (isset($this->tableau_utilisateurs[$mail_observation])) { |
$retour = $this->tableau_utilisateurs[$mail_observation]['prenom']; |
} else { |
} |
|
return $retour; |
500,9 → 524,13 |
$zone_geo .= $id_zone_geo_ancienne; |
} elseif($ligne_observation['location'] == null || $ligne_observation['location'] == "" || $ligne_observation['location'] == "000null") { |
|
$id_zone_geo_ancienne = $ligne_observation['id_location']; |
$id_zone_geo_ancienne = $id_zone_geo_ancienne; |
$zone_geo = $id_zone_geo_ancienne; |
if($ligne_observation['id_location'] != '' && $ligne_observation['id_location'] != '000null') { |
$id_zone_geo_ancienne = $ligne_observation['id_location']; |
$id_zone_geo_ancienne = $id_zone_geo_ancienne; |
$zone_geo = $id_zone_geo_ancienne; |
} else { |
$zones_geo = 'NULL'; |
} |
} |
|
return $zone_geo; |
520,6 → 548,8 |
$this->communesOubliees[$indice] = false; |
} |
} |
} else { |
$id_zone_geo = 'NULL'; |
} |
|
return $id_zone_geo; |