Subversion Repositories eFlore/Applications.cel

Compare Revisions

No changes between revisions

Ignore whitespace Rev 2183 → Rev 2184

/branches/v2.2-faucille/scripts/modules/maintenance/Maintenance.php
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;
}
}
?>
/branches/v2.2-faucille/scripts
Property changes:
Modified: svn:mergeinfo
Merged /trunk/scripts:r2183
/branches/v2.2-faucille/.
Property changes:
Modified: svn:mergeinfo
Merged /trunk:r2183