Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2172 Rev 2184
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, '1', "Id de l'utilisateur"),
8
		'-cible' => array(false, '1', "Id de l'autre mot clé")
9
		'-cible' => array(false, '1', "Id de l'autre mot clé")
9
	);
10
	);
10
 
11
 
11
	public function __construct($script_nom, $parametres_cli) {
12
	public function __construct($script_nom, $parametres_cli) {
12
		parent::__construct($script_nom, $parametres_cli);
13
		parent::__construct($script_nom, $parametres_cli);
13
		$this->bdd = new Bdd();
14
		$this->bdd = new Bdd();
14
	}
15
	}
15
 
16
 
16
	public function executer() {
17
	public function executer() {
17
		$cmd = $this->getParametre('a');
18
		$cmd = $this->getParametre('a');
18
		try {
19
		try {
19
			switch ($cmd) {
20
			switch ($cmd) {
20
				case 'regenererMotsClesTexteObs' :
21
				case 'regenererMotsClesTexteObs' :
21
					$this->regenererMotsClesTexteObs();
22
					$this->regenererMotsClesTexteObs();
22
					break;
23
					break;
23
				case 'regenererMotsClesTexteImages' :
24
				case 'regenererMotsClesTexteImages' :
24
					$this->regenererMotsClesTexteImages();
25
					$this->regenererMotsClesTexteImages();
25
					break;
26
					break;
26
				case 'regenererMotsClesTexteObsTout' :
27
				case 'regenererMotsClesTexteObsTout' :
27
					$this->regenererMotsClesTexteObs(true);
28
					$this->regenererMotsClesTexteObs(true);
28
					break;
29
					break;
29
				case 'regenererMotsClesTexteImagesTout' :
30
				case 'regenererMotsClesTexteImagesTout' :
30
					$this->regenererMotsClesTexteImages(true);
31
					$this->regenererMotsClesTexteImages(true);
31
					break;
32
					break;
32
				case 'viderMotsClesTexteImagesSansMotsCles' :
33
				case 'viderMotsClesTexteImagesSansMotsCles' :
33
					$this->viderMotsClesTexteImagesSansMotsCles();
34
					$this->viderMotsClesTexteImagesSansMotsCles();
34
					break;
35
					break;
35
				case 'viderMotsClesTexteObsSansMotsCles' :
36
				case 'viderMotsClesTexteObsSansMotsCles' :
36
					$this->viderMotsClesTexteObsSansMotsCles();
37
					$this->viderMotsClesTexteObsSansMotsCles();
37
					break;
38
					break;
38
				case 'regenererChampsTailleImage' :
39
				case 'regenererChampsTailleImage' :
39
					$this->regenererChampsTailleImage();
40
					$this->regenererChampsTailleImage();
40
					break;
41
					break;
41
				case 'reparerLiaisonsOublieesObs' :
42
				case 'reparerLiaisonsOublieesObs' :
42
					$this->reparerLiaisonsOublieesObs();
43
					$this->reparerLiaisonsOublieesObs();
43
					break;
44
					break;
44
				case 'reparerLiaisonsOublieesImages' :
45
				case 'reparerLiaisonsOublieesImages' :
45
					$this->reparerLiaisonsOublieesImages();
46
					$this->reparerLiaisonsOublieesImages();
46
					break;
47
					break;
47
				case 'reparerLiaisonsObsParMotsClesTexte' :
48
				case 'reparerLiaisonsObsParMotsClesTexte' :
48
					$mot_clef = $this->getParametre('mc');
49
					$mot_clef = $this->getParametre('mc');
49
					$this->reparerLiaisonsObsParMotsClesTexte($mot_clef);
50
					$this->reparerLiaisonsObsParMotsClesTexte($mot_clef);
50
					break;
51
					break;
51
				case 'reductionMotsClesImages' :
52
				case 'reductionMotsClesImages' :
-
 
53
					// ex: cli.php maintenance -a reductionMotsClesImages -doublon 1234 -cible 5678
52
					$idDoublon = $this->getParametre('doublon');
54
					$idDoublon = $this->getParametre('doublon');
53
					$idCible = $this->getParametre('cible');
55
					$idCible = $this->getParametre('cible');
54
					$this->reductionMotsClesImages($idDoublon, $idCible);
56
					$this->reductionMotsClesImages($idDoublon, $idCible);
55
					break;
57
					break;
-
 
58
				case 'reductionMotsClesImagesUtil' :
-
 
59
					// ex: cli.php maintenance -a reductionMotsClesImagesUtil -util 6865
-
 
60
					$idUtilisateur = $this->getParametre('util');
-
 
61
					$this->reductionMotsClesImagesUtilisateur($idUtilisateur);
-
 
62
					break;
56
				default :
63
				default :
57
					$msg = "Erreur : la commande '$cmd' n'existe pas!\n".
64
					$msg = "Erreur : la commande '$cmd' n'existe pas!\n".
58
						"Commandes existantes : regenererMotsClesTexteImages, regenererMotsClesTexteObs";
65
						"Commandes existantes : regenererMotsClesTexteImages, regenererMotsClesTexteObs";
59
					throw new Exception($msg);
66
					throw new Exception($msg);
60
			}
67
			}
61
		} catch (Exception $e) {
68
		} catch (Exception $e) {
62
			$this->traiterErreur($e->getMessage());
69
			$this->traiterErreur($e->getMessage());
63
		}
70
		}
64
	}
71
	}
65
 
72
 
66
	// Régénère le champ "mots_cles_texte" pour toutes les images ayant des mots clés mais ayant ce champ
73
	// Régénère le champ "mots_cles_texte" pour toutes les images ayant des mots clés mais ayant ce champ
67
	// vide, suite à une erreur
74
	// vide, suite à une erreur
