Subversion Repositories eFlore/Applications.cel

Rev

Rev 2172 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2172 Rev 2184
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
}