Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2415 Rev 2436
Line 133... Line 133...
133
	}
133
	}
Line 134... Line 134...
134
 
134
 
135
	// Régénère le champ "mots_cles_texte" pour toutes les images ayant des mots clés mais ayant ce champ
135
	// Régénère le champ "mots_cles_texte" pour toutes les images ayant des mots clés mais ayant ce champ
136
	// vide, suite à une erreur
136
	// vide, suite à une erreur
137
	protected function regenererMotsClesTexteImages($tout = false) {
137
	protected function regenererMotsClesTexteImages($tout = false) {
-
 
138
		$requete = 'SELECT id_image '.
138
		$req = "SELECT id_image FROM cel_images WHERE ".
139
			'FROM cel_images '.
139
				"id_image IN (SELECT id_element_lie FROM cel_mots_cles_images_liaison)";
140
			'WHERE id_image IN (SELECT id_element_lie FROM cel_mots_cles_images_liaison) ';
140
		if(!$tout) {
141
		if (!$tout) {
141
			$req .= " AND (mots_cles_texte IS NULL OR mots_cles_texte='')";
142
			$requete .= "AND (mots_cles_texte IS NULL OR mots_cles_texte = '') ";
142
		}
143
		}
143
		$res = $this->bdd->recupererTous($req);
144
		$resultats = $this->bdd->recupererTous($requete);
144
		echo count($res) . " images trouvées\n";
145
		echo count($resultats)." images trouvées\n";
-
 
146
		foreach ($resultats as $image) {
-
 
147
			$requete = 'UPDATE cel_images '.
-
 
148
				'SET mots_cles_texte = ('.
145
		foreach ($res as $image) {
149
				'	SELECT GROUP_CONCAT(mot_cle) '.
-
 
150
				'	FROM cel_arbre_mots_cles_images AS cm '.
146
			$req = "UPDATE cel_images SET mots_cles_texte = (SELECT GROUP_CONCAT(mot_cle) FROM cel_arbre_mots_cles_images cm "
151
				'		INNER JOIN cel_mots_cles_images_liaison AS cml '.
-
 
152
				"		ON (cml.id_mot_cle = cm.id_mot_cle AND cml.id_element_lie = '" . $image['id_image'] . "') ".
147
				. "INNER JOIN cel_mots_cles_images_liaison cml ON cml.id_mot_cle = cm.id_mot_cle AND cml.id_element_lie = '" . $image['id_image'] . "') "
153
				') '.
148
				. "WHERE id_image = '" . $image['id_image'] . "'";
154
				"WHERE id_image = '" . $image['id_image'] . "'";
149
			$this->bdd->requeter($req);
155
			$this->bdd->requeter($requete);
150
		}
156
		}
Line 151... Line 157...
151
	}
157
	}
152
 
158
 
153
	// Régénère le champ "mots_cles_texte" pour toutes les observations ayant des mots clés mais ayant ce champ
159
	// Régénère le champ "mots_cles_texte" pour toutes les observations ayant des mots clés mais ayant ce champ
154
	// vide, suite à une erreur
160
	// vide, suite à une erreur
-
 
