Subversion Repositories eFlore/Applications.cel

Rev

Rev 3670 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3670 Rev 3677
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Classe de nettoyage de la base de données du CEL.
4
 * Classe de nettoyage de la base de données du CEL.
5
 * Suppression des antislash
5
 * Suppression des antislash
6
 * Remplacement des chaines vides par des NULL
6
 * Remplacement des chaines vides par des NULL
7
 * Unifier les référentiels : pas de nom de version, majuscule...
7
 * Unifier les référentiels : pas de nom de version, majuscule...
8
 * Unifier les certitudes
8
 * Unifier les certitudes
9
 * Supprimer les INSEE-C: non rempli, les dates 0000-00 
9
 * Supprimer les INSEE-C: non rempli, les dates 0000-00 
10
 *
10
 *
11
 * Utilisation :
11
 * Utilisation :
12
 * - <code>/opt/lamp/bin/php cli.php nettoyage -a (voir méthode executer)</code>
12
 * - <code>/opt/lamp/bin/php cli.php nettoyage -a (voir méthode executer)</code>
13
 *
13
 *
14
 * @category   CEL
14
 * @category   CEL
15
 * @package    Scripts
15
 * @package    Scripts
16
 * @subpackage Nettoyage
16
 * @subpackage Nettoyage
17
 * @author     Delphine CAUQUIL <delphine@tela-botanica.org>
17
 * @author     Delphine CAUQUIL <delphine@tela-botanica.org>
18
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
18
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
19
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
19
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
20
 * @copyright  1999-2016 Tela Botanica <accueil@tela-botanica.org>
20
 * @copyright  1999-2016 Tela Botanica <accueil@tela-botanica.org>
21
 */
21
 */
