Subversion Repositories eFlore/Applications.cel

Rev

Rev 2221 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2221 Rev 2228
Line 67... Line 67...
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
		}
Line 427... Line 454...
427
		$insertion = $this->bdd->requeter($requete_insertion);
454
		$insertion = $this->bdd->requeter($requete_insertion);
428
	}
455
	}
Line 429... Line 456...
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) {
Line 432... Line 459...
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);
Line 453... Line 480...
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
	}
Line -... Line 484...
-
 
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;";
Line 464... Line 532...
464
		$r1 = $this->bdd->requeter($q1);
532
		$r1 = $this->bdd->requeter($q1);
Line 473... Line 541...
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);
Line 477... Line 545...
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);
-
 
552
				foreach ($ids as $idDoublon) {
484
				foreach ($ids as $idDoublon) {
553
					if ($mode == "images") {
-
 
554
						$this->reductionMotsClesImages($idDoublon, $idCible);
-
 
555
					} elseif ($mode == "obs") {
-
 
556
						$this->reductionMotsClesObs($idDoublon, $idCible);
485
					$this->reductionMotsClesImages($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;
Line 490... Line 562...
490
	}
562
	}
491
	
563
	
492
	private function reduireEtNormaliserMotsClesImages($util=null) {
564
	private function reduireEtNormaliserMotsClesImages($util=null) {
Line -... Line 565...
-
 
565
		$this->reduireEtNormaliserMotsCles('cel_arbre_mots_cles_images', 'chemin', 'images', $util);
-
 
566
	}
-
 
567
	
-
 
568
	private function reduireEtNormaliserMotsClesObs($util=null) {
493
		$this->reduireEtNormaliserMotsCles('cel_arbre_mots_cles_images', 'chemin', 'images', $util);
569
		$this->reduireEtNormaliserMotsCles('cel_arbre_mots_cles_obs', 'chemin', 'obs', $util);
494
	}
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";
-
 
579
		echo "\n";
503
		echo "\n";
580
		if ($util !== null) {
-
 
581
			echo "Réduction de tous les mots clés $mode de l'utilisateur $util\n";
-
 
582
			if($mode == "images") {
-
 
583
				$this->reductionMotsClesImagesUtilisateur($util);
504
		if ($util !== null) {
584
			} elseif($mode == "obs") {
505
			echo "Réduction de tous les mots clés $mode de l'utilisateur $util\n";
585
				$this->reductionMotsClesObsUtilisateur($util);
506
			$this->reductionMotsClesImagesUtilisateur($util);
586
			}
507
		} else {
587
		} else {
Line 508... Line 588...
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) {
-
 
513
				echo "Utilisateur en cours de traitement : ".$utilisateur['id_utilisateur']." \n";
592
			foreach($utilisateurs as $utilisateur) {
514
				if($mode == "images") {
593
				echo "Utilisateur en cours de traitement : ".$utilisateur['id_utilisateur']." \n";
515
					$this->reductionMotsClesImagesUtilisateur($utilisateur['id_utilisateur']);
594
				if($mode == "images") {
516
				} else {
595
					$this->reductionMotsClesImagesUtilisateur($utilisateur['id_utilisateur']);
517
					//TODO: créer cette fonction
596
				} elseif($mode == "obs") {
518
					// $this->reductionMotsClesObsUtilisateur($utilisateur['id_utilisateur']);
597
					$this->reductionMotsClesObsUtilisateur($utilisateur['id_utilisateur']);
519
				}
598
				}