Subversion Repositories eFlore/Applications.cel

Rev

Rev 2100 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2100 Rev 2102
Line 25... Line 25...
25
					$this->viderMotsClesTexteObsSansMotsCles();
25
					$this->viderMotsClesTexteObsSansMotsCles();
26
					break;
26
					break;
27
				case 'regenererChampsTailleImage' :
27
				case 'regenererChampsTailleImage' :
28
					$this->regenererChampsTailleImage();
28
					$this->regenererChampsTailleImage();
29
					break;
29
					break;
-
 
30
				case 'reparerLiaisonsOublieesObs' :
-
 
31
					$this->reparerLiaisonsOublieesObs();
-
 
32
					break;
-
 
33
				case 'reparerLiaisonsOublieesImages' :
-
 
34
					$this->reparerLiaisonsOublieesImages();
-
 
35
					break;
30
				default :
36
				default :
31
					$msg = "Erreur : la commande '$cmd' n'existe pas!\n".
37
					$msg = "Erreur : la commande '$cmd' n'existe pas!\n".
32
						"Commandes existantes : regenererMotsClesTexteImages, regenererMotsClesTexteObs";
38
						"Commandes existantes : regenererMotsClesTexteImages, regenererMotsClesTexteObs";
33
					throw new Exception($msg);
39
					throw new Exception($msg);
34
			}
40
			}
Line 127... Line 133...
127
		
133
		
Line 128... Line 134...
128
		$chemin = $chemin_base.$dossierNiveau1.'/'.$dossierNiveau2.'/O/'.$id.'_O.jpg';
134
		$chemin = $chemin_base.$dossierNiveau1.'/'.$dossierNiveau2.'/O/'.$id.'_O.jpg';
129
		
135
		
-
 
136
		return $chemin;
-
 
137
	}
-
 
138
	
-
 
139
	protected function reparerLiaisonsOublieesObs() {
-
 
140
		// Toutes les liaisons obs-motscles avec l'id utilisateur issu de la table cel obs car 
-
 
141
		// dans la table de liaison il est souvent vide 
-
 
142
		$requete_liaisons = "SELECT com.id_observation, com.id_mot_cle_obs, co.ce_utilisateur ".
-
 
143
					"FROM `cel_obs_mots_cles` com INNER JOIN cel_obs co ON co.id_observation = com.id_observation ";
-
 
144
		
-
 
145
		$liaisons = $this->bdd->recupererTous($requete_liaisons);
-
 
146
		$nb_liaisons_originales = count($liaisons);
-
 
147
		
-
 
148
		// Tous les anciens mots clés, à classer par utilisateur, puis par id mot clé
-
 
149
		$requete_mots_cles = "SELECT id_mot_cle_obs, id_utilisateur, mot_cle FROM cel_mots_cles_obs ";
-
 
150
		$anciens_mots_cles = $this->bdd->recupererTous($requete_mots_cles);
-
 
151
		
-
 
152
		$anciens_mots_cles_fmt = array();
-
 
153
		foreach($anciens_mots_cles as &$ancien_mot_cle) {
-
 
154
			$id_utilisateur_ancien = $ancien_mot_cle['id_utilisateur'];
-
 
155
			if(!isset($anciens_mots_cles_fmt[$id_utilisateur_ancien])) {
-
 
156
				$anciens_mots_cles_fmt[$id_utilisateur_ancien] = array();
-
 
157
			}
-
 
158
			$anciens_mots_cles_fmt[$id_utilisateur_ancien][$ancien_mot_cle['id_mot_cle_obs']] = $ancien_mot_cle;
-
 
159
		}
-
 
160
		
-
 
161
		// Tous les nouveau mots clés, à classer par utilisateur, puis par valeur textuelle du mot
-
 
162
		$requete_nouveaux_mots_cles = "SELECT * FROM cel_arbre_mots_cles_obs";
-
 
163
		$nouveau_mots_cles = $this->bdd->recupererTous($requete_nouveaux_mots_cles);
-
 
164
		
-
 
165
		$nouveau_mots_cles_fmt = array();
-
 
166
		foreach($nouveau_mots_cles as &$nouveau_mot_cle) {
-
 
167
			$id_utilisateur_nouveau = $nouveau_mot_cle['id_utilisateur'];
-
 
168
			if(!isset($nouveau_mots_cles_fmt[$id_utilisateur_nouveau])) {
-
 
169
				$nouveau_mots_cles_fmt[$id_utilisateur_nouveau] = array();
-
 
170
			}
-
 
171
			$nouveau_mots_cles_fmt[$id_utilisateur_nouveau][$nouveau_mot_cle['mot_cle']] = $nouveau_mot_cle;
-
 
172
		}
-
 
173
		
-
 
174
		$anciens_mot_cles_pas_trouves = 0;
-
 
175
		$nouveaux_mot_cles_pas_trouves = 0;
-
 
176
		$utilisateurs_pas_trouves = 0;
-
 
177
		$valeurs_a_inserer = array();
-
 
178
		
-
 
179
		$ids_obs = array();
-
 
180
		
-
 
181
		foreach($liaisons as &$liaison) {
-
 
182
			$id_utilisateur_liaison = $liaison['ce_utilisateur'];
-
 
183
			$id_mot_cle_ancien_liaison = $liaison['id_mot_cle_obs'];
-
 
184
			
-
 
185
			if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison])) {
-
 
186
				if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison])) {
-
 
187
					$texte_ancien_mot_cle = $anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison]['mot_cle'];
