Subversion Repositories eFlore/Applications.cel

Rev

Rev 2415 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2415 Rev 2436
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Classe de maintenance de la base de données du CEL.
4
 * Classe de maintenance de la base de données du CEL.
5
 *
5
 *
6
 * Utilisation :
6
 * Utilisation :
7
 * - <code>/opt/lamp/bin/php cli.php maintenance -a (voir méthode executer)</code>
7
 * - <code>/opt/lamp/bin/php cli.php maintenance -a (voir méthode executer)</code>
8
 *
8
 *
9
 * @category   CEL
9
 * @category   CEL
10
 * @package    Scripts
10
 * @package    Scripts
11
 * @subpackage Maintenance
11
 * @subpackage Maintenance
12
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
12
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
13
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
13
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
14
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
14
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
15
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
15
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
16
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
16
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
17
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
17
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
18
 */
18
 */
19
class Maintenance extends Script {
19
class Maintenance extends Script {
20
 
20
 
21
	protected $bdd;
21
	protected $bdd;
22
	protected $parametres_autorises = array(
22
	protected $parametres_autorises = array(
23
		'-mc' => array(false, '1', 'Mot clef à chercher pour régénérer les machins'),
23
		'-mc' => array(false, '1', 'Mot clef à chercher pour régénérer les machins'),
24
		'-doublon' => array(false, '1', "Id du mot clé qu'on veut réduire à un autre"),
24
		'-doublon' => array(false, '1', "Id du mot clé qu'on veut réduire à un autre"),
25
		'-util' => array(false, null, "Id de l'utilisateur"),
25
		'-util' => array(false, null, "Id de l'utilisateur"),
26
		'-cible' => array(false, '1', "Id de l'autre mot clé")
26
		'-cible' => array(false, '1', "Id de l'autre mot clé")
27
	);
27
	);
28
 
28
 
29
	public function __construct($script_nom, $parametres_cli) {
29
	public function __construct($script_nom, $parametres_cli) {
30
		parent::__construct($script_nom, $parametres_cli);
30
		parent::__construct($script_nom, $parametres_cli);
31
		$this->bdd = new Bdd();
31
		$this->bdd = new Bdd();
32
	}
32
	}
33
 
33
 
34
	public function executer() {
34
	public function executer() {
35
		$cmd = $this->getParametre('a');
35
		$cmd = $this->getParametre('a');
36
		try {
36
		try {
37
			switch ($cmd) {
37
			switch ($cmd) {
38
				case 'regenererMotsClesTexteObs' :
38
				case 'regenererMotsClesTexteObs' :
39
					$this->regenererMotsClesTexteObs();
39
					$this->regenererMotsClesTexteObs();
40
					break;
40
					break;
41
				case 'regenererMotsClesTexteImages' :
41
				case 'regenererMotsClesTexteImages' :
42
					$this->regenererMotsClesTexteImages();
42
					$this->regenererMotsClesTexteImages();
43
					break;
43
					break;
44
				case 'regenererMotsClesTexteObsTout' :
44
				case 'regenererMotsClesTexteObsTout' :
45
					$this->regenererMotsClesTexteObs(true);
45
					$this->regenererMotsClesTexteObs(true);
46
					break;
46
					break;
47
				case 'regenererMotsClesTexteImagesTout' :
47
				case 'regenererMotsClesTexteImagesTout' :
48
					$this->regenererMotsClesTexteImages(true);
48
					$this->regenererMotsClesTexteImages(true);
49
					break;
49
					break;
50
				case 'viderMotsClesTexteImagesSansMotsCles' :
50
				case 'viderMotsClesTexteImagesSansMotsCles' :
51
					$this->viderMotsClesTexteImagesSansMotsCles();
51
					$this->viderMotsClesTexteImagesSansMotsCles();
52
					break;
52
					break;
53
				case 'viderMotsClesTexteObsSansMotsCles' :
53
				case 'viderMotsClesTexteObsSansMotsCles' :
54
					$this->viderMotsClesTexteObsSansMotsCles();
54
					$this->viderMotsClesTexteObsSansMotsCles();
55
					break;
55
					break;
56
				case 'regenererChampsTailleImage' :
56
				case 'regenererChampsTailleImage' :
57
					$this->regenererChampsTailleImage();
57
					$this->regenererChampsTailleImage();
58
					break;
58
					break;
59
				case 'reparerLiaisonsOublieesObs' :
59
				case 'reparerLiaisonsOublieesObs' :
60
					$this->reparerLiaisonsOublieesObs();
60
					$this->reparerLiaisonsOublieesObs();
61
					break;
61
					break;
62
				case 'reparerLiaisonsOublieesImages' :
62
				case 'reparerLiaisonsOublieesImages' :
63
					$this->reparerLiaisonsOublieesImages();
63
					$this->reparerLiaisonsOublieesImages();
64
					break;
64
					break;
65
				case 'reparerLiaisonsObsParMotsClesTexte' :
65
				case 'reparerLiaisonsObsParMotsClesTexte' :
66
					$mot_clef = $this->getParametre('mc');
66
					$mot_clef = $this->getParametre('mc');
67
					$this->reparerLiaisonsObsParMotsClesTexte($mot_clef);
67
					$this->reparerLiaisonsObsParMotsClesTexte($mot_clef);
68
					break;
68
					break;
69
				case 'reductionMotsClesImages' :
69
				case 'reductionMotsClesImages' :
70
					// ex: cli.php maintenance -a reductionMotsClesImages -doublon 1234 -cible 5678
70
					// ex: cli.php maintenance -a reductionMotsClesImages -doublon 1234 -cible 5678
71
					$idDoublon = $this->getParametre('doublon');
71
					$idDoublon = $this->getParametre('doublon');
72
					$idCible = $this->getParametre('cible');
72
					$idCible = $this->getParametre('cible');
73
					$this->reductionMotsClesImages($idDoublon, $idCible);
73
					$this->reductionMotsClesImages($idDoublon, $idCible);
74
					break;
74
					break;
75
				case 'reductionMotsClesImagesUtil' :
75
				case 'reductionMotsClesImagesUtil' :
76
					// ex: cli.php maintenance -a reductionMotsClesImagesUtil -util 6865
76
					// ex: cli.php maintenance -a reductionMotsClesImagesUtil -util 6865
77
					$idUtilisateur = $this->obtenirParametreIntObligatoirePourMethode('util');
77
					$idUtilisateur = $this->obtenirParametreIntObligatoirePourMethode('util');
78
					$this->reductionMotsClesImagesUtilisateur($idUtilisateur);
78
					$this->reductionMotsClesImagesUtilisateur($idUtilisateur);
79
					break;
79
					break;
80
				case 'reduireEtNormaliserMotsClesImagesUtil' :
80
				case 'reduireEtNormaliserMotsClesImagesUtil' :
81
					// ex: cli.php maintenance -a reduireEtNormaliserMotsClesImages -util 6865
81
					// ex: cli.php maintenance -a reduireEtNormaliserMotsClesImages -util 6865
82
					$idUtilisateur = $this->obtenirParametreIntObligatoirePourMethode('util');
82
					$idUtilisateur = $this->obtenirParametreIntObligatoirePourMethode('util');
83
					$this->reduireEtNormaliserMotsClesImages($idUtilisateur);
83
					$this->reduireEtNormaliserMotsClesImages($idUtilisateur);
84
					break;
84
					break;
85
				case 'reduireEtNormaliserMotsClesImages' :
85
				case 'reduireEtNormaliserMotsClesImages' :
86
					// ex: cli.php maintenance -a reduireEtNormaliserMotsClesImages
86
					// ex: cli.php maintenance -a reduireEtNormaliserMotsClesImages
87
					$this->reduireEtNormaliserMotsClesImages();
87
					$this->reduireEtNormaliserMotsClesImages();
88
					break;
88
					break;
89
				case 'reductionMotsClesObs' :
89
				case 'reductionMotsClesObs' :
90
					// ex: cli.php maintenance -a reductionMotsClesObs -doublon 1234 -cible 5678
90
					// ex: cli.php maintenance -a reductionMotsClesObs -doublon 1234 -cible 5678
91
					$idDoublon = $this->getParametre('doublon');
91
					$idDoublon = $this->getParametre('doublon');
92
					$idCible = $this->getParametre('cible');
92
					$idCible = $this->getParametre('cible');
93
					$this->reductionMotsClesObs($idDoublon, $idCible);
93
					$this->reductionMotsClesObs($idDoublon, $idCible);
94
					break;
94
					break;
95
				case 'reductionMotsClesObsUtil' :
95
				case 'reductionMotsClesObsUtil' :
96
					// ex: cli.php maintenance -a reductionMotsClesObsUtil -util 6865
96
					// ex: cli.php maintenance -a reductionMotsClesObsUtil -util 6865
97
					$idUtilisateur = $this->obtenirParametreIntObligatoirePourMethode('util');
97
					$idUtilisateur = $this->obtenirParametreIntObligatoirePourMethode('util');
98
					$this->reductionMotsClesObsUtilisateur($idUtilisateur);
98
					$this->reductionMotsClesObsUtilisateur($idUtilisateur);
99
					break;
99
					break;
100
				case 'reduireEtNormaliserMotsClesObsUtil' :
100
				case 'reduireEtNormaliserMotsClesObsUtil' :
101
					// ex: cli.php maintenance -a reduireEtNormaliserMotsClesObs -util 6865
101
					// ex: cli.php maintenance -a reduireEtNormaliserMotsClesObs -util 6865
102
					$idUtilisateur = $this->obtenirParametreIntObligatoirePourMethode('util');
102
					$idUtilisateur = $this->obtenirParametreIntObligatoirePourMethode('util');
103
					$this->reduireEtNormaliserMotsClesObs($idUtilisateur);
103
					$this->reduireEtNormaliserMotsClesObs($idUtilisateur);
104
					break;
104
					break;
105
				case 'reduireEtNormaliserMotsClesObs' :
105
				case 'reduireEtNormaliserMotsClesObs' :
106
					// ex: cli.php maintenance -a reduireEtNormaliserMotsClesObs
106
					// ex: cli.php maintenance -a reduireEtNormaliserMotsClesObs
107
					$this->reduireEtNormaliserMotsClesObs();
107
					$this->reduireEtNormaliserMotsClesObs();
108
					break;
108
					break;
109
				default :
109
				default :
110
					$msg = "Erreur : la commande '$cmd' n'existe pas!\n".
110
					$msg = "Erreur : la commande '$cmd' n'existe pas!\n".
111
						"Commandes existantes : regenererMotsClesTexteObs, regenererMotsClesTexteImages"
111
						"Commandes existantes : regenererMotsClesTexteObs, regenererMotsClesTexteImages"
112
							. ", regenererMotsClesTexteObsTout, regenererMotsClesTexteImagesTout"
112
							. ", regenererMotsClesTexteObsTout, regenererMotsClesTexteImagesTout"
113
							. ", viderMotsClesTexteImagesSansMotsCles, viderMotsClesTexteObsSansMotsCles"
113
							. ", viderMotsClesTexteImagesSansMotsCles, viderMotsClesTexteObsSansMotsCles"
114
							. ", regenererChampsTailleImage, reparerLiaisonsOublieesObs, reparerLiaisonsOublieesImages"
114
							. ", regenererChampsTailleImage, reparerLiaisonsOublieesObs, reparerLiaisonsOublieesImages"
115
							. ", reparerLiaisonsObsParMotsClesTexte, reductionMotsClesImages, reductionMotsClesImagesUtil"
115
							. ", reparerLiaisonsObsParMotsClesTexte, reductionMotsClesImages, reductionMotsClesImagesUtil"
116
							. ", reduireEtNormaliserMotsClesImagesUtil, reduireEtNormaliserMotsClesImages"
116
							. ", reduireEtNormaliserMotsClesImagesUtil, reduireEtNormaliserMotsClesImages"
117
							. ", reductionMotsClesObs, reductionMotsClesObsUtil, reduireEtNormaliserMotsClesObsUtil"
117
							. ", reductionMotsClesObs, reductionMotsClesObsUtil, reduireEtNormaliserMotsClesObsUtil"
118
							. ", reduireEtNormaliserMotsClesObs";
118
							. ", reduireEtNormaliserMotsClesObs";
119
					throw new Exception($msg);
119
					throw new Exception($msg);
120
			}
120
			}
121
		} catch (Exception $e) {
121
		} catch (Exception $e) {
122
			$this->traiterErreur($e->getMessage());
122
			$this->traiterErreur($e->getMessage());
123
		}
123
		}
124
	}
124
	}
125
 
125
 
126
	private function obtenirParametreIntObligatoirePourMethode($param) {
126
	private function obtenirParametreIntObligatoirePourMethode($param) {
127
		$param_val = $this->getParametre($param);
127
		$param_val = $this->getParametre($param);
128
		if(!$param_val || !is_numeric($param_val)) {
128
		if(!$param_val || !is_numeric($param_val)) {
129
			$msg = "Erreur : le paramètre $param est obligatoire pour cette méthode et doit être un entier \n";
129
			$msg = "Erreur : le paramètre $param est obligatoire pour cette méthode et doit être un entier \n";
130
			throw new Exception($msg);
130
			throw new Exception($msg);
131
		}
131
		}
132
		return $param_val;
132
		return $param_val;
133
	}
133
	}
134
 
134
 
135
	// Régénère le champ "mots_cles_texte" pour toutes les images ayant des mots clés mais ayant ce champ
135
	// Régénère le champ "mots_cles_texte" pour toutes les images ayant des mots clés mais ayant ce champ
136
	// vide, suite à une erreur
136
	// vide, suite à une erreur
137
	protected function regenererMotsClesTexteImages($tout = false) {
137
	protected function regenererMotsClesTexteImages($tout = false) {
138
		$req = "SELECT id_image FROM cel_images WHERE ".
138
		$requete = 'SELECT id_image '.
-
 
139
			'FROM cel_images '.
139
				"id_image IN (SELECT id_element_lie FROM cel_mots_cles_images_liaison)";
140
			'WHERE id_image IN (SELECT id_element_lie FROM cel_mots_cles_images_liaison) ';
140
		if(!$tout) {
141
		if (!$tout) {
141
			$req .= " AND (mots_cles_texte IS NULL OR mots_cles_texte='')";
142
			$requete .= "AND (mots_cles_texte IS NULL OR mots_cles_texte = '') ";
142
		}
143
		}
143
		$res = $this->bdd->recupererTous($req);
144
		$resultats = $this->bdd->recupererTous($requete);
144
		echo count($res) . " images trouvées\n";
145
		echo count($resultats)." images trouvées\n";
145
		foreach ($res as $image) {
146
		foreach ($resultats as $image) {
-
 
147
			$requete = 'UPDATE cel_images '.
-
 
148
				'SET mots_cles_texte = ('.
-
 
149
				'	SELECT GROUP_CONCAT(mot_cle) '.
146
			$req = "UPDATE cel_images SET mots_cles_texte = (SELECT GROUP_CONCAT(mot_cle) FROM cel_arbre_mots_cles_images cm "
150
				'	FROM cel_arbre_mots_cles_images AS cm '.
-
 
151
				'		INNER JOIN cel_mots_cles_images_liaison AS cml '.
147
				. "INNER JOIN cel_mots_cles_images_liaison cml ON cml.id_mot_cle = cm.id_mot_cle AND cml.id_element_lie = '" . $image['id_image'] . "') "
152
				"		ON (cml.id_mot_cle = cm.id_mot_cle AND cml.id_element_lie = '" . $image['id_image'] . "') ".
-
 
153
				') '.
148
				. "WHERE id_image = '" . $image['id_image'] . "'";
154
				"WHERE id_image = '" . $image['id_image'] . "'";
149
			$this->bdd->requeter($req);
155
			$this->bdd->requeter($requete);
150
		}
156
		}
151
	}
157
	}
152
 
158
 
153
	// Régénère le champ "mots_cles_texte" pour toutes les observations ayant des mots clés mais ayant ce champ
159
	// Régénère le champ "mots_cles_texte" pour toutes les observations ayant des mots clés mais ayant ce champ
154
	// vide, suite à une erreur
160
	// vide, suite à une erreur
155
	protected function regenererMotsClesTexteObs($tout = false) {
161
	protected function regenererMotsClesTexteObs($tout = false) {
156
		$req = "SELECT id_observation FROM cel_obs WHERE ".
162
		$requete = 'SELECT id_observation '.
-
 
163
			'FROM cel_obs '.
157
				"id_observation IN (SELECT id_element_lie FROM cel_mots_cles_obs_liaison)";
164
			'WHERE id_observation IN (SELECT id_element_lie FROM cel_mots_cles_obs_liaison) ';
158
		if(!$tout) {
165
		if (!$tout) {
159
			$req .= " AND (mots_cles_texte IS NULL OR mots_cles_texte='')";
166
			$requete .= "AND (mots_cles_texte IS NULL OR mots_cles_texte = '')";
160
		}
167
		}
161
		$res = $this->bdd->recupererTous($req);
168
		$resultats = $this->bdd->recupererTous($requete);
162
		echo count($res) . " observations trouvées\n";
169
		echo count($resultats) . " observations trouvées\n";
163
		foreach ($res as $image) {
170
		foreach ($resultats as $image) {
164
			$req = "UPDATE cel_obs SET mots_cles_texte = (SELECT GROUP_CONCAT(mot_cle) FROM cel_arbre_mots_cles_obs cm "
171
			$req = "UPDATE cel_obs SET mots_cles_texte = (SELECT GROUP_CONCAT(mot_cle) FROM cel_arbre_mots_cles_obs cm ".
165
			. "INNER JOIN cel_mots_cles_obs_liaison cml ON cml.id_mot_cle = cm.id_mot_cle AND cml.id_element_lie = '" . $image['id_observation'] . "') "
172
			"INNER JOIN cel_mots_cles_obs_liaison cml ON cml.id_mot_cle = cm.id_mot_cle AND cml.id_element_lie = '" . $image['id_observation'] . "') ".
166
				. "WHERE id_observation = '" . $image['id_observation'] . "'";
173
			"WHERE id_observation = '" . $image['id_observation'] . "'";
167
			$this->bdd->requeter($req);
174
			$this->bdd->requeter($req);
168
		}
175
		}
169
	}
176
	}
170
 
177
 
171
	// Vide le champ "mots_cles_texte" pour toutes les images n'ayant aucun mot clé
178
	// Vide le champ "mots_cles_texte" pour toutes les images n'ayant aucun mot clé
172
	protected function viderMotsClesTexteImagesSansMotsCles() {
179
	protected function viderMotsClesTexteImagesSansMotsCles() {
173
		$req = "UPDATE cel_images SET mots_cles_texte = NULL WHERE id_image NOT IN (SELECT id_element_lie FROM cel_mots_cles_images_liaison)";
180
		$req = "UPDATE cel_images SET mots_cles_texte = NULL WHERE id_image NOT IN (SELECT id_element_lie FROM cel_mots_cles_images_liaison)";
174
		$res = $this->bdd->requeter($req);
181
		$res = $this->bdd->requeter($req);
175
		echo "$res images mises à jour\n";
182
		echo "$res images mises à jour\n";
176
	}
183
	}
177
 
184
 
178
	// Vide le champ "mots_cles_texte" pour toutes les obs n'ayant aucun mot clé
185
	// Vide le champ "mots_cles_texte" pour toutes les obs n'ayant aucun mot clé
179
	protected function viderMotsClesTexteObsSansMotsCles() {
186
	protected function viderMotsClesTexteObsSansMotsCles() {
180
		$req = "UPDATE cel_obs SET mots_cles_texte = NULL WHERE id_observation NOT IN (SELECT id_element_lie FROM cel_mots_cles_obs_liaison)";
187
		$req = "UPDATE cel_obs SET mots_cles_texte = NULL WHERE id_observation NOT IN (SELECT id_element_lie FROM cel_mots_cles_obs_liaison)";
181
		$res = $this->bdd->requeter($req);
188
		$res = $this->bdd->requeter($req);
182
		echo "$res observations mises à jour\n";
189
		echo "$res observations mises à jour\n";
183
	}
190
	}
184
 
191
 
185
	protected function regenererChampsTailleImage() {
192
	protected function regenererChampsTailleImage() {
186
		$req = "SELECT id_image FROM cel_images WHERE hauteur = 0 OR largeur = 0";
193
		$req = "SELECT id_image FROM cel_images WHERE hauteur = 0 OR largeur = 0";
187
		$res = $this->bdd->recupererTous($req);
194
		$res = $this->bdd->recupererTous($req);
188
 
195
 
189
		echo count($res)." images concernees \n";
196
		echo count($res)." images concernees \n";
190
		echo "Début du traitement \n";
197
		echo "Début du traitement \n";
191
		$images_maj = 0;
198
		$images_maj = 0;
192
		$image_meta_ratees = 0;
199
		$image_meta_ratees = 0;
193
		$images_inexistantes = 0;
200
		$images_inexistantes = 0;
194
 
201
 
195
		foreach($res as $image) {
202
		foreach($res as $image) {
196
			$chemin = $this->getCheminImage($image['id_image']);
203
			$chemin = $this->getCheminImage($image['id_image']);
197
			if(file_exists($chemin)) {
204
			if(file_exists($chemin)) {
198
				list($largeur, $hauteur) = @getimagesize($chemin);
205
				list($largeur, $hauteur) = @getimagesize($chemin);
199
				if(is_numeric($largeur) && is_numeric($hauteur)) {
206
				if(is_numeric($largeur) && is_numeric($hauteur)) {
200
					$req_maj = "UPDATE cel_images SET hauteur = '".$hauteur."', largeur = '".$largeur."' ".
207
					$req_maj = "UPDATE cel_images SET hauteur = '".$hauteur."', largeur = '".$largeur."' ".
201
					           "WHERE id_image = '".$image['id_image']."'";
208
					           "WHERE id_image = '".$image['id_image']."'";
202
					$maj_taille_image = $this->bdd->requeter($req_maj);
209
					$maj_taille_image = $this->bdd->requeter($req_maj);
203
					if($maj_taille_image) {
210
					if($maj_taille_image) {
204
						$images_maj++;
211
						$images_maj++;
205
					}
212
					}
206
				} else {
213
				} else {
207
					$image_meta_ratees++;
214
					$image_meta_ratees++;
208
				}
215
				}
209
			} else {
216
			} else {
210
				$images_inexistantes++;
217
				$images_inexistantes++;
211
			}
218
			}
212
			$this->afficherAvancement("\tImages traitées : ", 1);
219
			$this->afficherAvancement("\tImages traitées : ", 1);
213
		}
220
		}
214
		echo "\n";
221
		echo "\n";
215
		echo "Fin de la régénération des tailles des images à partir des metadonnées \n";
222
		echo "Fin de la régénération des tailles des images à partir des metadonnées \n";
216
		echo $images_maj." images ont vu leur infos de taille régénérées \n";
223
		echo $images_maj." images ont vu leur infos de taille régénérées \n";
217
		echo $image_meta_ratees." images ont raté l'extraction de metadonnées \n";
224
		echo $image_meta_ratees." images ont raté l'extraction de metadonnées \n";
218
		echo $images_inexistantes." images n'existent pas en tant que fichier \n";
225
		echo $images_inexistantes." images n'existent pas en tant que fichier \n";
219
	}
226
	}
220
 
227
 
221
	private function getCheminImage($id) {
228
	private function getCheminImage($id) {
222
		$chemin_base = Config::get('dossierImages');
229
		$chemin_base = Config::get('dossierImages');
223
 
230
 
224
		$id = sprintf('%09s', $id);
231
		$id = sprintf('%09s', $id);
225
		$id = wordwrap($id, 3 , '_', true);
232
		$id = wordwrap($id, 3 , '_', true);
226
 
233
 
227
		list($dossierNiveau1, $dossierNiveau2) = explode('_', $id);
234
		list($dossierNiveau1, $dossierNiveau2) = explode('_', $id);
228
 
235
 
229
		$chemin = $chemin_base.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/O/'.$id.'_O.jpg';
236
		$chemin = $chemin_base.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/O/'.$id.'_O.jpg';
230
 
237
 
231
		return $chemin;
238
		return $chemin;
232
	}
239
	}
233
 
240
 
234
	protected function reparerLiaisonsOublieesObs() {
241
	protected function reparerLiaisonsOublieesObs() {
235
		// Toutes les liaisons obs-motscles avec l'id utilisateur issu de la table cel obs car
242
		// Toutes les liaisons obs-motscles avec l'id utilisateur issu de la table cel obs car
236
		// dans la table de liaison il est souvent vide
243
		// dans la table de liaison il est souvent vide
237
		$requete_liaisons = "SELECT com.id_observation, com.id_mot_cle_obs, co.ce_utilisateur ".
244
		$requete_liaisons = "SELECT com.id_observation, com.id_mot_cle_obs, co.ce_utilisateur ".
238
					"FROM `cel_obs_mots_cles` com INNER JOIN cel_obs co ON co.id_observation = com.id_observation ";
245
			"FROM `cel_obs_mots_cles` com INNER JOIN cel_obs co ON co.id_observation = com.id_observation ";
239
 
246
 
240
		$liaisons = $this->bdd->recupererTous($requete_liaisons);
247
		$liaisons = $this->bdd->recupererTous($requete_liaisons);
241
		$nb_liaisons_originales = count($liaisons);
248
		$nb_liaisons_originales = count($liaisons);
242
 
249
 
243
		// Tous les anciens mots clés, à classer par utilisateur, puis par id mot clé
250
		// Tous les anciens mots clés, à classer par utilisateur, puis par id mot clé
244
		$requete_mots_cles = "SELECT id_mot_cle_obs, id_utilisateur, mot_cle FROM cel_mots_cles_obs ";
251
		$requete_mots_cles = "SELECT id_mot_cle_obs, id_utilisateur, mot_cle FROM cel_mots_cles_obs ";
245
		$anciens_mots_cles = $this->bdd->recupererTous($requete_mots_cles);
252
		$anciens_mots_cles = $this->bdd->recupererTous($requete_mots_cles);
246
 
253
 
247
		$anciens_mots_cles_fmt = array();
254
		$anciens_mots_cles_fmt = array();
248
		foreach($anciens_mots_cles as &$ancien_mot_cle) {
255
		foreach($anciens_mots_cles as &$ancien_mot_cle) {
249
			$id_utilisateur_ancien = $ancien_mot_cle['id_utilisateur'];
256
			$id_utilisateur_ancien = $ancien_mot_cle['id_utilisateur'];
250
			if(!isset($anciens_mots_cles_fmt[$id_utilisateur_ancien])) {
257
			if(!isset($anciens_mots_cles_fmt[$id_utilisateur_ancien])) {
251
				$anciens_mots_cles_fmt[$id_utilisateur_ancien] = array();
258
				$anciens_mots_cles_fmt[$id_utilisateur_ancien] = array();
252
			}
259
			}
253
			$anciens_mots_cles_fmt[$id_utilisateur_ancien][$ancien_mot_cle['id_mot_cle_obs']] = $ancien_mot_cle;
260
			$anciens_mots_cles_fmt[$id_utilisateur_ancien][$ancien_mot_cle['id_mot_cle_obs']] = $ancien_mot_cle;
254
		}
261
		}
255
 
262
 
256
		// Tous les nouveau mots clés, à classer par utilisateur, puis par valeur textuelle du mot
263
		// Tous les nouveau mots clés, à classer par utilisateur, puis par valeur textuelle du mot
257
		$requete_nouveaux_mots_cles = "SELECT * FROM cel_arbre_mots_cles_obs";
264
		$requete_nouveaux_mots_cles = "SELECT * FROM cel_arbre_mots_cles_obs";
258
		$nouveau_mots_cles = $this->bdd->recupererTous($requete_nouveaux_mots_cles);
265
		$nouveau_mots_cles = $this->bdd->recupererTous($requete_nouveaux_mots_cles);
259
 
266
 
260
		$nouveau_mots_cles_fmt = array();
267
		$nouveau_mots_cles_fmt = array();
261
		foreach($nouveau_mots_cles as &$nouveau_mot_cle) {
268
		foreach($nouveau_mots_cles as &$nouveau_mot_cle) {
262
			$id_utilisateur_nouveau = $nouveau_mot_cle['id_utilisateur'];
269
			$id_utilisateur_nouveau = $nouveau_mot_cle['id_utilisateur'];
263
			if(!isset($nouveau_mots_cles_fmt[$id_utilisateur_nouveau])) {
270
			if(!isset($nouveau_mots_cles_fmt[$id_utilisateur_nouveau])) {
264
				$nouveau_mots_cles_fmt[$id_utilisateur_nouveau] = array();
271
				$nouveau_mots_cles_fmt[$id_utilisateur_nouveau] = array();
265
			}
272
			}
266
			$nouveau_mots_cles_fmt[$id_utilisateur_nouveau][strtolower($nouveau_mot_cle['mot_cle'])] = $nouveau_mot_cle;
273
			$nouveau_mots_cles_fmt[$id_utilisateur_nouveau][strtolower($nouveau_mot_cle['mot_cle'])] = $nouveau_mot_cle;
267
		}
274
		}
268
 
275
 
269
		$anciens_mot_cles_pas_trouves = 0;
276
		$anciens_mot_cles_pas_trouves = 0;
270
		$nouveaux_mot_cles_pas_trouves = 0;
277
		$nouveaux_mot_cles_pas_trouves = 0;
271
		$utilisateurs_pas_trouves = 0;
278
		$utilisateurs_pas_trouves = 0;
272
		$valeurs_a_inserer = array();
279
		$valeurs_a_inserer = array();
273
 
280
 
274
		$ids_obs = array();
281
		$ids_obs = array();
275
 
282
 
276
		foreach($liaisons as &$liaison) {
283
		foreach($liaisons as &$liaison) {
277
			$id_utilisateur_liaison = $liaison['ce_utilisateur'];
284
			$id_utilisateur_liaison = $liaison['ce_utilisateur'];
278
			$id_mot_cle_ancien_liaison = $liaison['id_mot_cle_obs'];
285
			$id_mot_cle_ancien_liaison = $liaison['id_mot_cle_obs'];
279
 
286
 
280
			if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison])) {
287
			if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison])) {
281
				if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison])) {
288
				if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison])) {
282
					$texte_ancien_mot_cle = $anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison]['mot_cle'];