22
class Nettoyage extends Script {
22
class Nettoyage extends Script {
23
 
23
 
24
	protected $bdd;
24
	protected $bdd;
25
	protected $colonnes;
25
	protected $colonnes;
26
	protected $bd_cel = "tb_nettoye_cel";
26
	protected $bd_cel = "tb_nettoye_cel";
27
	protected $bd_del = "tb_del";
27
	protected $bd_del = "tb_del";
28
	protected $bd_flore = "tb_eflore";
28
	protected $bd_flore = "tb_eflore";
29
 
29
 
30
 
30
 
31
	public function __construct($script_nom, $parametres_cli) {
31
	public function __construct($script_nom, $parametres_cli) {
32
		parent::__construct($script_nom, $parametres_cli);
32
		parent::__construct($script_nom, $parametres_cli);
33
		$this->bdd = new Bdd();
33
		$this->bdd = new Bdd();
34
		$this->bd_cel = Config::get('nettoyage.cel_nettoye');
34
		$this->bd_cel = Config::get('nettoyage.cel_nettoye');
35
		$this->bd_del = Config::get('nettoyage.del');
35
		$this->bd_del = Config::get('nettoyage.del');
36
		$this->bd_flore = Config::get('nettoyage.flore');
36
		$this->bd_flore = Config::get('nettoyage.flore');
37
	}
37
	}
38
 
38
 
39
	public function executer() {
39
	public function executer() {
40
		$cmd = $this->getParametre('a');
40
		$cmd = $this->getParametre('a');
41
		$requete_colonnes = "SELECT column_name FROM information_schema.columns WHERE table_name = 'cel_obs' AND table_schema='".$this->bd_cel."';";
41
		$requete_colonnes = "SELECT column_name FROM information_schema.columns WHERE table_name = 'cel_obs' AND table_schema='".$this->bd_cel."';";
42
		$this->colonnes = $this->bdd->recupererTous($requete_colonnes);
42
		$this->colonnes = $this->bdd->recupererTous($requete_colonnes);
43
		try {
43
		try {
44
			switch ($cmd) {
44
			switch ($cmd) {
45
				case 'tout' :
45
				case 'tout' :
46
					$this->supprimerRetourLigne();
46
					$this->supprimerRetourLigne();
47
					$this->supprimerAntislash();
47
					$this->supprimerAntislash();
48
					$this->supprimerGuillemet();
48
					$this->supprimerGuillemet();
49
					$this->unifierNull();
49
					$this->unifierNull();
50
					$this->unifierNomReferentiel();
50
					$this->unifierNomReferentiel();
51
					$this->unifierCertitude();
51
					$this->unifierCertitude();
52
					//$this->supprimerCertitudeAutre();
52
					//$this->supprimerCertitudeAutre();
-
 
53
					$this->analyserMotsCles();
-
 
54
					$this->changerSensible();
53
					$this->unifierUtilisateur();
55
					$this->unifierUtilisateur();
54
					$this->unifierPhenologie();
56
					$this->unifierPhenologie();
55
					$this->verifierCodeInsee();
57
					$this->verifierCodeInsee();
56
					$this->verifierGeodatum();
58
					$this->verifierGeodatum();
57
					$this->supprimerInfosLiesObsInexistante();
59
					$this->supprimerInfosLiesObsInexistante();
58
					$this->supprimerImagesetTagAnonymes();
60
					$this->supprimerImagesetTagAnonymes();
59
					$this->analyserMotsCles();
-
 
60
					$this->changerSensible();
-
 
61
					$this->unifierNull();
61
					$this->unifierNull();
62
					break;
62
					break;
63
				case 'supprimerRetourLigne' :
63
				case 'supprimerRetourLigne' :
64
				    $this->supprimerRetourLigne();
64
				    $this->supprimerRetourLigne();
65
				    break;
65
				    break;
66
				case 'supprimerAntislash' :
66
				case 'supprimerAntislash' :
67
					$this->supprimerAntislash();
67
					$this->supprimerAntislash();
68
					break;
68
					break;
69
				case 'supprimerGuillemet' :
69
				case 'supprimerGuillemet' :
70
				    $this->supprimerGuillemet();
70
				    $this->supprimerGuillemet();
71
				    break;
71
				    break;
72
				case 'unifierNomReferentiel' :
72
				case 'unifierNomReferentiel' :
73
					$this->unifierNomReferentiel();
73
					$this->unifierNomReferentiel();
74
					break;
74
					break;
75
				case 'unifierCertitude' :
75
				case 'unifierCertitude' :
76
					$this->unifierCertitude();
76
					$this->unifierCertitude();
77
					break;
77
					break;
78
				case 'supprimerCertitudeAutre' : // après unifier certitude si les autres valeurs sont bien à supprimer
78
				case 'supprimerCertitudeAutre' : // après unifier certitude si les autres valeurs sont bien à supprimer
79
				    $this->supprimerCertitudeAutre();
79
				    $this->supprimerCertitudeAutre();
80
				    break;
80
				    break;
81
				case 'analyserMotsCles' : // après unifier certitude si les autres valeurs sont bien à supprimer
81
				case 'analyserMotsCles' : // après unifier certitude si les autres valeurs sont bien à supprimer
82
				    $this->analyserMotsCles();
82
				    $this->analyserMotsCles();
83
				    break;
83
				    break;
84
				case 'verifierGeodatum' :
84
				case 'verifierGeodatum' :
85
					$this->verifierGeodatum();
85
					$this->verifierGeodatum();
86
					break;
86
					break;
87
				case 'verifierCodeInsee' :
87
				case 'verifierCodeInsee' :
88
				    $this->verifierCodeInsee();
88
				    $this->verifierCodeInsee();
89
				    break;
89
				    break;
90
				case 'sensible' :
90
				case 'sensible' :
91
				    $this->changerSensible();
91
				    $this->changerSensible();
92
				    break;
92
				    break;
93
				case 'unifierNull' : // lancer en dernier pour bien réussir
93
				case 'unifierNull' : // lancer en dernier pour bien réussir
94
					$this->unifierNull();
94
					$this->unifierNull();
95
					break;
95
					break;
96
				case 'supprimerImagesetTagAnonymes' :
96
				case 'supprimerImagesetTagAnonymes' :
97
				    $this->supprimerImagesetTagAnonymes();
97
				    $this->supprimerImagesetTagAnonymes();
98
				    break;
98
				    break;
99
				case 'supprimerInfosLiesObsInexistante' :
99
				case 'supprimerInfosLiesObsInexistante' :
100
				    $this->supprimerInfosLiesObsInexistante();
100
				    $this->supprimerInfosLiesObsInexistante();
101
				    break;
101
				    break;
102
				case 'unifierUtilisateur' : 
102
				case 'unifierUtilisateur' : 
103
				    $this->unifierUtilisateur();
103
				    $this->unifierUtilisateur();
104
				    break;
104
				    break;
105
				case 'unifierInfosEspece' :
105
				case 'unifierInfosEspece' :
106
				    $this->unifierInfosEspeces();
106
				    $this->unifierInfosEspeces();
107
				    break;
107
				    break;
108
				case 'unifierPhenologie' :
108
				case 'unifierPhenologie' :
109
				    $this->unifierPhenologie();
109
				    $this->unifierPhenologie();
110
				    break;
110
				    break;
-
 
111
				case 'unifierTag' :
-
 
112
				    $this->unifierUtilisateurTag("cel_arbre_mots_cles_obs");
-
 
113
				    $this->unifierUtilisateurTag("cel_arbre_mots_cles_images");
-
 
114
				    break;
111
				default :
115
				default :
112
					$msg = "Erreur : la commande '$cmd' n'existe pas!\n".
116
					$msg = "Erreur : la commande '$cmd' n'existe pas!\n".
113
						"Commandes existantes : regenererMotsClesTexteObs, regenererMotsClesTexteImages"
117
						"Commandes existantes : regenererMotsClesTexteObs, regenererMotsClesTexteImages"
114
							. ", regenererMotsClesTexteObsTout, regenererMotsClesTexteImagesTout"
118
							. ", regenererMotsClesTexteObsTout, regenererMotsClesTexteImagesTout"
115
							. ", viderMotsClesTexteImagesSansMotsCles, viderMotsClesTexteObsSansMotsCles"
119
							. ", viderMotsClesTexteImagesSansMotsCles, viderMotsClesTexteObsSansMotsCles"
116
							. ", regenererChampsTailleImage, reparerLiaisonsOublieesObs, reparerLiaisonsOublieesImages"
120
							. ", regenererChampsTailleImage, reparerLiaisonsOublieesObs, reparerLiaisonsOublieesImages"
117
							. ", reparerLiaisonsObsParMotsClesTexte, reductionMotsClesImages, reductionMotsClesImagesUtil"
121
							. ", reparerLiaisonsObsParMotsClesTexte, reductionMotsClesImages, reductionMotsClesImagesUtil"
118
							. ", reduireEtNormaliserMotsClesImagesUtil, reduireEtNormaliserMotsClesImages"
122
							. ", reduireEtNormaliserMotsClesImagesUtil, reduireEtNormaliserMotsClesImages"
119
							. ", reductionMotsClesObs, reductionMotsClesObsUtil, reduireEtNormaliserMotsClesObsUtil"
123
							. ", reductionMotsClesObs, reductionMotsClesObsUtil, reduireEtNormaliserMotsClesObsUtil"
120
							. ", reduireEtNormaliserMotsClesObs";
124
							. ", reduireEtNormaliserMotsClesObs";
121
					throw new Exception($msg);
125
					throw new Exception($msg);
122
			}
126
			}
123
		} catch (Exception $e) {
127
		} catch (Exception $e) {
124
			$this->traiterErreur($e->getMessage());
128
			$this->traiterErreur($e->getMessage());
125
		}
129
		}
126
	}
130
	}
127
	
131
	
128
 
132
 
129
	private function supprimerRetourLigne() {		
133
	private function supprimerRetourLigne() {		
130
		foreach ($this->colonnes as $id=>$colonne) {
134
		foreach ($this->colonnes as $id=>$colonne) {
131
			echo "Suppression des retour ligne dans la colonne ".$colonne['column_name']." ...";
135
			echo "Suppression des retour ligne dans la colonne ".$colonne['column_name']." ...";
132
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET ".$colonne['column_name']." = REPLACE(".$colonne['column_name'].', "\n", "")';
136
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET ".$colonne['column_name']." = REPLACE(".$colonne['column_name'].', "\n", "")';
133
			$this->bdd->requeter($requete);
137
			$this->bdd->requeter($requete);
134
			echo "effectuée \n";
138
			echo "effectuée \n";
135
		}
139
		}
136
	}
140
	}
137
	
141
	
138
	private function supprimerAntislash() {
142
	private function supprimerAntislash() {
139
		foreach ($this->colonnes as $id=>$colonne) {
143
		foreach ($this->colonnes as $id=>$colonne) {
140
			echo "Suppression des antislash dans la colonne ".$colonne['column_name']." ...";
144
			echo "Suppression des antislash dans la colonne ".$colonne['column_name']." ...";
141
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET ".$colonne['column_name']." = REPLACE(".$colonne['column_name'].', "\\\", "")';
145
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET ".$colonne['column_name']." = REPLACE(".$colonne['column_name'].', "\\\", "")';
142
			$this->bdd->requeter($requete);
146
			$this->bdd->requeter($requete);
143
			echo "effectuée \n";
147
			echo "effectuée \n";
144
		}
148
		}
145
	}
149
	}
146
	
150
	
147
	private function supprimerGuillemet() {
151
	private function supprimerGuillemet() {
148
		foreach ($this->colonnes as $id=>$colonne) {
152
		foreach ($this->colonnes as $id=>$colonne) {
149
			echo "Suppression des guillements dans la colonne ".$colonne['column_name']." ...";
153
			echo "Suppression des guillements dans la colonne ".$colonne['column_name']." ...";
150
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET ".$colonne['column_name']." = REPLACE(".$colonne['column_name'].',"\"", "")';
154
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET ".$colonne['column_name']." = REPLACE(".$colonne['column_name'].',"\"", "")';
151
			$this->bdd->requeter($requete);
155
			$this->bdd->requeter($requete);
152
			echo "effectuée \n";
156
			echo "effectuée \n";
153
		}
157
		}
154
	}
158
	}
155
	
159
	
156
	private function unifierNull() {
160
	private function unifierNull() {
157
	    foreach ($this->colonnes as $id=>$colonne) {
161
	    foreach ($this->colonnes as $id=>$colonne) {
158
			echo "Suppression des vides dans la colonne ".$colonne['column_name']." ...";
162
			echo "Suppression des vides dans la colonne ".$colonne['column_name']." ...";
159
			$dsl = array( 'transmission', 'altitude');
163
			$dsl = array( 'transmission', 'altitude');
160
			if (isset($dsl[$colonne['column_name']])) {
164
			if (isset($dsl[$colonne['column_name']])) {
161
				$requete = "UPDATE ".$this->bd_cel.".cel_obs SET ".$colonne['column_name']." = NULL WHERE trim(".$colonne['column_name'].") = '' and ".$colonne['column_name']." != '0'";
165
				$requete = "UPDATE ".$this->bd_cel.".cel_obs SET ".$colonne['column_name']." = NULL WHERE trim(".$colonne['column_name'].") = '' and ".$colonne['column_name']." != '0'";
162
			} else {
166
			} else {
163
				$requete = "UPDATE ".$this->bd_cel.".cel_obs SET ".$colonne['column_name']." = NULL WHERE trim(".$colonne['column_name'].") = '' OR ".$colonne['column_name']." IN ('INSEE-C:', '0000-00-00 00:00:00', '0.00000')";
167
				$requete = "UPDATE ".$this->bd_cel.".cel_obs SET ".$colonne['column_name']." = NULL WHERE trim(".$colonne['column_name'].") = '' OR ".$colonne['column_name']." IN ('INSEE-C:', '0000-00-00 00:00:00', '0.00000')";
164
			}
168
			}
165
			$this->bdd->requeter($requete);
169
			$this->bdd->requeter($requete);
166
			echo "effectuée \n";
170
			echo "effectuée \n";
167
		}
171
		}
168
	}
172
	}
169
	
173
	
170
	private function unifierCertitude() {
174
	private function unifierCertitude() {
171
		echo "Uniformisation du champ certitude/identification";
175
		echo "Uniformisation du champ certitude/identification";
172
		$certitude = array("A déterminer" => "à déterminer",
176
		$certitude = array("A déterminer" => "à déterminer",
173
		    "À déterminer, voir photo" => "à déterminer",
177
		    "À déterminer, voir photo" => "à déterminer",
174
		    "A déterminer" => "à déterminer",
178
		    "A déterminer" => "à déterminer",
175
		    "aDeterminer" => "à déterminer",
179
		    "aDeterminer" => "à déterminer",
176
		    "déterminer" => "à déterminer",
180
		    "déterminer" => "à déterminer",
177
		    "Inconnue" => "à déterminer",
181
		    "Inconnue" => "à déterminer",
178
		    "Ceraine" => "certain",
182
		    "Ceraine" => "certain",
179
		    "certain" => "certain",
183
		    "certain" => "certain",
180
		    "Certainaaua" => "certain",
184
		    "Certainaaua" => "certain",
181
		    "Certaine" => "certain",
185
		    "Certaine" => "certain",
182
		    "Certaine K- rhizines blanche" => "certain",
186
		    "Certaine K- rhizines blanche" => "certain",
183
		    "Certaine ( mais voir notes)" => "certain",
187
		    "Certaine ( mais voir notes)" => "certain",
184
		    "Certaine (à 99%)" => "certain",
188
		    "Certaine (à 99%)" => "certain",
185
		    "Certaine Anett" => "certain",
189
		    "Certaine Anett" => "certain",
186
		    "Certaine Anette" => "certain",
190
		    "Certaine Anette" => "certain",
187
		    "Certaine Valériane officinale" => "certain",
191
		    "Certaine Valériane officinale" => "certain",
188
		    "Certaine, Faite et confirmée par JM BERAUD" => "certain",
192
		    "Certaine, Faite et confirmée par JM BERAUD" => "certain",
189
		    "Certaine, par Jean Lebail" => "certain",
193
		    "Certaine, par Jean Lebail" => "certain",
190
		    "Certaine, subsp. minus" => "certain",
194
		    "Certaine, subsp. minus" => "certain",
191
		    "Certainea" => "certain",
195
		    "Certainea" => "certain",
192
		    "Certaineanno" => "certain",
196
		    "Certaineanno" => "certain",
193
		    "Certainearia n" => "certain",
197
		    "Certainearia n" => "certain",
194
		    "Certainee" => "certain",
198
		    "Certainee" => "certain",
195
		    "Certainej" => "certain",
199
		    "Certainej" => "certain",
196
		    "Certainel" => "certain",
200
		    "Certainel" => "certain",
197
		    "CertaineNom de travai" => "certain",
201
		    "CertaineNom de travai" => "certain",
198
		    "CertaineNom de travail" => "certain",
202
		    "CertaineNom de travail" => "certain",
199
		    "Certainesites" => "certain",
203
		    "Certainesites" => "certain",
200
		    "Certainesous-bois de feuillus en versant sud à sud-ouest" => "certain",
204
		    "Certainesous-bois de feuillus en versant sud à sud-ouest" => "certain",
201
		    "Certaineu" => "certain",
205
		    "Certaineu" => "certain",
202
		    "sure" => "certain",
206
		    "sure" => "certain",
203
		    "validée sur forum Naturalistes de l'ouest" => "certain",
207
		    "validée sur forum Naturalistes de l'ouest" => "certain",
204
		    "à confirmer" => "douteux",
208
		    "à confirmer" => "douteux",
205
		    "à approfondir" => "douteux",
209
		    "à approfondir" => "douteux",
206
		    "à cofirmer" => "douteux",
210
		    "à cofirmer" => "douteux",
207
		    "À confiermer" => "douteux",
211
		    "À confiermer" => "douteux",
208
		    "A confirlmer" => "douteux",
212
		    "A confirlmer" => "douteux",
209
		    "A confirmer" => "douteux",
213
		    "A confirmer" => "douteux",
210
		    "à confirmer vs. pumilum" => "douteux",
214
		    "à confirmer vs. pumilum" => "douteux",
211
		    "à conirmer" => "douteux",
215
		    "à conirmer" => "douteux",
212
		    "à vérifier" => "douteux",
216
		    "à vérifier" => "douteux",
213
		    "douteuse" => "douteux",
217
		    "douteuse" => "douteux",
214
		    "Douteuse (canadensis ?)" => "douteux",
218
		    "Douteuse (canadensis ?)" => "douteux",
215
		    "Douteuse ?" => "douteux",
219
		    "Douteuse ?" => "douteux",
216
		    "Douteuse à confirmer" => "douteux",
220
		    "Douteuse à confirmer" => "douteux",
217
		    "Douteuse peut-être cordata" => "douteux",
221
		    "Douteuse peut-être cordata" => "douteux",
218
		    "Douteuse, fleurs rouges" => "douteux",
222
		    "Douteuse, fleurs rouges" => "douteux",
219
		    "douteux" => "douteux",
223
		    "douteux" => "douteux",
220
		    "espèce bisannuelle mais non bien déterminée" => "douteux",
224
		    "espèce bisannuelle mais non bien déterminée" => "douteux",
221
		    "Incertaine" => "douteux",
225
		    "Incertaine" => "douteux",
222
		    "Pavot douteux" => "douteux",
226
		    "Pavot douteux" => "douteux",
223
		    "Potentille ansérine, supposé" => "douteux",
227
		    "Potentille ansérine, supposé" => "douteux",
224
		    "presque certaine" => "douteux",
228
		    "presque certaine" => "douteux",
225
		    "Quasi Certaine" => "douteux",
229
		    "Quasi Certaine" => "douteux",
226
		    "ssp déterminer" => "douteux",
230
		    "ssp déterminer" => "douteux",
227
		    "subsp à vérifier" => "douteux",
231
		    "subsp à vérifier" => "douteux",
228
		    "subsp. microphyllum ?" => "douteux",
232
		    "subsp. microphyllum ?" => "douteux",
229
		    "très douteuse" => "douteux",
233
		    "très douteuse" => "douteux",
230
		    "Très probable" => "douteux");
234
		    "Très probable" => "douteux");
231
		foreach ($certitude as $valeur=>$saisie) {
235
		foreach ($certitude as $valeur=>$saisie) {
232
			$requete = 'UPDATE '.$this->bd_cel.'.cel_obs SET commentaire = concat(commentaire, " Certitude : ", certitude), certitude = "'.$saisie.'" WHERE certitude ="'.$valeur.'"';
236
			$requete = 'UPDATE '.$this->bd_cel.'.cel_obs SET commentaire = concat(commentaire, " Certitude : ", certitude), certitude = "'.$saisie.'" WHERE certitude ="'.$valeur.'"';
233
			$this->bdd->requeter($requete);
237
			$this->bdd->requeter($requete);
234
			echo "effectuée \n";
238
			echo "effectuée \n";
235
		}
239
		}
236
		$requete_verif = "SELECT certitude FROM ".$this->bd_cel.".cel_obs WHERE certitude NOT IN ('douteux', 'certain', 'à déterminer', '') and certitude is not NULL";
240
		$requete_verif = "SELECT certitude FROM ".$this->bd_cel.".cel_obs WHERE certitude NOT IN ('douteux', 'certain', 'à déterminer', '') and certitude is not NULL";
237
		$verif = $this->bdd->recupererTous($requete_verif);
241
		$verif = $this->bdd->recupererTous($requete_verif);
238
		if ($verif != array()) print_r($verif);
242
		if ($verif != array()) print_r($verif);
239
	}
243
	}
240
	
244
	
241
	private function supprimerCertitudeAutre() {
245
	private function supprimerCertitudeAutre() {
242
	    echo "suppression des valeurs non compréhensible du champ certitude/identification";
246
	    echo "suppression des valeurs non compréhensible du champ certitude/identification";
243
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs 
247
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs 
244
	        SET commentaire = case isnull(commentaire) when 1 THEN certitude ELSE concat(commentaire, ' Certitude : ', certitude) END, 
248
	        SET commentaire = case isnull(commentaire) when 1 THEN certitude ELSE concat(commentaire, ' Certitude : ', certitude) END, 
245
	        certitude = '' WHERE `certitude` NOT IN ('douteux', 'certain', 'à déterminer', '') and certitude is not NULL";
249
	        certitude = '' WHERE `certitude` NOT IN ('douteux', 'certain', 'à déterminer', '') and certitude is not NULL";
246
	    $this->bdd->requeter($requete);
250
	    $this->bdd->requeter($requete);
247
	        echo "effectuée \n";
251
	        echo "effectuée \n";
248
	    $requete_verif = "SELECT certitude FROM ".$this->bd_cel.".cel_obs WHERE certitude NOT IN ('douteux', 'certain', 'à déterminer', '') and certitude is not NULL";
252
	    $requete_verif = "SELECT certitude FROM ".$this->bd_cel.".cel_obs WHERE certitude NOT IN ('douteux', 'certain', 'à déterminer', '') and certitude is not NULL";
249
	    $verif = $this->bdd->recupererTous($requete_verif);
253
	    $verif = $this->bdd->recupererTous($requete_verif);
250
	    if ($verif != array()) print_r($verif);
254
	    if ($verif != array()) print_r($verif);
251
	}
255
	}
252
	
256
	
253
	private function unifierPhenologie() {
257
	private function unifierPhenologie() {
254
	    echo "Uniformisation du champ phenologie";
258
	    echo "Uniformisation du champ phenologie";
255
	    /*$phenologie = array("2" => "00-09: germination, développement des bourgeons",
259
	    /*$phenologie = array("2" => "00-09: germination, développement des bourgeons",
256
	        "5" => "00-09: germination, développement des bourgeons",
260
	        "5" => "00-09: germination, développement des bourgeons",
257
	        "5" => "00-09: germination, développement des bourgeons",
261
	        "5" => "00-09: germination, développement des bourgeons",
258
	        "8" => "00-09: germination, développement des bourgeons",
262
	        "8" => "00-09: germination, développement des bourgeons",
259
	        "8" => "00-09: germination, développement des bourgeons",
263
	        "8" => "00-09: germination, développement des bourgeons",
260
	        "9" => "00-09: germination, développement des bourgeons",
264
	        "9" => "00-09: germination, développement des bourgeons",
261
	        "00-09" => "00-09: germination, développement des bourgeons",
265
	        "00-09" => "00-09: germination, développement des bourgeons",
262
	        "Germination, développement des bourgeons" => "00-09: germination, développement des bourgeons",
266
	        "Germination, développement des bourgeons" => "00-09: germination, développement des bourgeons",
263
	        "10" => "10-19: développement des feuilles",
267
	        "10" => "10-19: développement des feuilles",
264
	        "11" => "10-19: développement des feuilles",
268
	        "11" => "10-19: développement des feuilles",
265
	        "12" => "10-19: développement des feuilles",
269
	        "12" => "10-19: développement des feuilles",
266
	        "14" => "10-19: développement des feuilles",
270
	        "14" => "10-19: développement des feuilles",
267
	        "15" => "10-19: développement des feuilles",
271
	        "15" => "10-19: développement des feuilles",
268
	        "16" => "10-19: développement des feuilles",
272
	        "16" => "10-19: développement des feuilles",
269
	        "17" => "10-19: développement des feuilles",
273
	        "17" => "10-19: développement des feuilles",
270
	        "18" => "10-19: développement des feuilles",
274
	        "18" => "10-19: développement des feuilles",
271
	        "19" => "10-19: développement des feuilles",
275
	        "19" => "10-19: développement des feuilles",
272
	        "10-19" => "10-19: développement des feuilles",
276
	        "10-19" => "10-19: développement des feuilles",
273
	        "10-19: développement des feui" => "10-19: développement des feuilles",
277
	        "10-19: développement des feui" => "10-19: développement des feuilles",
274
	        "10-19: développement des feuilles" => "10-19: développement des feuilles",
278
	        "10-19: développement des feuilles" => "10-19: développement des feuilles",
275
	        "15: environ % des feuilles épanouies" => "10-19: développement des feuilles",
279
	        "15: environ % des feuilles épanouies" => "10-19: développement des feuilles",
276
	        "19   environ 50% des feuilles épanouies" => "10-19: développement des feuilles",
280
	        "19   environ 50% des feuilles épanouies" => "10-19: développement des feuilles",
277
	        "en feuilles" => "10-19: développement des feuilles",
281
	        "en feuilles" => "10-19: développement des feuilles",
278
	        "Feuille" => "10-19: développement des feuilles",
282
	        "Feuille" => "10-19: développement des feuilles",
279
	        "feuille peu dvt, a confirmer" => "10-19: développement des feuilles",
283
	        "feuille peu dvt, a confirmer" => "10-19: développement des feuilles",
280
	        "feuilles seulement" => "10-19: développement des feuilles",
284
	        "feuilles seulement" => "10-19: développement des feuilles",
281
	        "20" => "20-29: formation de pousses latérales, tallage",
285
	        "20" => "20-29: formation de pousses latérales, tallage",
282
	        "Formation de pousses latérales, tallage" => "20-29: formation de pousses latérales, tallage",
286
	        "Formation de pousses latérales, tallage" => "20-29: formation de pousses latérales, tallage",
283
	        "30" => "30-39: développement des tiges, croissance des rosettes",
287
	        "30" => "30-39: développement des tiges, croissance des rosettes",
284
	        "35" => "30-39: développement des tiges, croissance des rosettes",
288
	        "35" => "30-39: développement des tiges, croissance des rosettes",
285
	        "36" => "30-39: développement des tiges, croissance des rosettes",
289
	        "36" => "30-39: développement des tiges, croissance des rosettes",
286
	        "38" => "30-39: développement des tiges, croissance des rosettes",
290
	        "38" => "30-39: développement des tiges, croissance des rosettes",
287
	        "39" => "30-39: développement des tiges, croissance des rosettes",
291
	        "39" => "30-39: développement des tiges, croissance des rosettes",
288
	        "3: développement des tiges, croissance des rosettes" => "30-39: développement des tiges, croissance des rosettes",
292
	        "3: développement des tiges, croissance des rosettes" => "30-39: développement des tiges, croissance des rosettes",
289
	        "Développement des tiges, croissance des rosettes" => "30-39: développement des tiges, croissance des rosettes",
293
	        "Développement des tiges, croissance des rosettes" => "30-39: développement des tiges, croissance des rosettes",
290
	        "40" => "40-49: développement des organes de propagation végétative",
294
	        "40" => "40-49: développement des organes de propagation végétative",
291
	        "43" => "40-49: développement des organes de propagation végétative",
295
	        "43" => "40-49: développement des organes de propagation végétative",
292
	        "45" => "40-49: développement des organes de propagation végétative",
296
	        "45" => "40-49: développement des organes de propagation végétative",
293
	        "46" => "40-49: développement des organes de propagation végétative",
297
	        "46" => "40-49: développement des organes de propagation végétative",
294
	        "48" => "40-49: développement des organes de propagation végétative",
298
	        "48" => "40-49: développement des organes de propagation végétative",
295
	        "49" => "40-49: développement des organes de propagation végétative",
299
	        "49" => "40-49: développement des organes de propagation végétative",
296
	        "40-49" => "40-49: développement des organes de propagation végétative",
300
	        "40-49" => "40-49: développement des organes de propagation végétative",
297
	        "40-49: développement des organes de propagation végétative" => "40-49: développement des organes de propagation végétative",
301
	        "40-49: développement des organes de propagation végétative" => "40-49: développement des organes de propagation végétative",
298
	        "40-49: développement des organes de propagation végétativegt" => "40-49: développement des organes de propagation végétative",
302
	        "40-49: développement des organes de propagation végétativegt" => "40-49: développement des organes de propagation végétative",
299
	        "40-49: développement des organes de propagation végétativepas d'inflorescence" => "40-49: développement des organes de propagation végétative",
303
	        "40-49: développement des organes de propagation végétativepas d'inflorescence" => "40-49: développement des organes de propagation végétative",
300
	        "50" => "50-59 : apparition de l’inflorescence",
304
	        "50" => "50-59 : apparition de l’inflorescence",
301
	        "56" => "50-59 : apparition de l’inflorescence",
305
	        "56" => "50-59 : apparition de l’inflorescence",
302
	        "57" => "50-59 : apparition de l’inflorescence",
306
	        "57" => "50-59 : apparition de l’inflorescence",
303
	        "58" => "50-59 : apparition de l’inflorescence",
307
	        "58" => "50-59 : apparition de l’inflorescence",
304
	        "59" => "50-59 : apparition de l’inflorescence",
308
	        "59" => "50-59 : apparition de l’inflorescence",
305
	        "10x En bouton" => "50-59 : apparition de l’inflorescence",
309
	        "10x En bouton" => "50-59 : apparition de l’inflorescence",
306
	        "14x En bouton" => "50-59 : apparition de l’inflorescence",
310
	        "14x En bouton" => "50-59 : apparition de l’inflorescence",
307
	        "20x En bouton" => "50-59 : apparition de l’inflorescence",
311
	        "20x En bouton" => "50-59 : apparition de l’inflorescence",
308
	        "30-39" => "50-59 : apparition de l’inflorescence",
312
	        "30-39" => "50-59 : apparition de l’inflorescence",
309
	        "50-59" => "50-59 : apparition de l’inflorescence",
313
	        "50-59" => "50-59 : apparition de l’inflorescence",
310
	        "50-59: apparition de l'inflorescence, épiais" => "50-59 : apparition de l’inflorescence",
314
	        "50-59: apparition de l'inflorescence, épiais" => "50-59 : apparition de l’inflorescence",
311
	        "50-59: apparition de l'inflorescence, épiaison" => "50-59 : apparition de l’inflorescence",
315
	        "50-59: apparition de l'inflorescence, épiaison" => "50-59 : apparition de l’inflorescence",
312
	        "59: apparition de l'inflorescence, épiaison" => "50-59 : apparition de l’inflorescence",
316
	        "59: apparition de l'inflorescence, épiaison" => "50-59 : apparition de l’inflorescence",
313
	        "8x En bouton" => "50-59 : apparition de l’inflorescence",
317
	        "8x En bouton" => "50-59 : apparition de l’inflorescence",
314
	        "60" => "60-69 : floraison",
318
	        "60" => "60-69 : floraison",
315
	        "62" => "60-69 : floraison",
319
	        "62" => "60-69 : floraison",
316
	        "63" => "60-69 : floraison",
320
	        "63" => "60-69 : floraison",
317
	        "64" => "60-69 : floraison",
321
	        "64" => "60-69 : floraison",
318
	        "66" => "60-69 : floraison",
322
	        "66" => "60-69 : floraison",
319
	        "67" => "60-69 : floraison",
323
	        "67" => "60-69 : floraison",
320
	        "68" => "60-69 : floraison",
324
	        "68" => "60-69 : floraison",
321
	        "69" => "60-69 : floraison",
325
	        "69" => "60-69 : floraison",
322
	        " floraison " => "60-69 : floraison",
326
	        " floraison " => "60-69 : floraison",
323
	        "-69: floraison" => "60-69 : floraison",
327
	        "-69: floraison" => "60-69 : floraison",
324
	        "10x Fin de floraison" => "60-69 : floraison",
328
	        "10x Fin de floraison" => "60-69 : floraison",
325
	        "12x Pleine floraison" => "60-69 : floraison",
329
	        "12x Pleine floraison" => "60-69 : floraison",
326
	        "14x Début de floraison" => "60-69 : floraison",
330
	        "14x Début de floraison" => "60-69 : floraison",
327
	        "150x Pleine floraison" => "60-69 : floraison",
331
	        "150x Pleine floraison" => "60-69 : floraison",
328
	        "17x Fin de floraison" => "60-69 : floraison",
332
	        "17x Fin de floraison" => "60-69 : floraison",
329
	        "1x Début de floraison" => "60-69 : floraison",
333
	        "1x Début de floraison" => "60-69 : floraison",
330
	        "1x En fleur" => "60-69 : floraison",
334
	        "1x En fleur" => "60-69 : floraison",
331
	        "1x Fin de floraison" => "60-69 : floraison",
335
	        "1x Fin de floraison" => "60-69 : floraison",
332
	        "1x Pleine floraison" => "60-69 : floraison",
336
	        "1x Pleine floraison" => "60-69 : floraison",
333
	        "20x Début de floraison" => "60-69 : floraison",
337
	        "20x Début de floraison" => "60-69 : floraison",
334
	        "20x Pleine floraison" => "60-69 : floraison",
338
	        "20x Pleine floraison" => "60-69 : floraison",
335
	        "25x Pleine floraison" => "60-69 : floraison",
339
	        "25x Pleine floraison" => "60-69 : floraison",
336
	        "27x En fleur" => "60-69 : floraison",
340
	        "27x En fleur" => "60-69 : floraison",
337
	        "30x Fin de floraison" => "60-69 : floraison",
341
	        "30x Fin de floraison" => "60-69 : floraison",
338
	        "35x Début de floraison" => "60-69 : floraison",
342
	        "35x Début de floraison" => "60-69 : floraison",
339
	        "35x Fin de floraison" => "60-69 : floraison",
343
	        "35x Fin de floraison" => "60-69 : floraison",
340
	        "35x Pleine floraison" => "60-69 : floraison",
344
	        "35x Pleine floraison" => "60-69 : floraison",
341
	        "3x Fin de floraison" => "60-69 : floraison",
345
	        "3x Fin de floraison" => "60-69 : floraison",
342
	        "3x Pleine floraison" => "60-69 : floraison",
346
	        "3x Pleine floraison" => "60-69 : floraison",
343
	        "40x Début de floraison" => "60-69 : floraison",
347
	        "40x Début de floraison" => "60-69 : floraison",
344
	        "44x Pleine floraison" => "60-69 : floraison",
348
	        "44x Pleine floraison" => "60-69 : floraison",
345
	        "48x Pleine floraison" => "60-69 : floraison",
349
	        "48x Pleine floraison" => "60-69 : floraison",
346
	        "4x Pleine floraison" => "60-69 : floraison",
350
	        "4x Pleine floraison" => "60-69 : floraison",
347
	        "50x Pleine floraison" => "60-69 : floraison",
351
	        "50x Pleine floraison" => "60-69 : floraison",
348
	        "5x Pleine floraison" => "60-69 : floraison",
352
	        "5x Pleine floraison" => "60-69 : floraison",
349
	        "6: floraison" => "60-69 : floraison",
353
	        "6: floraison" => "60-69 : floraison",
350
	        "60 : floraison en amorce, pétales jaunes, corolle non ouverte encore" => "60-69 : floraison",
354
	        "60 : floraison en amorce, pétales jaunes, corolle non ouverte encore" => "60-69 : floraison",
351
	        "60-" => "60-69 : floraison",
355
	        "60-" => "60-69 : floraison",
352
	        "60-6: floraison" => "60-69 : floraison",
356
	        "60-6: floraison" => "60-69 : floraison",
353
	        "60-65" => "60-69 : floraison",
357
	        "60-65" => "60-69 : floraison",
354
	        "60-69" => "60-69 : floraison",
358
	        "60-69" => "60-69 : floraison",
355
	        "60-69 floraison" => "60-69 : floraison",
359
	        "60-69 floraison" => "60-69 : floraison",
356
	        "60-69 floraison +70-79: fructification" => "60-69 : floraison",
360
	        "60-69 floraison +70-79: fructification" => "60-69 : floraison",
357
	        "60-69: florai" => "60-69 : floraison",
361
	        "60-69: florai" => "60-69 : floraison",
358
	        "60-69: florais" => "60-69 : floraison",
362
	        "60-69: florais" => "60-69 : floraison",
359
	        "60-69: floraison" => "60-69 : floraison",
363
	        "60-69: floraison" => "60-69 : floraison",
360
	        "60-69: floraison - fructification" => "60-69 : floraison",
364
	        "60-69: floraison - fructification" => "60-69 : floraison",
361
	        "60-69: floraison (8" => "60-69 : floraison",
365
	        "60-69: floraison (8" => "60-69 : floraison",
362
	        "60-69: floraison 1 individu fleuri sur une trentaine" => "60-69 : floraison",
366
	        "60-69: floraison 1 individu fleuri sur une trentaine" => "60-69 : floraison",
363
	        "60-69: floraison à 50 pour" => "60-69 : floraison",
367
	        "60-69: floraison à 50 pour" => "60-69 : floraison",
364
	        "60-69: floraison Fleurs déjà fanées ou en cours de l'être" => "60-69 : floraison",
368
	        "60-69: floraison Fleurs déjà fanées ou en cours de l'être" => "60-69 : floraison",
365
	        "60-69: floraison floraison" => "60-69 : floraison",
369
	        "60-69: floraison floraison" => "60-69 : floraison",
366
	        "60-69: floraison pour le 09/04/2019" => "60-69 : floraison",
370
	        "60-69: floraison pour le 09/04/2019" => "60-69 : floraison",
367
	        "60-69: floraison5" => "60-69 : floraison",
371
	        "60-69: floraison5" => "60-69 : floraison",
368
	        "60-69: floraison6" => "60-69 : floraison",
372
	        "60-69: floraison6" => "60-69 : floraison",
369
	        "60-69: floraisondi" => "60-69 : floraison",
373
	        "60-69: floraisondi" => "60-69 : floraison",
370
	        "60-69: floraisonentre les pierres du mur des quai" => "60-69 : floraison",
374
	        "60-69: floraisonentre les pierres du mur des quai" => "60-69 : floraison",
371
	        "60-69: floraisonfleurs et fruit" => "60-69 : floraison",
375
	        "60-69: floraisonfleurs et fruit" => "60-69 : floraison",
372
	        "60-69: floraisonl" => "60-69 : floraison",
376
	        "60-69: floraisonl" => "60-69 : floraison",
373
	        "60-69: floraisonvi" => "60-69 : floraison",
377
	        "60-69: floraisonvi" => "60-69 : floraison",
374
	        "60-69: fructification" => "60-69 : floraison",
378
	        "60-69: fructification" => "60-69 : floraison",
375
	        "60: floraison" => "60-69 : floraison",
379
	        "60: floraison" => "60-69 : floraison",
376
	        "63: floraison" => "60-69 : floraison",
380
	        "63: floraison" => "60-69 : floraison",
377
	        "63: environ 3% des fleurs épanouies" => "60-69 : floraison",
381
	        "63: environ 3% des fleurs épanouies" => "60-69 : floraison",
378
	        "64: floraison" => "60-69 : floraison",
382
	        "64: floraison" => "60-69 : floraison",
379
	        "66, avec quelques fruits" => "60-69 : floraison",
383
	        "66, avec quelques fruits" => "60-69 : floraison",
380
	        "66: floraison" => "60-69 : floraison",
384
	        "66: floraison" => "60-69 : floraison",
381
	        "67 : floraison" => "60-69 : floraison",
385
	        "67 : floraison" => "60-69 : floraison",
382
	        "67 Nbses fleurs épanouies," => "60-69 : floraison",
386
	        "67 Nbses fleurs épanouies," => "60-69 : floraison",
383
	        "67: floraison" => "60-69 : floraison",
387
	        "67: floraison" => "60-69 : floraison",
384
	        "67: environ 70% des fleurs épanouies + formation de gousses." => "60-69 : floraison",
388
	        "67: environ 70% des fleurs épanouies + formation de gousses." => "60-69 : floraison",
385
	        "68: environ 0% des fleurs épanouies" => "60-69 : floraison",
389
	        "68: environ 0% des fleurs épanouies" => "60-69 : floraison",
386
	        "68: floraison" => "60-69 : floraison",
390
	        "68: floraison" => "60-69 : floraison",
387
	        "68: environ 50% des fleurs épanouies" => "60-69 : floraison",
391
	        "68: environ 50% des fleurs épanouies" => "60-69 : floraison",
388
	        "68: environ 80% des fleurs épanouies + formation des gousses." => "60-69 : floraison",
392
	        "68: environ 80% des fleurs épanouies + formation des gousses." => "60-69 : floraison",
389
	        "68floraison" => "60-69 : floraison",
393
	        "68floraison" => "60-69 : floraison",
390
	        "69 (floraison de toutes fleurs)" => "60-69 : floraison",
394
	        "69 (floraison de toutes fleurs)" => "60-69 : floraison",
391
	        "69-70" => "60-69 : floraison",
395
	        "69-70" => "60-69 : floraison",
392
	        "69-70: fin de floraisonfructification" => "60-69 : floraison",
396
	        "69-70: fin de floraisonfructification" => "60-69 : floraison",
393
	        "69-70n" => "60-69 : floraison",
397
	        "69-70n" => "60-69 : floraison",
394
	        "69: 100% des fleurs épanouies" => "60-69 : floraison",
398
	        "69: 100% des fleurs épanouies" => "60-69 : floraison",
395
	        "69s" => "60-69 : floraison",
399
	        "69s" => "60-69 : floraison",
396
	        "82x Pleine floraison" => "60-69 : floraison",
400
	        "82x Pleine floraison" => "60-69 : floraison",
397
	        "9: floraison" => "60-69 : floraison",
401
	        "9: floraison" => "60-69 : floraison",
398
	        "début de ffloraison" => "60-69 : floraison",
402
	        "début de ffloraison" => "60-69 : floraison",
399
	        "début floraison" => "60-69 : floraison",
403
	        "début floraison" => "60-69 : floraison",
400
	        "en fleurs" => "60-69 : floraison",
404
	        "en fleurs" => "60-69 : floraison",
401
	        "environ 30% des fleurs épanouies" => "60-69 : floraison",
405
	        "environ 30% des fleurs épanouies" => "60-69 : floraison",
402
	        "environ 950% des fleurs épanouies" => "60-69 : floraison",
406
	        "environ 950% des fleurs épanouies" => "60-69 : floraison",
403
	        "fin d floraison" => "60-69 : floraison",
407
	        "fin d floraison" => "60-69 : floraison",
404
	        "fin de floraison" => "60-69 : floraison",
408
	        "fin de floraison" => "60-69 : floraison",
405
	        "fin floraison" => "60-69 : floraison",
409
	        "fin floraison" => "60-69 : floraison",
406
	        "fl" => "60-69 : floraison",
410
	        "fl" => "60-69 : floraison",
407
	        "fl2" => "60-69 : floraison",
411
	        "fl2" => "60-69 : floraison",
408
	        "fleur" => "60-69 : floraison",
412
	        "fleur" => "60-69 : floraison",
409
	        "Fleurs" => "60-69 : floraison",
413
	        "Fleurs" => "60-69 : floraison",
410
	        "fleurs épanouies; fin" => "60-69 : floraison",
414
	        "fleurs épanouies; fin" => "60-69 : floraison",
411
	        "floraison" => "60-69 : floraison",
415
	        "floraison" => "60-69 : floraison",
412
	        "Nombreux plants en début de floraison" => "60-69 : floraison",
416
	        "Nombreux plants en début de floraison" => "60-69 : floraison",
413
	        "61" => "61: environ 10% des fleurs épanouies",
417
	        "61" => "61: environ 10% des fleurs épanouies",
414
	        "10% des fleurs épanouies" => "61: environ 10% des fleurs épanouies",
418
	        "10% des fleurs épanouies" => "61: environ 10% des fleurs épanouies",
415
	        "61 :" => "61: environ 10% des fleurs épanouies",
419
	        "61 :" => "61: environ 10% des fleurs épanouies",
416
	        "61 :  environ 10% des fleurs épanouies" => "61: environ 10% des fleurs épanouies",
420
	        "61 :  environ 10% des fleurs épanouies" => "61: environ 10% des fleurs épanouies",
417
	        "61: début defloraison" => "61: environ 10% des fleurs épanouies",
421
	        "61: début defloraison" => "61: environ 10% des fleurs épanouies",
418
	        "61: floraison" => "61: environ 10% des fleurs épanouies",
422
	        "61: floraison" => "61: environ 10% des fleurs épanouies",
419
	        "61: environ 10% des fleurs épanouie" => "61: environ 10% des fleurs épanouies",
423
	        "61: environ 10% des fleurs épanouie" => "61: environ 10% des fleurs épanouies",
420
	        "61: environ 10% des fleurs épanouies" => "61: environ 10% des fleurs épanouies",
424
	        "61: environ 10% des fleurs épanouies" => "61: environ 10% des fleurs épanouies",
421
	        "61: environ 10% des fleurs épanouies63" => "61: environ 10% des fleurs épanouies",
425
	        "61: environ 10% des fleurs épanouies63" => "61: environ 10% des fleurs épanouies",
422
	        "61: environ 10% des fleurs épanouies68" => "61: environ 10% des fleurs épanouies",
426
	        "61: environ 10% des fleurs épanouies68" => "61: environ 10% des fleurs épanouies",
423
	        "61: environ 2% des fleurs épanouies" => "61: environ 10% des fleurs épanouies",
427
	        "61: environ 2% des fleurs épanouies" => "61: environ 10% des fleurs épanouies",
424
	        "61: environ20% des fleurs épanouies" => "61: environ 10% des fleurs épanouies",
428
	        "61: environ20% des fleurs épanouies" => "61: environ 10% des fleurs épanouies",
425
	        "Fleurs (environ 10% des fleurs épanouies)" => "61: environ 10% des fleurs épanouies",
429
	        "Fleurs (environ 10% des fleurs épanouies)" => "61: environ 10% des fleurs épanouies",
426
	        "65" => "65: environ 50% des fleurs épanouies",
430
	        "65" => "65: environ 50% des fleurs épanouies",
427
	        "65" => "65: environ 50% des fleurs épanouies",
431
	        "65" => "65: environ 50% des fleurs épanouies",
428
	        "6: environ 50% des fleurs épanouies" => "65: environ 50% des fleurs épanouies",
432
	        "6: environ 50% des fleurs épanouies" => "65: environ 50% des fleurs épanouies",
429
	        "65 , avec quelques fruits" => "65: environ 50% des fleurs épanouies",
433
	        "65 , avec quelques fruits" => "65: environ 50% des fleurs épanouies",
430
	        "65 : environ 80% des fleurs épanouies" => "65: environ 50% des fleurs épanouies",
434
	        "65 : environ 80% des fleurs épanouies" => "65: environ 50% des fleurs épanouies",
431
	        "65 : environ 10% des fleurs ép" => "65: environ 50% des fleurs épanouies",
435
	        "65 : environ 10% des fleurs ép" => "65: environ 50% des fleurs épanouies",
432
	        "65 : environ 50% des fleurs épa" => "65: environ 50% des fleurs épanouies",
436
	        "65 : environ 50% des fleurs épa" => "65: environ 50% des fleurs épanouies",
433
	        "65 : environ 50% des fleurs épanouies" => "65: environ 50% des fleurs épanouies",
437
	        "65 : environ 50% des fleurs épanouies" => "65: environ 50% des fleurs épanouies",
434
	        "65 : environ 50% des fleurs épanouies-75" => "65: environ 50% des fleurs épanouies",
438
	        "65 : environ 50% des fleurs épanouies-75" => "65: environ 50% des fleurs épanouies",
435
	        "65-6: floraison" => "65: environ 50% des fleurs épanouies",
439
	        "65-6: floraison" => "65: environ 50% des fleurs épanouies",
436
	        "65-69: floraison" => "65: environ 50% des fleurs épanouies",
440
	        "65-69: floraison" => "65: environ 50% des fleurs épanouies",
437
	        "65-7: floraison" => "65: environ 50% des fleurs épanouies",
441
	        "65-7: floraison" => "65: environ 50% des fleurs épanouies",
438
	        "65-72" => "65: environ 50% des fleurs épanouies",
442
	        "65-72" => "65: environ 50% des fleurs épanouies",
439
	        "65:" => "65: environ 50% des fleurs épanouies",
443
	        "65:" => "65: environ 50% des fleurs épanouies",
440
	        "65: floraison" => "65: environ 50% des fleurs épanouies",
444
	        "65: floraison" => "65: environ 50% des fleurs épanouies",
441
	        "65: environ 10% des fleurs épanouies" => "65: environ 50% des fleurs épanouies",
445
	        "65: environ 10% des fleurs épanouies" => "65: environ 50% des fleurs épanouies",
442
	        "65: environ 50% des fleurs épanoui" => "65: environ 50% des fleurs épanouies",
446
	        "65: environ 50% des fleurs épanoui" => "65: environ 50% des fleurs épanouies",
443
	        "65: environ 50% des fleurs épanouie6" => "65: environ 50% des fleurs épanouies",
447
	        "65: environ 50% des fleurs épanouie6" => "65: environ 50% des fleurs épanouies",
444
	        "65: environ 50% des fleurs épanouies" => "65: environ 50% des fleurs épanouies",
448
	        "65: environ 50% des fleurs épanouies" => "65: environ 50% des fleurs épanouies",
445
	        "65: environ 50% des fleurs épanouies et fructification" => "65: environ 50% des fleurs épanouies",
449
	        "65: environ 50% des fleurs épanouies et fructification" => "65: environ 50% des fleurs épanouies",
446
	        "65: environ 50% des fleurs épanouies75" => "65: environ 50% des fleurs épanouies",
450
	        "65: environ 50% des fleurs épanouies75" => "65: environ 50% des fleurs épanouies",
447
	        "65: environ 50% des fleurs épanouies78" => "65: environ 50% des fleurs épanouies",
451
	        "65: environ 50% des fleurs épanouies78" => "65: environ 50% des fleurs épanouies",
448
	        "65:-70" => "65: environ 50% des fleurs épanouies",
452
	        "65:-70" => "65: environ 50% des fleurs épanouies",
449
	        "65:-75" => "65: environ 50% des fleurs épanouies",
453
	        "65:-75" => "65: environ 50% des fleurs épanouies",
450
	        "avec quelques fruits, 65" => "65: environ 50% des fleurs épanouies",
454
	        "avec quelques fruits, 65" => "65: environ 50% des fleurs épanouies",
451
	        "nviron 50% des fleurs épanouies" => "65: environ 50% des fleurs épanouies",
455
	        "nviron 50% des fleurs épanouies" => "65: environ 50% des fleurs épanouies",
452
	        "70" => "70-79: fructification",
456
	        "70" => "70-79: fructification",
453
	        "71" => "70-79: fructification",
457
	        "71" => "70-79: fructification",
454
	        "72" => "70-79: fructification",
458
	        "72" => "70-79: fructification",
455
	        "73" => "70-79: fructification",
459
	        "73" => "70-79: fructification",
456
	        "74" => "70-79: fructification",
460
	        "74" => "70-79: fructification",
457
	        "75" => "70-79: fructification",
461
	        "75" => "70-79: fructification",
458
	        "76" => "70-79: fructification",
462
	        "76" => "70-79: fructification",
459
	        "77" => "70-79: fructification",
463
	        "77" => "70-79: fructification",
460
	        "78" => "70-79: fructification",
464
	        "78" => "70-79: fructification",
461
	        "79" => "70-79: fructification",
465
	        "79" => "70-79: fructification",
462
	        "7: fructification" => "70-79: fructification",
466
	        "7: fructification" => "70-79: fructification",
463
	        "70-: fructification" => "70-79: fructification",
467
	        "70-: fructification" => "70-79: fructification",
464
	        "70-71" => "70-79: fructification",
468
	        "70-71" => "70-79: fructification",
465
	        "70-79" => "70-79: fructification",
469
	        "70-79" => "70-79: fructification",
466
	        "70-79: floraison" => "70-79: fructification",
470
	        "70-79: floraison" => "70-79: fructification",
467
	        "70-79: fructification" => "70-79: fructification",
471
	        "70-79: fructification" => "70-79: fructification",
468
	        "70-79: fructification ?" => "70-79: fructification",
472
	        "70-79: fructification ?" => "70-79: fructification",
469
	        "70-79: fructification +floraison" => "70-79: fructification",
473
	        "70-79: fructification +floraison" => "70-79: fructification",
470
	        "70-79: fructification Entre autre" => "70-79: fructification",
474
	        "70-79: fructification Entre autre" => "70-79: fructification",
471
	        "70-79: fructification, mais fruits verts" => "70-79: fructification",
475
	        "70-79: fructification, mais fruits verts" => "70-79: fructification",
472
	        "70-79: fructificationfleurs et fruit" => "70-79: fructification",
476
	        "70-79: fructificationfleurs et fruit" => "70-79: fructification",
473
	        "70-79:fin floraison fructification" => "70-79: fructification",
477
	        "70-79:fin floraison fructification" => "70-79: fructification",
474
	        "709: fructification" => "70-79: fructification",
478
	        "709: fructification" => "70-79: fructification",
475
	        "75: fructification" => "70-79: fructification",
479
	        "75: fructification" => "70-79: fructification",
476
	        "Début de ruits" => "70-79: fructification",
480
	        "Début de ruits" => "70-79: fructification",
477
	        "fin floraison et fructification" => "70-79: fructification",
481
	        "fin floraison et fructification" => "70-79: fructification",
478
	        "fleur, fruit" => "70-79: fructification",
482
	        "fleur, fruit" => "70-79: fructification",
479
	        "fleurs e fructification" => "70-79: fructification",
483
	        "fleurs e fructification" => "70-79: fructification",
480
	        "Fleurs et début fruits" => "70-79: fructification",
484
	        "Fleurs et début fruits" => "70-79: fructification",
481
	        "Fleurs et début ruits" => "70-79: fructification",
485
	        "Fleurs et début ruits" => "70-79: fructification",
482
	        "Fleurs et fructification" => "70-79: fructification",
486
	        "Fleurs et fructification" => "70-79: fructification",
483
	        "floraison - fructification" => "70-79: fructification",
487
	        "floraison - fructification" => "70-79: fructification",
484
	        "floraison zet fructification" => "70-79: fructification",
488
	        "floraison zet fructification" => "70-79: fructification",
485
	        "Floraison, fructification" => "70-79: fructification",
489
	        "Floraison, fructification" => "70-79: fructification",
486
	        "floraison(fin) fructification" => "70-79: fructification",
490
	        "floraison(fin) fructification" => "70-79: fructification",
487
	        "floraison+ ou - finie" => "70-79: fructification",
491
	        "floraison+ ou - finie" => "70-79: fructification",
488
	        "fr1" => "70-79: fructification",
492
	        "fr1" => "70-79: fructification",
489
	        "quelques fruits rares" => "70-79: fructification",
493
	        "quelques fruits rares" => "70-79: fructification",
490
	        "stérile70-79: fructification" => "70-79: fructification",
494
	        "stérile70-79: fructification" => "70-79: fructification",
491
	        "toutes les fleurs épanouies et début fructification" => "70-79: fructification",
495
	        "toutes les fleurs épanouies et début fructification" => "70-79: fructification",
492
	        "fleurs et fruits" => "70-79: fructification",
496
	        "fleurs et fruits" => "70-79: fructification",
493
	        "Fleurs et jeunes fruits" => "70-79: fructification",
497
	        "Fleurs et jeunes fruits" => "70-79: fructification",
494
	        "floraison + fructification" => "70-79: fructification",
498
	        "floraison + fructification" => "70-79: fructification",
495
	        "Fructificaiton" => "70-79: fructification",
499
	        "Fructificaiton" => "70-79: fructification",
496
	        "fleurs et quelques fruits" => "70-79: fructification",
500
	        "fleurs et quelques fruits" => "70-79: fructification",
497
	        "Fleurs et surtout début defruits" => "70-79: fructification",
501
	        "Fleurs et surtout début defruits" => "70-79: fructification",
498
	        "floraison et fructification" => "70-79: fructification",
502
	        "floraison et fructification" => "70-79: fructification",
499
	        "fructification" => "70-79: fructification",
503
	        "fructification" => "70-79: fructification",
500
	        "Fleurs/fruits" => "70-79: fructification",
504
	        "Fleurs/fruits" => "70-79: fructification",
501
	        "fructification ?" => "70-79: fructification",
505
	        "fructification ?" => "70-79: fructification",
502
	        "80" => "80-89: maturité des fruits et des graines",
506
	        "80" => "80-89: maturité des fruits et des graines",
503
	        "81" => "80-89: maturité des fruits et des graines",
507
	        "81" => "80-89: maturité des fruits et des graines",
504
	        "82" => "80-89: maturité des fruits et des graines",
508
	        "82" => "80-89: maturité des fruits et des graines",
505
	        "83" => "80-89: maturité des fruits et des graines",
509
	        "83" => "80-89: maturité des fruits et des graines",
506
	        "84" => "80-89: maturité des fruits et des graines",
510
	        "84" => "80-89: maturité des fruits et des graines",
507
	        "86" => "80-89: maturité des fruits et des graines",
511
	        "86" => "80-89: maturité des fruits et des graines",
508
	        "87" => "80-89: maturité des fruits et des graines",
512
	        "87" => "80-89: maturité des fruits et des graines",
509
	        "88" => "80-89: maturité des fruits et des graines",
513
	        "88" => "80-89: maturité des fruits et des graines",
510
	        "89" => "80-89: maturité des fruits et des graines",
514
	        "89" => "80-89: maturité des fruits et des graines",
511
	        "-89: maturité des fruits et des graines" => "80-89: maturité des fruits et des graines",
515
	        "-89: maturité des fruits et des graines" => "80-89: maturité des fruits et des graines",
512
	        "80-89" => "80-89: maturité des fruits et des graines",
516
	        "80-89" => "80-89: maturité des fruits et des graines",
513
	        "80-89: maturité des fruits et des graines" => "80-89: maturité des fruits et des graines",
517
	        "80-89: maturité des fruits et des graines" => "80-89: maturité des fruits et des graines",
514
	        "80-89: maturité des fruits et des graines,début sénescence" => "80-89: maturité des fruits et des graines",
518
	        "80-89: maturité des fruits et des graines,début sénescence" => "80-89: maturité des fruits et des graines",
515
	        "80-95" => "80-89: maturité des fruits et des graines",
519
	        "80-95" => "80-89: maturité des fruits et des graines",
516
	        "88  maturité des fruits et des graines" => "80-89: maturité des fruits et des graines",
520
	        "88  maturité des fruits et des graines" => "80-89: maturité des fruits et des graines",
517
	        "89: maturité des fruits et des graines" => "80-89: maturité des fruits et des graines",
521
	        "89: maturité des fruits et des graines" => "80-89: maturité des fruits et des graines",
518
	        "floraison et fructification, graines mûres" => "80-89: maturité des fruits et des graines",
522
	        "floraison et fructification, graines mûres" => "80-89: maturité des fruits et des graines",
519
	        "floraison et maturation des graines" => "80-89: maturité des fruits et des graines",
523
	        "floraison et maturation des graines" => "80-89: maturité des fruits et des graines",
520
	        "fructification passée" => "80-89: maturité des fruits et des graines",
524
	        "fructification passée" => "80-89: maturité des fruits et des graines",
521
	        "Fruit" => "80-89: maturité des fruits et des graines",
525
	        "Fruit" => "80-89: maturité des fruits et des graines",
522
	        "Fruits" => "80-89: maturité des fruits et des graines",
526
	        "Fruits" => "80-89: maturité des fruits et des graines",
523
	        "85" => "85: 50% des fruits matures",
527
	        "85" => "85: 50% des fruits matures",
524
	        "50% des fruits matures (fructification d'Août)î" => "85: 50% des fruits matures",
528
	        "50% des fruits matures (fructification d'Août)î" => "85: 50% des fruits matures",
525
	        "85, mais avec encore des fleurs" => "85: 50% des fruits matures",
529
	        "85, mais avec encore des fleurs" => "85: 50% des fruits matures",
526
	        "85:" => "85: 50% des fruits matures",
530
	        "85:" => "85: 50% des fruits matures",
527
	        "85:   fruits matures 20" => "85: 50% des fruits matures",
531
	        "85:   fruits matures 20" => "85: 50% des fruits matures",
528
	        "85: 50% des fruits mature8" => "85: 50% des fruits matures",
532
	        "85: 50% des fruits mature8" => "85: 50% des fruits matures",
529
	        "85: 50% des fruits matures" => "85: 50% des fruits matures",
533
	        "85: 50% des fruits matures" => "85: 50% des fruits matures",
530
	        "85: 50% des fruits matures0" => "85: 50% des fruits matures",
534
	        "85: 50% des fruits matures0" => "85: 50% des fruits matures",
531
	        "85: 50% des fruits matures56" => "85: 50% des fruits matures",
535
	        "85: 50% des fruits matures56" => "85: 50% des fruits matures",
532
	        "85: 50% des fruits matures88" => "85: 50% des fruits matures",
536
	        "85: 50% des fruits matures88" => "85: 50% des fruits matures",
533
	        "88: 50% des fruits matures" => "85: 50% des fruits matures",
537
	        "88: 50% des fruits matures" => "85: 50% des fruits matures",
534
	        "90" => "90-99: sénescence et dormance",
538
	        "90" => "90-99: sénescence et dormance",
535
	        "91" => "90-99: sénescence et dormance",
539
	        "91" => "90-99: sénescence et dormance",
536
	        "92" => "90-99: sénescence et dormance",
540
	        "92" => "90-99: sénescence et dormance",
537
	        "94" => "90-99: sénescence et dormance",
541
	        "94" => "90-99: sénescence et dormance",
538
	        "95" => "90-99: sénescence et dormance",
542
	        "95" => "90-99: sénescence et dormance",
539
	        "97" => "90-99: sénescence et dormance",
543
	        "97" => "90-99: sénescence et dormance",
540
	        "98" => "90-99: sénescence et dormance",
544
	        "98" => "90-99: sénescence et dormance",
541
	        "99" => "90-99: sénescence et dormance",
545
	        "99" => "90-99: sénescence et dormance",
542
	        "100% de feuilles jaunes" => "90-99: sénescence et dormance",
546
	        "100% de feuilles jaunes" => "90-99: sénescence et dormance",
543
	        "80% feuillage d'automne" => "90-99: sénescence et dormance",
547
	        "80% feuillage d'automne" => "90-99: sénescence et dormance",
544
	        "90-99" => "90-99: sénescence et dormance",
548
	        "90-99" => "90-99: sénescence et dormance",
545
	        "90-99: sénescence et dormance" => "90-99: sénescence et dormance",
549
	        "90-99: sénescence et dormance" => "90-99: sénescence et dormance",
546
	        "95: environ 9% des feuilles jaunes" => "90-99: sénescence et dormance"
550
	        "95: environ 9% des feuilles jaunes" => "90-99: sénescence et dormance"
547
	    );*/
551
	    );*/
548
	    $phenologie = array("95: par ex, environ 9% des feuilles jaunes" => "91: par ex, environ 10% des feuilles jaunes", 
552
	    $phenologie = array("95: par ex, environ 9% des feuilles jaunes" => "91: par ex, environ 10% des feuilles jaunes", 
549
	        "90-99: sénescence et dormance" => "90-99: sénescence et dormance", "85: 50% des fruits matures" => "85: par ex, 50% des fruits matures", 
553
	        "90-99: sénescence et dormance" => "90-99: sénescence et dormance", "85: 50% des fruits matures" => "85: par ex, 50% des fruits matures", 
550
	        "85: par ex, 50% des fruits mature8" => "85: par ex, 50% des fruits matures", 
554
	        "85: par ex, 50% des fruits mature8" => "85: par ex, 50% des fruits matures", 
551
	        "85: par ex, 50% des fruits matures" => "85: par ex, 50% des fruits matures", 
555
	        "85: par ex, 50% des fruits matures" => "85: par ex, 50% des fruits matures", 
552
	        "85: par ex, 50% des fruits matures0" => "85: par ex, 50% des fruits matures", "85: par ex, 50% des fruits matures56" => "85: par ex, 50% des fruits matures", "85: par ex, 50% des fruits matures88" => "85: par ex, 50% des fruits matures", "88: par ex, 50% des fruits matures" => "85: par ex, 50% des fruits matures", "80-89: maturité des fruits et des graines" => "80-89: maturité des fruits et des graines", "80-89: maturité des fruits et des graines." => "80-89: maturité des fruits et des graines", "70-79: fructification" => "70-79: fructification", "70-79: fructification fruis non mure" => "70-79: fructification", "Fructificati" => "70-79: fructification", " 65" => "65: par ex, environ 50% des fleurs épanouies", "10: par ex, environ 50% des fleurs épanouies" => "65: par ex, environ 50% des fleurs épanouies", "65: environ 50% des fleurs épanouies" => "65: par ex, environ 50% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanoui" => "65: par ex, environ 50% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanouie6" => "65: par ex, environ 50% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanouies" => "65: par ex, environ 50% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanouies et fructification" => "65: par ex, environ 50% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanouies75" => "65: par ex, environ 50% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanouies78" => "65: par ex, environ 50% des fleurs épanouies", "67: par ex, environ 70% des fleurs épanouies + formation de gousses." => "65: par ex, environ 50% des fleurs épanouies", "68: par ex, environ 50% des fleurs épanouies" => "65: par ex, environ 50% des fleurs épanouies", "68: par ex, environ 80% des fleurs épanouies + formation des gousses." => "65: par ex, environ 50% des fleurs épanouies", "65 : par ex, environ 10% des fleurs ép" => "65 : par ex, environ 50% des fleurs épanouies", "65 : par ex, environ 50% des fleurs épa" => "65 : par ex, environ 50% des fleurs épanouies", "65 : par ex, environ 50% des fleurs épanouies" => "65 : par ex, environ 50% des fleurs épanouies", "65 : par ex, environ 50% des fleurs épanouies-75" => "65 : par ex, environ 50% des fleurs épanouies", "61: environ 10% des fleurs épanouies" => "61: par ex, environ 10% des fleurs épanouies", "61: par ex, environ 10% des fleurs épanouie" => "61: par ex, environ 10% des fleurs épanouies", "61: par ex, environ 10% des fleurs épanouies" => "61: par ex, environ 10% des fleurs épanouies", "61: par ex, environ 10% des fleurs épanouies63" => "61: par ex, environ 10% des fleurs épanouies", "61: par ex, environ 10% des fleurs épanouies68" => "61: par ex, environ 10% des fleurs épanouies", "61: par ex, environ 2% des fleurs épanouies" => "61: par ex, environ 10% des fleurs épanouies", "61: par ex, environ20% des fleurs épanouies" => "61: par ex, environ 10% des fleurs épanouies", "63: par ex, environ 3% des fleurs épanouies" => "61: par ex, environ 10% des fleurs épanouies", "65: par ex, environ 10% des fleurs épanouies" => "61: par ex, environ 10% des fleurs épanouies", "59-65" => "60-69: floraison", "60-69: floraison et fructificatio" => "60-69: floraison", "60-69 : floraison" => "60-69: floraison", "60-70" => "60-69: floraison", "65: par ex, environ 100% des fleurs épanouies" => "60-69: floraison", " épiaison" => "50-59: apparition de l'inflorescence, épiaison", "50-59: développement des bourgeons" => "50-59: apparition de l'inflorescence, épiaison", "50-59 : apparition de l’inflorescence" => "50-59: apparition de l'inflorescence, épiaison", "50-60" => "50-59: apparition de l'inflorescence, épiaison", "59-60" => "50-59: apparition de l'inflorescence, épiaison", "Apparition de l'inflorescence, épiaison" => "50-59: apparition de l'inflorescence, épiaison", "40-49: développement des organes de propagation végétative" => "40-49: développement des organes de propagation végétative", "30-39: développement des tiges, croissance des rosettes" => "30-39: développement des tiges, croissance des rosettes", "20-29" => "20-29: formation de pousses latérales, tallage", "20-29: formation de pousses latérales, tallage" => "20-29: formation de pousses latérales, tallage", "25" => "20-29: formation de pousses latérales, tallage", "Environ Formation de pousses latérales, tallage0% des feuilles épanouies" => "20-29: formation de pousses latérales, tallage", "Environ Formation de pousses latérales, tallage0% des fleurs épanouies" => "20-29: formation de pousses latérales, tallage", "15: par ex, environ % des feuilles épanouies" => "15: par ex, environ 50% des feuilles épanouies", "10-19: développement des feuilles" => "10-19: développement des feuilles", "10-19: développement des feuillesCry" => "10-19: développement des feuilles", "Développement des feuilles, début du débourrement, sortie de terre (géophytes)" => "10-19: développement des feuilles", "00-09: germination, développement des bourgeons" => "00-09: germination, développement des bourgeons", "bourgeon" => "00-09: germination, développement des bourgeons", 
556
	        "85: par ex, 50% des fruits matures0" => "85: par ex, 50% des fruits matures", "85: par ex, 50% des fruits matures56" => "85: par ex, 50% des fruits matures", "85: par ex, 50% des fruits matures88" => "85: par ex, 50% des fruits matures", "88: par ex, 50% des fruits matures" => "85: par ex, 50% des fruits matures", "80-89: maturité des fruits et des graines" => "80-89: maturité des fruits et des graines", "80-89: maturité des fruits et des graines." => "80-89: maturité des fruits et des graines", "70-79: fructification" => "70-79: fructification", "70-79: fructification fruis non mure" => "70-79: fructification", "Fructificati" => "70-79: fructification", " 65" => "65: par ex, environ 50% des fleurs épanouies", "10: par ex, environ 50% des fleurs épanouies" => "65: par ex, environ 50% des fleurs épanouies", "65: environ 50% des fleurs épanouies" => "65: par ex, environ 50% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanoui" => "65: par ex, environ 50% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanouie6" => "65: par ex, environ 50% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanouies" => "65: par ex, environ 50% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanouies et fructification" => "65: par ex, environ 50% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanouies75" => "65: par ex, environ 50% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanouies78" => "65: par ex, environ 50% des fleurs épanouies", "67: par ex, environ 70% des fleurs épanouies + formation de gousses." => "65: par ex, environ 50% des fleurs épanouies", "68: par ex, environ 50% des fleurs épanouies" => "65: par ex, environ 50% des fleurs épanouies", "68: par ex, environ 80% des fleurs épanouies + formation des gousses." => "65: par ex, environ 50% des fleurs épanouies", "65 : par ex, environ 10% des fleurs ép" => "65 : par ex, environ 50% des fleurs épanouies", "65 : par ex, environ 50% des fleurs épa" => "65 : par ex, environ 50% des fleurs épanouies", "65 : par ex, environ 50% des fleurs épanouies" => "65 : par ex, environ 50% des fleurs épanouies", "65 : par ex, environ 50% des fleurs épanouies-75" => "65 : par ex, environ 50% des fleurs épanouies", "61: environ 10% des fleurs épanouies" => "61: par ex, environ 10% des fleurs épanouies", "61: par ex, environ 10% des fleurs épanouie" => "61: par ex, environ 10% des fleurs épanouies", "61: par ex, environ 10% des fleurs épanouies" => "61: par ex, environ 10% des fleurs épanouies", "61: par ex, environ 10% des fleurs épanouies63" => "61: par ex, environ 10% des fleurs épanouies", "61: par ex, environ 10% des fleurs épanouies68" => "61: par ex, environ 10% des fleurs épanouies", "61: par ex, environ 2% des fleurs épanouies" => "61: par ex, environ 10% des fleurs épanouies", "61: par ex, environ20% des fleurs épanouies" => "61: par ex, environ 10% des fleurs épanouies", "63: par ex, environ 3% des fleurs épanouies" => "61: par ex, environ 10% des fleurs épanouies", "65: par ex, environ 10% des fleurs épanouies" => "61: par ex, environ 10% des fleurs épanouies", "59-65" => "60-69: floraison", "60-69: floraison et fructificatio" => "60-69: floraison", "60-69 : floraison" => "60-69: floraison", "60-70" => "60-69: floraison", "65: par ex, environ 100% des fleurs épanouies" => "60-69: floraison", " épiaison" => "50-59: apparition de l'inflorescence, épiaison", "50-59: développement des bourgeons" => "50-59: apparition de l'inflorescence, épiaison", "50-59 : apparition de l’inflorescence" => "50-59: apparition de l'inflorescence, épiaison", "50-60" => "50-59: apparition de l'inflorescence, épiaison", "59-60" => "50-59: apparition de l'inflorescence, épiaison", "Apparition de l'inflorescence, épiaison" => "50-59: apparition de l'inflorescence, épiaison", "40-49: développement des organes de propagation végétative" => "40-49: développement des organes de propagation végétative", "30-39: développement des tiges, croissance des rosettes" => "30-39: développement des tiges, croissance des rosettes", "20-29" => "20-29: formation de pousses latérales, tallage", "20-29: formation de pousses latérales, tallage" => "20-29: formation de pousses latérales, tallage", "25" => "20-29: formation de pousses latérales, tallage", "Environ Formation de pousses latérales, tallage0% des feuilles épanouies" => "20-29: formation de pousses latérales, tallage", "Environ Formation de pousses latérales, tallage0% des fleurs épanouies" => "20-29: formation de pousses latérales, tallage", "15: par ex, environ % des feuilles épanouies" => "15: par ex, environ 50% des feuilles épanouies", "10-19: développement des feuilles" => "10-19: développement des feuilles", "10-19: développement des feuillesCry" => "10-19: développement des feuilles", "Développement des feuilles, début du débourrement, sortie de terre (géophytes)" => "10-19: développement des feuilles", "00-09: germination, développement des bourgeons" => "00-09: germination, développement des bourgeons", "bourgeon" => "00-09: germination, développement des bourgeons", 
553
	        "Environ Germination, développement des bourgeons0% des fleurs épanouies" => "00-09: germination, développement des bourgeons");
557
	        "Environ Germination, développement des bourgeons0% des fleurs épanouies" => "00-09: germination, développement des bourgeons");
554
	    foreach ($phenologie as $valeur=>$saisie) {
558
	    foreach ($phenologie as $valeur=>$saisie) {
555
	        $requete = 'UPDATE '.$this->bd_cel.'.cel_obs SET phenologie = "'.$saisie.'" WHERE phenologie ="'.$valeur.'"';
559
	        $requete = 'UPDATE '.$this->bd_cel.'.cel_obs SET phenologie = "'.$saisie.'" WHERE phenologie ="'.$valeur.'"';
556
	        $this->bdd->requeter($requete);
560
	        $this->bdd->requeter($requete);
557
	        echo "effectuée \n";
561
	        echo "effectuée \n";
558
	    }
562
	    }
559
	    $requete_verif = "SELECT distinct phenologie FROM ".$this->bd_cel.'.cel_obs WHERE phenologie NOT IN 
563
	    $requete_verif = "SELECT distinct phenologie FROM ".$this->bd_cel.'.cel_obs WHERE phenologie NOT IN 
560
	        ("00-09: germination, développement des bourgeons", "10-19: développement des feuilles", 
564
	        ("00-09: germination, développement des bourgeons", "10-19: développement des feuilles", 
561
	        "11: par ex, environ 10% des feuilles épanouies", "15: par ex, environ 50% des feuilles épanouies", 
565
	        "11: par ex, environ 10% des feuilles épanouies", "15: par ex, environ 50% des feuilles épanouies", 
562
	        "20-29: formation de pousses latérales, tallage", "30-39: développement des tiges, croissance des rosettes", 
566
	        "20-29: formation de pousses latérales, tallage", "30-39: développement des tiges, croissance des rosettes", 
563
	        "40-49: développement des organes de propagation végétative", "50-59: apparition de l\'inflorescence, épiaison", 
567
	        "40-49: développement des organes de propagation végétative", "50-59: apparition de l\'inflorescence, épiaison", 
564
	        "60-69: floraison", "61: par ex, environ 10% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanouies",
568
	        "60-69: floraison", "61: par ex, environ 10% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanouies",
565
	        "70-79: fructification", "80-89: maturité des fruits et des graines", "85: par ex, 50% des fruits matures", 
569
	        "70-79: fructification", "80-89: maturité des fruits et des graines", "85: par ex, 50% des fruits matures", 
566
	        "90-99: sénescence et dormance", "91: par ex, environ 10% des feuilles jaunes", "95: par ex, environ 50% des feuilles jaunes")';
570
	        "90-99: sénescence et dormance", "91: par ex, environ 10% des feuilles jaunes", "95: par ex, environ 50% des feuilles jaunes")';
567
	    $verif = $this->bdd->recupererTous($requete_verif);
571
	    $verif = $this->bdd->recupererTous($requete_verif);
568
	    if ($verif != array()) print_r($verif);
572
	    if ($verif != array()) print_r($verif);
569
	}
573
	}
570
	
574
	
571
	private function unifierUtilisateur() {
575
	private function unifierUtilisateur() {
572
	    echo "vérification de la présence de l'annuaire \n";
576
	    echo "vérification de la présence de l'annuaire \n";
573
	    $requete = "SELECT * FROM ".$this->bd_cel.".`users`;";
577
	    $requete = "SELECT * FROM ".$this->bd_cel.".`users`;";
574
	    $result = $this->bdd->requeter($requete); 
578
	    $result = $this->bdd->requeter($requete); 
575
	    if ($result === NULL) {echo $requete;
579
	    if ($result === NULL) {echo $requete;
576
	        echo "Il manque la table annuaire (à recopier de telaorg users\n";
580
	        echo "Il manque la table annuaire (à recopier de telaorg users\n";
577
	        exit;
581
	        exit;
578
	    }
582
	    }
579
	    
583
	    
580
	    echo "suppression de le colonne ordre \n";
584
	    echo "suppression de le colonne ordre \n";
581
	    $requete = "ALTER TABLE ".$this->bd_cel.".cel_obs DROP INDEX id_obs;";
585
	    $requete = "ALTER TABLE ".$this->bd_cel.".cel_obs DROP INDEX id_obs;";
582
	    $this->bdd->requeter($requete);
586
	    $this->bdd->requeter($requete);
583
	    $requete = "ALTER TABLE ".$this->bd_cel.".cel_obs DROP INDEX ordre;";
587
	    $requete = "ALTER TABLE ".$this->bd_cel.".cel_obs DROP INDEX ordre;";
584
	    $this->bdd->requeter($requete);
588
	    $this->bdd->requeter($requete);
585
	    $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` DROP IF EXISTS `ordre`;";
589
	    $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` DROP IF EXISTS `ordre`;";
586
	    $this->bdd->requeter($requete);
590
	    $this->bdd->requeter($requete);
587
	    $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD IF NOT EXISTS pseudo  varchar(250);";
591
	    $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD IF NOT EXISTS pseudo  varchar(250);";
588
	    $this->bdd->requeter($requete);
592
	    $this->bdd->requeter($requete);
589
	    
593
	    
590
	    echo "modification des observations ayant une adresse mail en identifiant";
594
	    echo "modification des observations ayant une adresse mail en identifiant";
591
	    $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_obs` right join ".$this->bd_cel.".`users` ON `user_email` = ce_utilisateur SET `ce_utilisateur` = `ID`, pseudo = user_nicename, 
595
	    $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_obs` right join ".$this->bd_cel.".`users` ON `user_email` = ce_utilisateur SET `ce_utilisateur` = `ID`, pseudo = user_nicename, 
592
	        `courriel_utilisateur` =  `user_email`  WHERE ce_utilisateur like '%@%'";
596
	        `courriel_utilisateur` =  `user_email`  WHERE ce_utilisateur like '%@%'";
593
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
597
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
594
	    
598
	    
595
	    echo "modification des observations ayant une adresse mail mais pas d'identifiant";
599
	    echo "modification des observations ayant une adresse mail mais pas d'identifiant";
596
	    $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_obs` join ".$this->bd_cel.".`users` ON `user_email` = courriel_utilisateur SET `ce_utilisateur` = `ID`, pseudo = user_nicename,
600
	    $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_obs` join ".$this->bd_cel.".`users` ON `user_email` = courriel_utilisateur SET `ce_utilisateur` = `ID`, pseudo = user_nicename,
597
	        `courriel_utilisateur` =  `user_email`  WHERE (ce_utilisateur IS NULL OR CHAR_LENGTH(ce_utilisateur) > 6
601
	        `courriel_utilisateur` =  `user_email`  WHERE (ce_utilisateur IS NULL OR CHAR_LENGTH(ce_utilisateur) > 6
598
	        OR ce_utilisateur = 0) and courriel_utilisateur like '%@%'";
602
	        OR ce_utilisateur = 0) and courriel_utilisateur like '%@%'";
599
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
603
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
600
	    
604
	    
601
	    echo "modification des observations ayant un identifiant";
605
	    echo "modification des observations ayant un identifiant";
602
	    $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_obs` join ".$this->bd_cel.".`users` ON ID = ce_utilisateur SET pseudo = user_nicename,
606
	    $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_obs` join ".$this->bd_cel.".`users` ON ID = ce_utilisateur SET pseudo = user_nicename,
603
	        `courriel_utilisateur` =  `user_email` WHERE (ce_utilisateur IS NULL OR char_length(ce_utilisateur) > 6) and (courriel_utilisateur is null or courriel_utilisateur='')";
607
	        `courriel_utilisateur` =  `user_email` WHERE !(ce_utilisateur IS NULL OR char_length(ce_utilisateur) > 6) and (courriel_utilisateur is null or courriel_utilisateur='')";
604
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
608
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
605
	    
609
	    
606
	    echo "suppression des autres valeurs ce_utilisateur";
610
	    echo "suppression des autres valeurs ce_utilisateur";
607
	    $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_obs` SET ce_utilisateur = NULL, courriel_utilisateur = if (ce_utilisateur like '%@%'and (courriel_utilisateur is null or courriel_utilisateur='') , ce_utilisateur, courriel_utilisateur) WHERE ce_utilisateur IS NOT NULL AND char_length(ce_utilisateur) > 6";
611
	    $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_obs` SET ce_utilisateur = NULL, courriel_utilisateur = if (ce_utilisateur like '%@%'and (courriel_utilisateur is null or courriel_utilisateur='') , ce_utilisateur, courriel_utilisateur) WHERE ce_utilisateur IS NOT NULL AND char_length(ce_utilisateur) > 6";
608
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
612
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
609
	    
613
	    
610
	    echo "suppression des obs anonymes";
614
	    echo "suppression des obs anonymes";
611
	    $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_obs` WHERE (ce_utilisateur IS NULL OR char_length(ce_utilisateur) > 6
615
	    $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_obs` WHERE (ce_utilisateur IS NULL OR char_length(ce_utilisateur) > 6
612
	        OR ce_utilisateur = 0) and (`courriel_utilisateur` is null or `courriel_utilisateur` not like '%@%')";
616
	        OR ce_utilisateur = 0) and (`courriel_utilisateur` is null or `courriel_utilisateur` not like '%@%')";
613
	    $this->bdd->requeter($requete_anonyme);	   
617
	    $this->bdd->requeter($requete_anonyme);	   
614
	    
618
	    
615
	    $requete_verif = "SELECT `ce_utilisateur`, `prenom_utilisateur`, `nom_utilisateur`, `courriel_utilisateur`  FROM ".$this->bd_cel.".cel_obs 
619
	    $requete_verif = "SELECT `ce_utilisateur`, `prenom_utilisateur`, `nom_utilisateur`, `courriel_utilisateur`  FROM ".$this->bd_cel.".cel_obs 
616
	            WHERE ce_utilisateur IS NOT NULL OR char_length(ce_utilisateur) > 6";
620
	            WHERE ce_utilisateur IS NOT NULL OR char_length(ce_utilisateur) > 6";
617
	    $verif = $this->bdd->recupererTous($requete_verif);
621
	    $verif = $this->bdd->recupererTous($requete_verif);
618
	    if ($verif != array()) print_r($verif);
622
	    if ($verif != array()) print_r($verif);
619
	    echo "effectuée \n";
623
	    echo "effectuée \n";
620
	    $this->unifierUtilisateurTag("cel_arbre_mots_cles_obs");
624
	    $this->unifierUtilisateurTag("cel_arbre_mots_cles_obs");
621
	    $this->unifierUtilisateurTag("cel_arbre_mots_cles_images");
625
	    $this->unifierUtilisateurTag("cel_arbre_mots_cles_images");
622
	}
626
	}
623
	
627
	
624
	private function unifierUtilisateurTag($table) {
628
	private function unifierUtilisateurTag($table) {
625
	    echo "séparation des identifiants en ce_utilisateur et courriel";
629
	    echo "séparation des identifiants en ce_utilisateur et courriel";
626
	    $requete = "ALTER TABLE ".$this->bd_cel.".".$table." ADD courriel varchar(255);";
630
	    $requete = "ALTER TABLE ".$this->bd_cel.".".$table." ADD courriel varchar(255);";
627
	    $this->bdd->requeter($requete);
631
	    $this->bdd->requeter($requete);
628
	    $requete = "UPDATE ".$this->bd_cel.".".$table." SET courriel = id_utilisateur, 
632
	    $requete = "UPDATE ".$this->bd_cel.".".$table." SET courriel = id_utilisateur, 
629
	        id_utilisateur = NULL WHERE id_utilisateur like '%@%';";
633
	        id_utilisateur = 0 WHERE id_utilisateur like '%@%';";
630
	    $this->bdd->requeter($requete);
634
	    $this->bdd->requeter($requete);
631
	    echo "recherche des identifiants pour les tags ayant que des courriels dans users";
635
	    echo "recherche des identifiants pour les tags ayant que des courriels dans users";
632
	    $requete = "UPDATE ".$this->bd_cel.".".$table." join ".$this->bd_cel.".`users` ON `user_email` = courriel SET `id_utilisateur` = `ID`
636
	    $requete = "UPDATE ".$this->bd_cel.".".$table." join ".$this->bd_cel.".`users` ON `user_email` = courriel SET `id_utilisateur` = `ID`
633
	        WHERE courriel like '%@%';";
637
	        WHERE courriel like '%@%';";
634
	    $this->bdd->requeter($requete);
638
	    $this->bdd->requeter($requete);
635
	    echo "recherche des identifiants pour les tags ayant que des courriels dans obs";
639
	    echo "recherche des identifiants pour les tags ayant que des courriels dans obs";
636
	    $requete = "UPDATE ".$this->bd_cel.".".$table." t join ".$this->bd_cel.".`cel_obs` o ON 
640
	    $requete = "UPDATE ".$this->bd_cel.".".$table." t join ".$this->bd_cel.".`cel_obs` o ON 
637
	        `courriel` = courriel_utilisateur SET t.`id_utilisateur` = o.`ce_utilisateur`
641
	        `courriel` = courriel_utilisateur SET t.`id_utilisateur` = o.`ce_utilisateur`
638
	        WHERE courriel_utilisateur like '%@%';";
642
	        WHERE courriel_utilisateur like '%@%';";
639
	    $this->bdd->requeter($requete);
643
	    $this->bdd->requeter($requete);
640
	    echo "suppression des tags sans identifiant";
644
	    echo "suppression des tags sans identifiant";
641
	    $requete_anonyme = "DELETE FROM ".$this->bd_cel.".".$table." WHERE 
645
	    $requete_anonyme = "DELETE FROM ".$this->bd_cel.".".$table." WHERE 
642
	        (id_utilisateur IS NULL OR trim(id_utilisateur) = '') OR char_length(id_utilisateur) > 6";
646
	        (id_utilisateur IS NULL OR trim(id_utilisateur) = '') OR char_length(id_utilisateur) > 6";
643
	    $this->bdd->requeter($requete_anonyme);
647
	    $this->bdd->requeter($requete_anonyme);
644
	    if ($table == "cel_arbre_mots_cles_obs") {
648
	    if ($table == "cel_arbre_mots_cles_obs") {
645
    	    $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_obs_liaison` 
649
    	    $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_obs_liaison` 
646
    	        WHERE `id_element_lie` not in (SELECT `id_observation` FROM ".$this->bd_cel.".`cel_obs`) 
650
    	        WHERE `id_element_lie` not in (SELECT `id_observation` FROM ".$this->bd_cel.".`cel_obs`) 
647
    	            OR `id_mot_cle` NOT IN (SELECT `id_mot_cle` FROM ".$this->bd_cel.".`cel_arbre_mots_cles_obs`);";
651
    	            OR `id_mot_cle` NOT IN (SELECT `id_mot_cle` FROM ".$this->bd_cel.".`cel_arbre_mots_cles_obs`);";
648
    	    $this->bdd->requeter($requete_anonyme);
652
    	    $this->bdd->requeter($requete_anonyme);
649
	    } else {
653
	    } else {
650
	        $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_images_liaison` 
654
	        $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_images_liaison` 
651
	            WHERE `id_element_lie` not in (SELECT `id_image` FROM ".$this->bd_cel.".`cel_images`) 
655
	            WHERE `id_element_lie` not in (SELECT `id_image` FROM ".$this->bd_cel.".`cel_images`) 
652
	                OR `id_mot_cle` NOT IN (SELECT `id_mot_cle` FROM ".$this->bd_cel.".`cel_arbre_mots_cles_images`);";
656
	                OR `id_mot_cle` NOT IN (SELECT `id_mot_cle` FROM ".$this->bd_cel.".`cel_arbre_mots_cles_images`);";
653
	        $this->bdd->requeter($requete_anonyme);
657
	        $this->bdd->requeter($requete_anonyme);
654
	    }
658
	    }
655
	}
659
	}
656
	
660
	
657
	private function unifierInfosEspeces() {
661
	private function unifierInfosEspeces() {
658
	    echo "maj infos espèces \n";
662
	    echo "maj infos espèces \n";
659
	    /*$requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD infosnn  varchar(2), 
663
	    /*$requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD infosnn  varchar(2), 
660
	       ADD bd_nom_sci varchar(250), ADD bd_num_nom int(11), ADD bd_nom_sci_retenu varchar(250), 
664
	       ADD bd_nom_sci varchar(250), ADD bd_num_nom int(11), ADD bd_nom_sci_retenu varchar(250), 
661
	       ADD bd_num_nom_retenu int(11) ;";
665
	       ADD bd_num_nom_retenu int(11) ;";
662
	    $this->bdd->requeter($requete);
666
	    $this->bdd->requeter($requete);
663
	    */
667
	    */
664
	    $liste_referentiels = array("bdtfx" => "bdtfx_v6_00", "bdtre" => "bdtre_v1_00", 
668
	    $liste_referentiels = array("bdtfx" => "bdtfx_v6_00", "bdtre" => "bdtre_v1_00", 
665
	        "isfan" => "isfan_v2013", "apd" => "apd_v3_4_0", "bdtxa" => "bdtxa_v1_01", 
669
	        "isfan" => "isfan_v2013", "apd" => "apd_v3_4_0", "bdtxa" => "bdtxa_v1_01", 
666
	        "aublet" => "aublet_v2016_09", "florical" => "florical_v2016_04_22", "lbf" => "lbf_v1_00");
670
	        "aublet" => "aublet_v2016_09", "florical" => "florical_v2016_04_22", "lbf" => "lbf_v1_00");
667
	    
671
	    
668
	    $this->unifierInfosEspecesBDTFX();
672
	    $this->unifierInfosEspecesBDTFX();
669
	    foreach ($liste_referentiels as $ref => $version) {
673
	    foreach ($liste_referentiels as $ref => $version) {
670
    	    //Num nom et nom sci sont les mêmes
674
    	    //Num nom et nom sci sont les mêmes
671
    	    // chercher les versions
675
    	    // chercher les versions
672
    	    $requete = "UPDATE ".$this->bd_cel.".`cel_obs` 
676
    	    $requete = "UPDATE ".$this->bd_cel.".`cel_obs` 
673
    	        join (SELECT `num_nom`, `num_nom_retenu`, `nom_sci`, 
677
    	        join (SELECT `num_nom`, `num_nom_retenu`, `nom_sci`, 
674
    	        case when annee = '' THEN concat(`nom_sci`, ' ', auteur) ELSE concat(`nom_sci`, ' ', auteur, ' [',annee,']') END as nom_sci_complet, 
678
    	        case when annee = '' THEN concat(`nom_sci`, ' ', auteur) ELSE concat(`nom_sci`, ' ', auteur, ' [',annee,']') END as nom_sci_complet, 
675
    	        nom_sci_complet_ret FROM ".$this->bd_flore.".".$version.
679
    	        nom_sci_complet_ret FROM ".$this->bd_flore.".".$version.
676
    	        
680
    	        
677
    	        'left join (select `num_nom` as nn, `nom_sci` as nom_sci_ret, 
681
    	        'left join (select `num_nom` as nn, `nom_sci` as nom_sci_ret, 
678
    	        case when annee = "" THEN concat(`nom_sci`, " ", auteur) ELSE concat(`nom_sci`, " ", auteur, " [",annee,"]") END as nom_sci_complet_ret 
682
    	        case when annee = "" THEN concat(`nom_sci`, " ", auteur) ELSE concat(`nom_sci`, " ", auteur, " [",annee,"]") END as nom_sci_complet_ret 
679
    	        from ".$this->bd_flore.".".$version." where `num_nom` = `num_nom_retenu`) ret 
683
    	        from ".$this->bd_flore.".".$version." where `num_nom` = `num_nom_retenu`) ret 
680
    	            on `num_nom_retenu` = nn) bdtfx 
684
    	            on `num_nom_retenu` = nn) bdtfx 
681
    	        on `nom_sel_nn` = num_nom and `nom_sel` like concat(nom_sci,"%")
685
    	        on `nom_sel_nn` = num_nom and `nom_sel` like concat(nom_sci,"%")
682
    	        SET `nom_sel` = nom_sci_complet, `nom_sel_nn` = num_nom , `nom_ret` = nom_sci_complet_ret, `nom_ret_nn` = num_nom_retenu,
686
    	        SET `nom_sel` = nom_sci_complet, `nom_sel_nn` = num_nom , `nom_ret` = nom_sci_complet_ret, `nom_ret_nn` = num_nom_retenu,
683
    	        infosnn = 1
687
    	        infosnn = 1
684
    	        WHERE nom_referentiel = "'.$ref.'"';
688
    	        WHERE nom_referentiel = "'.$ref.'"';
685
    	    $this->bdd->requeter($requete);
689
    	    $this->bdd->requeter($requete);
686
    	    
690
    	    
687
    	    //Num nom id, nom sci !=
691
    	    //Num nom id, nom sci !=
688
    	    $requete = "UPDATE ".$this->bd_cel.".`cel_obs`
692
    	    $requete = "UPDATE ".$this->bd_cel.".`cel_obs`
689
    	        join (SELECT `num_nom`, `num_nom_retenu`, `nom_sci`,
693
    	        join (SELECT `num_nom`, `num_nom_retenu`, `nom_sci`,
690
    	        case when annee = '' THEN concat(`nom_sci`, ' ', auteur) ELSE concat(`nom_sci`, ' ', auteur, ' [',annee,']') END as nom_sci_complet,
694
    	        case when annee = '' THEN concat(`nom_sci`, ' ', auteur) ELSE concat(`nom_sci`, ' ', auteur, ' [',annee,']') END as nom_sci_complet,
691
    	        nom_sci_complet_ret FROM ".$this->bd_flore.".".$version.
695
    	        nom_sci_complet_ret FROM ".$this->bd_flore.".".$version.
692
    	        
696
    	        
693
    	        'left join (select `num_nom` as nn, `nom_sci` as nom_sci_ret,
697
    	        'left join (select `num_nom` as nn, `nom_sci` as nom_sci_ret,
694
    	        case when annee = "" THEN concat(`nom_sci`, " ", auteur) ELSE concat(`nom_sci`, " ", auteur, " [",annee,"]") END as nom_sci_complet_ret
698
    	        case when annee = "" THEN concat(`nom_sci`, " ", auteur) ELSE concat(`nom_sci`, " ", auteur, " [",annee,"]") END as nom_sci_complet_ret
695
    	        from ".$this->bd_flore.".".$version." where `num_nom` = `num_nom_retenu`) ret
699
    	        from ".$this->bd_flore.".".$version." where `num_nom` = `num_nom_retenu`) ret
696
    	            on `num_nom_retenu` = nn) bdtfx 
700
    	            on `num_nom_retenu` = nn) bdtfx 
697
    	            on `nom_sel_nn` = num_nom and and (nom_sel like concat(nom_sci,"%") and nom_ret like concat(nom_sci,"%")) 
701
    	            on `nom_sel_nn` = num_nom and and (nom_sel like concat(nom_sci,"%") and nom_ret like concat(nom_sci,"%")) 
698
    	                and (nom_sel like concat(nom_sci_ret,"%") and nom_ret like concat(nom_sci_ret,"%"))
702
    	                and (nom_sel like concat(nom_sci_ret,"%") and nom_ret like concat(nom_sci_ret,"%"))
699
    	        SET `nom_sel` = nom_sci_complet, `nom_sel_nn` = num_nom , `nom_ret` = nom_sci_complet_ret, `nom_ret_nn` = num_nom_retenu,
703
    	        SET `nom_sel` = nom_sci_complet, `nom_sel_nn` = num_nom , `nom_ret` = nom_sci_complet_ret, `nom_ret_nn` = num_nom_retenu,
700
    	        infosnn = 2 
704
    	        infosnn = 2 
701
    	        WHERE nom_referentiel = "'.$ref.'" and infosnn != 1';
705
    	        WHERE nom_referentiel = "'.$ref.'" and infosnn != 1';
702
    	    $this->bdd->requeter($requete);
706
    	    $this->bdd->requeter($requete);
703
    	    //
707
    	    //
704
	    }
708
	    }
705
	}
709
	}
