Subversion Repositories eFlore/Applications.cel

Rev

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

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