68
	protected function regenererMotsClesTexteImages($tout = false) {
75
	protected function regenererMotsClesTexteImages($tout = false) {
69
		$req = "SELECT id_image FROM cel_images WHERE ".
76
		$req = "SELECT id_image FROM cel_images WHERE ".
70
				"id_image IN (SELECT id_element_lie FROM cel_mots_cles_images_liaison)";
77
				"id_image IN (SELECT id_element_lie FROM cel_mots_cles_images_liaison)";
71
		if(!$tout) {
78
		if(!$tout) {
72
			$req .= " AND (mots_cles_texte IS NULL OR mots_cles_texte='')";
79
			$req .= " AND (mots_cles_texte IS NULL OR mots_cles_texte='')";
73
		}
80
		}
74
		$res = $this->bdd->recupererTous($req);
81
		$res = $this->bdd->recupererTous($req);
75
		echo count($res) . " images trouvées\n";
82
		echo count($res) . " images trouvées\n";
76
		foreach ($res as $image) {
83
		foreach ($res as $image) {
77
			$req = "UPDATE cel_images SET mots_cles_texte = (SELECT GROUP_CONCAT(mot_cle) FROM cel_arbre_mots_cles_images cm "
84
			$req = "UPDATE cel_images SET mots_cles_texte = (SELECT GROUP_CONCAT(mot_cle) FROM cel_arbre_mots_cles_images cm "
78
				. "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'] . "') "
85
				. "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'] . "') "
79
				. "WHERE id_image = '" . $image['id_image'] . "'";
86
				. "WHERE id_image = '" . $image['id_image'] . "'";
80
			$this->bdd->requeter($req); 
87
			$this->bdd->requeter($req); 
81
		}
88
		}
82
	}
89
	}
83
 
90
 
84
	// Régénère le champ "mots_cles_texte" pour toutes les observations ayant des mots clés mais ayant ce champ
91
	// Régénère le champ "mots_cles_texte" pour toutes les observations ayant des mots clés mais ayant ce champ
85
	// vide, suite à une erreur
92
	// vide, suite à une erreur
86
	protected function regenererMotsClesTexteObs($tout = false) {
93
	protected function regenererMotsClesTexteObs($tout = false) {
87
		$req = "SELECT id_observation FROM cel_obs WHERE ".
94
		$req = "SELECT id_observation FROM cel_obs WHERE ".
88
				"id_observation IN (SELECT id_element_lie FROM cel_mots_cles_obs_liaison)";
95
				"id_observation IN (SELECT id_element_lie FROM cel_mots_cles_obs_liaison)";
89
		if(!$tout) {
96
		if(!$tout) {
90
			$req .= " AND (mots_cles_texte IS NULL OR mots_cles_texte='')";
97
			$req .= " AND (mots_cles_texte IS NULL OR mots_cles_texte='')";
91
		} 
98
		} 
92
		$res = $this->bdd->recupererTous($req);
99
		$res = $this->bdd->recupererTous($req);
93
		echo count($res) . " observations trouvées\n";
100
		echo count($res) . " observations trouvées\n";
94
		foreach ($res as $image) {
101
		foreach ($res as $image) {
95
			$req = "UPDATE cel_obs SET mots_cles_texte = (SELECT GROUP_CONCAT(mot_cle) FROM cel_arbre_mots_cles_obs cm "
102
			$req = "UPDATE cel_obs SET mots_cles_texte = (SELECT GROUP_CONCAT(mot_cle) FROM cel_arbre_mots_cles_obs cm "
96
			. "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'] . "') "
103
			. "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'] . "') "
97
				. "WHERE id_observation = '" . $image['id_observation'] . "'";
104
				. "WHERE id_observation = '" . $image['id_observation'] . "'";
98
			$this->bdd->requeter($req); 
105
			$this->bdd->requeter($req); 
99
		}
106
		}
100
	}
107
	}
101
 
108
 
102
	// Vide le champ "mots_cles_texte" pour toutes les images n'ayant aucun mot clé
109
	// Vide le champ "mots_cles_texte" pour toutes les images n'ayant aucun mot clé
103
	protected function viderMotsClesTexteImagesSansMotsCles() {
110
	protected function viderMotsClesTexteImagesSansMotsCles() {
104
		$req = "UPDATE cel_images SET mots_cles_texte = NULL WHERE id_image NOT IN (SELECT id_element_lie FROM cel_mots_cles_images_liaison)";
111
		$req = "UPDATE cel_images SET mots_cles_texte = NULL WHERE id_image NOT IN (SELECT id_element_lie FROM cel_mots_cles_images_liaison)";
105
		$res = $this->bdd->requeter($req);
112
		$res = $this->bdd->requeter($req);
106
		echo "$res images mises à jour\n";
113
		echo "$res images mises à jour\n";
107
	}
114
	}
108
 
115
 
109
	// Vide le champ "mots_cles_texte" pour toutes les obs n'ayant aucun mot clé
116
	// Vide le champ "mots_cles_texte" pour toutes les obs n'ayant aucun mot clé
110
	protected function viderMotsClesTexteObsSansMotsCles() {
117
	protected function viderMotsClesTexteObsSansMotsCles() {
111
		$req = "UPDATE cel_obs SET mots_cles_texte = NULL WHERE id_observation NOT IN (SELECT id_element_lie FROM cel_mots_cles_obs_liaison)";
118
		$req = "UPDATE cel_obs SET mots_cles_texte = NULL WHERE id_observation NOT IN (SELECT id_element_lie FROM cel_mots_cles_obs_liaison)";
112
		$res = $this->bdd->requeter($req);
119
		$res = $this->bdd->requeter($req);
113
		echo "$res observations mises à jour\n";
120
		echo "$res observations mises à jour\n";
114
	}
121
	}
115
	
122
	