706
	
710
	
707
	private function unifierInfosEspecesBDTFX() {
711
	private function unifierInfosEspecesBDTFX() {
708
	    echo "maj infos espèces \n";
712
	    echo "maj infos espèces \n";
709
	    /*$requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD infosnn  varchar(2),
713
	    /*$requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD infosnn  varchar(2),
710
	     ADD bd_nom_sci varchar(250), ADD bd_num_nom int(11), ADD bd_nom_sci_retenu varchar(250),
714
	     ADD bd_nom_sci varchar(250), ADD bd_num_nom int(11), ADD bd_nom_sci_retenu varchar(250),
711
	     ADD bd_num_nom_retenu int(11) ;";
715
	     ADD bd_num_nom_retenu int(11) ;";
712
	     $this->bdd->requeter($requete);
716
	     $this->bdd->requeter($requete);
713
	     */
717
	     */
714
	    
718
	    
715
	        //Num nom et nom sci sont les mêmes
719
	        //Num nom et nom sci sont les mêmes
716
	        // chercher les versions
720
	        // chercher les versions
717
	        $requete = "UPDATE ".$this->bd_cel.".`cel_obs`"
721
	        $requete = "UPDATE ".$this->bd_cel.".`cel_obs`"
718
    	        .' join bdtfx on `nom_sel_nn` = num_nom and `nom_sel` like concat(nom_sci, "%") 
722
    	        .' join '.$this->bd_flore.'bdtfx on `nom_sel_nn` = num_nom and `nom_sel` like concat(nom_sci, "%") 
719
    	            SET `nom_sel` = nom_sci_complet, `nom_sel_nn` = num_nom , 
723
    	            SET `nom_sel` = nom_sci_complet, `nom_sel_nn` = num_nom , 
720
    	            `nom_ret` = nom_ret_complet, `nom_ret_nn` = num_nom_retenu, 
724
    	            `nom_ret` = nom_ret_complet, `nom_ret_nn` = num_nom_retenu, 
721
    	            infosnn = 1 
725
    	            infosnn = 1 
722
    	            where `nom_referentiel` = "bdtfx" ';
726
    	            where `nom_referentiel` = "bdtfx" ';
723
	        $this->bdd->requeter($requete);
727
	        $this->bdd->requeter($requete);
724
	        
728
	        
725
	        //Num nom id, nom sci +-=
729
	        //Num nom id, nom sci +-=
726
	        $requete = "UPDATE ".$this->bd_cel.".`cel_obs`"
730
	        $requete = "UPDATE ".$this->bd_cel.".`cel_obs`"
727
	            .' join bdtfx on `nom_sel_nn` = num_nom and and (nom_sel like concat(nom_sci,"%") and nom_ret like concat(nom_sci,"%"))
731
	            .' join '.$this->bd_flore.'bdtfx on `nom_sel_nn` = num_nom and and (nom_sel like concat(nom_sci,"%") and nom_ret like concat(nom_sci,"%"))
728
    	            and (nom_sel like concat(nom_sci_ret,"%") and nom_ret like concat(nom_sci_ret,"%"))
732
    	            and (nom_sel like concat(nom_sci_ret,"%") and nom_ret like concat(nom_sci_ret,"%"))
729
	                SET `nom_sel` = nom_sci_complet, `nom_sel_nn` = num_nom ,
733
	                SET `nom_sel` = nom_sci_complet, `nom_sel_nn` = num_nom ,
730
    	            `nom_ret` = nom_ret_complet, `nom_ret_nn` = num_nom_retenu,
734
    	            `nom_ret` = nom_ret_complet, `nom_ret_nn` = num_nom_retenu,
731
    	            infosnn = 2
735
    	            infosnn = 2
732
    	            where `nom_referentiel` = "bdtfx"  and infosnn != "1"';
736
    	            where `nom_referentiel` = "bdtfx"  and infosnn != "1"';
733
	        $this->bdd->requeter($requete);
737
	        $this->bdd->requeter($requete);
734
	        
738
	        
735
	        //Num nom id, nom sci +-=
739
	        //Num nom id, nom sci +-=
736
	        $requete = "UPDATE ".$this->bd_cel.".`cel_obs`"
740
	        $requete = "UPDATE ".$this->bd_cel.".`cel_obs`"
737
	            .' join bdtfx on `nom_sel_nn` = num_nom and and (nom_sel not like concat(nom_sci,"%") and nom_ret not like concat(nom_sci,"%"))
741
	            .' join '.$this->bd_flore.'bdtfx on `nom_sel_nn` = num_nom and and (nom_sel not like concat(nom_sci,"%") and nom_ret not like concat(nom_sci,"%"))
738
    	            and (nom_sel not like concat(nom_sci_ret,"%") and nom_ret not like concat(nom_sci_ret,"%"))
742
    	            and (nom_sel not like concat(nom_sci_ret,"%") and nom_ret not like concat(nom_sci_ret,"%"))
739
	                SET `bd_nom_sci` = nom_sci_complet, `bd_num_nom` = num_nom ,
743
	                SET `bd_nom_sci` = nom_sci_complet, `bd_num_nom` = num_nom ,
740
    	            `bd_nom_sci_retenu` = nom_ret_complet, `bd_num_nom_retenu` = num_nom_retenu,
744
    	            `bd_nom_sci_retenu` = nom_ret_complet, `bd_num_nom_retenu` = num_nom_retenu,
741
    	            infosnn = 3
745
    	            infosnn = 3
742
    	            where `nom_referentiel` = "bdtfx"  and infosnn not in ("1", "2")';
746
    	            where `nom_referentiel` = "bdtfx"  and infosnn not in ("1", "2")';
743
	            $this->bdd->requeter($requete);
747
	            $this->bdd->requeter($requete);
744
	}
748
	}
