diff --git a/ecrire/inc_acces.php3 b/ecrire/inc_acces.php3 index 0b915ed58ca467deec0711e15acbfb978dd942e9..5f16c045f0f41fe6f1109247aeb46fbe37efed92 100644 --- a/ecrire/inc_acces.php3 +++ b/ecrire/inc_acces.php3 @@ -51,18 +51,27 @@ function creer_pass_aleatoire($longueur = 8, $sel = "") { // faible via les URLs (suivi RSS, iCal...) // function low_sec($id_auteur) { - if (!$id_auteur = intval($id_auteur)) return; // jamais trop prudent ;) - $query = "SELECT * FROM spip_auteurs WHERE id_auteur = $id_auteur"; - $result = spip_query($query); - - if ($row = spip_fetch_array($result)) { - $low_sec = $row["low_sec"]; - if (!$low_sec) { - $low_sec = creer_pass_aleatoire(); - spip_query("UPDATE spip_auteurs SET low_sec = '$low_sec' WHERE id_auteur = $id_auteur"); + // Pas d'id_auteur : low_sec + if (!$id_auteur = intval($id_auteur)) { + if (!$low_sec = lire_meta('low_sec')) { + include_ecrire('inc_meta.php3'); + ecrire_meta('low_sec', $low_sec = creer_pass_aleatoire()); + ecrire_metas(); + } + } + else { + $query = "SELECT * FROM spip_auteurs WHERE id_auteur = $id_auteur"; + $result = spip_query($query); + + if ($row = spip_fetch_array($result)) { + $low_sec = $row["low_sec"]; + if (!$low_sec) { + $low_sec = creer_pass_aleatoire(); + spip_query("UPDATE spip_auteurs SET low_sec = '$low_sec' WHERE id_auteur = $id_auteur"); + } } - return $low_sec; } + return $low_sec; } function afficher_low_sec ($id_auteur, $action='') { diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3 index 091286a5a121684d907f5661f6157a7d90fccf43..227d656e45719d667280af4dce83c3e695792c9e 100644 --- a/ecrire/inc_filtres.php3 +++ b/ecrire/inc_filtres.php3 @@ -1042,6 +1042,22 @@ function tester_config($ignore, $quoi) { } } +// +// Un filtre qui, etant donne un #PARAMETRES_FORUM, retourne un URL de suivi rss +// dudit forum +// Attention applique a un #PARAMETRES_FORUM complexe (id_article=x&id_forum=y) +// ca retourne un url de suivi du thread y (que le thread existe ou non) +function url_rss_forum($param) { + if (preg_match(',.*(id_.*?)=([0-9]+),', $param, $regs)) { + include_ecrire('inc_acces.php3'); + $regs[1] = str_replace('id_forum', 'id_thread', $regs[1]); + $arg = $regs[1].'-'.$regs[2]; + $cle = afficher_low_sec(0, "rss forum $arg"); + return "spip_rss.php?op=forum&args=$arg&cle=$cle"; + } +} + + // filtre pour visualiser dans l'espace public le calendrier de l'espace de redac // Tres ad hoc, faudra ameliorer. diff --git a/ecrire/inc_forum.php3 b/ecrire/inc_forum.php3 index c63be9d2d473a83d8f45f71584f44e6feb2eb127..5e000d191a1e02fa06bc85a4679ac4995ef17f24 100644 --- a/ecrire/inc_forum.php3 +++ b/ecrire/inc_forum.php3 @@ -215,6 +215,7 @@ function critere_statut_controle_forum($page) { $query_forum = "0=1"; break; } + return $query_forum; } @@ -300,11 +301,9 @@ function generer_url_forum_dist($id_forum, $show_thread=false) { } // Interface pour SPIP RSS -function rss_suivi_forums($a) { +function rss_suivi_forums($a, $query_forum='', $lien_moderation=false) { include_ecrire("inc_forum.php3"); - $query_forum = critere_statut_controle_forum($a['page']); - $result_forum = spip_query(" SELECT * FROM spip_forum @@ -323,8 +322,13 @@ function rss_suivi_forums($a) { $item['author'] = $t['auteur']; if ($t['email_auteur']) $item['author'] .= ' <'.$t['email_auteur'].'>'; - $item['url'] = lire_meta('adresse_site').'/'._DIR_RESTREINT_ABS + + if ($lien_moderation) + $item['url'] = lire_meta('adresse_site').'/'._DIR_RESTREINT_ABS .'controle_forum.php3?page='.$a['page'].'&debut_id_forum='.$t['id_forum']; + else + $item['url'] = lire_meta('adresse_site').'/'.generer_url_forum($t['id_forum']); + $item['description'] = propre($t['texte']); if ($GLOBALS['les_notes']) { $item['description'] .= '<hr />'.$GLOBALS['les_notes']; diff --git a/spip_rss.php b/spip_rss.php index 0c2b6bdecafe33b35e1d8f4c9ef7830b7d911bd2..47ad4af479769ef0064120890aec1d8670a69a8f 100644 --- a/spip_rss.php +++ b/spip_rss.php @@ -22,6 +22,12 @@ include("ecrire/inc_version.php3"); include_ecrire("inc_texte.php3"); include_ecrire('inc_sites.php3'); include_ecrire("inc_acces.php3"); +// Gestionnaire d'URLs +if (@file_exists("inc-urls.php3")) + include_local("inc-urls.php3"); +else + include_local("inc-urls-".$GLOBALS['type_urls'].".php3"); + // // Verifier la securite du lien et decoder les arguments @@ -45,12 +51,32 @@ if (!verifier_low_sec ($id, $cle, // Choisir la fonction de calcul du RSS // switch($op) { + # forum public + case 'forum': + include_ecrire("inc_forum.php3"); + if ($id = intval($a['id_article'])) + $critere = "statut='publie' AND id_article=$id"; + else if ($id = intval($a['id_syndic'])) + $critere = "statut='publie' AND id_syndic=$id"; + else if ($id = intval($a['id_breve'])) + $critere = "statut='publie' AND id_breve=$id"; + else if ($id = intval($a['id_rubrique'])) + $critere = "statut='publie' AND id_rubrique=$id"; + else if ($id = intval($a['id_thread'])) + $critere = "statut='publie' AND id_thread=$id"; + if ($id) $rss = rss_suivi_forums($a, $critere, false); + $title = _T("ecrire:titre_page_forum_suivi"); + $url = generer_url_article($id); + break; + # suivi prive des forums case 'forums': include_ecrire("inc_forum.php3"); - $rss = rss_suivi_forums($a); + $critere = critere_statut_controle_forum($a['page']); + $rss = rss_suivi_forums($a, $critere, true); $title = _T("ecrire:titre_page_forum_suivi")." (".$a['page'].")"; $url = _DIR_RESTREINT_ABS .'controle_forum.php3?page='.$a['page']; break; + # revisions des articles case 'revisions': include_ecrire("inc_suivi_revisions.php"); $rss = rss_suivi_versions($a);