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