745
	
749
	
746
	private function supprimerImagesetTagAnonymes() {
750
	private function supprimerImagesetTagAnonymes() {
747
	    echo "vérification de la présence de l'annuaire \n";
751
	    echo "vérification de la présence de l'annuaire \n";
748
	    $requete = "SELECT * FROM ".$this->bd_cel.".`users`;";
752
	    $requete = "SELECT * FROM ".$this->bd_cel.".`users`;";
749
	    $result = $this->bdd->requeter($requete);
753
	    $result = $this->bdd->requeter($requete);
750
	    if ($result === NULL) {
754
	    if ($result === NULL) {
751
	        echo $requete;
755
	        echo $requete;
752
	        echo "Il manque la table annuaire (à recopier de telaorg users\n";
756
	        echo "Il manque la table annuaire (à recopier de telaorg users\n";
753
	        exit;
757
	        exit;
754
	    }
758
	    }
755
	    
759
	    
756
	    echo "suppression de le colonne ordre \n";
760
	    echo "suppression de le colonne ordre \n";
757
	    $requete = "ALTER TABLE ".$this->bd_cel.".cel_images DROP INDEX id_img;";
761
	    $requete = "ALTER TABLE ".$this->bd_cel.".cel_images DROP INDEX id_img;";
758
	    $this->bdd->requeter($requete);
762
	    $this->bdd->requeter($requete);
759
	    $requete = "ALTER TABLE ".$this->bd_cel.".`cel_images` DROP IF EXISTS `ordre`;";
763
	    $requete = "ALTER TABLE ".$this->bd_cel.".`cel_images` DROP IF EXISTS `ordre`;";
760
	    $this->bdd->requeter($requete);
764
	    $this->bdd->requeter($requete);
761
	    $requete = "ALTER TABLE ".$this->bd_cel.".`cel_images` ADD IF NOT EXISTS pseudo  varchar(250);";
765
	    $requete = "ALTER TABLE ".$this->bd_cel.".`cel_images` ADD IF NOT EXISTS pseudo  varchar(250);";
762
	    $this->bdd->requeter($requete);
766
	    $this->bdd->requeter($requete);
763
	    
767
	    
764
	    echo "modification des images ayant une adresse mail en identifiant";
768
	    echo "modification des images ayant une adresse mail en identifiant";
765
	    $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_images` right join ".$this->bd_cel.".`users` ON `user_email` = ce_utilisateur SET `ce_utilisateur` = `ID`, pseudo = user_nicename,
769
	    $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_images` right join ".$this->bd_cel.".`users` ON `user_email` = ce_utilisateur SET `ce_utilisateur` = `ID`, pseudo = user_nicename,
766
	        `courriel_utilisateur` =  `user_email`  WHERE ce_utilisateur like '%@%'";
770
	        `courriel_utilisateur` =  `user_email`  WHERE ce_utilisateur like '%@%'";
767
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
771
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
768
	    
772
	    
769
	    echo "modification des images ayant une adresse mail mais pas d'identifiant";
773
	    echo "modification des images ayant une adresse mail mais pas d'identifiant";
770
	    $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_images` join ".$this->bd_cel.".`users` ON `user_email` = courriel_utilisateur SET `ce_utilisateur` = `ID`, pseudo = user_nicename,
774
	    $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_images` join ".$this->bd_cel.".`users` ON `user_email` = courriel_utilisateur SET `ce_utilisateur` = `ID`, pseudo = user_nicename,
771
	        `courriel_utilisateur` =  `user_email`  WHERE (ce_utilisateur IS NULL OR char_length(ce_utilisateur) > 6
775
	        `courriel_utilisateur` =  `user_email`  WHERE (ce_utilisateur IS NULL OR char_length(ce_utilisateur) > 6
772
	        OR ce_utilisateur = 0) and courriel_utilisateur like '%@%'";
776
	        OR ce_utilisateur = 0) and courriel_utilisateur like '%@%'";
773
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
777
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
774
	    
778
	    
775
	    echo "modification des images ayant un identifiant";
779
	    echo "modification des images ayant un identifiant";
776
	    $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_images` join ".$this->bd_cel.".`users` ON ID = ce_utilisateur SET pseudo = user_nicename,
780
	    $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_images` join ".$this->bd_cel.".`users` ON ID = ce_utilisateur SET pseudo = user_nicename,
777
	        `courriel_utilisateur` =  `user_email` WHERE (ce_utilisateur IS NULL OR char_length(ce_utilisateur) > 6) and (courriel_utilisateur is null or courriel_utilisateur='')";
781
	        `courriel_utilisateur` =  `user_email` WHERE (ce_utilisateur IS NULL OR char_length(ce_utilisateur) > 6) and (courriel_utilisateur is null or courriel_utilisateur='')";
778
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
782
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
779
	    
783
	    
780
	    echo "suppression des autres valeurs ce_utilisateur";
784
	    echo "suppression des autres valeurs ce_utilisateur";
781
	    $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_images` SET ce_utilisateur = NULL, courriel_utilisateur = if (ce_utilisateur like '%@%'and (courriel_utilisateur is null or courriel_utilisateur='') , ce_utilisateur, courriel_utilisateur) 
785
	    $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_images` SET ce_utilisateur = NULL, courriel_utilisateur = if (ce_utilisateur like '%@%'and (courriel_utilisateur is null or courriel_utilisateur='') , ce_utilisateur, courriel_utilisateur) 
782
	        WHERE ce_utilisateur IS NOT NULL AND (LENGTH(ce_utilisateur) > 6 OR trim(ce_utilisateur) = '')";
786
	        WHERE ce_utilisateur IS NOT NULL AND (LENGTH(ce_utilisateur) > 6 OR trim(ce_utilisateur) = '')";
783
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
787
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
784
	    
788
	    
785
	    
789
	    
786
	    echo "suppression des images\n";
790
	    echo "suppression des images\n";
787
	    $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_images` WHERE (ce_utilisateur IS NULL OR char_length(ce_utilisateur) > 6
791
	    $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_images` WHERE (ce_utilisateur IS NULL OR char_length(ce_utilisateur) > 6
788
	        OR ce_utilisateur = 0) and (`courriel_utilisateur` is null or `courriel_utilisateur` not like '%@%')";
792
	        OR ce_utilisateur = 0) and (`courriel_utilisateur` is null or `courriel_utilisateur` not like '%@%')";
789
	    $this->bdd->requeter($requete_anonyme);
793
	    $this->bdd->requeter($requete_anonyme);
790
	    
794
	    
791
 
795
 
792
	  /*  echo "suppression des tags obs anonymes";
796
	  /*  echo "suppression des tags obs anonymes";
793
	    $requete_create = "CREATE TABLE ".$this->bd_cel.".user_mot_cle_absent AS SELECT distinct id_utilisateur FROM ".$this->bd_cel.".cel_arbre_mots_cles_obs WHERE id_utilisateur not in
797
	    $requete_create = "CREATE TABLE ".$this->bd_cel.".user_mot_cle_absent AS SELECT distinct id_utilisateur FROM ".$this->bd_cel.".cel_arbre_mots_cles_obs WHERE id_utilisateur not in
794
	            (SELECT distinct id_utilisateur FROM ".$this->bd_cel.".cel_arbre_mots_cles_obs WHERE id_utilisateur in
798
	            (SELECT distinct id_utilisateur FROM ".$this->bd_cel.".cel_arbre_mots_cles_obs WHERE id_utilisateur in
795
	            (select distinct ce_utilisateur from ".$this->bd_cel.".cel_obs) or
799
	            (select distinct ce_utilisateur from ".$this->bd_cel.".cel_obs) or
796
	            id_utilisateur in (SELECT distinct courriel_utilisateur FROM ".$this->bd_cel.".cel_obs))";
800
	            id_utilisateur in (SELECT distinct courriel_utilisateur FROM ".$this->bd_cel.".cel_obs))";
797
	    $this->bdd->requeter($requete_create);
801
	    $this->bdd->requeter($requete_create);
798
	    $requete_index = "ALTER TABLE ".$this->bd_cel.".`user_mot_cle_absent` ADD PRIMARY KEY(`id_utilisateur`);";
802
	    $requete_index = "ALTER TABLE ".$this->bd_cel.".`user_mot_cle_absent` ADD PRIMARY KEY(`id_utilisateur`);";
799
	    $this->bdd->requeter($requete_index);
803
	    $this->bdd->requeter($requete_index);
800
	    $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_arbre_mots_cles_obs` WHERE `id_utilisateur` in (SELECT * FROM ".$this->bd_cel.".`user_mot_cle_absent`);";
804
	    $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_arbre_mots_cles_obs` WHERE `id_utilisateur` in (SELECT * FROM ".$this->bd_cel.".`user_mot_cle_absent`);";
801
	    $this->bdd->requeter($requete_anonyme);
805
	    $this->bdd->requeter($requete_anonyme);
802
	    $requete_anonyme = "DROP TABLE ".$this->bd_cel.".user_mot_cle_absent;";
806
	    $requete_anonyme = "DROP TABLE ".$this->bd_cel.".user_mot_cle_absent;";
803
	    $this->bdd->requeter($requete_anonyme);
807
	    $this->bdd->requeter($requete_anonyme);
804
	    $requete_anonyme = "UPDATE ".$this->bd_cel.".`cel_arbre_mots_cles_obs` a join ".$this->bd_cel.".cel_obs b on a.`id_utilisateur` = b.courriel_utilisateur SET a.`id_utilisateur` = b.ce_utilisateur
808
	    $requete_anonyme = "UPDATE ".$this->bd_cel.".`cel_arbre_mots_cles_obs` a join ".$this->bd_cel.".cel_obs b on a.`id_utilisateur` = b.courriel_utilisateur SET a.`id_utilisateur` = b.ce_utilisateur
805
	        WHERE b.ce_utilisateur IS NOT NULL AND b.ce_utilisateur != ''";
809
	        WHERE b.ce_utilisateur IS NOT NULL AND b.ce_utilisateur != ''";
806
	    $this->bdd->requeter($requete_anonyme);*/
810
	    $this->bdd->requeter($requete_anonyme);*/
807
	    
811
	    
808
	}
