From b244c6afc230a1979389c3f7956703cf3f94ad2b Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Sat, 5 Nov 2005 13:22:01 +0000
Subject: [PATCH] occurrences des mots-cles (Pyrat)

---
 ecrire/inc_mots.php3  | 87 ++++++++++++++++++++++++++++++++++++-------
 ecrire/mots_tous.php3 | 56 +---------------------------
 2 files changed, 76 insertions(+), 67 deletions(-)

diff --git a/ecrire/inc_mots.php3 b/ecrire/inc_mots.php3
index e27be34916..30f8cafb20 100644
--- a/ecrire/inc_mots.php3
+++ b/ecrire/inc_mots.php3
@@ -557,6 +557,65 @@ function formulaire_mots($table, $id_objet, $nouv_mot, $supp_mot, $cherche_mot,
 	fin_cadre_enfonce();
 }
 
+
+//
+// Calculer les nombres d'elements (articles, etc.) lies a chaque mot
+//
+
+function calculer_liens_mots()
+{
+
+if ($GLOBALS['connect_statut'] =="0minirezo") $aff_articles = "'prepa','prop','publie'";
+else $aff_articles = "'prop','publie'";
+
+ $articles = array();
+ $result_articles = spip_query(
+	"SELECT COUNT(*) as cnt, lien.id_mot FROM spip_mots_articles AS lien, spip_articles AS article
+	WHERE article.id_article=lien.id_article AND article.statut IN ($aff_articles) GROUP BY lien.id_mot"
+);
+ while ($row =  spip_fetch_array($result_articles)){
+	$articles[$row['id_mot']] = $row['cnt'];
+}
+
+
+ $rubriques = array();
+ $result_rubriques = spip_query(
+	"SELECT COUNT(*) AS cnt, lien.id_mot FROM spip_mots_rubriques AS lien, spip_rubriques AS rubrique
+	WHERE rubrique.id_rubrique=lien.id_rubrique GROUP BY lien.id_mot"
+	);
+
+ while ($row = spip_fetch_array($result_rubriques)){
+	$rubriques[$row['id_mot']] = $row['cnt'];
+}
+
+ $breves = array();
+ $result_breves = spip_query(
+	"SELECT COUNT(*) AS cnt, lien.id_mot FROM spip_mots_breves AS lien, spip_breves AS breve
+	WHERE breve.id_breve=lien.id_breve AND breve.statut IN ($aff_articles) GROUP BY lien.id_mot"
+	);
+
+ while ($row = spip_fetch_array($result_breves)){
+	$breves[$row['id_mot']] = $row['cnt'];
+}
+
+ $syndic = array(); 
+ $result_syndic = spip_query(
+	"SELECT COUNT(*) AS cnt, lien.id_mot FROM spip_mots_syndic AS lien, spip_syndic AS syndic
+	WHERE syndic.id_syndic=lien.id_syndic AND syndic.statut IN ($aff_articles) GROUP BY lien.id_mot"
+	);
+ while ($row = spip_fetch_array($result_syndic)){
+	$sites[$row['id_mot']] = $row['cnt'];
+
+ }
+
+ return array('articles' => $articles, 
+	      'breves' => $breves, 
+	      'rubriques' => $rubriques, 
+	      'syndic' => $syndic);
+}
+
+   
+
 function afficher_groupe_mots($id_groupe) {
 	global $connect_id_auteur, $connect_statut, $connect_toutes_rubriques;
 	global $spip_lang_right;
@@ -574,6 +633,8 @@ function afficher_groupe_mots($id_groupe) {
 	$tranches = afficher_tranches_requete($query, 3, $tmp_var, $javascript);
 
 
+	$occurrences = calculer_liens_mots();
+
 	$table = '';
 
 	if (strlen($tranches)) {
@@ -614,7 +675,7 @@ function afficher_groupe_mots($id_groupe) {
 				$couleur = $ifond ? "#FFFFFF" : $couleur_claire;
 				$ifond = $ifond ^ 1;
 
-				if ($connect_statut == "0minirezo" OR $nb_articles[$id_mot] > 0)
+				if ($connect_statut == "0minirezo" OR $occurrences['articles'][$id_mot] > 0)
 					$s = "<a href='mots_edit.php3?id_mot=$id_mot&redirect=mots_tous.php3' class='liste-mot'>".typo($titre_mot)."</a>";
 				else
 					$s = typo($titre_mot);
@@ -623,25 +684,25 @@ function afficher_groupe_mots($id_groupe) {
 
 				$texte_lie = array();
 
-				if ($nb_articles[$id_mot] == 1)
+				if ($occurrences['articles'][$id_mot] == 1)
 					$texte_lie[] = _T('info_1_article');
-				else if ($nb_articles[$id_mot] > 1)
-					$texte_lie[] = $nb_articles[$id_mot]." "._T('info_articles_02');
+				else if ($occurrences['articles'][$id_mot] > 1)
+					$texte_lie[] = $occurrences['articles'][$id_mot]." "._T('info_articles_02');
 
-				if ($nb_breves[$id_mot] == 1)
+				if ($occurrences['breves'][$id_mot] == 1)
 					$texte_lie[] = _T('info_1_breve');
-				else if ($nb_breves[$id_mot] > 1)
-					$texte_lie[] = $nb_breves[$id_mot]." "._T('info_breves_03');
+				else if ($occurrences['breves'][$id_mot] > 1)
+					$texte_lie[] = $occurrences['breves'][$id_mot]." "._T('info_breves_03');
 
-				if ($nb_sites[$id_mot] == 1)
+				if ($occurrences['sites'][$id_mot] == 1)
 					$texte_lie[] = _T('info_1_site');
-				else if ($nb_sites[$id_mot] > 1)
-					$texte_lie[] = $nb_sites[$id_mot]." "._T('info_sites');
+				else if ($occurrences['sites'][$id_mot] > 1)
+					$texte_lie[] = $occurrences['sites'][$id_mot]." "._T('info_sites');
 
-				if ($nb_rubriques[$id_mot] == 1)
+				if ($occurrences['rubriques'][$id_mot] == 1)
 					$texte_lie[] = _T('info_une_rubrique_02');
-				else if ($nb_rubriques[$id_mot] > 1)
-					$texte_lie[] = $nb_rubriques[$id_mot]." "._T('info_rubriques_02');
+				else if ($occurrences['rubriques'][$id_mot] > 1)
+					$texte_lie[] = $occurrences['rubriques'][$id_mot]." "._T('info_rubriques_02');
 
 				$texte_lie = join($texte_lie,", ");
 				
diff --git a/ecrire/mots_tous.php3 b/ecrire/mots_tous.php3
index 59b211a9dc..45da42968a 100644
--- a/ecrire/mots_tous.php3
+++ b/ecrire/mots_tous.php3
@@ -19,11 +19,6 @@ include_ecrire("inc_urls.php3");
 include_ecrire("inc_rubriques.php3");
 include_ecrire("inc_mots.php3");
 
-// secure
-if (!($connect_statut == '0minirezo'  AND $connect_toutes_rubriques))
-  $conf_mot = "";
-
-// suppression d'un mot ?
 if ($conf_mot = intval($conf_mot)) {
 	$query = "SELECT * FROM spip_mots WHERE id_mot='$conf_mot'";
 	$result = spip_query($query);
@@ -57,7 +52,7 @@ if ($conf_mot = intval($conf_mot)) {
 			WHERE lien.id_mot=$conf_mot AND forum.id_forum=lien.id_forum
 			AND forum.statut='publie'"));
 
-		// si le mot n'est pas lie, on le supprime sans etats d'ames
+		// si le mot n'est pas lie, on demande sa suppression
 		if ($nb_articles + $nb_breves + $nb_sites + $nb_forum == 0) {
 			redirige_par_entete("mots_edit.php3?supp_mot=$id_mot&redirect_ok=oui&redirect=mots_tous.php3");
 		} // else traite plus loin (confirmation de suppression)
@@ -143,54 +138,6 @@ if ($conf_mot>0) {
 }
 
 
-//
-// Calculer les nombres d'elements (articles, etc.) lies a chaque mot
-//
-
-if ($connect_statut=="0minirezo") $aff_articles = "'prepa','prop','publie'";
-else $aff_articles = "'prop','publie'";
-
-$result_articles = spip_query(
-	"SELECT COUNT(*) as cnt, lien.id_mot FROM spip_mots_articles AS lien, spip_articles AS article
-	WHERE article.id_article=lien.id_article AND article.statut IN ($aff_articles) GROUP BY lien.id_mot"
-);
-while ($row_articles =  spip_fetch_array($result_articles)){
-	$id_mot = $row_articles['id_mot'];
-	$total_articles = $row_articles['cnt'];
-	$nb_articles[$id_mot] = $total_articles;
-}
-
-
-$result_rubriques = spip_query(
-	"SELECT COUNT(*) AS cnt, lien.id_mot FROM spip_mots_rubriques AS lien, spip_rubriques AS rubrique
-	WHERE rubrique.id_rubrique=lien.id_rubrique GROUP BY lien.id_mot"
-	);
-while ($row_rubriques = spip_fetch_array($result_rubriques)){
-	$id_mot = $row_rubriques['id_mot'];
-	$total_rubriques = $row_rubriques['cnt'];
-	$nb_rubriques[$id_mot] = $total_rubriques;
-}
-
-$result_breves = spip_query(
-	"SELECT COUNT(*) AS cnt, lien.id_mot FROM spip_mots_breves AS lien, spip_breves AS breve
-	WHERE breve.id_breve=lien.id_breve AND breve.statut IN ($aff_articles) GROUP BY lien.id_mot"
-	);
-while ($row_breves = spip_fetch_array($result_breves)){
-	$id_mot = $row_breves['id_mot'];
-	$total_breves = $row_breves['cnt'];
-	$nb_breves[$id_mot] = $total_breves;
-}
-
-$result_syndic = spip_query(
-	"SELECT COUNT(*) AS cnt, lien.id_mot FROM spip_mots_syndic AS lien, spip_syndic AS syndic
-	WHERE syndic.id_syndic=lien.id_syndic AND syndic.statut IN ($aff_articles) GROUP BY lien.id_mot"
-	);
-while ($row_syndic = spip_fetch_array($result_syndic)){
-	$id_mot = $row_syndic['id_mot'];
-	$total_sites = $row_syndic['cnt'];
-	$nb_sites[$id_mot] = $total_sites;
-}
-
 
 //
 // On boucle d'abord sur les groupes de mots
@@ -274,6 +221,7 @@ while ($row_groupes = spip_fetch_array($result_groupes)) {
 	}	
 
 	fin_cadre_enfonce();
+
 }
 
 if ($connect_statut =="0minirezo"  AND $connect_toutes_rubriques  AND !$conf_mot){
-- 
GitLab