116
	protected function regenererChampsTailleImage() {
123
	protected function regenererChampsTailleImage() {
117
		$req = "SELECT id_image FROM cel_images WHERE hauteur = 0 OR largeur = 0";
124
		$req = "SELECT id_image FROM cel_images WHERE hauteur = 0 OR largeur = 0";
118
		$res = $this->bdd->recupererTous($req);
125
		$res = $this->bdd->recupererTous($req);
119
		
126
		
120
		echo count($res)." images concernees \n";
127
		echo count($res)." images concernees \n";
121
		echo "Début du traitement \n";
128
		echo "Début du traitement \n";
122
		$images_maj = 0;
129
		$images_maj = 0;
123
		$image_meta_ratees = 0;
130
		$image_meta_ratees = 0;
124
		$images_inexistantes = 0;
131
		$images_inexistantes = 0;
125
		
132
		
126
		foreach($res as $image) {
133
		foreach($res as $image) {
127
			$chemin = $this->getCheminImage($image['id_image']); 
134
			$chemin = $this->getCheminImage($image['id_image']); 
128
			if(file_exists($chemin)) {
135
			if(file_exists($chemin)) {
129
				list($largeur, $hauteur) = @getimagesize($chemin);
136
				list($largeur, $hauteur) = @getimagesize($chemin);
130
				if(is_numeric($largeur) && is_numeric($hauteur)) {
137
				if(is_numeric($largeur) && is_numeric($hauteur)) {
131
					$req_maj = "UPDATE cel_images SET hauteur = '".$hauteur."', largeur = '".$largeur."' ".
138
					$req_maj = "UPDATE cel_images SET hauteur = '".$hauteur."', largeur = '".$largeur."' ".
132
					           "WHERE id_image = '".$image['id_image']."'";
139
					           "WHERE id_image = '".$image['id_image']."'";
133
					$maj_taille_image = $this->bdd->requeter($req_maj);
140
					$maj_taille_image = $this->bdd->requeter($req_maj);
134
					if($maj_taille_image) {
141
					if($maj_taille_image) {
135
						$images_maj++;
142
						$images_maj++;
136
					}
143
					}
137
				} else {
144
				} else {
138
					$image_meta_ratees++;
145
					$image_meta_ratees++;
139
				}
146
				}
140
			} else {
147
			} else {
141
				$images_inexistantes++;
148
				$images_inexistantes++;
142
			}
149
			}
143
			$this->afficherAvancement("\tImages traitées : ", 1);
150
			$this->afficherAvancement("\tImages traitées : ", 1);
144
		}	
151
		}	
145
		echo "\n";
152
		echo "\n";
146
		echo "Fin de la régénération des tailles des images à partir des metadonnées \n";
153
		echo "Fin de la régénération des tailles des images à partir des metadonnées \n";
147
		echo $images_maj." images ont vu leur infos de taille régénérées \n";
154
		echo $images_maj." images ont vu leur infos de taille régénérées \n";
148
		echo $image_meta_ratees." images ont raté l'extraction de metadonnées \n";
155
		echo $image_meta_ratees." images ont raté l'extraction de metadonnées \n";
149
		echo $images_inexistantes." images n'existent pas en tant que fichier \n";
156
		echo $images_inexistantes." images n'existent pas en tant que fichier \n";
150
	}
157
	}
151
	
158
	
152
	private function getCheminImage($id) {
159
	private function getCheminImage($id) {
153
		$chemin_base = Config::get('dossierImages');
160
		$chemin_base = Config::get('dossierImages');
154
				
161
				
155
		$id = sprintf('%09s', $id);
162
		$id = sprintf('%09s', $id);
156
		$id = wordwrap($id, 3 , '_', true);
163
		$id = wordwrap($id, 3 , '_', true);
157
		
164
		
158
		list($dossierNiveau1, $dossierNiveau2) = explode('_', $id);
165
		list($dossierNiveau1, $dossierNiveau2) = explode('_', $id);
159
		
166
		
160
		$chemin = $chemin_base.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/O/'.$id.'_O.jpg';
167
		$chemin = $chemin_base.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/O/'.$id.'_O.jpg';
161
		
168
		
162
		return $chemin;
169
		return $chemin;
163
	}
170
	}
164
	
171
	