812
	}
809
	
813
	
810
	private function unifierNomReferentiel() {
814
	private function unifierNomReferentiel() {
811
		echo "Uniformisation du nom de référentiel";
815
		echo "Uniformisation du nom de référentiel";
812
		$referentiels = array("bdtfx", "bdtre", "bdtxa", "apd", "lbf", "isfan");
816
		$referentiels = array("bdtfx", "bdtre", "bdtxa", "apd", "lbf", "isfan");
813
		foreach ($referentiels as $referentiel) {
817
		foreach ($referentiels as $referentiel) {
814
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = '".$referentiel."' WHERE nom_referentiel like '".$referentiel."%'";
818
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = '".$referentiel."' WHERE nom_referentiel like '".$referentiel."%'";
815
			$this->bdd->requeter($requete);
819
			$this->bdd->requeter($requete);
816
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = 'Autre/inconnu' WHERE nom_sel_nn IS NULL or nom_sel_nn = '0'";
820
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = 'Autre/inconnu' WHERE nom_sel_nn IS NULL or nom_sel_nn = '0'";
817
			$this->bdd->requeter($requete);
821
			$this->bdd->requeter($requete);
818
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = 'apd' WHERE nom_referentiel like 'bdtao%'";
822
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = 'apd' WHERE nom_referentiel like 'bdtao%'";
819
			$this->bdd->requeter($requete);
823
			$this->bdd->requeter($requete);
820
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = 'bdtfx' WHERE nom_referentiel like 'bdnff%'";
824
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = 'bdtfx' WHERE nom_referentiel like 'bdnff%'";
821
			$this->bdd->requeter($requete);
825
			$this->bdd->requeter($requete);
822
			echo "effectuée \n";
826
			echo "effectuée \n";
823
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = 'Autre/inconnu' WHERE nom_referentiel IS NULL or nom_referentiel = ''";
827
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = 'Autre/inconnu' WHERE nom_referentiel IS NULL or nom_referentiel = ''";
824
			$this->bdd->requeter($requete);
828
			$this->bdd->requeter($requete);
825
			echo "effectuée \n";
829
			echo "effectuée \n";
826
		}
830
		}
827
		$requete_verif = "SELECT nom_referentiel FROM ".$this->bd_cel.".cel_obs WHERE nom_referentiel NOT IN ('".implode("', '", $referentiels)."', 'Autre/inconnu')";
831
		$requete_verif = "SELECT nom_referentiel FROM ".$this->bd_cel.".cel_obs WHERE nom_referentiel NOT IN ('".implode("', '", $referentiels)."', 'Autre/inconnu')";
828
		$verif = $this->bdd->recupererTous($requete_verif);
832
		$verif = $this->bdd->recupererTous($requete_verif);
829
		if ($verif != array()) print_r($verif);
833
		if ($verif != array()) print_r($verif);
830
	}
834
	}