289
					$texte_ancien_mot_cle = $anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison]['mot_cle'];
283
					$texte_ancien_mot_cle = strtolower($texte_ancien_mot_cle); // l'astuce de ouf !
290
					$texte_ancien_mot_cle = strtolower($texte_ancien_mot_cle); // l'astuce de ouf !
284
					if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison])) {
291
					if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison])) {
285
						if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle])) {
292
						if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle])) {
286
							$nouvel_id_mot_cle = $nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle]['id_mot_cle'];
293
							$nouvel_id_mot_cle = $nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle]['id_mot_cle'];
287
 
294
 
288
							$valeurs_a_inserer[] = array(
295
							$valeurs_a_inserer[] = array(
289
													'id_element_lie' => $liaison['id_observation'],
296
								'id_element_lie' => $liaison['id_observation'],
290
													'id_mot_cle' => $nouvel_id_mot_cle,
297
								'id_mot_cle' => $nouvel_id_mot_cle,
291
													'ancienne_liaison' => $liaison
298
								'ancienne_liaison' => $liaison
292
							);
299
							);
293
							$ids_obs[] = $liaison['id_observation'];
300
							$ids_obs[] = $liaison['id_observation'];
294
						} else {
301
						} else {
295
							$nouveaux_mot_cles_pas_trouves++;
302
							$nouveaux_mot_cles_pas_trouves++;
296
						}