165
	protected function reparerLiaisonsOublieesObs() {
172
	protected function reparerLiaisonsOublieesObs() {
166
		// Toutes les liaisons obs-motscles avec l'id utilisateur issu de la table cel obs car 
173
		// Toutes les liaisons obs-motscles avec l'id utilisateur issu de la table cel obs car 
167
		// dans la table de liaison il est souvent vide 
174
		// dans la table de liaison il est souvent vide 
168
		$requete_liaisons = "SELECT com.id_observation, com.id_mot_cle_obs, co.ce_utilisateur ".
175
		$requete_liaisons = "SELECT com.id_observation, com.id_mot_cle_obs, co.ce_utilisateur ".
169
					"FROM `cel_obs_mots_cles` com INNER JOIN cel_obs co ON co.id_observation = com.id_observation ";
176
					"FROM `cel_obs_mots_cles` com INNER JOIN cel_obs co ON co.id_observation = com.id_observation ";
170
		
177
		
171
		$liaisons = $this->bdd->recupererTous($requete_liaisons);
178
		$liaisons = $this->bdd->recupererTous($requete_liaisons);
172
		$nb_liaisons_originales = count($liaisons);
179
		$nb_liaisons_originales = count($liaisons);
173
		
180
		
174
		// Tous les anciens mots clés, à classer par utilisateur, puis par id mot clé
181
		// Tous les anciens mots clés, à classer par utilisateur, puis par id mot clé
175
		$requete_mots_cles = "SELECT id_mot_cle_obs, id_utilisateur, mot_cle FROM cel_mots_cles_obs ";
182
		$requete_mots_cles = "SELECT id_mot_cle_obs, id_utilisateur, mot_cle FROM cel_mots_cles_obs ";
176
		$anciens_mots_cles = $this->bdd->recupererTous($requete_mots_cles);
183
		$anciens_mots_cles = $this->bdd->recupererTous($requete_mots_cles);
177
		
184
		
178
		$anciens_mots_cles_fmt = array();
185
		$anciens_mots_cles_fmt = array();
179
		foreach($anciens_mots_cles as &$ancien_mot_cle) {
186
		foreach($anciens_mots_cles as &$ancien_mot_cle) {
180
			$id_utilisateur_ancien = $ancien_mot_cle['id_utilisateur'];
187
			$id_utilisateur_ancien = $ancien_mot_cle['id_utilisateur'];
181
			if(!isset($anciens_mots_cles_fmt[$id_utilisateur_ancien])) {
188
			if(!isset($anciens_mots_cles_fmt[$id_utilisateur_ancien])) {
182
				$anciens_mots_cles_fmt[$id_utilisateur_ancien] = array();
189
				$anciens_mots_cles_fmt[$id_utilisateur_ancien] = array();
183
			}
190
			}
184
			$anciens_mots_cles_fmt[$id_utilisateur_ancien][$ancien_mot_cle['id_mot_cle_obs']] = $ancien_mot_cle;
191
			$anciens_mots_cles_fmt[$id_utilisateur_ancien][$ancien_mot_cle['id_mot_cle_obs']] = $ancien_mot_cle;
185
		}
192
		}
186
		
193
		
187
		// Tous les nouveau mots clés, à classer par utilisateur, puis par valeur textuelle du mot
194
		// Tous les nouveau mots clés, à classer par utilisateur, puis par valeur textuelle du mot
188
		$requete_nouveaux_mots_cles = "SELECT * FROM cel_arbre_mots_cles_obs";
195
		$requete_nouveaux_mots_cles = "SELECT * FROM cel_arbre_mots_cles_obs";
189
		$nouveau_mots_cles = $this->bdd->recupererTous($requete_nouveaux_mots_cles);
196
		$nouveau_mots_cles = $this->bdd->recupererTous($requete_nouveaux_mots_cles);
190
		
197
		
191
		$nouveau_mots_cles_fmt = array();
198
		$nouveau_mots_cles_fmt = array();
192
		foreach($nouveau_mots_cles as &$nouveau_mot_cle) {
199
		foreach($nouveau_mots_cles as &$nouveau_mot_cle) {
193
			$id_utilisateur_nouveau = $nouveau_mot_cle['id_utilisateur'];
200
			$id_utilisateur_nouveau = $nouveau_mot_cle['id_utilisateur'];
194
			if(!isset($nouveau_mots_cles_fmt[$id_utilisateur_nouveau])) {
201
			if(!isset($nouveau_mots_cles_fmt[$id_utilisateur_nouveau])) {
195
				$nouveau_mots_cles_fmt[$id_utilisateur_nouveau] = array();
202
				$nouveau_mots_cles_fmt[$id_utilisateur_nouveau] = array();
196
			}
203
			}
197
			$nouveau_mots_cles_fmt[$id_utilisateur_nouveau][strtolower($nouveau_mot_cle['mot_cle'])] = $nouveau_mot_cle;
204
			$nouveau_mots_cles_fmt[$id_utilisateur_nouveau][strtolower($nouveau_mot_cle['mot_cle'])] = $nouveau_mot_cle;
198
		}
205
		}
199
		
206
		
200
		$anciens_mot_cles_pas_trouves = 0;
207
		$anciens_mot_cles_pas_trouves = 0;
201
		$nouveaux_mot_cles_pas_trouves = 0;
208
		$nouveaux_mot_cles_pas_trouves = 0;
202
		$utilisateurs_pas_trouves = 0;
209
		$utilisateurs_pas_trouves = 0;
203
		$valeurs_a_inserer = array();
210
		$valeurs_a_inserer = array();
204
		
211
		
205
		$ids_obs = array();
212
		$ids_obs = array();
206
		
213
		
207
		foreach($liaisons as &$liaison) {
214
		foreach($liaisons as &$liaison) {
208
			$id_utilisateur_liaison = $liaison['ce_utilisateur'];
215
			$id_utilisateur_liaison = $liaison['ce_utilisateur'];
209
			$id_mot_cle_ancien_liaison = $liaison['id_mot_cle_obs'];
216
			$id_mot_cle_ancien_liaison = $liaison['id_mot_cle_obs'];
210
			
217
			
211
			if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison])) {
218
			if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison])) {
212
				if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison])) {
219
				if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison])) {
213
					$texte_ancien_mot_cle = $anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison]['mot_cle'];
220
					$texte_ancien_mot_cle = $anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison]['mot_cle'];
214
					$texte_ancien_mot_cle = strtolower($texte_ancien_mot_cle); // l'astuce de ouf !
221
					$texte_ancien_mot_cle = strtolower($texte_ancien_mot_cle); // l'astuce de ouf !
215
					if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison])) {
222
					if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison])) {
216
						if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle])) {
223
						if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle])) {
217
							$nouvel_id_mot_cle = $nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle]['id_mot_cle'];
224
							$nouvel_id_mot_cle = $nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle]['id_mot_cle'];
218
							
225
							
219
							$valeurs_a_inserer[] = array(
226
							$valeurs_a_inserer[] = array(
220
													'id_element_lie' => $liaison['id_observation'],
227
													'id_element_lie' => $liaison['id_observation'],
221
													'id_mot_cle' => $nouvel_id_mot_cle,
228
													'id_mot_cle' => $nouvel_id_mot_cle,
222
													'ancienne_liaison' => $liaison
229
													'ancienne_liaison' => $liaison
223
							);
230
							);
224
							$ids_obs[] = $liaison['id_observation'];
231
							$ids_obs[] = $liaison['id_observation'];
225
						} else {
232
						} else {
226
							$nouveaux_mot_cles_pas_trouves++;
233
							$nouveaux_mot_cles_pas_trouves++;
227
						}
234
						}
228
					} else {
235
					} else {
229
						
236
						
230
					}
237
					}
231
					
238
					
232
				} else {
239
				} else {
233
					$anciens_mot_cles_pas_trouves++;
240
					$anciens_mot_cles_pas_trouves++;
234
				}