831
	
835
	
832
	private function supprimerInfosLiesObsInexistante() {
836
	private function supprimerInfosLiesObsInexistante() {
833
	    echo "Supprimer infos liés à obs inexistante";
837
	    echo "Supprimer infos liés à obs inexistante";
834
	    $requete = "DELETE FROM ".$this->bd_cel.".`cel_obs_etendues` WHERE `id_observation` not in (select `id_observation` from ".$this->bd_cel.".cel_obs);";
838
	    $requete = "DELETE FROM ".$this->bd_cel.".`cel_obs_etendues` WHERE `id_observation` not in (select `id_observation` from ".$this->bd_cel.".cel_obs);";
835
	    $this->bdd->requeter($requete);
839
	    $this->bdd->requeter($requete);
836
	    $requete = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_obs_liaison` WHERE `id_element_lie` not in (select `id_observation` from ".$this->bd_cel.".cel_obs);";
840
	    $requete = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_obs_liaison` WHERE `id_element_lie` not in (select `id_observation` from ".$this->bd_cel.".cel_obs);";
837
	    $this->bdd->requeter($requete);
841
	    $this->bdd->requeter($requete);
838
	    $requete = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_obs_liaison` WHERE `id_mot_cle` not in (SELECT `id_mot_cle` FROM ".$this->bd_cel.".`cel_arbre_mots_cles_obs`);";
842
	    $requete = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_obs_liaison` WHERE `id_mot_cle` not in (SELECT `id_mot_cle` FROM ".$this->bd_cel.".`cel_arbre_mots_cles_obs`);";
839
	    $this->bdd->requeter($requete);
843
	    $this->bdd->requeter($requete);
840
	    $requete = "DELETE FROM ".$this->bd_cel.".`cel_images`  WHERE `ce_observation` is not null and `ce_observation` not in (select id_observation from ".$this->bd_cel.".cel_obs)";
844
	    $requete = "DELETE FROM ".$this->bd_cel.".`cel_images`  WHERE `ce_observation` is not null and `ce_observation` not in (select id_observation from ".$this->bd_cel.".cel_obs)";
841
	    $this->bdd->requeter($requete);
845
	    $this->bdd->requeter($requete);
842
	    $requete = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_images_liaison` WHERE `id_element_lie` not in (select `id_image` from ".$this->bd_cel.".cel_images);";
846
	    $requete = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_images_liaison` WHERE `id_element_lie` not in (select `id_image` from ".$this->bd_cel.".cel_images);";
843
	    $this->bdd->requeter($requete);
847
	    $this->bdd->requeter($requete);
844
	    $requete = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_images_liaison` WHERE `id_mot_cle` not in (SELECT `id_mot_cle` FROM ".$this->bd_cel.".`cel_arbre_mots_cles_images`);";
848
	    $requete = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_images_liaison` WHERE `id_mot_cle` not in (SELECT `id_mot_cle` FROM ".$this->bd_cel.".`cel_arbre_mots_cles_images`);";
845
	    $this->bdd->requeter($requete);
849
	    $this->bdd->requeter($requete);
846
	    echo "effectuée \n";
850
	    echo "effectuée \n";
847
	}
851
	}