303
						}
297
					} else {
304
					} else {
298
 
305
 
299
					}
306
					}
300
 
307
 
301
				} else {
308
				} else {
302
					$anciens_mot_cles_pas_trouves++;
309
					$anciens_mot_cles_pas_trouves++;
303
				}
310
				}
304
			} else {
311
			} else {
305
				$utilisateurs_pas_trouves++;
312
				$utilisateurs_pas_trouves++;
306
			}
313
			}
307
		}
314
		}
308
 
315
 
309
		echo "Anciennes liaisons ".$nb_liaisons_originales." \n";
316
		echo "Anciennes liaisons ".$nb_liaisons_originales." \n";
310
		echo "Liaisons à insérer ".count($valeurs_a_inserer)."\n";
317
		echo "Liaisons à insérer ".count($valeurs_a_inserer)."\n";
311
		echo "Utilisateurs inconnus ".$utilisateurs_pas_trouves."\n";
318
		echo "Utilisateurs inconnus ".$utilisateurs_pas_trouves."\n";
312
		echo "Anciens mots clés inconnus ".$anciens_mot_cles_pas_trouves."\n";
319
		echo "Anciens mots clés inconnus ".$anciens_mot_cles_pas_trouves."\n";
313
		echo "Nouveaux mots clés inconnus ".$nouveaux_mot_cles_pas_trouves."\n";