161
	protected function regenererMotsClesTexteObs($tout = false) {
155
	protected function regenererMotsClesTexteObs($tout = false) {
162
		$requete = 'SELECT id_observation '.
156
		$req = "SELECT id_observation FROM cel_obs WHERE ".
163
			'FROM cel_obs '.
157
				"id_observation IN (SELECT id_element_lie FROM cel_mots_cles_obs_liaison)";
164
			'WHERE id_observation IN (SELECT id_element_lie FROM cel_mots_cles_obs_liaison) ';
158
		if(!$tout) {
165
		if (!$tout) {
159
			$req .= " AND (mots_cles_texte IS NULL OR mots_cles_texte='')";
166
			$requete .= "AND (mots_cles_texte IS NULL OR mots_cles_texte = '')";
160
		}
167
		}
161
		$res = $this->bdd->recupererTous($req);
168
		$resultats = $this->bdd->recupererTous($requete);
162
		echo count($res) . " observations trouvées\n";
169
		echo count($resultats) . " observations trouvées\n";
163
		foreach ($res as $image) {
170
		foreach ($resultats as $image) {
164
			$req = "UPDATE cel_obs SET mots_cles_texte = (SELECT GROUP_CONCAT(mot_cle) FROM cel_arbre_mots_cles_obs cm "
171
			$req = "UPDATE cel_obs SET mots_cles_texte = (SELECT GROUP_CONCAT(mot_cle) FROM cel_arbre_mots_cles_obs cm ".
165
			. "INNER JOIN cel_mots_cles_obs_liaison cml ON cml.id_mot_cle = cm.id_mot_cle AND cml.id_element_lie = '" . $image['id_observation'] . "') "
172
			"INNER JOIN cel_mots_cles_obs_liaison cml ON cml.id_mot_cle = cm.id_mot_cle AND cml.id_element_lie = '" . $image['id_observation'] . "') ".
166
				. "WHERE id_observation = '" . $image['id_observation'] . "'";
173
			"WHERE id_observation = '" . $image['id_observation'] . "'";
167
			$this->bdd->requeter($req);
174
			$this->bdd->requeter($req);
Line 168... Line 175...
168
		}
175
		}
Line 233... Line 240...
233
 
240
 
234
	protected function reparerLiaisonsOublieesObs() {
241
	protected function reparerLiaisonsOublieesObs() {
235
		// Toutes les liaisons obs-motscles avec l'id utilisateur issu de la table cel obs car
242
		// Toutes les liaisons obs-motscles avec l'id utilisateur issu de la table cel obs car
236
		// dans la table de liaison il est souvent vide
243
		// dans la table de liaison il est souvent vide
237
		$requete_liaisons = "SELECT com.id_observation, com.id_mot_cle_obs, co.ce_utilisateur ".
244
		$requete_liaisons = "SELECT com.id_observation, com.id_mot_cle_obs, co.ce_utilisateur ".
Line 238... Line 245...
238
					"FROM `cel_obs_mots_cles` com INNER JOIN cel_obs co ON co.id_observation = com.id_observation ";
245
			"FROM `cel_obs_mots_cles` com INNER JOIN cel_obs co ON co.id_observation = com.id_observation ";
239
 
246
 
Line 240... Line 247...
240
		$liaisons = $this->bdd->recupererTous($requete_liaisons);
247
		$liaisons = $this->bdd->recupererTous($requete_liaisons);
Line 284... Line 291...
284
					if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison])) {
291
					if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison])) {
285
						if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle])) {
292
						if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle])) {
286
							$nouvel_id_mot_cle = $nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle]['id_mot_cle'];
293
							$nouvel_id_mot_cle = $nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle]['id_mot_cle'];
Line 287... Line 294...
287
 
294
 
288
							$valeurs_a_inserer[] = array(
295
							$valeurs_a_inserer[] = array(
289
													'id_element_lie' => $liaison['id_observation'],
296
								'id_element_lie' => $liaison['id_observation'],
290
													'id_mot_cle' => $nouvel_id_mot_cle,
297
								'id_mot_cle' => $nouvel_id_mot_cle,
291
													'ancienne_liaison' => $liaison
298
								'ancienne_liaison' => $liaison
292
							);
299
							);
293
							$ids_obs[] = $liaison['id_observation'];
300
							$ids_obs[] = $liaison['id_observation'];
294
						} else {
301
						} else {
295
							$nouveaux_mot_cles_pas_trouves++;
302
							$nouveaux_mot_cles_pas_trouves++;
Line 313... Line 320...
313
		echo "Nouveaux mots clés inconnus ".$nouveaux_mot_cles_pas_trouves."\n";
320
		echo "Nouveaux mots clés inconnus ".$nouveaux_mot_cles_pas_trouves."\n";
Line 314... Line 321...
314
 
321
 
Line 315... Line 322...
315
		$tranches = array_chunk($valeurs_a_inserer, 800);
322
		$tranches = array_chunk($valeurs_a_inserer, 800);
316
 
323
 
317
		foreach($tranches as $tranche) {
-
 
318
			$requete_insertion = "INSERT IGNORE INTO cel_mots_cles_obs_liaison (id_element_lie, id_mot_cle) ".
324
		foreach($tranches as $tranche) {
319
					                      "VALUES ";
325
			$requete = "INSERT IGNORE INTO cel_mots_cles_obs_liaison (id_element_lie, id_mot_cle) VALUES ";
320
			foreach($tranche as $l) {
326
			foreach($tranche as $l) {
321
				$requete_insertion .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),";
327
				$requete .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'), ";
322
			}
328
			}
323
			$requete_insertion = rtrim($requete_insertion, ',');
329
			$requete = rtrim($requete, ',');
324
			$insertion = $this->bdd->requeter($requete_insertion);
330
			$insertion = $this->bdd->requeter($requete);
325
			$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1);
331
			$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1);
