5,6 → 5,7 |
protected $parametres_autorises = array( |
'-mc' => array(false, '1', 'Mot clef à chercher pour régénérer les machins'), |
'-doublon' => array(false, '1', "Id du mot clé qu'on veut réduire à un autre"), |
'-util' => array(false, '1', "Id de l'utilisateur"), |
'-cible' => array(false, '1', "Id de l'autre mot clé") |
); |
|
49,10 → 50,16 |
$this->reparerLiaisonsObsParMotsClesTexte($mot_clef); |
break; |
case 'reductionMotsClesImages' : |
// ex: cli.php maintenance -a reductionMotsClesImages -doublon 1234 -cible 5678 |
$idDoublon = $this->getParametre('doublon'); |
$idCible = $this->getParametre('cible'); |
$this->reductionMotsClesImages($idDoublon, $idCible); |
break; |
case 'reductionMotsClesImagesUtil' : |
// ex: cli.php maintenance -a reductionMotsClesImagesUtil -util 6865 |
$idUtilisateur = $this->getParametre('util'); |
$this->reductionMotsClesImagesUtilisateur($idUtilisateur); |
break; |
default : |
$msg = "Erreur : la commande '$cmd' n'existe pas!\n". |
"Commandes existantes : regenererMotsClesTexteImages, regenererMotsClesTexteObs"; |
403,7 → 410,9 |
} |
|
// Change toutes les associations images - mots_cles dont l'id mot_cle est $idDoublon, pour le remplacer par $idCible |
private function reductionMotsClesImages($idDoublon, $idCible) { |
private function reductionMotsClesImages($idDoublon, $idCible, $supprimerVieuxMotsCles=true) { |
echo "Réduction de $idDoublon à $idCible" . PHP_EOL; |
|
$q1 = "SELECT id_element_lie FROM cel_mots_cles_images_liaison WHERE id_mot_cle = $idCible;"; |
$r1 = $this->bdd->requeter($q1); |
$idsImages = array(); |
411,13 → 420,53 |
$idsImages[] = $r['id_element_lie']; |
} |
|
// On vire ceux qui ont le doublon mais qui ont aussi la cible |
$q2 = "DELETE FROM cel_mots_cles_images_liaison WHERE id_mot_cle = $idDoublon AND id_element_lie IN (" . implode(',', $idsImages) . ");"; |
$r2 = $this->bdd->requeter($q2); |
|
if (count($idsImages) > 0) { |
// On vire ceux qui ont le doublon mais qui ont aussi la cible |
$q2 = "DELETE FROM cel_mots_cles_images_liaison WHERE id_mot_cle = $idDoublon AND id_element_lie IN (" . implode(',', $idsImages) . ");"; |
$r2 = $this->bdd->requeter($q2); |
} |
|
// On convertit tous les doublons en cible |
$q3 = "UPDATE cel_mots_cles_images_liaison SET id_mot_cle = $idCible WHERE id_mot_cle = $idDoublon;"; |
$r3 = $this->bdd->requeter($q3); |
|
if ($supprimerVieuxMotsCles) { |
// On supprime le mot cle qui sert plus à rien |
$q4 = "DELETE FROM cel_arbre_mots_cles_images WHERE id_mot_cle = $idDoublon;"; |
$r4 = $this->bdd->requeter($q4); |
} |
} |
|
// Parcourt l'arbre des mots-cles images de l'utilisateur dont l'id est $idUtilisateur, et réduit tous ceux dont le chemin |
// n'est pas unique |
private function reductionMotsClesImagesUtilisateur($idUtilisateur) { |
$q1 = "SELECT id_mot_cle, chemin FROM cel_arbre_mots_cles_images WHERE id_utilisateur = $idUtilisateur;"; |
$r1 = $this->bdd->requeter($q1); |
|
$idsMotsCles = array(); |
$nbVieux = 0; |
foreach ($r1 as $r) { |
$k = strtolower($r['chemin']); |
if (! isset($idsMotsCles[$k])) { |
$idsMotsCles[$k] = array(); |
} |
$idsMotsCles[$k][] = $r['id_mot_cle']; |
$nbVieux++; |
} |
$nbNouveaux = count($idsMotsCles); |
|
echo "Réduction de $nbVieux à $nbNouveaux mots-cles" . PHP_EOL; |
$aTraiter = 0; |
foreach ($idsMotsCles as $chemin => $ids) { |
if (count($ids) > 1) { |
$aTraiter ++; |
$idCible = array_shift($ids); |
foreach ($ids as $idDoublon) { |
$this->reductionMotsClesImages($idDoublon, $idCible); |
} |
} |
} |
echo "$aTraiter groupes ont été réduits" . PHP_EOL; |
} |
} |
?> |