Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1157 → Rev 1158

/trunk/jrest/services/MigrationObs.php
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;