-
 
188
					if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison])) {
-
 
189
						if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle])) {
-
 
190
							$nouvel_id_mot_cle = $nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle]['id_mot_cle'];
-
 
191
							
-
 
192
							$valeurs_a_inserer[] = array(
-
 
193
													'id_element_lie' => $liaison['id_observation'],
-
 
194
													'id_mot_cle' => $nouvel_id_mot_cle,
-
 
195
													'ancienne_liaison' => $liaison
-
 
196
							);
-
 
197
							$ids_obs[] = $liaison['id_observation'];
-
 
198
						} else {
-
 
199
							$nouveaux_mot_cles_pas_trouves++;
-
 
200
						}
-
 
201
					} else {
-
 
202
						
-
 
203
					}
-
 
204
					
-
 
205
				} else {
-
 
206
					$anciens_mot_cles_pas_trouves++;
-
 
207
				}
-
 
208
			} else {
-
 
209
				$utilisateurs_pas_trouves++;
-
 
210
			}
-
 
211
		}
-
 
212
		
-
 
213
		echo "Anciennes liaisons ".$nb_liaisons_originales." \n";
-
 
214
		echo "Liaisons à insérer ".count($valeurs_a_inserer)."\n";
-
 
215
		echo "Utilisateurs inconnus ".$utilisateurs_pas_trouves."\n";
-
 
216
		echo "Anciens mots clés inconnus ".$anciens_mot_cles_pas_trouves."\n";
-
 
217
		echo "Nouveaux mots clés inconnus ".$nouveaux_mot_cles_pas_trouves."\n";
-
 
218
		
-
 
219
		$tranches = array_chunk($valeurs_a_inserer, 800);
-
 
220
 
-
 
221
		foreach($tranches as $tranche) {
-
 
222
			$requete_insertion = "INSERT IGNORE INTO cel_mots_cles_obs_liaison (id_element_lie, id_mot_cle) ".
-
 
223
					                      "VALUES ";
-
 
224
			foreach($tranche as $l) {
-
 
225
				$requete_insertion .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),";
-
 
226
			}
-
 
227
			$requete_insertion = rtrim($requete_insertion, ',');
-
 
228
			$insertion = $this->bdd->requeter($requete_insertion);
-
 
229
			$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1);
-
 
230
		}
-
 
231
		echo "\n";
-
 
232
		
-
 
233
		// éventuellement dans le cas ou l'on verrait des mots clés manquants dans l'index texte
