Subversion Repositories eFlore/Applications.cel

Rev

Rev 1149 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1149 Rev 1158
Line 1... Line 1...
1
<?php
1
<?php
Line 2... Line 2...
2
 
2
 
3
class MigrationObs extends Cel {
3
class MigrationObs extends Cel {
4
 
4
	
5
	const bdd_cel_migration = 'cel';
5
	public static $bdd_cel_migration;
Line 6... Line 6...
6
	const bdd_utilisateurs = 'cel_old';
6
	public static $bdd_utilisateurs;
Line 7... Line 7...
7
	
7
	
Line 8... Line 8...
8
	const truncate = true; //Doit on vider les tables de destination ?
8
	const truncate = true; //Doit on vider les tables de destination ?
9
	
9
	
10
	const dry_run = true;
10
	const dry_run = false;
11
	
11
	
Line 83... Line 83...
83
	/**
83
	/**
84
	 * Méthode appelée avec une requête de type GET.
84
	 * Méthode appelée avec une requête de type GET.
85
	 */
85
	 */
86
	public function getElement($params) {
86
	public function getElement($params) {
Line -... Line 87...
-
 
87
		
-
 
88
		if(!isset($this->config['database_cel']['database_migration']) || $this->config['database_cel']['database_migration'] == '') {
-
 
89
			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";
-
 
90
			exit;
-
 
91
		}
-
 
92
		
-
 
93
		if(!isset($this->config['database_ident']['database']) || $this->config['database_ident']['database'] == '') {
-
 
94
			echo 'Attention la variable de configuration database dans la section database_ident, contenant la base de données utilisateurs, doit être remplie '."\n";
-
 
95
			exit;
-
 
96
		}
-
 
97
		
-
 
98
		self::$bdd_cel_migration = $this->config['database_cel']['database_migration'];
-
 
99
		self::$bdd_utilisateurs = $this->config['database_ident']['database'];
87
		
100
		
88
		echo "--MIGRATION DES OBSERVATIONS --------------------------------------\n";
101
		echo "--MIGRATION DES OBSERVATIONS --------------------------------------\n";
89
		//1. TEMPORAIRE : vider les tables de destinations
102
		//1. TEMPORAIRE : vider les tables de destinations
90
		if (self::truncate) {
103
		if (self::truncate) {
91
			echo "-------------------------------------------------------------------\n\n";
104
			echo "-------------------------------------------------------------------\n\n";
92
			echo "  ETAPE 0. Vider les tables ... \n\n";
105
			echo "  ETAPE 0. Vider les tables ... \n\n";
93
			echo "-------------------------------------------------------------------\n\n";
106
			echo "-------------------------------------------------------------------\n\n";
94
			$nouvellesTables = array('`cel_images`', '`cel_images_mots_cles`', '`cel_mots_cles_images`', '`cel_mots_cles_obs`;',
107
			$nouvellesTables = array('`cel_images`', '`cel_images_mots_cles`', '`cel_mots_cles_images`', '`cel_mots_cles_obs`;',
95
								'`cel_obs`', '`cel_obs_images`', '`cel_obs_mots_cles`', '`cel_utilisateurs`', '`cel_utilisateurs`', '`cel_zones_geo`');
108
								'`cel_obs`', '`cel_obs_images`', '`cel_obs_mots_cles`', '`cel_utilisateurs`', '`cel_utilisateurs`', '`cel_zones_geo`');
96
			foreach ($nouvellesTables as $nomTable) {
109
			foreach ($nouvellesTables as $nomTable) {
97
				echo 'Vider la table '.$nomTable.'...';
110
				echo 'Vider la table '.$nomTable.'...';
98
				$requeteTruncate = 'TRUNCATE TABLE '.self::bdd_cel_migration.'.'.$nomTable;
111
				$requeteTruncate = 'TRUNCATE TABLE '.self::$bdd_cel_migration.'.'.$nomTable;
99
				$resultatTruncate = $this->executerRequete($requeteTruncate);
112
				$resultatTruncate = $this->executerRequete($requeteTruncate);
100
				echo "ok \n";
113
				echo "ok \n";
Line 101... Line 114...
101
			}
114
			}
Line 140... Line 153...
140
	
153
	
141
	private function getUtilisateurs() {
154
	private function getUtilisateurs() {
142
		echo "\n-------------------------------------------------------------------\n";
155
		echo "\n-------------------------------------------------------------------\n";
Line 143... Line 156...
143
		echo "--SELECTION DES UTILISATEURS---------------------------------------\n\n";
156
		echo "--SELECTION DES UTILISATEURS---------------------------------------\n\n";
144
		
157
		
Line 145... Line 158...
145
		$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';
158
		$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';
146
		$tableau_utilisateurs = $this->executerRequete($requete_selection_utilisateurs);
159
		$tableau_utilisateurs = $this->executerRequete($requete_selection_utilisateurs);
147
		
160
		
Line 202... Line 215...
202
		
215
		
203
		$pas = 1000;
216
		$pas = 1000;
204
		$nbTotal = 0;
217
		$nbTotal = 0;
205
		$tabUtilisateurs = $this->tableau_utilisateurs;
218
		$tabUtilisateurs = $this->tableau_utilisateurs;
206
		while (!empty($tabUtilisateurs)) {
219
		while (!empty($tabUtilisateurs)) {
207
			$requete_insertion_utilisateurs = 'INSERT INTO '.self::bdd_cel_migration.'.cel_utilisateurs '.
220
			$requete_insertion_utilisateurs = 'INSERT INTO '.self::$bdd_cel_migration.'.cel_utilisateurs '.
208
						'(id_utilisateur, prenom, nom, courriel, mot_de_passe) '.
221
						'(id_utilisateur, prenom, nom, courriel, mot_de_passe) '.
209
						'VALUES ';
222
						'VALUES ';
Line 210... Line 223...
210
			$sous_requete_insertion = '';
223
			$sous_requete_insertion = '';
Line 232... Line 245...
232
			
245
			
233
			if ($migration_utilisateurs) {
246
			if ($migration_utilisateurs) {
234
				$nbTotal ++;	
247
				$nbTotal ++;	
235
				$this->afficherAvancement('Migration utilisateurs (par '.$pas.')', $nbTotal);
248
				$this->afficherAvancement('Migration utilisateurs (par '.$pas.')', $nbTotal);
236
			} else {
-
 
237
				exit($requete_insertion_utilisateurs);
249
			} else {
238
				exit('Erreur lors de la migration des utilisateurs '."\n");
250
				exit('Erreur lors de la migration des utilisateurs '."\n");
239
			}
251
			}
240
		}
252
		}
Line 256... Line 268...
256
			
268
			
Line 257... Line 269...
257
			$requete_selection_zones_geo = 'SELECT * FROM locations LIMIT '.$i.', '.$pas;
269
			$requete_selection_zones_geo = 'SELECT * FROM locations LIMIT '.$i.', '.$pas;
Line 258... Line 270...
258
											
270
											
259
			$zones_geo = $this->executerRequete($requete_selection_zones_geo);
271
			$zones_geo = $this->executerRequete($requete_selection_zones_geo);
260
			
272
			
Line 261... Line 273...
261
			$requete_insertion_nouvelles_zones_geo = 'INSERT INTO '.self::bdd_cel_migration.'.cel_zones_geo '.
273
			$requete_insertion_nouvelles_zones_geo = 'INSERT INTO '.self::$bdd_cel_migration.'.cel_zones_geo '.
Line 332... Line 344...
332
		for ($i = $debut; $i < $fin ; $i += $pas) {
344
		for ($i = $debut; $i < $fin ; $i += $pas) {
333
			$requete_selection_obs = 'SELECT * FROM cel_inventory '.
345
			$requete_selection_obs = 'SELECT * FROM cel_inventory '.
334
											'ORDER BY identifiant LIMIT '.$i.','.$pas;
346
											'ORDER BY identifiant LIMIT '.$i.','.$pas;
335
			$observations = $this->requeter($requete_selection_obs);
347
			$observations = $this->requeter($requete_selection_obs);
Line 336... Line 348...
336
			
348
			
Line 337... Line 349...
337
			$requete_insertion_observations = 'INSERT IGNORE INTO '.self::bdd_cel_migration.'.cel_obs (';
349
			$requete_insertion_observations = 'INSERT IGNORE INTO '.self::$bdd_cel_migration.'.cel_obs (';
338
			
350
			
339
			foreach ($this->tableau_nouveau_ancien as $nouveau_champ => $ancien_champ) {
351
			foreach ($this->tableau_nouveau_ancien as $nouveau_champ => $ancien_champ) {
Line 345... Line 357...
345
			
357
			
346
			if (count($observations) > 0) { 
358
			if (count($observations) > 0) { 
347
				foreach($observations as $observation) {
359
				foreach($observations as $observation) {
Line 348... Line 360...
348
					$nouvelle_observation = $this->traiterLigneObservation($observation);
360
					$nouvelle_observation = $this->traiterLigneObservation($observation);
349
					
361
					
350
					$nouvelle_observation = array_map(array($this,'proteger'),$nouvelle_observation);
362
					$nouvelle_observation = array_map(array($this,'protegerSiNonNull'),$nouvelle_observation);
Line 351... Line 363...
351
					$requete_insertion_observations .= '('.join(',',array_values($nouvelle_observation)).'),';
363
					$requete_insertion_observations .= '('.join(',',array_values($nouvelle_observation)).'),';
Line 352... Line 364...
352
				}
364
				}
353
				
-
 
354
				$requete_insertion_observations = rtrim($requete_insertion_observations, ',');
365
				
355
				
366
				$requete_insertion_observations = rtrim($requete_insertion_observations, ',');
356
				$migration_observations = $this->executerRequeteSimple($requete_insertion_observations);
367
				
357
				//exit($requete_insertion_observations);
368
				$migration_observations = $this->executerRequeteSimple($requete_insertion_observations);
Line 366... Line 377...
366
			} else {
377
			} else {
367
				exit('Erreur lors de la migration des observation de '.$i.' à '.($i+$pas)."\n");
378
				exit('Erreur lors de la migration des observation de '.$i.' à '.($i+$pas)."\n");
368
			}
379
			}
369
		}
380
		}
370
		if (sizeof($this->communesOubliees) > 0) {
381
		if (sizeof($this->communesOubliees) > 0) {
371
			echo "\nxxxxxxxxx communes oubliées : ".sizeof($this->communnesOubliees)." xxxxxxxxx \\n";
382
			echo "\nxxxxxxxxx communes oubliées : ".sizeof($this->communesOubliees)." xxxxxxxxx \\n";
372
			echo var_dump(array_keys($this->communesOubliees));
-
 
373
		}
383
		}
374
		echo "\n---------------------------------------------------------------- OK\n\n";
384
		echo "\n---------------------------------------------------------------- OK\n\n";
375
	}
385
	}
Line 376... Line 386...
376
	
386
	
Line 386... Line 396...
386
				} else {
396
				} else {
387
					$nouvelle_obs[$nouveau_champ_obs] = '';
397
					$nouvelle_obs[$nouveau_champ_obs] = '';
388
				}
398
				}
Line 389... Line 399...
389
 
399
 
-
 
400
			} else {
-
 
401
				if($obs[$ancien_champ_obs] == '000null' || $obs[$ancien_champ_obs] == 'null' || trim($obs[$ancien_champ_obs]) == '') {
-
 
402
					$obs[$ancien_champ_obs] = 'NULL';
-
 
403
				}
-
 
404
				
-
 
405
				if(($ancien_champ_obs == 'coord_x' || $ancien_champ_obs == 'coord_y') && ($obs[$ancien_champ_obs] == '0' || $obs[$ancien_champ_obs] == 0)) {
-
 
406
					$obs[$ancien_champ_obs] = 'NULL';
-
 
407
				}
390
			} else {
408
				
391
				$nouvelle_obs[$nouveau_champ_obs] = $obs[$ancien_champ_obs];
409
				$nouvelle_obs[$nouveau_champ_obs] = $obs[$ancien_champ_obs];
392
			}
410
			}
393
		}
411
		}
394
		return $nouvelle_obs;
412
		return $nouvelle_obs;
Line -... Line 413...
-
 
413
	}
-
 
414
	
-
 
415
	private function protegerSiNonNull($valeur) {
-
 
416
		if($valeur != 'NULL') {
-
 
417
			$valeur = $this->proteger($valeur);
-
 
418
		}
-
 
419
		return $valeur;
395
	}
420
	}
