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 |
}
|