848
	
852
	
849
	private function verifierGeodatum() {
853
	private function verifierGeodatum() {
850
		echo "Uniformisation du geodatum";
854
		echo "Uniformisation du geodatum";
851
		$requete = "UPDATE ".$this->bd_cel.".cel_obs SET geodatum = 'WGS84' WHERE (latitude IS NOT NULL or latitude != '0.00000') AND geodatum IS NULL";
855
		$requete = "UPDATE ".$this->bd_cel.".cel_obs SET geodatum = 'WGS84' WHERE (latitude IS NOT NULL or latitude != '0.00000') AND geodatum IS NULL";
852
		$this->bdd->requeter($requete);
856
		$this->bdd->requeter($requete);
853
		$requete = "UPDATE ".$this->bd_cel.".cel_obs SET geodatum = NULL WHERE (latitude IS NULL or latitude = '0.00000')";
857
		$requete = "UPDATE ".$this->bd_cel.".cel_obs SET geodatum = NULL WHERE (latitude IS NULL or latitude = '0.00000')";
854
		$this->bdd->requeter($requete);
858
		$this->bdd->requeter($requete);
855
		echo "effectuée \n";
859
		echo "effectuée \n";
856
		echo "Suppression des coordonnées fausses : ";
860
		echo "Suppression des coordonnées fausses : ";
857
		$requete = "UPDATE ".$this->bd_cel.".cel_obs SET latitude = NULL, longitude = NULL WHERE latitude < -90 OR latitude > 90 OR longitude < -180 OR longitude > 180";
861
		$requete = "UPDATE ".$this->bd_cel.".cel_obs SET latitude = NULL, longitude = NULL WHERE latitude < -90 OR latitude > 90 OR longitude < -180 OR longitude > 180";
858
		$this->bdd->requeter($requete);
862
		$this->bdd->requeter($requete);
859
		echo "effectuée \n";
863
		echo "effectuée \n";
860
	}
864
	}