320
		echo "Nouveaux mots clés inconnus ".$nouveaux_mot_cles_pas_trouves."\n";
314
 
321
 
315
		$tranches = array_chunk($valeurs_a_inserer, 800);
322
		$tranches = array_chunk($valeurs_a_inserer, 800);
316
 
323
 
317
		foreach($tranches as $tranche) {
324
		foreach($tranches as $tranche) {
318
			$requete_insertion = "INSERT IGNORE INTO cel_mots_cles_obs_liaison (id_element_lie, id_mot_cle) ".
325
			$requete = "INSERT IGNORE INTO cel_mots_cles_obs_liaison (id_element_lie, id_mot_cle) VALUES ";
319
					                      "VALUES ";
-
 
320
			foreach($tranche as $l) {
326
			foreach($tranche as $l) {
321
				$requete_insertion .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),";
327
				$requete .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'), ";
322
			}
328
			}
323
			$requete_insertion = rtrim($requete_insertion, ',');
329
			$requete = rtrim($requete, ',');
324
			$insertion = $this->bdd->requeter($requete_insertion);
330
			$insertion = $this->bdd->requeter($requete);
325
			$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1);
331
			$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1);
326
		}
332
		}
327
		echo "\n";
333
		echo "\n";
328
	}
334
	}
329
 
335
 