326
		}
332
		}
Line 376... Line 382...
376
					if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison])) {
382
					if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison])) {
377
						if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle])) {
383
						if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle])) {
378
							$nouvel_id_mot_cle = $nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle]['id_mot_cle'];
384
							$nouvel_id_mot_cle = $nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle]['id_mot_cle'];
Line 379... Line 385...
379
 
385
 
380
							$valeurs_a_inserer[] = array(
386
							$valeurs_a_inserer[] = array(
381
															'id_element_lie' => $liaison['id_image'],
387
								'id_element_lie' => $liaison['id_image'],
382
															'id_mot_cle' => $nouvel_id_mot_cle,
388
								'id_mot_cle' => $nouvel_id_mot_cle,
383
															'ancienne_liaison' => $liaison
389
								'ancienne_liaison' => $liaison
384
							);
390
							);
385
							$ids_imgs[] = $liaison['id_image'];
391
							$ids_imgs[] = $liaison['id_image'];
386
						} else {
392
						} else {
387
							$nouveaux_mot_cles_pas_trouves++;
393
							$nouveaux_mot_cles_pas_trouves++;
Line 404... Line 410...
404
		echo "Nouveaux mots clés inconnus ".$nouveaux_mot_cles_pas_trouves."\n";
410
		echo "Nouveaux mots clés inconnus ".$nouveaux_mot_cles_pas_trouves."\n";
Line 405... Line 411...
405
 
411
 
Line 406... Line 412...
406
		$tranches = array_chunk($valeurs_a_inserer, 800);
412
		$tranches = array_chunk($valeurs_a_inserer, 800);
407
 
413
 
408
		foreach($tranches as $tranche) {
414
		foreach($tranches as $tranche) {
409
			$requete_insertion = "INSERT IGNORE INTO cel_mots_cles_images_liaison (id_element_lie, id_mot_cle) ".
415
			$requete = "INSERT IGNORE INTO cel_mots_cles_images_liaison (id_element_lie, id_mot_cle) ".
410
					                      "VALUES ";
416
				"VALUES ";
411
			foreach($tranche as $l) {
417
			foreach($tranche as $l) {
412
				$requete_insertion .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),";
418
				$requete .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),";
413
			}
419
			}
414
			$requete_insertion = rtrim($requete_insertion, ',');
420
			$requete = rtrim($requete, ',');
415
			$insertion = $this->bdd->requeter($requete_insertion);
421
			$insertion = $this->bdd->requeter($requete);
416
			$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1);
422
			$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1);
417
		}
423
		}
Line 418... Line 424...
418
		echo "\n";
424
		echo "\n";
419
	}
425
	}
420
 
426
 
-
 