861
	
865
	
862
	private function verifierCodeInsee() {
866
	private function verifierCodeInsee() {
863
	    echo "Mise à jour des valeurs code_insee";
867
	    echo "Mise à jour des valeurs code_insee";
864
	    $requete = 'UPDATE `cel_obs` SET `ce_zone_geo` = NULL, 
868
	    $requete = 'UPDATE '.$this->bd_cel.'.`cel_obs` SET `ce_zone_geo` = NULL, 
865
	        commentaire = concat(if(commentaire is null, "", concat(commentaire, ", ")), if(ce_zone_geo is null, "", concat("Zone geo : ",ce_zone_geo))) where `ce_zone_geo` not like "insee-c%"';
869
	        commentaire = concat(if(commentaire is null, "", concat(commentaire, ", ")), if(ce_zone_geo is null, "", concat("Zone geo : ",ce_zone_geo))) where `ce_zone_geo` not like "insee-c%"';
866
	    $this->bdd->requeter($requete);
870
	    $this->bdd->requeter($requete);
867
	    $requete = 'UPDATE `cel_obs` SET `ce_zone_geo` = substr(`ce_zone_geo`, 9, 5) where `ce_zone_geo` like "insee-c:%"';
871
	    $requete = 'UPDATE '.$this->bd_cel.'.`cel_obs` SET `ce_zone_geo` = substr(`ce_zone_geo`, 9, 5) where `ce_zone_geo` like "insee-c:%"';
868
	    $this->bdd->requeter($requete);
872
	    $this->bdd->requeter($requete);
869
	    $requete = 'UPDATE `cel_obs` SET `ce_zone_geo` = NULL where trim(`ce_zone_geo`) = ""';
873
	    $requete = 'UPDATE '.$this->bd_cel.'.`cel_obs` SET `ce_zone_geo` = NULL where trim(`ce_zone_geo`) = ""';
870
	    $this->bdd->requeter($requete);
874
	    $this->bdd->requeter($requete);
871
	    echo "effectuée \n";
875
	    echo "effectuée \n";
872
	    
876
	    
873
	    
877
	    
874
	    echo "Vérification du code insee";
878
	    echo "Vérification du code insee";
875
	    $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD IF NOT EXISTS `locality_consistency` INT(1) ;";
879
	    $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD IF NOT EXISTS `locality_consistency` INT(1) ;";
876
	    $this->bdd->requeter($requete);
880
	    $this->bdd->requeter($requete);
877
	    
881
	    
878
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET locality_consistency = '0' WHERE 
882
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET locality_consistency = '0' WHERE 
879
	        ((ce_zone_geo != 'INSEE-C:' and ce_zone_geo like 'INSEE-C:%') and code_insee_calcule != '') and 
883
	        ((ce_zone_geo != 'INSEE-C:' and ce_zone_geo like 'INSEE-C:%') and code_insee_calcule != '') and 
880
	        replace(`ce_zone_geo`, 'INSEE-C:', '') != `code_insee_calcule`";
884
	        replace(`ce_zone_geo`, 'INSEE-C:', '') != `code_insee_calcule`";
881
	    $this->bdd->requeter($requete);
885
	    $this->bdd->requeter($requete);
882
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET locality_consistency = '1' WHERE
886
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET locality_consistency = '1' WHERE
883
	        ((ce_zone_geo != 'INSEE-C:' and ce_zone_geo like 'INSEE-C:%') and code_insee_calcule != '') and
887
	        ((ce_zone_geo != 'INSEE-C:' and ce_zone_geo like 'INSEE-C:%') and code_insee_calcule != '') and
884
	        replace(`ce_zone_geo`, 'INSEE-C:', '') = `code_insee_calcule`";
888
	        replace(`ce_zone_geo`, 'INSEE-C:', '') = `code_insee_calcule`";
885
	    $this->bdd->requeter($requete);
889
	    $this->bdd->requeter($requete);
886
	    
890
	    
887
	    $requete_verif = "SELECT `ce_zone_geo`, `code_insee_calcule`, `locality_consistency` FROM `cel_obs` WHERE `locality_consistency` IS NOT NULL";
891
	    $requete_verif = "SELECT `ce_zone_geo`, `code_insee_calcule`, `locality_consistency` FROM `cel_obs` WHERE `locality_consistency` IS NOT NULL";
888
	    $verif = $this->bdd->recupererTous($requete_verif);
892
	    $verif = $this->bdd->recupererTous($requete_verif);
889
	    if ($verif != array()) print_r($verif);
893
	    if ($verif != array()) print_r($verif);
890
	    echo "effectuée \n";
894
	    echo "effectuée \n";
891
	}
895
	}
892
	
896
	
893
	private function analyserMotsCles(){
897
	private function analyserMotsCles(){
894
	    echo "Input source \n";
898
	    echo "Input source \n";
895
	    $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD IF NOT EXISTS `input_source` VARCHAR(15)";
899
	    $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD IF NOT EXISTS `input_source` VARCHAR(15)";
896
	    $this->bdd->requeter($requete);
900
	    $this->bdd->requeter($requete);
897
	    
901
	    
898
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET input_source = 'PlantNet' WHERE `mots_cles_texte` like '%plantnet%'";
902
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET input_source = 'PlantNet' WHERE `mots_cles_texte` like '%plantnet%'";
899
	    $this->bdd->requeter($requete);
903
	    $this->bdd->requeter($requete);
900
	    
904
	    
901
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET input_source = 'autre' WHERE `mots_cles_texte` like '%MobileSauvages%'";
905
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET input_source = 'autre' WHERE `mots_cles_texte` like '%MobileSauvages%'";
902
	    $this->bdd->requeter($requete);
906
	    $this->bdd->requeter($requete);
903
	    
907
	    
904
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET input_source = 'widget' WHERE `mots_cles_texte` like '%Projets coopératifs%' and (input_source = '' OR input_source IS NULL)";
908
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET input_source = 'widget' WHERE `mots_cles_texte` like '%Projets coopératifs%' and (input_source = '' OR input_source IS NULL)";
905
	    $this->bdd->requeter($requete);
909
	    $this->bdd->requeter($requete);
906
	    
910
	    
907
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET input_source = 'widget' WHERE `mots_cles_texte` like '%widget%' and (input_source = '' OR input_source IS NULL)";
911
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET input_source = 'widget' WHERE `mots_cles_texte` like '%widget%' and (input_source = '' OR input_source IS NULL)";
908
	    $this->bdd->requeter($requete);
912
	    $this->bdd->requeter($requete);
909
	    
913
	    
910
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET input_source = 'CEL' WHERE input_source = '' OR input_source IS NULL";
914
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET input_source = 'CEL' WHERE input_source = '' OR input_source IS NULL";
911
	    $this->bdd->requeter($requete);
915
	    $this->bdd->requeter($requete);
912
	    
916
	    
913
	    echo "Suppression motcle du chemin \n";
917
	    echo "Suppression motcle du chemin \n";
914
	    $requete = "UPDATE ".$this->bd_cel.".`cel_arbre_mots_cles_obs` SET chemin = 
918
	    $requete = "UPDATE ".$this->bd_cel.".`cel_arbre_mots_cles_obs` SET chemin = 
915
	        if(CHAR_LENGTH(chemin)-CHAR_LENGTH(`mot_cle`) = 2, '\/', substr(`chemin`, 1, CHAR_LENGTH(chemin)-CHAR_LENGTH(`mot_cle`)-2))";
919
	        if(CHAR_LENGTH(chemin)-CHAR_LENGTH(`mot_cle`) = 2, '\/', substr(`chemin`, 1, CHAR_LENGTH(chemin)-CHAR_LENGTH(`mot_cle`)-2))";
916
	    $this->bdd->requeter($requete);
920
	    $this->bdd->requeter($requete);
917
	    
921
	    
918
	    $requete = "UPDATE ".$this->bd_cel.".`cel_arbre_mots_cles_images` SET chemin = 
922
	    $requete = "UPDATE ".$this->bd_cel.".`cel_arbre_mots_cles_images` SET chemin = 
919
	        substr(`chemin`, 1, CHAR_LENGTH(chemin)-CHAR_LENGTH(`mot_cle`)-1)";
923
	        substr(`chemin`, 1, CHAR_LENGTH(chemin)-CHAR_LENGTH(`mot_cle`)-1)";
920
	    $this->bdd->requeter($requete);
924
	    $this->bdd->requeter($requete);
921
	    
925
	    
922
	    echo "Certitude à certaine quand obs validée sur ip \n";
926
	    echo "Certitude à certaine quand obs validée sur ip \n";
923
	    $requete = "UPDATE ".$this->bd_cel.".`cel_obs` c left join 
927
	    $requete = "UPDATE ".$this->bd_cel.".`cel_obs` c left join 
924
	        (SELECT distinct `ce_observation`, `nom_sel_nn` 
928
	        (SELECT distinct `ce_observation`, `nom_sel_nn` 
925
	        FROM ".$this->bd_del.".`del_commentaire` WHERE `proposition_retenue` = 1) d on 
929
	        FROM ".$this->bd_del.".`del_commentaire` WHERE `proposition_retenue` = 1) d on 
926
	        `ce_observation` = `id_observation` SET `certitude` = 'certain' 
930
	        `ce_observation` = `id_observation` SET `certitude` = 'certain' 
927
	        WHERE (c.`mots_cles_texte` LIKE '%adeterminer%' 
931
	        WHERE (c.`mots_cles_texte` LIKE '%adeterminer%' 
928
	        or c.`certitude` = 'à déterminer') and c.`nom_sel_nn` = d.`nom_sel_nn`";
932
	        or c.`certitude` = 'à déterminer') and c.`nom_sel_nn` = d.`nom_sel_nn`";
929
	    $this->bdd->requeter($requete);
933
	    $this->bdd->requeter($requete);
930
	    
934
	    
931
	    echo "Certitude à douteux quand obs validée sur ip mais num_nom diff entre ip et cel \n";
935
	    echo "Certitude à douteux quand obs validée sur ip mais num_nom diff entre ip et cel \n";
932
	    $requete = "UPDATE ".$this->bd_cel.".`cel_obs` c left join
936
	    $requete = "UPDATE ".$this->bd_cel.".`cel_obs` c left join
933
	        (SELECT distinct `ce_observation`, `nom_sel_nn`
937
	        (SELECT distinct `ce_observation`, `nom_sel_nn`
934
	        FROM ".$this->bd_del.".`del_commentaire`  WHERE `proposition_retenue` = 1 ) d on
938
	        FROM ".$this->bd_del.".`del_commentaire`  WHERE `proposition_retenue` = 1 ) d on
935
	        `ce_observation` = `id_observation` SET `certitude` = 'douteux'
939
	        `ce_observation` = `id_observation` SET `certitude` = 'douteux'
936
	        WHERE (c.`mots_cles_texte` LIKE '%adeterminer%'
940
	        WHERE (c.`mots_cles_texte` LIKE '%adeterminer%'
937
	        or c.`certitude` = 'à déterminer') and c.`nom_sel_nn` != d.`nom_sel_nn`";
941
	        or c.`certitude` = 'à déterminer') and c.`nom_sel_nn` != d.`nom_sel_nn`";
938
	    $this->bdd->requeter($requete);
942
	    $this->bdd->requeter($requete);
939
	    
943
	    
940
	    echo "Certitude à aDeterminer quand obs non validée sur ip \n";
944
	    echo "Certitude à aDeterminer quand obs non validée sur ip \n";
941
	    $requete = "UPDATE ".$this->bd_cel.".`cel_obs` c SET `certitude` = 'à déterminer'
945
	    $requete = "UPDATE ".$this->bd_cel.".`cel_obs` c SET `certitude` = 'à déterminer'
942
	        WHERE c.`mots_cles_texte` LIKE '%adeterminer%' AND 
946
	        WHERE c.`mots_cles_texte` LIKE '%adeterminer%' AND 
943
	        (c.`certitude` = '' or c.certitude IS NULL)";
947
	        (c.`certitude` = '' or c.certitude IS NULL)";
944
	    $this->bdd->requeter($requete);
948
	    $this->bdd->requeter($requete);
945
	    
949
	    
946
	    $requete = "UPDATE ".$this->bd_cel.".`cel_obs` SET 
950
	    $requete = "UPDATE ".$this->bd_cel.".`cel_obs` SET 
947
	        `mots_cles_texte` = REPLACE(`mots_cles_texte`, 'aDeterminer,', '')
951
	        `mots_cles_texte` = REPLACE(`mots_cles_texte`, 'aDeterminer,', '')
948
	        WHERE `mots_cles_texte` LIKE '%adeterminer,%'";
952
	        WHERE `mots_cles_texte` LIKE '%adeterminer,%'";
949
	    $this->bdd->requeter($requete);
953
	    $this->bdd->requeter($requete);
950
	    
954
	    
951
 
955
 
952
	}
956
	}
953
	
957
	
954
 
958
 
955
	
959
	
956
	private function changerSensible(){
960
	private function changerSensible(){
957
	    echo "Sensible \n";
961
	    echo "Sensible \n";
958
	    $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD IF NOT EXISTS `published_location` varchar(50)";
962
	    $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD IF NOT EXISTS `published_location` varchar(50)";
959
	    $this->bdd->requeter($requete);
963
	    $this->bdd->requeter($requete);
960
	    
964
	    
961
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET published_location = 'localité' WHERE `mots_cles_texte` like '%sensible%'";
965
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET published_location = 'localité' WHERE `mots_cles_texte` like '%sensible%'";
962
	    $this->bdd->requeter($requete);
966
	    $this->bdd->requeter($requete);
963
	}
967
	}
964
}
968
}