241
				}
235
			} else {
242
			} else {
236
				$utilisateurs_pas_trouves++;
243
				$utilisateurs_pas_trouves++;
237
			}
244
			}
238
		}
245
		}
239
		
246
		
240
		echo "Anciennes liaisons ".$nb_liaisons_originales." \n";
247
		echo "Anciennes liaisons ".$nb_liaisons_originales." \n";
241
		echo "Liaisons à insérer ".count($valeurs_a_inserer)."\n";
248
		echo "Liaisons à insérer ".count($valeurs_a_inserer)."\n";
242
		echo "Utilisateurs inconnus ".$utilisateurs_pas_trouves."\n";
249
		echo "Utilisateurs inconnus ".$utilisateurs_pas_trouves."\n";
243
		echo "Anciens mots clés inconnus ".$anciens_mot_cles_pas_trouves."\n";
250
		echo "Anciens mots clés inconnus ".$anciens_mot_cles_pas_trouves."\n";
244
		echo "Nouveaux mots clés inconnus ".$nouveaux_mot_cles_pas_trouves."\n";
251
		echo "Nouveaux mots clés inconnus ".$nouveaux_mot_cles_pas_trouves."\n";
245
		
252
		
246
		$tranches = array_chunk($valeurs_a_inserer, 800);
253
		$tranches = array_chunk($valeurs_a_inserer, 800);
247
 
254
 
248
		foreach($tranches as $tranche) {
255
		foreach($tranches as $tranche) {
249
			$requete_insertion = "INSERT IGNORE INTO cel_mots_cles_obs_liaison (id_element_lie, id_mot_cle) ".
256
			$requete_insertion = "INSERT IGNORE INTO cel_mots_cles_obs_liaison (id_element_lie, id_mot_cle) ".
250
					                      "VALUES ";
257
					                      "VALUES ";
251
			foreach($tranche as $l) {
258
			foreach($tranche as $l) {
252
				$requete_insertion .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),";
259
				$requete_insertion .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),";
253
			}
260
			}
254
			$requete_insertion = rtrim($requete_insertion, ',');
261
			$requete_insertion = rtrim($requete_insertion, ',');
255
			$insertion = $this->bdd->requeter($requete_insertion);
262
			$insertion = $this->bdd->requeter($requete_insertion);
256
			$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1);
263
			$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1);
257
		}
264
		}
258
		echo "\n";
265
		echo "\n";
259
	}
266
	}
260
	
267
	
261
	private function reparerLiaisonsOublieesImages() {
268
	private function reparerLiaisonsOublieesImages() {
262
		// Toutes les liaisons obs-motscles avec l'id utilisateur issu de la table cel obs car
269
		// Toutes les liaisons obs-motscles avec l'id utilisateur issu de la table cel obs car
263
		// dans la table de liaison il est souvent vide
270
		// dans la table de liaison il est souvent vide
264
		$requete_liaisons = "SELECT cim.id_image, cim.id_mot_cle_image, ci.ce_utilisateur ".
271
		$requete_liaisons = "SELECT cim.id_image, cim.id_mot_cle_image, ci.ce_utilisateur ".
265
							"FROM cel_images_mots_cles cim INNER JOIN cel_images ci ON ci.id_image = cim.id_image ";
272
							"FROM cel_images_mots_cles cim INNER JOIN cel_images ci ON ci.id_image = cim.id_image ";
266
 
273
 
267
		$liaisons = $this->bdd->recupererTous($requete_liaisons);
274
		$liaisons = $this->bdd->recupererTous($requete_liaisons);
268
		
275
		
269
		// Tous les anciens mots clés, à classer par utilisateur, puis par id mot clé
276
		// Tous les anciens mots clés, à classer par utilisateur, puis par id mot clé
270
		$requete_mots_cles = "SELECT id_mot_cle_image, id_utilisateur, mot_cle FROM cel_mots_cles_images ";
277
		$requete_mots_cles = "SELECT id_mot_cle_image, id_utilisateur, mot_cle FROM cel_mots_cles_images ";
271
		$anciens_mots_cles = $this->bdd->recupererTous($requete_mots_cles);
278
		$anciens_mots_cles = $this->bdd->recupererTous($requete_mots_cles);
272
		
279
		
273
		$anciens_mots_cles_fmt = array();
280
		$anciens_mots_cles_fmt = array();
274
		foreach($anciens_mots_cles as &$ancien_mot_cle) {
281
		foreach($anciens_mots_cles as &$ancien_mot_cle) {
275
			$id_utilisateur_ancien = $ancien_mot_cle['id_utilisateur'];
282
			$id_utilisateur_ancien = $ancien_mot_cle['id_utilisateur'];
276
			if(!isset($anciens_mots_cles_fmt[$id_utilisateur_ancien])) {
283
			if(!isset($anciens_mots_cles_fmt[$id_utilisateur_ancien])) {
277
				$anciens_mots_cles_fmt[$id_utilisateur_ancien] = array();
284
				$anciens_mots_cles_fmt[$id_utilisateur_ancien] = array();
278
			}
285
			}
279
			$anciens_mots_cles_fmt[$id_utilisateur_ancien][$ancien_mot_cle['id_mot_cle_image']] = $ancien_mot_cle;
286
			$anciens_mots_cles_fmt[$id_utilisateur_ancien][$ancien_mot_cle['id_mot_cle_image']] = $ancien_mot_cle;
280
		}
287
		}
281
		
288
		
282
		// Tous les nouveau mots clés, à classer par utilisateur, puis par valeur textuelle du mot
289
		// Tous les nouveau mots clés, à classer par utilisateur, puis par valeur textuelle du mot
283
		$requete_nouveaux_mots_cles = "SELECT * FROM cel_arbre_mots_cles_images";
290
		$requete_nouveaux_mots_cles = "SELECT * FROM cel_arbre_mots_cles_images";
284
		$nouveau_mots_cles = $this->bdd->recupererTous($requete_nouveaux_mots_cles);
291
		$nouveau_mots_cles = $this->bdd->recupererTous($requete_nouveaux_mots_cles);
285
		
292
		
286
		$nouveau_mots_cles_fmt = array();
293
		$nouveau_mots_cles_fmt = array();
287
		foreach($nouveau_mots_cles as &$nouveau_mot_cle) {
294
		foreach($nouveau_mots_cles as &$nouveau_mot_cle) {
288
			$id_utilisateur_nouveau = $nouveau_mot_cle['id_utilisateur'];
295
			$id_utilisateur_nouveau = $nouveau_mot_cle['id_utilisateur'];
289
			if(!isset($nouveau_mots_cles_fmt[$id_utilisateur_nouveau])) {
296
			if(!isset($nouveau_mots_cles_fmt[$id_utilisateur_nouveau])) {
290
				$nouveau_mots_cles_fmt[$id_utilisateur_nouveau] = array();
297
				$nouveau_mots_cles_fmt[$id_utilisateur_nouveau] = array();
291
			}
298
			}
292
			$nouveau_mots_cles_fmt[$id_utilisateur_nouveau][$nouveau_mot_cle['mot_cle']] = $nouveau_mot_cle;
299
			$nouveau_mots_cles_fmt[$id_utilisateur_nouveau][$nouveau_mot_cle['mot_cle']] = $nouveau_mot_cle;
293
		}
300
		}
294
		
301
		
295
		$anciens_mot_cles_pas_trouves = 0;
302
		$anciens_mot_cles_pas_trouves = 0;
296
		$nouveaux_mot_cles_pas_trouves = 0;
303
		$nouveaux_mot_cles_pas_trouves = 0;
297
		$utilisateurs_pas_trouves = 0;
304
		$utilisateurs_pas_trouves = 0;
298
		$valeurs_a_inserer = array();
305
		$valeurs_a_inserer = array();
299
		
306
		
300
		foreach($liaisons as &$liaison) {
307
		foreach($liaisons as &$liaison) {
301
			$id_utilisateur_liaison = $liaison['ce_utilisateur'];
308
			$id_utilisateur_liaison = $liaison['ce_utilisateur'];
302
			$id_mot_cle_ancien_liaison = $liaison['id_mot_cle_image'];
309
			$id_mot_cle_ancien_liaison = $liaison['id_mot_cle_image'];
303
				
310
				
304
			if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison])) {
311
			if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison])) {
305
				if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison])) {
312
				if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison])) {
306
					$texte_ancien_mot_cle = $anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison]['mot_cle'];
