Subversion Repositories eFlore/Applications.cel

Rev

Rev 3449 | Rev 3451 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2893 delphine 1
<?php
2
// declare(encoding='UTF-8');
3
/**
4
 * Classe de nettoyage de la base de données du CEL.
5
 * Suppression des antislash
6
 * Remplacement des chaines vides par des NULL
7
 * Unifier les référentiels : pas de nom de version, majuscule...
8
 * Unifier les certitudes
9
 * Supprimer les INSEE-C: non rempli, les dates 0000-00
10
 *
11
 * Utilisation :
12
 * - <code>/opt/lamp/bin/php cli.php nettoyage -a (voir méthode executer)</code>
13
 *
14
 * @category   CEL
15
 * @package    Scripts
16
 * @subpackage Nettoyage
17
 * @author     Delphine CAUQUIL <delphine@tela-botanica.org>
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>
20
 * @copyright  1999-2016 Tela Botanica <accueil@tela-botanica.org>
21
 */
22
class Nettoyage extends Script {
23
 
24
	protected $bdd;
2936 delphine 25
	protected $colonnes;
3439 delphine 26
	protected $bd_cel = "tb_nettoye_cel";
27
	protected $bd_del = "tb_del";
2893 delphine 28
 
29
 
30
	public function __construct($script_nom, $parametres_cli) {
31
		parent::__construct($script_nom, $parametres_cli);
32
		$this->bdd = new Bdd();
3439 delphine 33
		$this->bd_cel = Config::get('nettoyage.cel_nettoye');
34
		$this->bd_del = Config::get('nettoyage.del');
2893 delphine 35
	}
36
 
37
	public function executer() {
38
		$cmd = $this->getParametre('a');
3445 delphine 39
		$requete_colonnes = "SELECT column_name FROM information_schema.columns WHERE table_name = 'cel_obs' AND table_schema='".$this->bd_cel."';";
2936 delphine 40
		$this->colonnes = $this->bdd->recupererTous($requete_colonnes);
2893 delphine 41
		try {
42
			switch ($cmd) {
43
				case 'tout' :
2936 delphine 44
					$this->supprimerRetourLigne();
2893 delphine 45
					$this->supprimerAntislash();
3296 delphine 46
					$this->supprimerGuillemet();
3258 delphine 47
					$this->unifierNull();
2893 delphine 48
					$this->unifierNomReferentiel();
49
					$this->unifierCertitude();
3258 delphine 50
					$this->supprimerCertitudeAutre();
51
					$this->unifierUtilisateur();
52
					$this->verifierCodeInsee();
2893 delphine 53
					$this->verifierGeodatum();
3438 delphine 54
					$this->supprimerInfosLiesObsInexistante();
55
					$this->supprimerImagesetTagAnonymes();
3258 delphine 56
					$this->analyserMotsCles();
3303 delphine 57
					$this->changerSensible();
2893 delphine 58
					$this->unifierNull();
59
					break;
3296 delphine 60
				case 'supprimerRetourLigne' :
61
				    $this->supprimerRetourLigne();
62
				    break;
2893 delphine 63
				case 'supprimerAntislash' :
64
					$this->supprimerAntislash();
65
					break;
3296 delphine 66
				case 'supprimerGuillemet' :
67
				    $this->supprimerGuillemet();
68
				    break;
2893 delphine 69
				case 'unifierNomReferentiel' :
70
					$this->unifierNomReferentiel();
71
					break;
72
				case 'unifierCertitude' :
73
					$this->unifierCertitude();
74
					break;
3258 delphine 75
				case 'supprimerCertitudeAutre' : // après unifier certitude si les autres valeurs sont bien à supprimer
76
				    $this->supprimerCertitudeAutre();
77
				    break;
78
				case 'analyserMotsCles' : // après unifier certitude si les autres valeurs sont bien à supprimer
79
				    $this->analyserMotsCles();
80
				    break;
2893 delphine 81
				case 'verifierGeodatum' :
82
					$this->verifierGeodatum();
83
					break;
3258 delphine 84
				case 'verifierCodeInsee' :
85
				    $this->verifierCodeInsee();
86
				    break;
3303 delphine 87
				case 'sensible' :
88
				    $this->changerSensible();
89
				    break;
2893 delphine 90
				case 'unifierNull' : // lancer en dernier pour bien réussir
91
					$this->unifierNull();
92
					break;
3449 delphine 93
				case 'supprimerImagesetTagAnonymes' :
94
				    $this->supprimerImagesetTagAnonymes();
95
				    break;
3258 delphine 96
				case 'supprimerInfosLiesObsInexistante' :
97
				    $this->supprimerInfosLiesObsInexistante();
98
				    break;
99
				case 'unifierUtilisateur' :
100
				    $this->unifierUtilisateur();
101
				    break;
3296 delphine 102
				case 'unifierInfosEspece' :
103
				    $this->unifierUtilisateur();
104
				    break;
2893 delphine 105
				default :
106
					$msg = "Erreur : la commande '$cmd' n'existe pas!\n".
107
						"Commandes existantes : regenererMotsClesTexteObs, regenererMotsClesTexteImages"
108
							. ", regenererMotsClesTexteObsTout, regenererMotsClesTexteImagesTout"
109
							. ", viderMotsClesTexteImagesSansMotsCles, viderMotsClesTexteObsSansMotsCles"
110
							. ", regenererChampsTailleImage, reparerLiaisonsOublieesObs, reparerLiaisonsOublieesImages"
111
							. ", reparerLiaisonsObsParMotsClesTexte, reductionMotsClesImages, reductionMotsClesImagesUtil"
112
							. ", reduireEtNormaliserMotsClesImagesUtil, reduireEtNormaliserMotsClesImages"
113
							. ", reductionMotsClesObs, reductionMotsClesObsUtil, reduireEtNormaliserMotsClesObsUtil"
114
							. ", reduireEtNormaliserMotsClesObs";
115
					throw new Exception($msg);
116
			}
117
		} catch (Exception $e) {
118
			$this->traiterErreur($e->getMessage());
119
		}
120
	}
121
 
122
 
2936 delphine 123
	private function supprimerRetourLigne() {
124
		foreach ($this->colonnes as $id=>$colonne) {
125
			echo "Suppression des retour ligne dans la colonne ".$colonne['column_name']." ...";
3439 delphine 126
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET ".$colonne['column_name']." = REPLACE(".$colonne['column_name'].', "\n", "")';
2936 delphine 127
			$this->bdd->requeter($requete);
128
			echo "effectuée \n";
129
		}
130
	}
2893 delphine 131
 
132
	private function supprimerAntislash() {
2936 delphine 133
		foreach ($this->colonnes as $id=>$colonne) {
2893 delphine 134
			echo "Suppression des antislash dans la colonne ".$colonne['column_name']." ...";
3446 delphine 135
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET ".$colonne['column_name']." = REPLACE(".$colonne['column_name'].', "\\", "")';
2893 delphine 136
			$this->bdd->requeter($requete);
137
			echo "effectuée \n";
138
		}
139
	}
140
 
2936 delphine 141
	private function supprimerGuillemet() {
142
		foreach ($this->colonnes as $id=>$colonne) {
143
			echo "Suppression des guillements dans la colonne ".$colonne['column_name']." ...";
3439 delphine 144
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET ".$colonne['column_name']." = REPLACE(".$colonne['column_name'].',"\"", "")';
2936 delphine 145
			$this->bdd->requeter($requete);
146
			echo "effectuée \n";
147
		}
148
	}
149
 
2893 delphine 150
	private function unifierNull() {
3447 delphine 151
	    foreach ($this->colonnes as $id=>$colonne) {
2893 delphine 152
			echo "Suppression des vides dans la colonne ".$colonne['column_name']." ...";
2895 delphine 153
			$dsl = array( 'transmission', 'altitude');
2894 delphine 154
			if (isset($dsl[$colonne['column_name']])) {
3449 delphine 155
				$requete = "UPDATE ".$this->bd_cel.".cel_obs SET ".$colonne['column_name']." = NULL WHERE trim(".$colonne['column_name'].") = ''";
2894 delphine 156
			} else {
3449 delphine 157
				$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')";
2894 delphine 158
			}
2893 delphine 159
			$this->bdd->requeter($requete);
160
			echo "effectuée \n";
161
		}
162
	}
163
 
164
	private function unifierCertitude() {
165
		echo "Uniformisation du champ certitude/identification";
3258 delphine 166
		$certitude = array("A déterminer" => "à déterminer",
167
		    "À déterminer, voir photo" => "à déterminer",
3446 delphine 168
		    "A déterminer" => "à déterminer",
3258 delphine 169
		    "aDeterminer" => "à déterminer",
170
		    "déterminer" => "à déterminer",
171
		    "Inconnue" => "à déterminer",
172
		    "Ceraine" => "certain",
173
		    "certain" => "certain",
174
		    "Certainaaua" => "certain",
175
		    "Certaine" => "certain",
176
		    "Certaine K- rhizines blanche" => "certain",
177
		    "Certaine ( mais voir notes)" => "certain",
178
		    "Certaine (à 99%)" => "certain",
179
		    "Certaine Anett" => "certain",
180
		    "Certaine Anette" => "certain",
181
		    "Certaine Valériane officinale" => "certain",
182
		    "Certaine, Faite et confirmée par JM BERAUD" => "certain",
183
		    "Certaine, par Jean Lebail" => "certain",
184
		    "Certaine, subsp. minus" => "certain",
185
		    "Certainea" => "certain",
186
		    "Certaineanno" => "certain",
187
		    "Certainearia n" => "certain",
188
		    "Certainee" => "certain",
189
		    "Certainej" => "certain",
190
		    "Certainel" => "certain",
191
		    "CertaineNom de travai" => "certain",
192
		    "CertaineNom de travail" => "certain",
193
		    "Certainesites" => "certain",
194
		    "Certainesous-bois de feuillus en versant sud à sud-ouest" => "certain",
195
		    "Certaineu" => "certain",
196
		    "sure" => "certain",
197
		    "validée sur forum Naturalistes de l'ouest" => "certain",
198
		    "à confirmer" => "douteux",
199
		    "à approfondir" => "douteux",
200
		    "à cofirmer" => "douteux",
201
		    "À confiermer" => "douteux",
202
		    "A confirlmer" => "douteux",
203
		    "A confirmer" => "douteux",
204
		    "à confirmer vs. pumilum" => "douteux",
205
		    "à conirmer" => "douteux",
206
		    "à vérifier" => "douteux",
207
		    "douteuse" => "douteux",
208
		    "Douteuse (canadensis ?)" => "douteux",
209
		    "Douteuse ?" => "douteux",
210
		    "Douteuse à confirmer" => "douteux",
211
		    "Douteuse peut-être cordata" => "douteux",
212
		    "Douteuse, fleurs rouges" => "douteux",
213
		    "douteux" => "douteux",
214
		    "espèce bisannuelle mais non bien déterminée" => "douteux",
215
		    "Incertaine" => "douteux",
216
		    "Pavot douteux" => "douteux",
217
		    "Potentille ansérine, supposé" => "douteux",
218
		    "presque certaine" => "douteux",
219
		    "Quasi Certaine" => "douteux",
220
		    "ssp déterminer" => "douteux",
221
		    "subsp à vérifier" => "douteux",
222
		    "subsp. microphyllum ?" => "douteux",
223
		    "très douteuse" => "douteux",
224
		    "Très probable" => "douteux");
2893 delphine 225
		foreach ($certitude as $valeur=>$saisie) {
3446 delphine 226
			$requete = 'UPDATE '.$this->bd_cel.'.cel_obs SET commentaire = concat(commentaire, " Certitude : ", certitude), certitude = "'.$saisie.'" WHERE certitude ="'.$valeur.'"';
2893 delphine 227
			$this->bdd->requeter($requete);
228
			echo "effectuée \n";
229
		}
3439 delphine 230
		$requete_verif = "SELECT certitude FROM ".$this->bd_cel.".cel_obs WHERE certitude NOT IN ('douteux', 'certain', 'à déterminer', '') and certitude is not NULL";
2893 delphine 231
		$verif = $this->bdd->recupererTous($requete_verif);
232
		if ($verif != array()) print_r($verif);
233
	}
234
 
3258 delphine 235
	private function supprimerCertitudeAutre() {
236
	    echo "suppression des valeurs non compréhensible du champ certitude/identification";
3439 delphine 237
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs
3296 delphine 238
	        SET commentaire = case isnull(commentaire) when 1 THEN certitude ELSE concat(commentaire, ' Certitude : ', certitude) END,
239
	        certitude = '' WHERE `certitude` NOT IN ('douteux', 'certain', 'à déterminer', '') and certitude is not NULL";
3258 delphine 240
	    $this->bdd->requeter($requete);
241
	        echo "effectuée \n";
3446 delphine 242
	    $requete_verif = "SELECT certitude FROM ".$this->bd_cel.".cel_obs WHERE certitude NOT IN ('douteux', 'certain', 'à déterminer', '') and certitude is not NULL";
3258 delphine 243
	    $verif = $this->bdd->recupererTous($requete_verif);
244
	    if ($verif != array()) print_r($verif);
245
	}
246
 
247
	private function unifierUtilisateur() {
3438 delphine 248
	    echo "vérification de la présence de l'annuaire \n";
3439 delphine 249
	    $requete = "SELECT * FROM ".$this->bd_cel.".`users`;";
3438 delphine 250
	    $result = $this->bdd->requeter($requete);
3439 delphine 251
	    if ($result === NULL) {echo $requete;
3438 delphine 252
	        echo "Il manque la table annuaire (à recopier de telaorg users\n";
253
	        exit;
254
	    }
255
 
3297 delphine 256
	    echo "suppression de le colonne ordre \n";
3439 delphine 257
	    $requete = "ALTER TABLE ".$this->bd_cel.".cel_obs DROP INDEX id_obs;";
3297 delphine 258
	    $this->bdd->requeter($requete);
3439 delphine 259
	    $requete = "ALTER TABLE ".$this->bd_cel.".cel_obs DROP INDEX ordre;";
3297 delphine 260
	    $this->bdd->requeter($requete);
3439 delphine 261
	    $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` DROP `ordre`;";
3297 delphine 262
	    $this->bdd->requeter($requete);
3439 delphine 263
	    $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD pseudo  varchar(250);";
3438 delphine 264
	    $this->bdd->requeter($requete);
3258 delphine 265
 
266
	    echo "modification des observations ayant une adresse mail en identifiant";
3449 delphine 267
	    $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,
3438 delphine 268
	        `courriel_utilisateur` =  `user_email`  WHERE ce_utilisateur like '%@%'";
3258 delphine 269
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
270
 
271
	    echo "modification des observations ayant une adresse mail mais pas d'identifiant";
3439 delphine 272
	    $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,
3438 delphine 273
	        `courriel_utilisateur` =  `user_email`  WHERE (ce_utilisateur IS NULL OR LENGTH(ce_utilisateur) > 6
3258 delphine 274
	        OR ce_utilisateur = 0) and courriel_utilisateur like '%@%'";
275
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
276
 
277
	    echo "modification des observations ayant un identifiant";
3439 delphine 278
	    $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_obs` join ".$this->bd_cel.".`users` ON ID = ce_utilisateur SET pseudo = user_nicename,
3438 delphine 279
	        `courriel_utilisateur` =  `user_email` WHERE (ce_utilisateur IS NOT NULL OR LENGTH(ce_utilisateur) > 6) and (courriel_utilisateur is null or courriel_utilisateur='')";
3258 delphine 280
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
281
 
3296 delphine 282
	    echo "suppression des autres valeurs ce_utilisateur";
3439 delphine 283
	    $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_obs` SET ce_utilisateur = NULL WHERE ce_utilisateur IS NOT NULL AND LENGTH(ce_utilisateur) > 6";
3296 delphine 284
	    $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail);
285
 
3438 delphine 286
	    echo "suppression des obs anonymes";
3439 delphine 287
	    $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_obs` WHERE (ce_utilisateur IS NULL OR LENGTH(ce_utilisateur) > 6
3438 delphine 288
	        OR ce_utilisateur = 0) and (`courriel_utilisateur` is null or `courriel_utilisateur` not like '%@%')";
289
	    $this->bdd->requeter($requete_anonyme);
3297 delphine 290
 
3439 delphine 291
	    $requete_verif = "SELECT `ce_utilisateur`, `prenom_utilisateur`, `nom_utilisateur`, `courriel_utilisateur`  FROM ".$this->bd_cel.".cel_obs
3438 delphine 292
	            WHERE ce_utilisateur IS NOT NULL OR LENGTH(ce_utilisateur) > 6";
293
	    $verif = $this->bdd->recupererTous($requete_verif);
294
	    if ($verif != array()) print_r($verif);
295
	    echo "effectuée \n";
296
	}
297
 
298
	private function supprimerImagesetTagAnonymes() {
3297 delphine 299
	    echo "suppression des images anonymes";
3439 delphine 300
	    $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_images` WHERE (ce_utilisateur IS NULL OR LENGTH(ce_utilisateur) > 6
3297 delphine 301
	        OR ce_utilisateur = 0) and (`courriel_utilisateur` is null or `courriel_utilisateur` not like '%@%')";
302
	    $this->bdd->requeter($requete_anonyme);
303
	    echo "suppression des tags images anonymes";
3439 delphine 304
	    $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_arbre_mots_cles_images` WHERE id_utilisateur in (select ce_utilisateur FROM ".$this->bd_cel.".`cel_obs` WHERE (ce_utilisateur IS NULL OR LENGTH(ce_utilisateur) > 6
3297 delphine 305
	        OR ce_utilisateur = 0) and (`courriel_utilisateur` is null or `courriel_utilisateur` not like '%@%'))";
306
	    $this->bdd->requeter($requete_anonyme);
307
	    echo "suppression des tags obs anonymes";
3439 delphine 308
	    $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
309
	            (SELECT distinct id_utilisateur FROM ".$this->bd_cel.".cel_arbre_mots_cles_obs WHERE id_utilisateur in
310
	            (select distinct ce_utilisateur from ".$this->bd_cel.".cel_obs) or
311
	            id_utilisateur in (SELECT distinct courriel_utilisateur FROM ".$this->bd_cel.".cel_obs))";
3438 delphine 312
	    $this->bdd->requeter($requete_create);
3450 delphine 313
	    $requete_index = "ALTER TABLE ".$this->bd_cel.".`user_mot_cle_absent` ADD PRIMARY KEY(`id_utilisateur`);";
3438 delphine 314
	    $this->bdd->requeter($requete_index);
3439 delphine 315
	    $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_arbre_mots_cles_obs` WHERE `id_utilisateur` in (SELECT * FROM `user_mot_cle_absent`);";
3297 delphine 316
	    $this->bdd->requeter($requete_anonyme);
3450 delphine 317
	    $requete_anonyme = "DROP TABLE ".$this->bd_cel.".user_mot_cle_absent;";
3297 delphine 318
	    $this->bdd->requeter($requete_anonyme);
3450 delphine 319
	    $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
3438 delphine 320
	        WHERE b.ce_utilisateur IS NOT NULL AND b.ce_utilisateur != ''";
321
	    $this->bdd->requeter($requete_anonyme);
3450 delphine 322
	    $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_obs_liaison` WHERE `id_element_lie` not in (SELECT `id_observation` FROM `cel_obs`) OR `id_mot_cle` NOT IN (SELECT `id_mot_cle` FROM `cel_arbre_mots_cles_obs`);";
3438 delphine 323
	    $this->bdd->requeter($requete_anonyme);
3258 delphine 324
	}
325
 
2893 delphine 326
	private function unifierNomReferentiel() {
327
		echo "Uniformisation du nom de référentiel";
328
		$referentiels = array("BDTFX", "BDTRE", "BDTXA", "APD", "LBF", "ISFAN");
329
		foreach ($referentiels as $referentiel) {
3439 delphine 330
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = '".$referentiel."' WHERE nom_referentiel like '".$referentiel."%'";
2893 delphine 331
			$this->bdd->requeter($requete);
3446 delphine 332
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = 'autre' WHERE nom_sel_nn IS NULL or nom_sel_nn = '0'";
2894 delphine 333
			$this->bdd->requeter($requete);
3439 delphine 334
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = 'APD' WHERE nom_referentiel like 'bdtao%'";
2895 delphine 335
			$this->bdd->requeter($requete);
3439 delphine 336
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = 'BDTFX' WHERE nom_referentiel like 'bdnff%'";
2895 delphine 337
			$this->bdd->requeter($requete);
2893 delphine 338
			echo "effectuée \n";
3439 delphine 339
			$requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = 'autre' WHERE nom_referentiel IS NULL or nom_referentiel = ''";
3296 delphine 340
			$this->bdd->requeter($requete);
341
			echo "effectuée \n";
2893 delphine 342
		}
3439 delphine 343
		$requete_verif = "SELECT nom_referentiel FROM ".$this->bd_cel.".cel_obs WHERE nom_referentiel NOT IN ('".implode("', '", $referentiels)."', 'autre')";
2893 delphine 344
		$verif = $this->bdd->recupererTous($requete_verif);
345
		if ($verif != array()) print_r($verif);
346
	}
347
 
3258 delphine 348
	private function supprimerInfosLiesObsInexistante() {
349
	    echo "Supprimer infos liés à obs inexistante";
3439 delphine 350
	    $requete = "DELETE FROM ".$this->bd_cel.".`cel_obs_etendues` WHERE `id_observation` not in (select `id_observation` from ".$this->bd_cel.".cel_obs);";
3258 delphine 351
	    $this->bdd->requeter($requete);
3439 delphine 352
	    $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);";
3258 delphine 353
	    $this->bdd->requeter($requete);
3439 delphine 354
	    $requete = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_obs_liaison` WHERE `id_mot_cle` not in (SELECT `id_mot_cle` FROM `cel_arbre_mots_cles_obs`);";
3258 delphine 355
	    $this->bdd->requeter($requete);
3439 delphine 356
	    $requete = "DELETE FROM ".$this->bd_cel.".`cel_images`  WHERE `ce_observation` is not null and ".$this->bd_cel.".`ce_observation` not in (select id_observation from ".$this->bd_cel.".cel_obs)";
3438 delphine 357
	    $this->bdd->requeter($requete);
3439 delphine 358
	    $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);";
3438 delphine 359
	    $this->bdd->requeter($requete);
3439 delphine 360
	    $requete = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_images_liaison` WHERE `id_mot_cle` not in (SELECT `id_mot_cle` FROM `cel_arbre_mots_cles_images`);";
3438 delphine 361
	    $this->bdd->requeter($requete);
3258 delphine 362
	    echo "effectuée \n";
363
	}
364
 
2893 delphine 365
	private function verifierGeodatum() {
366
		echo "Uniformisation du geodatum";
3439 delphine 367
		$requete = "UPDATE ".$this->bd_cel.".cel_obs SET geodatum = 'WGS84' WHERE (latitude IS NOT NULL or latitude != '0.00000') AND geodatum IS NULL";
2893 delphine 368
		$this->bdd->requeter($requete);
3439 delphine 369
		$requete = "UPDATE ".$this->bd_cel.".cel_obs SET geodatum = NULL WHERE (latitude IS NULL or latitude = '0.00000')";
2895 delphine 370
		$this->bdd->requeter($requete);
2893 delphine 371
		echo "effectuée \n";
372
	}
3258 delphine 373
 
374
	private function verifierCodeInsee() {
375
	    echo "Vérification du code insee";
3439 delphine 376
	    $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD `locality_consistency` INT(1) ;";
3297 delphine 377
	    $this->bdd->requeter($requete);
378
 
3439 delphine 379
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET locality_consistency = '0' WHERE
3258 delphine 380
	        ((ce_zone_geo != 'INSEE-C:' and ce_zone_geo like 'INSEE-C:%') and code_insee_calcule != '') and
381
	        replace(`ce_zone_geo`, 'INSEE-C:', '') != `code_insee_calcule`";
382
	    $this->bdd->requeter($requete);
3439 delphine 383
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET locality_consistency = '1' WHERE
3258 delphine 384
	        ((ce_zone_geo != 'INSEE-C:' and ce_zone_geo like 'INSEE-C:%') and code_insee_calcule != '') and
3296 delphine 385
	        replace(`ce_zone_geo`, 'INSEE-C:', '') = `code_insee_calcule`";
386
	    $this->bdd->requeter($requete);
387
 
388
	    $requete_verif = "SELECT `ce_zone_geo`, `code_insee_calcule`, `locality_consistency` FROM `cel_obs` WHERE `locality_consistency` IS NOT NULL";
389
	    $verif = $this->bdd->recupererTous($requete_verif);
390
	    if ($verif != array()) print_r($verif);
3258 delphine 391
	    echo "effectuée \n";
392
	}
393
 
394
	private function analyserMotsCles(){
3296 delphine 395
	    echo "Input source \n";
3439 delphine 396
	    $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD `input_source` VARCHAR(15)";
3297 delphine 397
	    $this->bdd->requeter($requete);
398
 
3439 delphine 399
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET input_source = 'plantnet' WHERE `mots_cles_texte` like '%plantnet%'";
3296 delphine 400
	    $this->bdd->requeter($requete);
3258 delphine 401
 
3439 delphine 402
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET input_source = 'autre' WHERE `mots_cles_texte` like '%MobileSauvages%'";
3296 delphine 403
	    $this->bdd->requeter($requete);
404
 
3447 delphine 405
	    $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)";
3296 delphine 406
	    $this->bdd->requeter($requete);
407
 
3447 delphine 408
	    $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)";
3296 delphine 409
	    $this->bdd->requeter($requete);
410
 
3447 delphine 411
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET input_source = 'cel' WHERE input_source = '' OR input_source IS NULL";
3296 delphine 412
	    $this->bdd->requeter($requete);
3438 delphine 413
 
3296 delphine 414
	    echo "Suppression motcle du chemin \n";
3439 delphine 415
	    $requete = "UPDATE ".$this->bd_cel.".`cel_arbre_mots_cles_obs` SET chemin = substr(`chemin`, 1, CHAR_LENGTH(chemin)-CHAR_LENGTH(`mot_cle`)-1)";
3296 delphine 416
	    $this->bdd->requeter($requete);
417
 
3439 delphine 418
	    $requete = "UPDATE ".$this->bd_cel.".`cel_arbre_mots_cles_images` SET chemin = substr(`chemin`, 1, CHAR_LENGTH(chemin)-CHAR_LENGTH(`mot_cle`)-1)";
3296 delphine 419
	    $this->bdd->requeter($requete);
420
 
421
	    echo "Certitude à certaine quand obs validée sur ip \n";
3439 delphine 422
	    $requete = "UPDATE ".$this->bd_cel.".`cel_obs` c left join
3438 delphine 423
	        (SELECT distinct `ce_observation`, `nom_sel_nn`
3439 delphine 424
	        FROM ".$this->bd_del.".`del_commentaire` WHERE `proposition_retenue` = 1) d on
3296 delphine 425
	        `ce_observation` = `id_observation` SET `certitude` = 'certain'
3438 delphine 426
	        WHERE (c.`mots_cles_texte` LIKE '%adeterminer%'
3446 delphine 427
	        or c.`certitude` = 'à déterminer') and c.`nom_sel_nn` = d.`nom_sel_nn`";
3296 delphine 428
	    $this->bdd->requeter($requete);
429
 
430
	    echo "Certitude à douteux quand obs validée sur ip mais num_nom diff entre ip et cel \n";
3439 delphine 431
	    $requete = "UPDATE ".$this->bd_cel.".`cel_obs` c left join
3438 delphine 432
	        (SELECT distinct `ce_observation`, `nom_sel_nn`
3439 delphine 433
	        FROM ".$this->bd_del.".`del_commentaire`  WHERE `proposition_retenue` = 1 ) d on
3296 delphine 434
	        `ce_observation` = `id_observation` SET `certitude` = 'douteux'
3438 delphine 435
	        WHERE (c.`mots_cles_texte` LIKE '%adeterminer%'
3446 delphine 436
	        or c.`certitude` = 'à déterminer') and c.`nom_sel_nn` != d.`nom_sel_nn`";
3296 delphine 437
	    $this->bdd->requeter($requete);
438
 
439
	    echo "Certitude à aDeterminer quand obs non validée sur ip \n";
3446 delphine 440
	    $requete = "UPDATE ".$this->bd_cel.".`cel_obs` c SET `certitude` = 'à déterminer'
3296 delphine 441
	        WHERE c.`mots_cles_texte` LIKE '%adeterminer%' AND
442
	        (c.`certitude` = '' or c.certitude IS NULL)";
443
	    $this->bdd->requeter($requete);
444
 
3439 delphine 445
	    $requete = "UPDATE ".$this->bd_cel.".`cel_obs` SET
3296 delphine 446
	        `mots_cles_texte` = REPLACE(`mots_cles_texte`, 'aDeterminer,', '')
447
	        WHERE `mots_cles_texte` LIKE '%adeterminer,%'";
448
	    $this->bdd->requeter($requete);
449
 
3438 delphine 450
 
3258 delphine 451
	}
3303 delphine 452
 
3438 delphine 453
 
454
 
3303 delphine 455
	private function changerSensible(){
456
	    echo "Sensible \n";
3439 delphine 457
	    $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD `published_location` varchar(50)";
3303 delphine 458
	    $this->bdd->requeter($requete);
459
 
3439 delphine 460
	    $requete = "UPDATE ".$this->bd_cel.".cel_obs SET published_location = 'localité' WHERE `mots_cles_texte` like '%sensible%'";
3303 delphine 461
	    $this->bdd->requeter($requete);
462
	}
2893 delphine 463
}