396
	
421
	
397
	private function estUnChampATraiter($champ) {
422
	private function estUnChampATraiter($champ) {
Line 398... Line 423...
398
		return strpos($champ,'traiter') !== false;
423
		return strpos($champ,'traiter') !== false;
Line 406... Line 431...
406
		
431
		
407
		$mail_observation = $ligne_observation['identifiant'];
432
		$mail_observation = $ligne_observation['identifiant'];
408
		$retour = $ligne_observation['mots_cles'];		
433
		$retour = $ligne_observation['mots_cles'];		
409
		if (isset($this->tableau_mots_cles[$mail_observation])) {
434
		if (isset($this->tableau_mots_cles[$mail_observation])) {
410
			$mots_cles_tableau = $this->parserMotsCles($mail_observation, $ligne_observation['mots_cles'], ';');
435
			$mots_cles_tableau = $this->parserMotsCles($mail_observation, $ligne_observation['mots_cles'], ';');
411
			$retour =  join(';',$mots_cles_tableau);
436
			$retour =  join(',',$mots_cles_tableau);
412
			$retour = ltrim($retour,';;') ;
437
			$retour = ltrim($retour,',,') ;
Line 413... Line 438...
413
		}
438
		}
414
		
439
		
Line 467... Line 492...
467
		
492
		
468
		$mail_observation = $ligne_observation['identifiant'];
493
		$mail_observation = $ligne_observation['identifiant'];
469
		$retour = $mail_observation;
494
		$retour = $mail_observation;
470
		if (isset($this->tableau_utilisateurs[$mail_observation])) {
495
		if (isset($this->tableau_utilisateurs[$mail_observation])) {
471
			$retour =  $this->tableau_utilisateurs[$mail_observation]['prenom'];
-
 
472
		} else {
496
			$retour =  $this->tableau_utilisateurs[$mail_observation]['prenom'];
Line 473... Line 497...
473
		}
497
		}
474
		
498
		
Line 498... Line 522...
498
			}
522
			}