313
					$texte_ancien_mot_cle = $anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison]['mot_cle'];
307
					if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison])) {
314
					if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison])) {
308
						if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle])) {
315
						if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle])) {
309
							$nouvel_id_mot_cle = $nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle]['id_mot_cle'];
316
							$nouvel_id_mot_cle = $nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle]['id_mot_cle'];
310
								
317
								
311
							$valeurs_a_inserer[] = array(
318
							$valeurs_a_inserer[] = array(
312
															'id_element_lie' => $liaison['id_image'],
319
															'id_element_lie' => $liaison['id_image'],
313
															'id_mot_cle' => $nouvel_id_mot_cle,
320
															'id_mot_cle' => $nouvel_id_mot_cle,
314
															'ancienne_liaison' => $liaison
321
															'ancienne_liaison' => $liaison
315
							);
322
							);
316
							$ids_imgs[] = $liaison['id_image'];
323
							$ids_imgs[] = $liaison['id_image'];
317
						} else {
324
						} else {
318
							$nouveaux_mot_cles_pas_trouves++;
325
							$nouveaux_mot_cles_pas_trouves++;
319
						}
326
						}
320
					} else {
327
					} else {
321
		
328
		
322
					}
329
					}
323
						
330
						
324
				} else {
331
				} else {
325
					$anciens_mot_cles_pas_trouves++;
332
					$anciens_mot_cles_pas_trouves++;
326
				}
333
				}
327
			} else {
334
			} else {
328
				$utilisateurs_pas_trouves++;
335
				$utilisateurs_pas_trouves++;
329
			}
336
			}
330
		}
337
		}
331
		
338
		
332
		echo "Liaisons à insérer ".count($valeurs_a_inserer)."\n";
339
		echo "Liaisons à insérer ".count($valeurs_a_inserer)."\n";
333
		echo "Utilisateurs inconnus ".$utilisateurs_pas_trouves."\n";
340
		echo "Utilisateurs inconnus ".$utilisateurs_pas_trouves."\n";
334
		echo "Anciens mots clés inconnus ".$anciens_mot_cles_pas_trouves."\n";
341
		echo "Anciens mots clés inconnus ".$anciens_mot_cles_pas_trouves."\n";
335
		echo "Nouveaux mots clés inconnus ".$nouveaux_mot_cles_pas_trouves."\n";
342
		echo "Nouveaux mots clés inconnus ".$nouveaux_mot_cles_pas_trouves."\n";
336
 
343
 
337
		$tranches = array_chunk($valeurs_a_inserer, 800);
344
		$tranches = array_chunk($valeurs_a_inserer, 800);
338
 
345
 
339
		foreach($tranches as $tranche) {
346
		foreach($tranches as $tranche) {
340
			$requete_insertion = "INSERT IGNORE INTO cel_mots_cles_images_liaison (id_element_lie, id_mot_cle) ".
347
			$requete_insertion = "INSERT IGNORE INTO cel_mots_cles_images_liaison (id_element_lie, id_mot_cle) ".
341
					                      "VALUES ";
348
					                      "VALUES ";
342
			foreach($tranche as $l) {
349
			foreach($tranche as $l) {
343
				$requete_insertion .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),";
350
				$requete_insertion .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),";
344
			}
351
			}
345
			$requete_insertion = rtrim($requete_insertion, ',');