330
	private function reparerLiaisonsOublieesImages() {
336
	private function reparerLiaisonsOublieesImages() {
331
		// Toutes les liaisons obs-motscles avec l'id utilisateur issu de la table cel obs car
337
		// Toutes les liaisons obs-motscles avec l'id utilisateur issu de la table cel obs car
332
		// dans la table de liaison il est souvent vide
338
		// dans la table de liaison il est souvent vide
333
		$requete_liaisons = "SELECT cim.id_image, cim.id_mot_cle_image, ci.ce_utilisateur ".
339
		$requete_liaisons = "SELECT cim.id_image, cim.id_mot_cle_image, ci.ce_utilisateur ".
334
							"FROM cel_images_mots_cles cim INNER JOIN cel_images ci ON ci.id_image = cim.id_image ";
340
							"FROM cel_images_mots_cles cim INNER JOIN cel_images ci ON ci.id_image = cim.id_image ";
335
 
341
 
336
		$liaisons = $this->bdd->recupererTous($requete_liaisons);
342
		$liaisons = $this->bdd->recupererTous($requete_liaisons);
337
 
343
 
338
		// Tous les anciens mots clés, à classer par utilisateur, puis par id mot clé
344
		// Tous les anciens mots clés, à classer par utilisateur, puis par id mot clé
339
		$requete_mots_cles = "SELECT id_mot_cle_image, id_utilisateur, mot_cle FROM cel_mots_cles_images ";
345
		$requete_mots_cles = "SELECT id_mot_cle_image, id_utilisateur, mot_cle FROM cel_mots_cles_images ";
340
		$anciens_mots_cles = $this->bdd->recupererTous($requete_mots_cles);
346
		$anciens_mots_cles = $this->bdd->recupererTous($requete_mots_cles);
341
 
347
 
342
		$anciens_mots_cles_fmt = array();
348
		$anciens_mots_cles_fmt = array();
343
		foreach($anciens_mots_cles as &$ancien_mot_cle) {
349
		foreach($anciens_mots_cles as &$ancien_mot_cle) {
344
			$id_utilisateur_ancien = $ancien_mot_cle['id_utilisateur'];
350
			$id_utilisateur_ancien = $ancien_mot_cle['id_utilisateur'];
345
			if(!isset($anciens_mots_cles_fmt[$id_utilisateur_ancien])) {
351
			if(!isset($anciens_mots_cles_fmt[$id_utilisateur_ancien])) {
346
				$anciens_mots_cles_fmt[$id_utilisateur_ancien] = array();
352
				$anciens_mots_cles_fmt[$id_utilisateur_ancien] = array();
347
			}
353
			}
348
			$anciens_mots_cles_fmt[$id_utilisateur_ancien][$ancien_mot_cle['id_mot_cle_image']] = $ancien_mot_cle;
354
			$anciens_mots_cles_fmt[$id_utilisateur_ancien][$ancien_mot_cle['id_mot_cle_image']] = $ancien_mot_cle;
349
		}
355
		}
350
 
356
 
351
		// Tous les nouveau mots clés, à classer par utilisateur, puis par valeur textuelle du mot
357
		// Tous les nouveau mots clés, à classer par utilisateur, puis par valeur textuelle du mot
352
		$requete_nouveaux_mots_cles = "SELECT * FROM cel_arbre_mots_cles_images";
358
		$requete_nouveaux_mots_cles = "SELECT * FROM cel_arbre_mots_cles_images";
353
		$nouveau_mots_cles = $this->bdd->recupererTous($requete_nouveaux_mots_cles);
359
		$nouveau_mots_cles = $this->bdd->recupererTous($requete_nouveaux_mots_cles);
354
 
360
 
355
		$nouveau_mots_cles_fmt = array();
361
		$nouveau_mots_cles_fmt = array();
356
		foreach($nouveau_mots_cles as &$nouveau_mot_cle) {
362
		foreach($nouveau_mots_cles as &$nouveau_mot_cle) {
357
			$id_utilisateur_nouveau = $nouveau_mot_cle['id_utilisateur'];
363
			$id_utilisateur_nouveau = $nouveau_mot_cle['id_utilisateur'];
358
			if(!isset($nouveau_mots_cles_fmt[$id_utilisateur_nouveau])) {
364
			if(!isset($nouveau_mots_cles_fmt[$id_utilisateur_nouveau])) {
359
				$nouveau_mots_cles_fmt[$id_utilisateur_nouveau] = array();
365
				$nouveau_mots_cles_fmt[$id_utilisateur_nouveau] = array();
360
			}
366
			}
361
			$nouveau_mots_cles_fmt[$id_utilisateur_nouveau][$nouveau_mot_cle['mot_cle']] = $nouveau_mot_cle;
367
			$nouveau_mots_cles_fmt[$id_utilisateur_nouveau][$nouveau_mot_cle['mot_cle']] = $nouveau_mot_cle;
362
		}
368
		}
363
 
369
 
364
		$anciens_mot_cles_pas_trouves = 0;
370
		$anciens_mot_cles_pas_trouves = 0;
365
		$nouveaux_mot_cles_pas_trouves = 0;
371
		$nouveaux_mot_cles_pas_trouves = 0;
366
		$utilisateurs_pas_trouves = 0;
372
		$utilisateurs_pas_trouves = 0;
367
		$valeurs_a_inserer = array();
373
		$valeurs_a_inserer = array();
368
 
374
 
369
		foreach($liaisons as &$liaison) {
375
		foreach($liaisons as &$liaison) {
370
			$id_utilisateur_liaison = $liaison['ce_utilisateur'];
376
			$id_utilisateur_liaison = $liaison['ce_utilisateur'];
371
			$id_mot_cle_ancien_liaison = $liaison['id_mot_cle_image'];
377
			$id_mot_cle_ancien_liaison = $liaison['id_mot_cle_image'];
372
 
378
 
373
			if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison])) {
379
			if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison])) {
374
				if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison])) {
380
				if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison])) {
375
					$texte_ancien_mot_cle = $anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison]['mot_cle'];
381
					$texte_ancien_mot_cle = $anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison]['mot_cle'];
376
					if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison])) {
382
					if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison])) {
377
						if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle])) {
383
						if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle])) {
378
							$nouvel_id_mot_cle = $nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle]['id_mot_cle'];
384
							$nouvel_id_mot_cle = $nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle]['id_mot_cle'];
379
 
385
 
380
							$valeurs_a_inserer[] = array(
386
							$valeurs_a_inserer[] = array(
381
															'id_element_lie' => $liaison['id_image'],
387
								'id_element_lie' => $liaison['id_image'],
382
															'id_mot_cle' => $nouvel_id_mot_cle,
388
								'id_mot_cle' => $nouvel_id_mot_cle,
383
															'ancienne_liaison' => $liaison
389
								'ancienne_liaison' => $liaison
384
							);
390
							);
385
							$ids_imgs[] = $liaison['id_image'];
391
							$ids_imgs[] = $liaison['id_image'];
386
						} else {
392
						} else {
387
							$nouveaux_mot_cles_pas_trouves++;
393
							$nouveaux_mot_cles_pas_trouves++;
388
						}
394
						}
389
					} else {
395
					} else {
390
 
396
 
391
					}
397
					}
392
 
398
 
393
				} else {
399
				} else {
394
					$anciens_mot_cles_pas_trouves++;
400
					$anciens_mot_cles_pas_trouves++;
395
				}
401
				}
396
			} else {
402
			} else {
397
				$utilisateurs_pas_trouves++;
403
				$utilisateurs_pas_trouves++;
398
			}
404
			}
399
		}
405
		}
400
 
406
 
401
		echo "Liaisons à insérer ".count($valeurs_a_inserer)."\n";
407
		echo "Liaisons à insérer ".count($valeurs_a_inserer)."\n";
402
		echo "Utilisateurs inconnus ".$utilisateurs_pas_trouves."\n";
408
		echo "Utilisateurs inconnus ".$utilisateurs_pas_trouves."\n";
403
		echo "Anciens mots clés inconnus ".$anciens_mot_cles_pas_trouves."\n";
409
		echo "Anciens mots clés inconnus ".$anciens_mot_cles_pas_trouves."\n";
404
		echo "Nouveaux mots clés inconnus ".$nouveaux_mot_cles_pas_trouves."\n";
410
		echo "Nouveaux mots clés inconnus ".$nouveaux_mot_cles_pas_trouves."\n";
405
 
411
 
406
		$tranches = array_chunk($valeurs_a_inserer, 800);
412
		$tranches = array_chunk($valeurs_a_inserer, 800);
407
 
413
 
408
		foreach($tranches as $tranche) {
414
		foreach($tranches as $tranche) {
409
			$requete_insertion = "INSERT IGNORE INTO cel_mots_cles_images_liaison (id_element_lie, id_mot_cle) ".
415
			$requete = "INSERT IGNORE INTO cel_mots_cles_images_liaison (id_element_lie, id_mot_cle) ".
410
					                      "VALUES ";
416
				"VALUES ";
411
			foreach($tranche as $l) {
417
			foreach($tranche as $l) {
412
				$requete_insertion .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),";
418
				$requete .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),";
413
			}
419
			}
414
			$requete_insertion = rtrim($requete_insertion, ',');
420
			$requete = rtrim($requete, ',');
415
			$insertion = $this->bdd->requeter($requete_insertion);
421
			$insertion = $this->bdd->requeter($requete);
416
			$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1);
422
			$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1);
417
		}
423
		}
418
		echo "\n";
424
		echo "\n";
419
	}
425
	}
420
 
426
 