427
	private function reparerLiaisonsObsParMotsClesTexte($mot_cle_texte_recherche) {
421
	private function reparerLiaisonsObsParMotsClesTexte($mot_cle_texte_recherche) {
428
		$ancienne_table_obs = Config::get('table_obs_recup');
422
		$ancienne_table_obs = Config::get('table_obs_recup');
429
		$requete = "SELECT ce_utilisateur, id_observation, mots_cles_texte ".
423
		$requete_anciens_mots_cles_texte = "SELECT ce_utilisateur, id_observation, mots_cles_texte ".
430
			"FROM $ancienne_table_obs ".
-
 
431
			"WHERE mots_cles_texte LIKE '%$mot_cle_texte_recherche%' ";
424
											"FROM ".$ancienne_table_obs." WHERE mots_cles_texte LIKE '%".$mot_cle_texte_recherche."%'";
432
		$obs_a_mot_cle = $this->bdd->recupererTous($requete);
425
		$obs_a_mot_cle = $this->bdd->recupererTous($requete_anciens_mots_cles_texte);
433
 
-
 
434
		$requete = 'SELECT * '.
426
 
435
			'FROM cel_arbre_mots_cles_obs '.
427
		$requete_nouveaux_mots_cle = "SELECT * FROM cel_arbre_mots_cles_obs ".
436
			'WHERE id_utilisateur IN ( '.
428
									"WHERE id_utilisateur IN ".
437
			'	SELECT id_utilisateur '.
Line 429... Line 438...
429
									"(SELECT id_utilisateur FROM ".$ancienne_table_obs." ".
438
			"FROM $ancienne_table_obs ".
430
									"WHERE mots_cles_texte LIKE '%".$mot_cle_texte_recherche."%')";
439
			"	WHERE mots_cles_texte LIKE '%$mot_cle_texte_recherche%') ";
431
		$nouveaux_mots_cles = $this->bdd->recupererTous($requete_nouveaux_mots_cle);
440
		$nouveaux_mots_cles = $this->bdd->recupererTous($requete);
432
 
441
 
Line 541... Line 550...
541
	private function reductionMotsClesUtilisateur($idUtilisateur, $mode = "images") {
550
	private function reductionMotsClesUtilisateur($idUtilisateur, $mode = "images") {
542
		$table = "cel_arbre_mots_cles_";
551
		$table = "cel_arbre_mots_cles_";
543
		if ($mode == "images" || $mode == "obs") {
552
		if ($mode == "images" || $mode == "obs") {
544
			$table .= $mode;
553
			$table .= $mode;
545
		}
554
		}
546
		$q1 = "SELECT id_mot_cle, chemin, mot_cle, (LOCATE(mot_cle, chemin) != 0) as valide FROM `$table`"
555
		$q1 = 'SELECT id_mot_cle, chemin, mot_cle, (LOCATE(mot_cle, chemin) != 0) AS valide '.
-
 
556
			"FROM `$table` ".
547
			. " WHERE id_utilisateur = '$idUtilisateur'"
557
			"WHERE id_utilisateur = '$idUtilisateur' ".
548
			. " ORDER BY chemin ASC, valide DESC;";
558
			"ORDER BY chemin ASC, valide DESC ";
549
		$r1 = $this->bdd->requeter($q1);
559
		$r1 = $this->bdd->requeter($q1);
Line 550... Line 560...
550
 
560
 
551
		$idsMotsCles = array();
561
		$idsMotsCles = array();
552
		$nbVieux = 0;
562
		$nbVieux = 0;
Line 616... Line 626...
616
			}
626
			}
617
		}
627
		}
618
		echo "Fin de la réduction des mots clés $mode \n";
628
		echo "Fin de la réduction des mots clés $mode \n";
619
	}
629
	}
Line 620... Line 630...
620
 
630
 
621
	private function supprimerMajuscules($table, $colonne, $util=null) {
631
	private function supprimerMajuscules($table, $colonne, $util = null) {
622
		$requete = "UPDATE ".$table." SET ".$colonne." = LOWER(".$colonne.")";
632
		$requete = "UPDATE $table SET $colonne = LOWER($colonne)";
623
		if ($util !== null) {
633
		if ($util !== null) {
624
			$requete .= " WHERE id_utilisateur = $util";
634
			$requete .= " WHERE id_utilisateur = $util";
625
		}
635
		}
626
		$this->bdd->requeter($requete);
636
		$this->bdd->requeter($requete);
Line 627... Line 637...
627
	}
637
	}
628
 
-
 
629
	private function supprimerAccents($table, $colonne, $util=null) {
638
 
630
 
639
	private function supprimerAccents($table, $colonne, $util = null) {
631
		$requetes = array(
640
		$requetes = array(
632
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Š','S')",
641
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Š','S')",
633
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'š','s')",
642
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'š','s')",
Line 698... Line 707...
698
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ƒ','f')",
707
			"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'ƒ','f')",
699
		);
708
		);
Line 700... Line 709...
700
 
709
 
701
		foreach($requetes as $requete) {
710
		foreach($requetes as $requete) {
702
			if ($util !== null) {
711
			if ($util !== null) {
703
				$requete .= " WHERE id_utilisateur = $util";
712
				$requete .= " WHERE id_utilisateur = $util ";
704
			}
713
			}
705
			$this->bdd->requeter($requete);
714
			$this->bdd->requeter($requete);
706
		}
715
		}
707
	}
716
	}
708
}
717
}