Line 3... |
Line 3... |
3 |
|
3 |
|
4 |
protected $bdd;
|
4 |
protected $bdd;
|
5 |
protected $parametres_autorises = array(
|
5 |
protected $parametres_autorises = array(
|
6 |
'-mc' => array(false, '1', 'Mot clef à chercher pour régénérer les machins'),
|
6 |
'-mc' => array(false, '1', 'Mot clef à chercher pour régénérer les machins'),
|
- |
|
7 |
'-doublon' => array(false, '1', "Id du mot clé qu'on veut réduire à un autre"),
|
7 |
'-doublon' => array(false, '1', "Id du mot clé qu'on veut réduire à un autre"),
|
8 |
'-util' => array(false, '1', "Id de l'utilisateur"),
|
8 |
'-cible' => array(false, '1', "Id de l'autre mot clé")
|
9 |
'-cible' => array(false, '1', "Id de l'autre mot clé")
|
Line 9... |
Line 10... |
9 |
);
|
10 |
);
|
10 |
|
11 |
|
Line 47... |
Line 48... |
47 |
case 'reparerLiaisonsObsParMotsClesTexte' :
|
48 |
case 'reparerLiaisonsObsParMotsClesTexte' :
|
48 |
$mot_clef = $this->getParametre('mc');
|
49 |
$mot_clef = $this->getParametre('mc');
|
49 |
$this->reparerLiaisonsObsParMotsClesTexte($mot_clef);
|
50 |
$this->reparerLiaisonsObsParMotsClesTexte($mot_clef);
|
50 |
break;
|
51 |
break;
|
51 |
case 'reductionMotsClesImages' :
|
52 |
case 'reductionMotsClesImages' :
|
- |
|
53 |
// ex: cli.php maintenance -a reductionMotsClesImages -doublon 1234 -cible 5678
|
52 |
$idDoublon = $this->getParametre('doublon');
|
54 |
$idDoublon = $this->getParametre('doublon');
|
53 |
$idCible = $this->getParametre('cible');
|
55 |
$idCible = $this->getParametre('cible');
|
54 |
$this->reductionMotsClesImages($idDoublon, $idCible);
|
56 |
$this->reductionMotsClesImages($idDoublon, $idCible);
|
55 |
break;
|
57 |
break;
|
- |
|
58 |
case 'reductionMotsClesImagesUtil' :
|
- |
|
59 |
// ex: cli.php maintenance -a reductionMotsClesImagesUtil -util 6865
|
- |
|
60 |
$idUtilisateur = $this->getParametre('util');
|
- |
|
61 |
$this->reductionMotsClesImagesUtilisateur($idUtilisateur);
|
- |
|
62 |
break;
|
56 |
default :
|
63 |
default :
|
57 |
$msg = "Erreur : la commande '$cmd' n'existe pas!\n".
|
64 |
$msg = "Erreur : la commande '$cmd' n'existe pas!\n".
|
58 |
"Commandes existantes : regenererMotsClesTexteImages, regenererMotsClesTexteObs";
|
65 |
"Commandes existantes : regenererMotsClesTexteImages, regenererMotsClesTexteObs";
|
59 |
throw new Exception($msg);
|
66 |
throw new Exception($msg);
|
60 |
}
|
67 |
}
|
Line 401... |
Line 408... |
401 |
$requete_insertion = rtrim($requete_insertion, ',');
|
408 |
$requete_insertion = rtrim($requete_insertion, ',');
|
402 |
$insertion = $this->bdd->requeter($requete_insertion);
|
409 |
$insertion = $this->bdd->requeter($requete_insertion);
|
403 |
}
|
410 |
}
|
Line 404... |
Line 411... |
404 |
|
411 |
|
405 |
// Change toutes les associations images - mots_cles dont l'id mot_cle est $idDoublon, pour le remplacer par $idCible
|
412 |
// Change toutes les associations images - mots_cles dont l'id mot_cle est $idDoublon, pour le remplacer par $idCible
|
- |
|
413 |
private function reductionMotsClesImages($idDoublon, $idCible, $supprimerVieuxMotsCles=true) {
|
- |
|
414 |
echo "Réduction de $idDoublon à $idCible" . PHP_EOL;
|
406 |
private function reductionMotsClesImages($idDoublon, $idCible) {
|
415 |
|
407 |
$q1 = "SELECT id_element_lie FROM cel_mots_cles_images_liaison WHERE id_mot_cle = $idCible;";
|
416 |
$q1 = "SELECT id_element_lie FROM cel_mots_cles_images_liaison WHERE id_mot_cle = $idCible;";
|
408 |
$r1 = $this->bdd->requeter($q1);
|
417 |
$r1 = $this->bdd->requeter($q1);
|
409 |
$idsImages = array();
|
418 |
$idsImages = array();
|
410 |
foreach ($r1 as $r) {
|
419 |
foreach ($r1 as $r) {
|
411 |
$idsImages[] = $r['id_element_lie'];
|
420 |
$idsImages[] = $r['id_element_lie'];
|
Line -... |
Line 421... |
- |
|
421 |
}
|
412 |
}
|
422 |
|
413 |
|
423 |
if (count($idsImages) > 0) {
|
414 |
// On vire ceux qui ont le doublon mais qui ont aussi la cible
|
424 |
// On vire ceux qui ont le doublon mais qui ont aussi la cible
|
- |
|
425 |
$q2 = "DELETE FROM cel_mots_cles_images_liaison WHERE id_mot_cle = $idDoublon AND id_element_lie IN (" . implode(',', $idsImages) . ");";
|
415 |
$q2 = "DELETE FROM cel_mots_cles_images_liaison WHERE id_mot_cle = $idDoublon AND id_element_lie IN (" . implode(',', $idsImages) . ");";
|
426 |
$r2 = $this->bdd->requeter($q2);
|
416 |
$r2 = $this->bdd->requeter($q2);
|
427 |
}
|
417 |
|
428 |
|
418 |
// On convertit tous les doublons en cible
|
429 |
// On convertit tous les doublons en cible
|
- |
|
430 |
$q3 = "UPDATE cel_mots_cles_images_liaison SET id_mot_cle = $idCible WHERE id_mot_cle = $idDoublon;";
|
- |
|
431 |
$r3 = $this->bdd->requeter($q3);
|
- |
|
432 |
|
- |
|
433 |
if ($supprimerVieuxMotsCles) {
|
- |
|
434 |
// On supprime le mot cle qui sert plus à rien
|
- |
|
435 |
$q4 = "DELETE FROM cel_arbre_mots_cles_images WHERE id_mot_cle = $idDoublon;";
|
- |
|
436 |
$r4 = $this->bdd->requeter($q4);
|
- |
|
437 |
}
|
- |
|
438 |
}
|
- |
|
439 |
|
- |
|
440 |
// Parcourt l'arbre des mots-cles images de l'utilisateur dont l'id est $idUtilisateur, et réduit tous ceux dont le chemin
|
- |
|
441 |
// n'est pas unique
|
- |
|
442 |
private function reductionMotsClesImagesUtilisateur($idUtilisateur) {
|
- |
|
443 |
$q1 = "SELECT id_mot_cle, chemin FROM cel_arbre_mots_cles_images WHERE id_utilisateur = $idUtilisateur;";
|
- |
|
444 |
$r1 = $this->bdd->requeter($q1);
|
- |
|
445 |
|
- |
|
446 |
$idsMotsCles = array();
|
- |
|
447 |
$nbVieux = 0;
|
- |
|
448 |
foreach ($r1 as $r) {
|
- |
|
449 |
$k = strtolower($r['chemin']);
|
- |
|
450 |
if (! isset($idsMotsCles[$k])) {
|
- |
|
451 |
$idsMotsCles[$k] = array();
|
- |
|
452 |
}
|
- |
|
453 |
$idsMotsCles[$k][] = $r['id_mot_cle'];
|
- |
|
454 |
$nbVieux++;
|
- |
|
455 |
}
|
- |
|
456 |
$nbNouveaux = count($idsMotsCles);
|
- |
|
457 |
|
- |
|
458 |
echo "Réduction de $nbVieux à $nbNouveaux mots-cles" . PHP_EOL;
|
- |
|
459 |
$aTraiter = 0;
|
- |
|
460 |
foreach ($idsMotsCles as $chemin => $ids) {
|
- |
|
461 |
if (count($ids) > 1) {
|
- |
|
462 |
$aTraiter ++;
|
- |
|
463 |
$idCible = array_shift($ids);
|
- |
|
464 |
foreach ($ids as $idDoublon) {
|
- |
|
465 |
$this->reductionMotsClesImages($idDoublon, $idCible);
|
- |
|
466 |
}
|
- |
|
467 |
}
|
419 |
$q3 = "UPDATE cel_mots_cles_images_liaison SET id_mot_cle = $idCible WHERE id_mot_cle = $idDoublon;";
|
468 |
}
|
420 |
$r3 = $this->bdd->requeter($q3);
|
469 |
echo "$aTraiter groupes ont été réduits" . PHP_EOL;
|
421 |
}
|
470 |
}
|
422 |
}
|
471 |
}
|