421
	private function reparerLiaisonsObsParMotsClesTexte($mot_cle_texte_recherche) {
427
	private function reparerLiaisonsObsParMotsClesTexte($mot_cle_texte_recherche) {
422
		$ancienne_table_obs = Config::get('table_obs_recup');
428
		$ancienne_table_obs = Config::get('table_obs_recup');
423
		$requete_anciens_mots_cles_texte = "SELECT ce_utilisateur, id_observation, mots_cles_texte ".
429
		$requete = "SELECT ce_utilisateur, id_observation, mots_cles_texte ".
-
 
430
			"FROM $ancienne_table_obs ".
424
											"FROM ".$ancienne_table_obs." WHERE mots_cles_texte LIKE '%".$mot_cle_texte_recherche."%'";
431
			"WHERE mots_cles_texte LIKE '%$mot_cle_texte_recherche%' ";
425
		$obs_a_mot_cle = $this->bdd->recupererTous($requete_anciens_mots_cles_texte);
432
		$obs_a_mot_cle = $this->bdd->recupererTous($requete);
426
 
433
 
-
 
434
		$requete = 'SELECT * '.
427
		$requete_nouveaux_mots_cle = "SELECT * FROM cel_arbre_mots_cles_obs ".
435
			'FROM cel_arbre_mots_cles_obs '.
428
									"WHERE id_utilisateur IN ".
436
			'WHERE id_utilisateur IN ( '.
-
 
437
			'	SELECT id_utilisateur '.
429
									"(SELECT id_utilisateur FROM ".$ancienne_table_obs." ".
438
			"FROM $ancienne_table_obs ".
430
									"WHERE mots_cles_texte LIKE '%".$mot_cle_texte_recherche."%')";
439
			"	WHERE mots_cles_texte LIKE '%$mot_cle_texte_recherche%') ";
431
		$nouveaux_mots_cles = $this->bdd->recupererTous($requete_nouveaux_mots_cle);
440
		$nouveaux_mots_cles = $this->bdd->recupererTous($requete);
432
 
441
 
433
		$mots_cles_indexes = array();
442
		$mots_cles_indexes = array();
434
		foreach($nouveaux_mots_cles as $mot_cle) {
443
		foreach($nouveaux_mots_cles as $mot_cle) {
435
			$mots_cles_indexes[$mot_cle['id_utilisateur']][strtolower($mot_cle['mot_cle'])] = $mot_cle;
444
			$mots_cles_indexes[$mot_cle['id_utilisateur']][strtolower($mot_cle['mot_cle'])] = $mot_cle;
436
		}
445
		}
437
 
446
 
438
		$liaisons_a_inserer = array();
447
		$liaisons_a_inserer = array();
439
		$utilFoirax = 0;
448
		$utilFoirax = 0;
440
		$mcFoirax = 0;
449
		$mcFoirax = 0;
441
		foreach($obs_a_mot_cle as $obs) {
450
		foreach($obs_a_mot_cle as $obs) {
442
			$mots_cles_texte_tab = explode(',', $obs['mots_cles_texte']);
451
			$mots_cles_texte_tab = explode(',', $obs['mots_cles_texte']);
443
			$id_observation = $obs['id_observation'];
452
			$id_observation = $obs['id_observation'];
444
			$id_utilisateur = $obs['ce_utilisateur'];
453
			$id_utilisateur = $obs['ce_utilisateur'];
445
			foreach($mots_cles_texte_tab as $mot_cle_t) {
454
			foreach($mots_cles_texte_tab as $mot_cle_t) {
446
				if($mot_cle_t == $mot_cle_texte_recherche) {
455
				if($mot_cle_t == $mot_cle_texte_recherche) {
447
					if (isset($mots_cles_indexes[$id_utilisateur])) {
456
					if (isset($mots_cles_indexes[$id_utilisateur])) {
448
						if (isset($mots_cles_indexes[$id_utilisateur][strtolower($mot_cle_t)])) {
457
						if (isset($mots_cles_indexes[$id_utilisateur][strtolower($mot_cle_t)])) {
449
							$id_nouveau_mot_cle = $mots_cles_indexes[$id_utilisateur][strtolower($mot_cle_t)]['id_mot_cle'];
458
							$id_nouveau_mot_cle = $mots_cles_indexes[$id_utilisateur][strtolower($mot_cle_t)]['id_mot_cle'];
450
						} else {
459
						} else {
451
							$mcFoirax++;
460
							$mcFoirax++;
452
						}
461
						}
453
					} else {
462
					} else {
454
						$utilFoirax++;
463
						$utilFoirax++;
455
					}
464
					}
456
					$liaisons_a_inserer[] = array('id_element_lie' => $id_observation, 'id_mot_cle' => $id_nouveau_mot_cle);
465
					$liaisons_a_inserer[] = array('id_element_lie' => $id_observation, 'id_mot_cle' => $id_nouveau_mot_cle);
457
				}
466
				}
458
			}
467
			}
459
		}
468
		}
460
		echo "Utilisateurs pas dans le tableau: $utilFoirax\n";
469
		echo "Utilisateurs pas dans le tableau: $utilFoirax\n";
461
		echo "Motf-clefs pas dans le tableau: $mcFoirax\n";
470
		echo "Motf-clefs pas dans le tableau: $mcFoirax\n";
462
		//echo '<pre>'.print_r($liaisons_a_inserer, true).'</pre>';
471
		//echo '<pre>'.print_r($liaisons_a_inserer, true).'</pre>';
463
		echo "Liaisons à insérer: " . count($liaisons_a_inserer) . " \n";
472
		echo "Liaisons à insérer: " . count($liaisons_a_inserer) . " \n";
464
 
473
 
465
		$requete_insertion = "INSERT IGNORE INTO cel_mots_cles_obs_liaison (id_element_lie, id_mot_cle) ".
474
		$requete_insertion = "INSERT IGNORE INTO cel_mots_cles_obs_liaison (id_element_lie, id_mot_cle) ".
466
				"VALUES ";
475
				"VALUES ";
467
		foreach($liaisons_a_inserer as $l) {
476
		foreach($liaisons_a_inserer as $l) {
468
			$requete_insertion .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),";
477
			$requete_insertion .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),";
469
		}
478
		}
470
		$requete_insertion = rtrim($requete_insertion, ',');
479
		$requete_insertion = rtrim($requete_insertion, ',');
471
		$insertion = $this->bdd->requeter($requete_insertion);
480
		$insertion = $this->bdd->requeter($requete_insertion);
472
	}
481
	}
473
 
482
 
474
	// Change toutes les associations images - mots_cles dont l'id mot_cle est $idDoublon, pour le remplacer par $idCible
483
	// Change toutes les associations images - mots_cles dont l'id mot_cle est $idDoublon, pour le remplacer par $idCible
475
	private function reductionMotsClesImages($idDoublon, $idCible, $supprimerVieuxMotsCles=true) {
484
	private function reductionMotsClesImages($idDoublon, $idCible, $supprimerVieuxMotsCles=true) {
476
		echo "Réduction de $idDoublon (images) à $idCible" . PHP_EOL;
485
		echo "Réduction de $idDoublon (images) à $idCible" . PHP_EOL;
477
 
486
 
478
		$q1 = "SELECT id_element_lie FROM cel_mots_cles_images_liaison WHERE id_mot_cle = $idCible;";
487
		$q1 = "SELECT id_element_lie FROM cel_mots_cles_images_liaison WHERE id_mot_cle = $idCible;";
479
		$r1 = $this->bdd->requeter($q1);
488
		$r1 = $this->bdd->requeter($q1);
480
		$idsImages = array();
489
		$idsImages = array();
481
		foreach ($r1 as $r) {
490
		foreach ($r1 as $r) {
482
			$idsImages[] = $r['id_element_lie'];
491
			$idsImages[] = $r['id_element_lie'];
483
		}
492
		}
484
 
493
 
485
		if (count($idsImages) > 0) {
494
		if (count($idsImages) > 0) {
486
			// On vire ceux qui ont le doublon mais qui ont aussi la cible
495
			// On vire ceux qui ont le doublon mais qui ont aussi la cible
487
			$q2 = "DELETE FROM cel_mots_cles_images_liaison WHERE id_mot_cle = $idDoublon AND id_element_lie IN (" . implode(',', $idsImages) . ");";
496
			$q2 = "DELETE FROM cel_mots_cles_images_liaison WHERE id_mot_cle = $idDoublon AND id_element_lie IN (" . implode(',', $idsImages) . ");";
488
			$r2 = $this->bdd->requeter($q2);
497
			$r2 = $this->bdd->requeter($q2);
489
		}
498
		}
490
 
499
 
491
		// On convertit tous les doublons en cible
500
		// On convertit tous les doublons en cible
492
		$q3 = "UPDATE cel_mots_cles_images_liaison SET id_mot_cle = $idCible WHERE id_mot_cle = $idDoublon;";
501
		$q3 = "UPDATE cel_mots_cles_images_liaison SET id_mot_cle = $idCible WHERE id_mot_cle = $idDoublon;";
493
		$r3 = $this->bdd->requeter($q3);
502
		$r3 = $this->bdd->requeter($q3);
494
 
503
 
495
		if ($supprimerVieuxMotsCles) {
504
		if ($supprimerVieuxMotsCles) {
496
			// On supprime le mot cle qui sert plus à rien
505
			// On supprime le mot cle qui sert plus à rien
497
			$q4 = "DELETE FROM cel_arbre_mots_cles_images WHERE id_mot_cle = $idDoublon;";
506
			$q4 = "DELETE FROM cel_arbre_mots_cles_images WHERE id_mot_cle = $idDoublon;";
498
			$r4 = $this->bdd->requeter($q4);
507
			$r4 = $this->bdd->requeter($q4);
499
		}
508
		}
500
	}
509
	}