352
			$requete_insertion = rtrim($requete_insertion, ',');
346
			$insertion = $this->bdd->requeter($requete_insertion);
353
			$insertion = $this->bdd->requeter($requete_insertion);
347
			$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1);
354
			$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1);
348
		}
355
		}
349
		echo "\n";
356
		echo "\n";
350
	}
357
	}
351
	
358
	
352
	private function reparerLiaisonsObsParMotsClesTexte($mot_cle_texte_recherche) {
359
	private function reparerLiaisonsObsParMotsClesTexte($mot_cle_texte_recherche) {
353
		$ancienne_table_obs = Config::get('table_obs_recup');
360
		$ancienne_table_obs = Config::get('table_obs_recup');
354
		$requete_anciens_mots_cles_texte = "SELECT ce_utilisateur, id_observation, mots_cles_texte ".
361
		$requete_anciens_mots_cles_texte = "SELECT ce_utilisateur, id_observation, mots_cles_texte ".
355
											"FROM ".$ancienne_table_obs." WHERE mots_cles_texte LIKE '%".$mot_cle_texte_recherche."%'";
362
											"FROM ".$ancienne_table_obs." WHERE mots_cles_texte LIKE '%".$mot_cle_texte_recherche."%'";
356
		$obs_a_mot_cle = $this->bdd->recupererTous($requete_anciens_mots_cles_texte);
363
		$obs_a_mot_cle = $this->bdd->recupererTous($requete_anciens_mots_cles_texte);
357
		
364
		
358
		$requete_nouveaux_mots_cle = "SELECT * FROM cel_arbre_mots_cles_obs ".
365
		$requete_nouveaux_mots_cle = "SELECT * FROM cel_arbre_mots_cles_obs ".
359
									"WHERE id_utilisateur IN ". 
366
									"WHERE id_utilisateur IN ". 
360
									"(SELECT id_utilisateur FROM ".$ancienne_table_obs." ".
367
									"(SELECT id_utilisateur FROM ".$ancienne_table_obs." ".
361
									"WHERE mots_cles_texte LIKE '%".$mot_cle_texte_recherche."%')";
368
									"WHERE mots_cles_texte LIKE '%".$mot_cle_texte_recherche."%')";
362
		$nouveaux_mots_cles = $this->bdd->recupererTous($requete_nouveaux_mots_cle);
369
		$nouveaux_mots_cles = $this->bdd->recupererTous($requete_nouveaux_mots_cle);
363
		
370
		
364
		$mots_cles_indexes = array();
371
		$mots_cles_indexes = array();
365
		foreach($nouveaux_mots_cles as $mot_cle) {
372
		foreach($nouveaux_mots_cles as $mot_cle) {
366
			$mots_cles_indexes[$mot_cle['id_utilisateur']][strtolower($mot_cle['mot_cle'])] = $mot_cle;
373
			$mots_cles_indexes[$mot_cle['id_utilisateur']][strtolower($mot_cle['mot_cle'])] = $mot_cle;
367
		}
374
		}
368
				
375
				
369
		$liaisons_a_inserer = array();
376
		$liaisons_a_inserer = array();
370
		$utilFoirax = 0;
377
		$utilFoirax = 0;
371
		$mcFoirax = 0;
378
		$mcFoirax = 0;
372
		foreach($obs_a_mot_cle as $obs) {
379
		foreach($obs_a_mot_cle as $obs) {
373
			$mots_cles_texte_tab = explode(',', $obs['mots_cles_texte']);
380
			$mots_cles_texte_tab = explode(',', $obs['mots_cles_texte']);
374
			$id_observation = $obs['id_observation'];
381
			$id_observation = $obs['id_observation'];
375
			$id_utilisateur = $obs['ce_utilisateur'];
382
			$id_utilisateur = $obs['ce_utilisateur'];
376
			foreach($mots_cles_texte_tab as $mot_cle_t) {
383
			foreach($mots_cles_texte_tab as $mot_cle_t) {
377
				if($mot_cle_t == $mot_cle_texte_recherche) {
384
				if($mot_cle_t == $mot_cle_texte_recherche) {
378
					if (isset($mots_cles_indexes[$id_utilisateur])) {
385
					if (isset($mots_cles_indexes[$id_utilisateur])) {
379
						if (isset($mots_cles_indexes[$id_utilisateur][strtolower($mot_cle_t)])) {
386
						if (isset($mots_cles_indexes[$id_utilisateur][strtolower($mot_cle_t)])) {
380
							$id_nouveau_mot_cle = $mots_cles_indexes[$id_utilisateur][strtolower($mot_cle_t)]['id_mot_cle'];
387
							$id_nouveau_mot_cle = $mots_cles_indexes[$id_utilisateur][strtolower($mot_cle_t)]['id_mot_cle'];
381
						} else {
388
						} else {
382
							$mcFoirax++;
389
							$mcFoirax++;
383
						}
390
						}
384
					} else {
391
					} else {
385
						$utilFoirax++;
392
						$utilFoirax++;
386
					}
393
					}
387
					$liaisons_a_inserer[] = array('id_element_lie' => $id_observation, 'id_mot_cle' => $id_nouveau_mot_cle);
394
					$liaisons_a_inserer[] = array('id_element_lie' => $id_observation, 'id_mot_cle' => $id_nouveau_mot_cle);
388
				}
395
				}
389
			}
396
			}
390
		}
397
		}
391
		echo "Utilisateurs pas dans le tableau: $utilFoirax\n";
398
		echo "Utilisateurs pas dans le tableau: $utilFoirax\n";
392
		echo "Motf-clefs pas dans le tableau: $mcFoirax\n";
399
		echo "Motf-clefs pas dans le tableau: $mcFoirax\n";
393
		//echo '<pre>'.print_r($liaisons_a_inserer, true).'</pre>';
400
		//echo '<pre>'.print_r($liaisons_a_inserer, true).'</pre>';
394
		echo "Liaisons à insérer: " . count($liaisons_a_inserer) . " \n";
401
		echo "Liaisons à insérer: " . count($liaisons_a_inserer) . " \n";
395
 
402
 
396
		$requete_insertion = "INSERT IGNORE INTO cel_mots_cles_obs_liaison (id_element_lie, id_mot_cle) ".
403
		$requete_insertion = "INSERT IGNORE INTO cel_mots_cles_obs_liaison (id_element_lie, id_mot_cle) ".
397
				"VALUES ";
404
				"VALUES ";
398
		foreach($liaisons_a_inserer as $l) {
405
		foreach($liaisons_a_inserer as $l) {
399
			$requete_insertion .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),";
406
			$requete_insertion .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),";
400
		}
407
		}