-
 
234
		/*echo "\nRegénération de l'index des mots clés pour les obs concernées\n";
-
 
235
		$ids_obs = array_unique($ids_obs);
-
 
236
		
-
 
237
		foreach($ids_obs as $id_obs_index) {
-
 
238
			$req_index = "UPDATE cel_obs SET mots_cles_texte = (SELECT GROUP_CONCAT(mot_cle) FROM cel_arbre_mots_cles_obs cm "
-
 
239
			. "INNER JOIN cel_mots_cles_obs_liaison cml ON cml.id_mot_cle = cm.id_mot_cle AND cml.id_element_lie = '".$id_obs_index."') "
-
 
240
			. "WHERE id_observation = '".$id_obs_index."'";
-
 
241
			$this->bdd->requeter($req_index);
-
 
242
			$this->afficherAvancement("Index mots clés régénérés ", 1);
-
 
243
		}
-
 
244
		echo "\nFin de la régénération de l'index des mots clés";*/
-
 
245
	}
-
 
246
	
-
 
247
	private function reparerLiaisonsOublieesImages() {
-
 
248
		// Toutes les liaisons obs-motscles avec l'id utilisateur issu de la table cel obs car
-
 
249
		// dans la table de liaison il est souvent vide
-
 
250
		$requete_liaisons = "SELECT cim.id_image, cim.id_mot_cle_image, ci.ce_utilisateur ".
-
 
251
							"FROM cel_images_mots_cles cim INNER JOIN cel_images ci ON ci.id_image = cim.id_image ";
-
 
252
 
-
 
253
		$liaisons = $this->bdd->recupererTous($requete_liaisons);
-
 
254
		
-
 
255
		// Tous les anciens mots clés, à classer par utilisateur, puis par id mot clé
-
 
256
		$requete_mots_cles = "SELECT id_mot_cle_image, id_utilisateur, mot_cle FROM cel_mots_cles_images ";
-
 
257
		$anciens_mots_cles = $this->bdd->recupererTous($requete_mots_cles);
-
 
258
		
-
 
259
		$anciens_mots_cles_fmt = array();
-
 
260
		foreach($anciens_mots_cles as &$ancien_mot_cle) {
-
 
261
			$id_utilisateur_ancien = $ancien_mot_cle['id_utilisateur'];
-
 
262
			if(!isset($anciens_mots_cles_fmt[$id_utilisateur_ancien])) {
-
 
263
				$anciens_mots_cles_fmt[$id_utilisateur_ancien] = array();
-
 
264
			}
-
 
265
			$anciens_mots_cles_fmt[$id_utilisateur_ancien][$ancien_mot_cle['id_mot_cle_image']] = $ancien_mot_cle;
-
 
266
		}
-
 
267
		
-
 
268
		// Tous les nouveau mots clés, à classer par utilisateur, puis par valeur textuelle du mot
-
 
269
		$requete_nouveaux_mots_cles = "SELECT * FROM cel_arbre_mots_cles_images";
-
 
270
		$nouveau_mots_cles = $this->bdd->recupererTous($requete_nouveaux_mots_cles);
-
 
271
		
-
 
272
		$nouveau_mots_cles_fmt = array();
-
 
273
		foreach($nouveau_mots_cles as &$nouveau_mot_cle) {
-
 
274
			$id_utilisateur_nouveau = $nouveau_mot_cle['id_utilisateur'];
-
 
275
			if(!isset($nouveau_mots_cles_fmt[$id_utilisateur_nouveau])) {
-
 
276
				$nouveau_mots_cles_fmt[$id_utilisateur_nouveau] = array();
-
 
277
			}
-
 
278
			$nouveau_mots_cles_fmt[$id_utilisateur_nouveau][$nouveau_mot_cle['mot_cle']] = $nouveau_mot_cle;
-
 
279
		}
-
 
280
		
-
 
281
		$anciens_mot_cles_pas_trouves = 0;
-
 
282
		$nouveaux_mot_cles_pas_trouves = 0;
-
 
283
		$utilisateurs_pas_trouves = 0;
-
 
284
		$valeurs_a_inserer = array();
-
 
285
		
-
 
286
		foreach($liaisons as &$liaison) {
-
 
287
			$id_utilisateur_liaison = $liaison['ce_utilisateur'];
-
 
288
			$id_mot_cle_ancien_liaison = $liaison['id_mot_cle_image'];
-
 
289
				
-
 
290
			if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison])) {
-
 
291
				if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison])) {
-
 
292
					$texte_ancien_mot_cle = $anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison]['mot_cle'];