501
 
510
 
502
	// @TODO factoriser avec reductionMotsClesImages
511
	// @TODO factoriser avec reductionMotsClesImages
503
	// Change toutes les associations obs - mots_cles dont l'id mot_cle est $idDoublon, pour le remplacer par $idCible
512
	// Change toutes les associations obs - mots_cles dont l'id mot_cle est $idDoublon, pour le remplacer par $idCible
504
	private function reductionMotsClesObs($idDoublon, $idCible, $supprimerVieuxMotsCles=true) {
513
	private function reductionMotsClesObs($idDoublon, $idCible, $supprimerVieuxMotsCles=true) {
505
		echo "Réduction de $idDoublon (obs) à $idCible" . PHP_EOL;
514
		echo "Réduction de $idDoublon (obs) à $idCible" . PHP_EOL;
506
 
515
 
507
		$q1 = "SELECT id_element_lie FROM cel_mots_cles_obs_liaison WHERE id_mot_cle = $idCible;";
516
		$q1 = "SELECT id_element_lie FROM cel_mots_cles_obs_liaison WHERE id_mot_cle = $idCible;";
508
		$r1 = $this->bdd->requeter($q1);
517
		$r1 = $this->bdd->requeter($q1);
509
		$idsObs = array();
518
		$idsObs = array();
510
		foreach ($r1 as $r) {
519
		foreach ($r1 as $r) {
511
			$idsObs[] = $r['id_element_lie'];
520
			$idsObs[] = $r['id_element_lie'];
512
		}
521
		}
513
 
522
 
514
		if (count($idsObs) > 0) {
523
		if (count($idsObs) > 0) {
515
			// On vire ceux qui ont le doublon mais qui ont aussi la cible
524
			// On vire ceux qui ont le doublon mais qui ont aussi la cible
516
			$q2 = "DELETE FROM cel_mots_cles_obs_liaison WHERE id_mot_cle = $idDoublon AND id_element_lie IN (" . implode(',', $idsObs) . ");";
525
			$q2 = "DELETE FROM cel_mots_cles_obs_liaison WHERE id_mot_cle = $idDoublon AND id_element_lie IN (" . implode(',', $idsObs) . ");";
517
			$r2 = $this->bdd->requeter($q2);
526
			$r2 = $this->bdd->requeter($q2);
518
		}
527
		}
519
 
528
 
520
		// On convertit tous les doublons en cible
529
		// On convertit tous les doublons en cible
521
		$q3 = "UPDATE cel_mots_cles_obs_liaison SET id_mot_cle = $idCible WHERE id_mot_cle = $idDoublon;";
530
		$q3 = "UPDATE cel_mots_cles_obs_liaison SET id_mot_cle = $idCible WHERE id_mot_cle = $idDoublon;";
522
		$r3 = $this->bdd->requeter($q3);
531
		$r3 = $this->bdd->requeter($q3);
523
 
532
 
524
		if ($supprimerVieuxMotsCles) {
533
		if ($supprimerVieuxMotsCles) {
525
			// On supprime le mot cle qui sert plus à rien
534
			// On supprime le mot cle qui sert plus à rien
526
			$q4 = "DELETE FROM cel_arbre_mots_cles_obs WHERE id_mot_cle = $idDoublon;";
535
			$q4 = "DELETE FROM cel_arbre_mots_cles_obs WHERE id_mot_cle = $idDoublon;";
527
			$r4 = $this->bdd->requeter($q4);
536
			$r4 = $this->bdd->requeter($q4);
528
		}
537
		}
529
	}
538
	}
530
 
539
 
531
	private function reductionMotsClesImagesUtilisateur($idUtilisateur) {
540
	private function reductionMotsClesImagesUtilisateur($idUtilisateur) {
532
		$this->reductionMotsClesUtilisateur($idUtilisateur, "images");
541
		$this->reductionMotsClesUtilisateur($idUtilisateur, "images");
533
	}
542
	}
534
 
543
 
535
	private function reductionMotsClesObsUtilisateur($idUtilisateur) {
544
	private function reductionMotsClesObsUtilisateur($idUtilisateur) {
536
		$this->reductionMotsClesUtilisateur($idUtilisateur, "obs");
545
		$this->reductionMotsClesUtilisateur($idUtilisateur, "obs");
537
	}
546
	}
538
 
547
 
539
	// Parcourt l'arbre des mots-cles (obs ou images) de l'utilisateur dont l'id est $idUtilisateur,
548
	// Parcourt l'arbre des mots-cles (obs ou images) de l'utilisateur dont l'id est $idUtilisateur,
540
	// et réduit tous ceux dont le chemin n'est pas unique
549
	// et réduit tous ceux dont le chemin n'est pas unique
541
	private function reductionMotsClesUtilisateur($idUtilisateur, $mode = "images") {
550
	private function reductionMotsClesUtilisateur($idUtilisateur, $mode = "images") {
542
		$table = "cel_arbre_mots_cles_";
551
		$table = "cel_arbre_mots_cles_";
543
		if ($mode == "images" || $mode == "obs") {
552
		if ($mode == "images" || $mode == "obs") {
544
			$table .= $mode;
553
			$table .= $mode;
545
		}
554
		}
546
		$q1 = "SELECT id_mot_cle, chemin, mot_cle, (LOCATE(mot_cle, chemin) != 0) as valide FROM `$table`"
555
		$q1 = 'SELECT id_mot_cle, chemin, mot_cle, (LOCATE(mot_cle, chemin) != 0) AS valide '.
-
 
556
			"FROM `$table` ".
547
			. " WHERE id_utilisateur = '$idUtilisateur'"
557
			"WHERE id_utilisateur = '$idUtilisateur' ".
548
			. " ORDER BY chemin ASC, valide DESC;";
558
			"ORDER BY chemin ASC, valide DESC ";
549
		$r1 = $this->bdd->requeter($q1);
559
		$r1 = $this->bdd->requeter($q1);
550
 
560
 
551
		$idsMotsCles = array();
561
		$idsMotsCles = array();
552
		$nbVieux = 0;
562
		$nbVieux = 0;
553
		foreach ($r1 as $r) {
563
		foreach ($r1 as $r) {
554
			$k = strtolower($r['chemin']);
564
			$k = strtolower($r['chemin']);
555
			if (! isset($idsMotsCles[$k])) {
565
			if (! isset($idsMotsCles[$k])) {
556
				$idsMotsCles[$k] = array();
566
				$idsMotsCles[$k] = array();
557
			}
567
			}
558
			$idsMotsCles[$k][] = $r['id_mot_cle'];
568
			$idsMotsCles[$k][] = $r['id_mot_cle'];
559
			$nbVieux++;
569
			$nbVieux++;
560
		}
570
		}
561
		$nbNouveaux = count($idsMotsCles);
571
		$nbNouveaux = count($idsMotsCles);
562
 
572
 
563
		echo "Réduction de $nbVieux à $nbNouveaux mots-cles $mode" . PHP_EOL;
573
		echo "Réduction de $nbVieux à $nbNouveaux mots-cles $mode" . PHP_EOL;
564
		$aTraiter = 0;
574
		$aTraiter = 0;
565
		foreach ($idsMotsCles as $chemin => $ids) {
575
		foreach ($idsMotsCles as $chemin => $ids) {
566
			if (count($ids) > 1) {
576
			if (count($ids) > 1) {
567
				$aTraiter ++;
577
				$aTraiter ++;
568
				$idCible = array_shift($ids);
578
				$idCible = array_shift($ids);
569
				foreach ($ids as $idDoublon) {
579
				foreach ($ids as $idDoublon) {
570
					if ($mode == "images") {
580
					if ($mode == "images") {
571
						$this->reductionMotsClesImages($idDoublon, $idCible);
581
						$this->reductionMotsClesImages($idDoublon, $idCible);
572
					} elseif ($mode == "obs") {
582
					} elseif ($mode == "obs") {
573
						$this->reductionMotsClesObs($idDoublon, $idCible);
583
						$this->reductionMotsClesObs($idDoublon, $idCible);
574
					}
584
					}
575
				}
585
				}
576
			}
586
			}
577
		}
587
		}
578
		echo "$aTraiter groupes ($mode) ont été réduits" . PHP_EOL;
588
		echo "$aTraiter groupes ($mode) ont été réduits" . PHP_EOL;
579
	}
589
	}
580
 
590
 