Line 499... Line 523...
499
			
523
			
500
			$zone_geo .= $id_zone_geo_ancienne;
524
			$zone_geo .= $id_zone_geo_ancienne;
Line -... Line 525...
-
 
525
		} elseif($ligne_observation['location'] == null || $ligne_observation['location'] == "" || $ligne_observation['location'] == "000null") {
501
		} elseif($ligne_observation['location'] == null || $ligne_observation['location'] == "" || $ligne_observation['location'] == "000null") {
526
			
502
			
527
			if($ligne_observation['id_location'] != '' && $ligne_observation['id_location'] != '000null') {
503
			$id_zone_geo_ancienne = $ligne_observation['id_location'];
528
				$id_zone_geo_ancienne = $ligne_observation['id_location'];
-
 
529
				$id_zone_geo_ancienne = $id_zone_geo_ancienne;
-
 
530
				$zone_geo = $id_zone_geo_ancienne;
-
 
531
			} else {
504
			$id_zone_geo_ancienne = $id_zone_geo_ancienne;
532
				$zones_geo = 'NULL';
Line 505... Line 533...
505
			$zone_geo = $id_zone_geo_ancienne;
533
			}
506
		}
534
		}
Line 518... Line 546...
518
			} else {
546
			} else {
519
				if($ligne_observation['location'] != "000null") { 
547
				if($ligne_observation['location'] != "000null") { 
520
					$this->communesOubliees[$indice] = false;
548
					$this->communesOubliees[$indice] = false;
521
				}
549
				}
522
			}
550
			}
-
 
551
		} else {
-
 
552
			$id_zone_geo = 'NULL';
523
		}
553
		}
Line 524... Line 554...
524
		
554
		
525
		return $id_zone_geo;
555
		return $id_zone_geo;