-
 
293
					if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison])) {
-
 
294
						if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle])) {
-
 
295
							$nouvel_id_mot_cle = $nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle]['id_mot_cle'];
-
 
296
								
-
 
297
							$valeurs_a_inserer[] = array(
-
 
298
															'id_element_lie' => $liaison['id_image'],
-
 
299
															'id_mot_cle' => $nouvel_id_mot_cle,
-
 
300
															'ancienne_liaison' => $liaison
-
 
301
							);
-
 
302
							$ids_imgs[] = $liaison['id_image'];
-
 
303
						} else {
-
 
304
							$nouveaux_mot_cles_pas_trouves++;
-
 
305
						}
-
 
306
					} else {
-
 
307
		
-
 
308
					}
-
 
309
						
-
 
310
				} else {
-
 
311
					$anciens_mot_cles_pas_trouves++;
-
 
312
				}
-
 
313
			} else {
-
 
314
				$utilisateurs_pas_trouves++;
-
 
315
			}
-
 
316
		}
-
 
317
		
-
 
318
		echo "Liaisons à insérer ".count($valeurs_a_inserer)."\n";
-
 
319
		echo "Utilisateurs inconnus ".$utilisateurs_pas_trouves."\n";
-
 
320
		echo "Anciens mots clés inconnus ".$anciens_mot_cles_pas_trouves."\n";
-
 
321
		echo "Nouveaux mots clés inconnus ".$nouveaux_mot_cles_pas_trouves."\n";
-
 
322
 
-
 
323
		$tranches = array_chunk($valeurs_a_inserer, 800);
-
 
324
 
-
 
325
		foreach($tranches as $tranche) {
-
 
326
			$requete_insertion = "INSERT IGNORE INTO cel_mots_cles_images_liaison (id_element_lie, id_mot_cle) ".
-
 
327
					                      "VALUES ";
-
 
328
			foreach($tranche as $l) {
-
 
329
				$requete_insertion .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),";
-
 
330
			}
-
 
331
			$requete_insertion = rtrim($requete_insertion, ',');
-
 
332
			$insertion = $this->bdd->requeter($requete_insertion);
-
 
333
			$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1);
-
 
334
		}
-
 
335
		echo "\n";
-
 
336
		
-
 
337
		// éventuellement dans le cas ou l'on verrait des mots clés manquants dans l'index texte
-
 
338
		/*echo "\nRegénération de l'index des mots clés pour les obs concernées\n";
-
 
339
		$ids_imgs = array_unique($ids_imgs);
-
 
340
		
-
 
341
		foreach($ids_imgs as $id_image_index) {
-
 
342
			$req_index = "UPDATE cel_images SET mots_cles_texte = (SELECT GROUP_CONCAT(mot_cle) FROM cel_arbre_mots_cles_images cm "
-
 
343
			. "INNER JOIN cel_mots_cles_images_liaison cml ON cml.id_mot_cle = cm.id_mot_cle AND cml.id_element_lie = '".$id_image_index."') "
-
 
344
			. "WHERE id_image = '".$id_image_index."'";
-
 
345
			$this->bdd->requeter($req_index);
-
 
346
			$this->afficherAvancement("Index mots clés régénérés ", 1);
-
 
347
		}
130
		return $chemin;
348
		echo "\nFin de la régénération de l'index des mots clés";*/
131
	}
349
	}
132
}
350
}