From a72886843e6c678258157ad2d4d8097491b0c584 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Wed, 19 Jan 2005 00:47:24 +0000 Subject: [PATCH] petit nettoyage forums --- formulaire_forum-dist.html | 1 - forum-dist.html | 15 ++++++++- inc-formulaire_forum.php3 | 69 +++++++++++++++++++------------------- inc-messforum.php3 | 65 ++++++++++++++++++----------------- 4 files changed, 84 insertions(+), 66 deletions(-) diff --git a/formulaire_forum-dist.html b/formulaire_forum-dist.html index 3fd62cff89..9e2d21a122 100644 --- a/formulaire_forum-dist.html +++ b/formulaire_forum-dist.html @@ -1,7 +1,6 @@ <form action='[(#HTTP_VARS{url})]' method='post' name='formulaire'> <input type='hidden' name='ajout_forum' value="oui" /> -<input type='hidden' name='post_forum' value="oui" /> <input type='hidden' name='alea' value="[(#HTTP_VARS{alea})]" /> <input type='hidden' name='hash' value="[(#HTTP_VARS{hash})]" /> <input type='hidden' name='retour' value="[(#HTTP_VARS{retour})]" /> diff --git a/forum-dist.html b/forum-dist.html index 7a4cb62fd5..6123070932 100644 --- a/forum-dist.html +++ b/forum-dist.html @@ -74,9 +74,22 @@ <br> </BOUCLE_breve> +<BOUCLE_rubrique(RUBRIQUES) {id_rubrique}> + <:en_reponse:> + <h2 class="titre-extrait"><a href="#URL_RUBRIQUE">#TITRE</a></h2> + [<div class="texte"><div class="extrait">(#TEXTE)</div></div>] + <br> +</BOUCLE_rubrique> + +<BOUCLE_syndic(SITES) {id_syndic}> + <:en_reponse:> + <h2 class="titre-extrait"><a href="#URL_SYNDIC">#TITRE</a></h2> + <br> +</BOUCLE_syndic> + <BOUCLE_forum_parent(FORUMS) {id_forum}> <:en_reponse:> - <h2 class="titre-extrait"><a href="#URL_BREVE">#TITRE</a></h2> + <h2 class="titre-extrait"><a href="#URL_FORUM">#TITRE</a></h2> <div class="detail"> [(#DATE|nom_jour)] [(#DATE|affdate)] </div> diff --git a/inc-formulaire_forum.php3 b/inc-formulaire_forum.php3 index 36f153860b..d4e12e4184 100644 --- a/inc-formulaire_forum.php3 +++ b/inc-formulaire_forum.php3 @@ -77,7 +77,7 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq $previsu = ' '; // Recuperer le message a previsualiser - if ($GLOBALS['HTTP_POST_VARS']['post_forum']) { + if ($GLOBALS['HTTP_POST_VARS']['ajout_forum']) { $titre = $GLOBALS['HTTP_POST_VARS']['titre']; $texte = $GLOBALS['HTTP_POST_VARS']['texte']; $auteur = $GLOBALS['HTTP_POST_VARS']['auteur']; @@ -99,13 +99,13 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq // Verifier mots associes au message if (is_array($ajouter_mot)) - $mots = preg_replace('/[^0-9,]/', '', join(',',$ajouter_mot)); - else $mots = ''; + $mots = preg_replace('/[^0-9,]/', '', join(',',$ajouter_mot)); + else $mots = '0'; // affichage {par num type, type, num titre,titre} $result_mots = spip_query("SELECT id_mot, titre, type FROM spip_mots - WHERE id_mot IN (0, $mots) + WHERE id_mot IN ($mots) ORDER BY 0+type,type,0+titre,titre"); if (spip_num_rows($result_mots)>0) { $previsu .= "<p>"._T('forum_avez_selectionne')."</p><ul>"; @@ -164,35 +164,36 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq else $table = ''; - return array( - 'formulaire_forum', - 0, - array( - 'afficher_texte_input' => (($afficher_texte <> 'non') ? ' ' : ''), - 'afficher_texte_hidden' => - (($afficher_texte <> 'non') ? '' : - (boutonne('hidden', 'titre', htmlspecialchars($titre)) . - $table . - "\n<br /><div align='right'>" . - boutonne('submit', '', _T('forum_valider'), "class='spip_bouton'") . - "</div>")), - 'alea' => $alea, - 'auteur' => $auteur, - 'disabled' => ($forums_publics == "abo")? " disabled='disabled'" : '', - 'email_auteur' => $email_auteur, - 'hash' => $hash, - 'id_message' => $id_message, - 'modere' => (($forums_publics != 'pri') ? '' : - _T('forum_info_modere')), - 'nom_site_forum' => $nom_site_forum, - 'previsu' => $previsu, - 'retour' => $retour, - 'table' => $table, - 'texte' => $texte, - 'titre' => $titre, - 'url' => $url, - 'url_site' => ($url_site ? $url_site : "http://") - )); + return array('formulaire_forum', 0, + array( + 'alea' => $alea, + 'auteur' => $auteur, + 'disabled' => ($forums_publics == "abo")? " disabled='disabled'" : '', + 'email_auteur' => $email_auteur, + 'hash' => $hash, + 'modere' => (($forums_publics != 'pri') ? '' : _T('forum_info_modere')), + 'nom_site_forum' => $nom_site_forum, + 'previsu' => $previsu, + 'retour' => $retour, + 'table' => $table, + 'texte' => $texte, + 'titre' => $titre, + 'url' => $url, + 'url_site' => ($url_site ? $url_site : "http://"), + + ## gestion des la variable de personnalisation $afficher_texte + # mode normal : afficher le texte en < input text >, cf. squelette + 'afficher_texte_input' => (($afficher_texte <> 'non') ? ' ' : ''), + # mode 'non' : afficher les elements en < input hidden > + 'afficher_texte_hidden' => (($afficher_texte <> 'non') ? '' : + (boutonne('hidden', 'titre', htmlspecialchars($titre)) . + $table . + "\n<br /><div align='right'>" . + boutonne('submit', '', _T('forum_valider'), + "class='spip_bouton'") . + "</div>")) + + )); } @@ -329,7 +330,7 @@ function sql_recherche_donnees_forum ($idr, $idf, $ida, $idb, $ids) { if ($ida) list($accepter_forum) = spip_fetch_array(spip_query( "SELECT accepter_forum FROM spip_articles WHERE id_article=$ida")); - else + if (!$accepter_forum) $accepter_forum = substr(lire_meta("forums_publics"),0,3); // valeurs possibles : 'pos'teriori, 'pri'ori, 'abo'nnement if ($accepter_forum == "non") diff --git a/inc-messforum.php3 b/inc-messforum.php3 index 45d9545e07..bbb7f81881 100644 --- a/inc-messforum.php3 +++ b/inc-messforum.php3 @@ -8,8 +8,7 @@ include_ecrire("inc_abstract_sql.php3"); // Ce fichier inclus par inc-public a un comportement special // Voir commentaires dans celui-ci et dans inc-formulaire_forum -function prevenir_auteurs($auteur, $email_auteur, $id_article, $texte, $titre) -{ +function prevenir_auteurs($auteur, $email_auteur, $id_article, $texte, $titre) { include_ecrire('inc_texte.php3'); include_ecrire('inc_filtres.php3'); include_ecrire('inc_mail.php3'); @@ -45,20 +44,25 @@ function prevenir_auteurs($auteur, $email_auteur, $id_article, $texte, $titre) if (strlen($email) < 3) continue; envoyer_mail($email, $sujet, $courr); } -} +} + + +// Recuperation des donnees $retour_forum = rawurldecode($retour); -$forum_id_article = intval($id_article); -$forum_id_rubrique = intval($id_rubrique); -$forum_id_forum = intval($id_forum); -$forum_id_breve = intval($id_breve); -$forum_id_syndic = intval($id_syndic); +$id_article = intval($id_article); +$id_rubrique = intval($id_rubrique); +$id_forum = intval($id_forum); +$id_breve = intval($id_breve); +$id_syndic = intval($id_syndic); +// initialisation de l'eventuel visiteur connecte if (!$id_auteur) $id_auteur = intval($auteur_session['id_auteur']); -if ($forum_id_article) { - $r = spip_query("SELECT accepter_forum FROM spip_articles WHERE id_article=$forum_id_article"); +// chercher le statut du forum +if ($id_article) { + $r = spip_query("SELECT accepter_forum FROM spip_articles WHERE id_article=$id_article"); $r = spip_fetch_array($r); if ($r) $forums_publics = $r['accepter_forum']; @@ -88,8 +92,10 @@ if ($forums_publics == "abo") { // Ne pas autoriser de changement de nom si forum sur abonnement $auteur = $auteur_session['nom']; $email_auteur = $auteur_session['email']; - } +} + +// trop court ? if ((strlen($texte) + strlen($titre) + strlen($nom_site_forum) + strlen($url_site) + strlen($auteur) + strlen($email_auteur)) > 20 * 1024) { ask_php_auth(_T('forum_message_trop_long'), _T('forum_cliquer_retour', @@ -98,16 +104,15 @@ if ((strlen($texte) + strlen($titre) + strlen($nom_site_forum) + strlen($url_sit } -$validation_finale = (strlen($confirmer) > 0 - OR ($afficher_texte=='non' AND $ajouter_mot)); - -if ($validation_finale) { +// validation finale du post ? +if (strlen($confirmer) > 0 +OR ($afficher_texte=='non' AND $ajouter_mot)) { // verifier droit (pour interdire de hack-poster sur des forums fermes ?) include_ecrire("inc_admin.php3"); - if (!(verifier_action_auteur("ajout_forum $forum_id_rubrique". - " $forum_id_forum $forum_id_article $forum_id_breve". - " $forum_id_syndic $alea", $hash))) { + if (!(verifier_action_auteur("ajout_forum $id_rubrique". + " $id_forum $id_article $id_breve". + " $id_syndic $alea", $hash))) { header("Status: 404"); exit; } @@ -122,16 +127,16 @@ if ($validation_finale) { (($forums_publics == 'pri') ? 'prop' : 'publie'); - if ($forum_id_forum > 0) - $id_thread = $forum_id_forum; + if ($id_forum > 0) + $id_thread = $id_forum; else $id_thread = $id_message; # id_thread oblige INSERT puis UPDATE. - spip_query("UPDATE spip_forum SET id_parent = $forum_id_forum, - id_rubrique =$forum_id_rubrique, - id_article = $forum_id_article, - id_breve = $forum_id_breve, - id_syndic = $forum_id_syndic, + spip_query("UPDATE spip_forum SET id_parent = $id_forum, + id_rubrique =$id_rubrique, + id_article = $id_article, + id_breve = $id_breve, + id_syndic = $id_syndic, id_auteur = $id_auteur, id_thread = $id_thread, date_heure = NOW(), @@ -159,7 +164,7 @@ if ($validation_finale) { // Prevenir les auteurs de l'article if (lire_meta("prevenir_auteurs") == "oui" AND ($afficher_texte != "non") - AND ($id_article = $forum_id_article)) + AND ($id_article = $id_article)) prevenir_auteurs($auteur, $email_auteur, $id_article, $texte, $titre); // Poser un cookie pour ne pas retaper le nom / email @@ -172,10 +177,10 @@ if ($validation_finale) { include_ecrire('inc_invalideur.php3'); if ($statut == 'publie') { suivre_invalideur ("id='id_forum/" . - calcul_index_forum($forum_id_article, - $forum_id_breve, - $forum_id_rubrique, - $forum_id_syndic) . "'"); + calcul_index_forum($id_article, + $id_breve, + $id_rubrique, + $id_syndic) . "'"); } $redirect = $retour_forum; -- GitLab