401
		$requete_insertion = rtrim($requete_insertion, ',');
408
		$requete_insertion = rtrim($requete_insertion, ',');
402
		$insertion = $this->bdd->requeter($requete_insertion);
409
		$insertion = $this->bdd->requeter($requete_insertion);
403
	}
410
	}
404
 
411
 
405
	// Change toutes les associations images - mots_cles dont l'id mot_cle est $idDoublon, pour le remplacer par $idCible
412
	// Change toutes les associations images - mots_cles dont l'id mot_cle est $idDoublon, pour le remplacer par $idCible
406
	private function reductionMotsClesImages($idDoublon, $idCible) {
413
	private function reductionMotsClesImages($idDoublon, $idCible, $supprimerVieuxMotsCles=true) {
-
 
414
		echo "Réduction de $idDoublon à $idCible" . PHP_EOL;
-
 
415
 
407
		$q1 = "SELECT id_element_lie FROM cel_mots_cles_images_liaison WHERE id_mot_cle = $idCible;";
416
		$q1 = "SELECT id_element_lie FROM cel_mots_cles_images_liaison WHERE id_mot_cle = $idCible;";
408
		$r1 = $this->bdd->requeter($q1);
417
		$r1 = $this->bdd->requeter($q1);
409
		$idsImages = array();
418
		$idsImages = array();
410
		foreach ($r1 as $r) {
419
		foreach ($r1 as $r) {
411
			$idsImages[] = $r['id_element_lie'];
420
			$idsImages[] = $r['id_element_lie'];
412
		}
421
		}
-
 
422
 
413
 
423
		if (count($idsImages) > 0) {
414
		// On vire ceux qui ont le doublon mais qui ont aussi la cible
424
			// On vire ceux qui ont le doublon mais qui ont aussi la cible
415
		$q2 = "DELETE FROM cel_mots_cles_images_liaison WHERE id_mot_cle = $idDoublon AND id_element_lie IN (" . implode(',', $idsImages) . ");";
425
			$q2 = "DELETE FROM cel_mots_cles_images_liaison WHERE id_mot_cle = $idDoublon AND id_element_lie IN (" . implode(',', $idsImages) . ");";
-
 
426
			$r2 = $this->bdd->requeter($q2);
416
		$r2 = $this->bdd->requeter($q2);
427
		}
417
 
428
	
418
		// On convertit tous les doublons en cible
429
		// On convertit tous les doublons en cible
419
		$q3 = "UPDATE cel_mots_cles_images_liaison SET id_mot_cle = $idCible WHERE id_mot_cle = $idDoublon;";
430
		$q3 = "UPDATE cel_mots_cles_images_liaison SET id_mot_cle = $idCible WHERE id_mot_cle = $idDoublon;";
420
		$r3 = $this->bdd->requeter($q3);
431
		$r3 = $this->bdd->requeter($q3);
-
 
432
 
-
 
433
		if ($supprimerVieuxMotsCles) {
-
 
434
			// On supprime le mot cle qui sert plus à rien
-
 
435
			$q4 = "DELETE FROM cel_arbre_mots_cles_images WHERE id_mot_cle = $idDoublon;";
-
 
436
			$r4 = $this->bdd->requeter($q4);
-
 
437
		}
-
 
438
	}
-
 
439
 
-
 
440
	// Parcourt l'arbre des mots-cles images de l'utilisateur dont l'id est $idUtilisateur, et réduit tous ceux dont le chemin
-
 
441
	// n'est pas unique
-
 
442
	private function reductionMotsClesImagesUtilisateur($idUtilisateur) {
-
 
443
		$q1 = "SELECT id_mot_cle, chemin FROM cel_arbre_mots_cles_images WHERE id_utilisateur = $idUtilisateur;";
-
 
444
		$r1 = $this->bdd->requeter($q1);
-
 
445
 
-
 
446
		$idsMotsCles = array();
-
 
447
		$nbVieux = 0;
-
 
448
		foreach ($r1 as $r) {
-
 
449
			$k = strtolower($r['chemin']);
-
 
450
			if (! isset($idsMotsCles[$k])) {
-
 
451
				$idsMotsCles[$k] = array();
-
 
452
			}
-
 
453
			$idsMotsCles[$k][] = $r['id_mot_cle'];
-
 
454
			$nbVieux++;
-
 
455
		}
-
 
456
		$nbNouveaux = count($idsMotsCles);
-
 
457
 
-
 
458
		echo "Réduction de $nbVieux à $nbNouveaux mots-cles" . PHP_EOL;
-
 
459
		$aTraiter = 0;
-
 
460
		foreach ($idsMotsCles as $chemin => $ids) {
-
 
461
			if (count($ids) > 1) {
-
 
462
				$aTraiter ++;
-
 
463
				$idCible = array_shift($ids);
-
 
464
				foreach ($ids as $idDoublon) {
-
 
465
					$this->reductionMotsClesImages($idDoublon, $idCible);
-
 
466
				}
-
 
467
			}
-
 
468
		}
-
 
469
		echo "$aTraiter groupes ont été réduits" . PHP_EOL;
421
	}
470
	}
422
}
471
}
423
?>
472
?>