diff --git a/ecrire/controle_forum.php3 b/ecrire/controle_forum.php3 index 9066f4533cddce1b93c2433c6229c554dbeff4d0..17d9fe13ba9e8ac3fa7a51739d85f20f102400a1 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 d6f1f8fb7f42c507fe7b6716be977fb9c9db043d..c63be9d2d473a83d8f45f71584f44e6feb2eb127 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 e5a8e82f7b4c86f1104336e1a2d0cde931c1ee61..f48782a5f1895b3780405527bf08184c5be38d73 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 22cbf17774630e054599d643322038927a260b2d..df109449c1f99c166afa98cae38f921d4554af65 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 8da40a195397017a25e14ef7e76191c386770301..416a521a895943e7f6ac1afb3010d884019c1bef 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 c893da553745f7aa59ed6e37f77c7de96b9dbc8d..b81f3723755726aed83e3a7def192865b427a31e 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 d5f265f6c0f45993a850fc75f3384c978973893b..0c2b6bdecafe33b35e1d8f4c9ef7830b7d911bd2 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 +?>