From 38fd6ac35e9fa1070329c3644d4c543397d03ea4 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Sun, 5 Jun 2005 13:49:36 +0000 Subject: [PATCH] =?UTF-8?q?spip=5Frss=20:=20suivi=20des=20forums=20dans=20?= =?UTF-8?q?le=20csuivi=20des=20forums=20j'ajoute=20un=20crit=C3=A8re=20[pr?= =?UTF-8?q?opos=C3=A9s]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/controle_forum.php3 | 41 ++++++++++++----------- ecrire/inc_forum.php3 | 61 ++++++++++++++++++++++++++++++++++ ecrire/inc_presentation.php3 | 11 ++++-- ecrire/inc_sites.php3 | 6 ++-- ecrire/inc_suivi_revisions.php | 11 +++++- ecrire/suivi_revisions.php3 | 10 +++--- spip_rss.php | 32 +++++++++--------- 7 files changed, 125 insertions(+), 47 deletions(-) diff --git a/ecrire/controle_forum.php3 b/ecrire/controle_forum.php3 index 9066f4533c..17d9fe13ba 100644 --- a/ecrire/controle_forum.php3 +++ b/ecrire/controle_forum.php3 @@ -193,6 +193,12 @@ if (!$page) $page = "public"; echo "<br><br><br>"; gros_titre(_T('titre_forum_suivi')); barre_onglets("suivi_forum", $page); + +if ($connect_statut != "0minirezo" OR !$connect_toutes_rubriques) { + echo "<B>"._T('avis_non_acces_page')."</B>"; + exit; +} + debut_gauche(); debut_boite_info(); echo "<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2>"; @@ -200,6 +206,20 @@ echo _T('info_gauche_suivi_forum_2'); echo aide("suiviforum"); echo "</FONT>"; +// Afficher le lien RSS +include_ecrire('inc_sites.php3'); +$op = 'forums'; +$args = array( + 'page' => $page +); +echo "<div style='text-align: " + . $GLOBALS['spip_lang_right'] + . ";'>" + . bouton_spip_rss($op, $args) + ."</div>"; + + + fin_boite_info(); debut_droite(); @@ -207,25 +227,8 @@ debut_droite(); // Debut de la page de controle // -if ($connect_statut != "0minirezo" OR !$connect_toutes_rubriques) { - echo "<B>"._T('avis_non_acces_page')."</B>"; - exit; -} - -switch ($page) { -case 'public': - $query_forum = "statut IN ('publie', 'off', 'prop') AND texte!=''"; - break; -case 'interne': - $query_forum = "statut IN ('prive', 'privrac', 'privoff', 'privadm') AND texte!=''"; - break; -case 'vide': - $query_forum = "statut IN ('publie', 'off', 'prive', 'privrac', 'privoff', 'privadm') AND texte=''"; - break; -default: - $query_forum = "0=1"; - break; -} +// recuperer le critere SQL qui selectionne nos forums +$query_forum = critere_statut_controle_forum($page); // Si un id_controle_forum est demande, on adapte le debut if ($debut_id_forum = intval($debut_id_forum) diff --git a/ecrire/inc_forum.php3 b/ecrire/inc_forum.php3 index d6f1f8fb7f..c63be9d2d4 100644 --- a/ecrire/inc_forum.php3 +++ b/ecrire/inc_forum.php3 @@ -196,6 +196,28 @@ function boutons_controle_forum($id_forum, $forum_stat, $forum_id_auteur=0, $ref return $controle; } +// Selon ce qu'on veut suivre depuis ecrire/controle_forum, retourner le SQL +function critere_statut_controle_forum($page) { + switch ($page) { + case 'public': + $query_forum = "statut IN ('publie', 'off', 'prop') AND texte!=''"; + break; + case 'prop': + $query_forum = "statut='prop'"; + break; + case 'interne': + $query_forum = "statut IN ('prive', 'privrac', 'privoff', 'privadm') AND texte!=''"; + break; + case 'vide': + $query_forum = "statut IN ('publie', 'off', 'prive', 'privrac', 'privoff', 'privadm') AND texte=''"; + break; + default: + $query_forum = "0=1"; + break; + } + return $query_forum; +} + // Index d'invalidation des forums function calcul_index_forum($id_article, $id_breve, $id_rubrique, $id_syndic) { if ($id_article) return 'a'.$id_article; @@ -277,5 +299,44 @@ function generer_url_forum_dist($id_forum, $show_thread=false) { } } +// Interface pour SPIP RSS +function rss_suivi_forums($a) { + include_ecrire("inc_forum.php3"); + + $query_forum = critere_statut_controle_forum($a['page']); + + $result_forum = spip_query(" + SELECT * + FROM spip_forum + WHERE " . $query_forum . " + ORDER BY date_heure DESC LIMIT 0,20" + ); + + while ($t = spip_fetch_array($result_forum)) { + $item = array(); + $item['title'] = typo($t['titre']); + if ($a['page'] == 'public' + AND $t['statut']<>'publie' + ) + $item['title'] .= ' ('.$t['statut'].')'; + $item['date'] = $t['date_heure']; + $item['author'] = $t['auteur']; + if ($t['email_auteur']) + $item['author'] .= ' <'.$t['email_auteur'].'>'; + $item['url'] = lire_meta('adresse_site').'/'._DIR_RESTREINT_ABS + .'controle_forum.php3?page='.$a['page'].'&debut_id_forum='.$t['id_forum']; + $item['description'] = propre($t['texte']); + if ($GLOBALS['les_notes']) { + $item['description'] .= '<hr />'.$GLOBALS['les_notes']; + $GLOBALS['les_notes'] = ''; + } + if ($t['nom_site'] OR vider_url($t['url_site'])) + $item['description'] .= propre("\n- [".$t['nom_site']."->".$t['url_site']."]<br />"); + + $rss[] = $item; + } + + return $rss; +} ?> diff --git a/ecrire/inc_presentation.php3 b/ecrire/inc_presentation.php3 index e5a8e82f7b..f48782a5f1 100644 --- a/ecrire/inc_presentation.php3 +++ b/ecrire/inc_presentation.php3 @@ -1739,9 +1739,14 @@ function barre_onglets($rubrique, $onglet){ $query_forum = "SELECT * FROM spip_forum WHERE statut='publie' AND texte='' LIMIT 0,1"; $result_forum = spip_query($query_forum); - if ($row = spip_fetch_array($result_forum)) { - onglet(_T('onglet_messages_vide'), "controle_forum.php3?page=vide", "sans", $onglet); - } + if ($row = spip_fetch_array($result_forum)) + onglet(_T('onglet_messages_vide'), "controle_forum.php3?page=vide", "vide", $onglet); + + $query_forum = "SELECT * FROM spip_forum WHERE statut='prop' LIMIT 0,1"; + $result_forum = spip_query($query_forum); + if ($row = spip_fetch_array($result_forum)) + onglet(_T('texte_statut_attente_validation'), "controle_forum.php3?page=prop", "prop", $onglet); + } fin_onglet(); diff --git a/ecrire/inc_sites.php3 b/ecrire/inc_sites.php3 index 22cbf17774..df109449c1 100644 --- a/ecrire/inc_sites.php3 +++ b/ecrire/inc_sites.php3 @@ -236,7 +236,6 @@ function my_strtotime($la_date) { // A completer (il manque des tests, des valeurs par defaut, les enclosures, differents formats de sortie, etc.) // function affiche_rss($rss, $intro = '') { - if (!is_array($rss)) return; // entetes $u = '<'.'?xml version="1.0" encoding="'.lire_meta('charset').'"?'.">\n"; @@ -251,6 +250,7 @@ function affiche_rss($rss, $intro = '') { '; // elements + if (is_array($rss)) foreach ($rss as $article) { $u .= ' <item> @@ -291,7 +291,9 @@ function bouton_spip_rss($op, $args) { $link = new Link("../spip_rss.php?op=$op"); if ($a) $link->addVar('args', $a); $link->addVar('id', $GLOBALS['connect_id_auteur']); - $link->addVar('cle', afficher_low_sec($GLOBALS['connect_id_auteur'], "rss $op $a")); + $cle = afficher_low_sec($GLOBALS['connect_id_auteur'], "rss $op $a"); + $link->addVar('cle', $cle); + $link->addVar('lang', $GLOBALS['spip_lang']); return "<a href='".$link->getUrl()."'>" . http_img_pack("xml.gif", 'XML', "border='0' align='middle' valign='top'") . "</a>"; diff --git a/ecrire/inc_suivi_revisions.php b/ecrire/inc_suivi_revisions.php index 8da40a1953..416a521a89 100644 --- a/ecrire/inc_suivi_revisions.php +++ b/ecrire/inc_suivi_revisions.php @@ -216,4 +216,13 @@ function afficher_suivi_versions ($debut = 0, $id_secteur = 0, $id_auteur = fals return $items; } -?> \ No newline at end of file +// Interface pour SPIP RSS +function rss_suivi_versions($a) { + include_ecrire("lab_revisions.php"); + include_ecrire("lab_diff.php"); + include_ecrire("inc_presentation.php3"); + $rss = afficher_suivi_versions (0, $a['id_secteur'], $a['id_auteur'], $a['lang_choisie'], true, true); + return $rss; +} + +?> diff --git a/ecrire/suivi_revisions.php3 b/ecrire/suivi_revisions.php3 index c893da5537..b81f372375 100644 --- a/ecrire/suivi_revisions.php3 +++ b/ecrire/suivi_revisions.php3 @@ -18,7 +18,7 @@ include_spip("revisions.php"); include_spip("diff.php"); $debut = intval($debut); -$uniq_auteur = ($uniq_auteur != false); +$id_auteur = ($id_auteur == $connect_id_auteur) ? $id_auteur : false; debut_page(_T("icone_suivi_revisions")); @@ -41,15 +41,15 @@ debut_cadre_relief(); echo "<div class='arial11'><ul>"; echo "<p>"; -if (!$uniq_auteur AND $id_secteur < 1) echo "<li><b>"._T('info_tout_site')."</b>"; +if (!$id_auteur AND $id_secteur < 1) echo "<li><b>"._T('info_tout_site')."</b>"; else echo "<li><a href='suivi_revisions.php3'>"._T('info_tout_site')."</a>"; echo "<p>"; $nom_auteur = $GLOBALS['auteur_session']['nom']; -if ($uniq_auteur) echo "<li><b>$nom_auteur</b>"; -else echo "<li><a href='suivi_revisions.php3?uniq_auteur=true'>$nom_auteur</a>"; +if ($id_auteur) echo "<li><b>$nom_auteur</b>"; +else echo "<li><a href='suivi_revisions.php3?id_auteur=$connect_id_auteur'>$nom_auteur</a>"; echo "<p>"; @@ -96,7 +96,7 @@ include_ecrire('inc_sites.php3'); $op = 'revisions'; $args = array( 'id_secteur' => $id_secteur, - 'id_auteur' => $uniq_auteur ? $connect_id_auteur : false, + 'id_auteur' => $id_auteur, 'lang_choisie' => $lang_choisie ); echo "<div style='text-align: " diff --git a/spip_rss.php b/spip_rss.php index d5f265f6c0..0c2b6bdeca 100644 --- a/spip_rss.php +++ b/spip_rss.php @@ -20,12 +20,12 @@ include("ecrire/inc_version.php3"); include_ecrire("inc_texte.php3"); - +include_ecrire('inc_sites.php3'); +include_ecrire("inc_acces.php3"); // // Verifier la securite du lien et decoder les arguments // -include_ecrire("inc_acces.php3"); if (!verifier_low_sec ($id, $cle, "rss $op $args" )) { @@ -37,16 +37,27 @@ if (!verifier_low_sec ($id, $cle, list($var, $val) = split('-', $bout, 2); $a[$var] = $val; } + include_ecrire('inc_lang.php3'); + lang_select($lang); } // // Choisir la fonction de calcul du RSS // switch($op) { + case 'forums': + include_ecrire("inc_forum.php3"); + $rss = rss_suivi_forums($a); + $title = _T("ecrire:titre_page_forum_suivi")." (".$a['page'].")"; + $url = _DIR_RESTREINT_ABS .'controle_forum.php3?page='.$a['page']; + break; case 'revisions': + include_ecrire("inc_suivi_revisions.php"); $rss = rss_suivi_versions($a); $title = _T("icone_suivi_revisions"); - $url = _DIR_RESTREINT_ABS .'suivi_revisions.php3'; + $url = _DIR_RESTREINT_ABS .'suivi_revisions.php3?'; + foreach (array('id_secteur', 'id_auteur', 'lang_choisie') as $var) + if ($a[$var]) $url.= '&'.$var.'='.$a[$var]; break; case 'erreur securite': $rss = array(array('title' => _L('Erreur de sécurité'))); @@ -63,7 +74,6 @@ switch($op) { // // Envoyer le RSS // -include_ecrire('inc_sites.php3'); @header('Content-Type: text/xml; charset='.lire_meta('charset')); $intro = array( @@ -74,16 +84,4 @@ $intro = array( echo affiche_rss($rss, $intro); exit; -// -// Fonctions de calcul (a dispatcher dans les librairies) -// -function rss_suivi_versions($a) { - include_ecrire("inc_suivi_revisions.php"); - include_ecrire("lab_revisions.php"); - include_ecrire("lab_diff.php"); - include_ecrire("inc_presentation.php3"); - $rss = afficher_suivi_versions (0, $a['id_secteur'], $a['id_auteur'], $a['lang_choisie'], true, true); - return $rss; -} - -?> \ No newline at end of file +?> -- GitLab