581
	private function reduireEtNormaliserMotsClesImages($util=null) {
591
	private function reduireEtNormaliserMotsClesImages($util=null) {
582
		$this->reduireEtNormaliserMotsCles('cel_arbre_mots_cles_images', 'chemin', 'images', $util);
592
		$this->reduireEtNormaliserMotsCles('cel_arbre_mots_cles_images', 'chemin', 'images', $util);
583
	}
593
	}
584
 
594
 
585
	private function reduireEtNormaliserMotsClesObs($util=null) {
595
	private function reduireEtNormaliserMotsClesObs($util=null) {
586
		$this->reduireEtNormaliserMotsCles('cel_arbre_mots_cles_obs', 'chemin', 'obs', $util);
596
		$this->reduireEtNormaliserMotsCles('cel_arbre_mots_cles_obs', 'chemin', 'obs', $util);
587
	}
597
	}
588
 
598
 
589
	private function reduireEtNormaliserMotsCles($table, $colonne, $mode = "images", $util=null) {
599
	private function reduireEtNormaliserMotsCles($table, $colonne, $mode = "images", $util=null) {
590
		echo "Suppression des accents dans la table $table, colonne $colonne ...";
600
		echo "Suppression des accents dans la table $table, colonne $colonne ...";
591
		$this->supprimerAccents($table, $colonne, $util);
601
		$this->supprimerAccents($table, $colonne, $util);
592
		echo "effectuée \n";
602
		echo "effectuée \n";
593
		echo "Suppression des majuscules dans la table $table, colonne $colonne ...";
603
		echo "Suppression des majuscules dans la table $table, colonne $colonne ...";
594
		$this->supprimerMajuscules($table, $colonne, $util);
604
		$this->supprimerMajuscules($table, $colonne, $util);
595
		echo "effectuée \n";
605
		echo "effectuée \n";
596
		echo "\n";
606
		echo "\n";
597
		if ($util !== null) {
607
		if ($util !== null) {
598
			echo "Réduction de tous les mots clés $mode de l'utilisateur $util\n";
608
			echo "Réduction de tous les mots clés $mode de l'utilisateur $util\n";
599
			if($mode == "images") {
609
			if($mode == "images") {
600
				$this->reductionMotsClesImagesUtilisateur($util);
610
				$this->reductionMotsClesImagesUtilisateur($util);
601
			} elseif($mode == "obs") {
611
			} elseif($mode == "obs") {
602
				$this->reductionMotsClesObsUtilisateur($util);
612
				$this->reductionMotsClesObsUtilisateur($util);
603
			}
613
			}
604
		} else {
614
		} else {
605
			echo "Réduction de tous les mots clés $mode \n";
615
			echo "Réduction de tous les mots clés $mode \n";
606
			$req_utilisateurs = "SELECT DISTINCT id_utilisateur FROM ".$table;
616
			$req_utilisateurs = "SELECT DISTINCT id_utilisateur FROM ".$table;
607
			$utilisateurs = $this->bdd->recupererTous($req_utilisateurs);
617
			$utilisateurs = $this->bdd->recupererTous($req_utilisateurs);
608
 
618
 
609
			foreach($utilisateurs as $utilisateur) {
619
			foreach($utilisateurs as $utilisateur) {
610
				echo "Utilisateur en cours de traitement : ".$utilisateur['id_utilisateur']." \n";
620
				echo "Utilisateur en cours de traitement : ".$utilisateur['id_utilisateur']." \n";
611
				if($mode == "images") {
621
				if($mode == "images") {
612
					$this->reductionMotsClesImagesUtilisateur($utilisateur['id_utilisateur']);
622
					$this->reductionMotsClesImagesUtilisateur($utilisateur['id_utilisateur']);
613
				} elseif($mode == "obs") {
623
				} elseif($mode == "obs") {
614
					$this->reductionMotsClesObsUtilisateur($utilisateur['id_utilisateur']);
624
					$this->reductionMotsClesObsUtilisateur($utilisateur['id_utilisateur']);
615
				}
625
				}
616
			}
626
			}
617
		}
627
		}
618
		echo "Fin de la réduction des mots clés $mode \n";
628
		echo "Fin de la réduction des mots clés $mode \n";
619
	}
629
	}
620
 
630
 
621
	private function supprimerMajuscules($table, $colonne, $util=null) {
631
	private function supprimerMajuscules($table, $colonne, $util = null) {
622
		$requete = "UPDATE ".$table." SET ".$colonne." = LOWER(".$colonne.")";
632
		$requete = "UPDATE $table SET $colonne = LOWER($colonne)";
623
		if ($util !== null) {
633
		if ($util !== null) {
624
			$requete .= " WHERE id_utilisateur = $util";
634
			$requete .= " WHERE id_utilisateur = $util";
625
		}
635
		}
626
		$this->bdd->requeter($requete);
636
		$this->bdd->requeter($requete);
627
	}
637
	}
628
 
638
 
629
	private function supprimerAccents($table, $colonne, $util=null) {
-
 
630
 
639
	private function supprimerAccents($table, $colonne, $util = null) {
631
		$requetes = array(
640
		$requetes = array(
632
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Š','S')",
641
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Š','S')",
633
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'š','s')",
642
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'š','s')",
634
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ð','Dj')",
643
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ð','Dj')",
635
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ž','Z')",
644
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ž','Z')",
636
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ž','z')",
645
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ž','z')",
637
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'À','A')",
646
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'À','A')",
638
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Á','A')",
647
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Á','A')",
639
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Â','A')",
648
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Â','A')",
640
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ã','A')",
649
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ã','A')",
641
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ä','A')",
650
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ä','A')",
642
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Å','A')",
651
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Å','A')",
643
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Æ','A')",
652
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Æ','A')",
644
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ç','C')",
653
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ç','C')",
645
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'È','E')",
654
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'È','E')",
646
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'É','E')",
655
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'É','E')",
647
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ê','E')",
656
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ê','E')",
648
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ë','E')",
657
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ë','E')",
649
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ì','I')",
658
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ì','I')",
650
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Í','I')",
659
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Í','I')",
651
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Î','I')",
660
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Î','I')",
652
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ï','I')",
661
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ï','I')",
653
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ñ','N')",
662
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ñ','N')",
654
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ò','O')",
663
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ò','O')",
655
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ó','O')",
664
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ó','O')",
656
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ô','O')",
665
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ô','O')",
657
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Õ','O')",
666
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Õ','O')",
658
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ö','O')",
667
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ö','O')",
659
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ø','O')",
668
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ø','O')",
660
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ù','U')",
669
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ù','U')",
661
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ú','U')",
670
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ú','U')",
662
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Û','U')",
671
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Û','U')",
663
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ü','U')",
672
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ü','U')",
664
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ý','Y')",
673
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Ý','Y')",
665
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Þ','B')",
674
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Þ','B')",
666
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ß','Ss')",
675
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ß','Ss')",
667
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'à','a')",
676
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'à','a')",
668
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'á','a')",
677
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'á','a')",
669
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'â','a')",
678
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'â','a')",
670
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ã','a')",
679
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ã','a')",
671
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ä','a')",
680
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ä','a')",
672
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'å','a')",
681
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'å','a')",
673
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'æ','a')",
682
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'æ','a')",
674
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ç','c')",
683
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ç','c')",
675
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'è','e')",
684
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'è','e')",
676
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'é','e')",
685
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'é','e')",
677
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ê','e')",
686
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ê','e')",
678
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ë','e')",
687
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ë','e')",
679
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ì','i')",
688
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ì','i')",
680
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'í','i')",
689
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'í','i')",
681
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'î','i')",
690
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'î','i')",
682
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ï','i')",
691
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ï','i')",
683
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ð','o')",
692
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ð','o')",
684
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ñ','n')",
693
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ñ','n')",
685
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ò','o')",
694
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ò','o')",
686
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ó','o')",
695
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ó','o')",
687
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ô','o')",
696
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ô','o')",
688
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'õ','o')",
697
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'õ','o')",
689
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ö','o')",
698
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ö','o')",
690
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ø','o')",
699
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ø','o')",
691
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ù','u')",
700
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ù','u')",
692
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ú','u')",
701
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ú','u')",
693
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'û','u')",
702
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'û','u')",
694
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ý','y')",
703
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ý','y')",
695
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ý','y')",
704
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ý','y')",
696
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'þ','b')",
705
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'þ','b')",
697
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ÿ','y')",
706
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ÿ','y')",
698
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ƒ','f')",
707
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ƒ','f')",
699
		);
708
		);
700
 
709
 
701
		foreach($requetes as $requete) {
710
		foreach($requetes as $requete) {
702
			if ($util !== null) {
711
			if ($util !== null) {
703
				$requete .= " WHERE id_utilisateur = $util";
712
				$requete .= " WHERE id_utilisateur = $util ";
704
			}
713
			}
705
			$this->bdd->requeter($requete);
714
			$this->bdd->requeter($requete);
706
		}
715
		}
707
	}
716
	}
708
}
717
}