From 9c0bfd17fbf323c79f922aa75ce7632aaab8d1e7 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Mon, 6 Mar 2006 17:44:10 +0000 Subject: [PATCH] =?UTF-8?q?C'est=20encore=20un=20peu=20le=20bazar=20le=20r?= =?UTF-8?q?etour=20du=20forum=20-=20oubli=20de=20la=20reponse=20quand=20on?= =?UTF-8?q?=20vient=20de=20l'espace=20priv=C3=A9=20valider?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/inc/forum.php | 4 +-- ecrire/inc/forum_insert.php | 10 ++----- formulaires/inc-formulaire_forum.php | 39 ++++++++++++++++++---------- 3 files changed, 30 insertions(+), 23 deletions(-) diff --git a/ecrire/inc/forum.php b/ecrire/inc/forum.php index 41c9fdc915..f6009c2658 100644 --- a/ecrire/inc/forum.php +++ b/ecrire/inc/forum.php @@ -85,7 +85,7 @@ function boutons_controle_forum($id_forum, $forum_stat, $forum_id_auteur=0, $ref } $link = new Link(); - $link = str_replace('&', '&', _DIR_RESTREINT_ABS . $link->geturl() . "#id$id_forum"); + $link = _DIR_RESTREINT_ABS . $link->geturl() . "#id$id_forum"; if ($supprimer) $controle .= icone(_T('icone_supprimer_message'), generer_action_auteur('instituer', "forum $id_forum $supprimer", $link), @@ -99,7 +99,7 @@ function boutons_controle_forum($id_forum, $forum_stat, $forum_id_auteur=0, $ref if ($valider_repondre) { - $controle .= icone(_T('icone_valider_message') . " & " . _T('lien_repondre_message'), generer_action_auteur('instituer', "forum $id_forum $valider", generer_url_public('forum', "$ref&id_forum=$id_forum&retour=" . urlencode($link), true)), + $controle .= icone(_T('icone_valider_message') . " & " . _T('lien_repondre_message'), generer_action_auteur('instituer', "forum $id_forum $valider", generer_url_public('forum', "$ref&id_forum=$id_forum&retour=" . rawurlencode(str_replace('&', '&', $link)), true)), $logo, "creer.gif", 'right', 'non'); } diff --git a/ecrire/inc/forum_insert.php b/ecrire/inc/forum_insert.php index 18c90d85f8..7e7ace9e01 100644 --- a/ecrire/inc/forum_insert.php +++ b/ecrire/inc/forum_insert.php @@ -130,7 +130,6 @@ function inc_forum_insert_dist() { $alea = _request('alea'); $hash = _request('hash'); $auteur = _request('auteur'); - $confirmer_forum = _request('confirmer_forum'); $email_auteur = _request('email_auteur'); $id_auteur = _request('id_auteur'); $nom_site_forum = _request('nom_site_forum'); @@ -155,11 +154,11 @@ function inc_forum_insert_dist() { include_spip('inc/session'); // Recalcule la signature faite dans formulaires/inc-formulaire-forum -// en fonction des input du formulaire +// en fonction des input POST du formulaire (gaffe a ce qui passe par l'URL) $ids = array(); foreach (array('id_article', 'id_breve', 'id_forum', 'id_rubrique', 'id_syndic') as $o) { - $ids[$o] = ($x = intval($$o)) ? $x : ''; + $ids[$o] = ($x = intval($_POST[$o])) ? $x : ''; } if (!verifier_action_auteur('ajout_forum'.join(' ', $ids).' '.$alea, @@ -255,11 +254,6 @@ function inc_forum_insert_dist() { if ($GLOBALS['meta']["prevenir_auteurs"] == "oui" AND ($afficher_texte != "non")) prevenir_auteurs($auteur, $email_auteur, $id_message, $id_article, $texte, $titre, $statut); - // Poser un cookie pour ne pas retaper le nom / email - include_spip('inc/cookie'); - spip_setcookie('spip_forum_user', - serialize(array('nom' => $auteur, 'email' => $email_auteur))); - if ($statut == 'publie') { // // INVALIDATION DES CACHES LIES AUX FORUMS diff --git a/formulaires/inc-formulaire_forum.php b/formulaires/inc-formulaire_forum.php index 3035452d9e..59dafec5ee 100644 --- a/formulaires/inc-formulaire_forum.php +++ b/formulaires/inc-formulaire_forum.php @@ -82,12 +82,17 @@ $id_rubrique, $id_forum, $id_article, $id_breve, $id_syndic, $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) { // verifier l'identite des posteurs pour les forums sur abo - if (($type == "abo") && (!$GLOBALS["auteur_session"])) { - return array('formulaire_login_forum', 0, - array('inscription' => generer_url_public('spip_inscription'), - 'oubli' => generer_url_public('spip_pass'))); + if ($type == "abo") { + if (!$GLOBALS["auteur_session"]) { + return array('formulaire_login_forum', 0, + array('inscription' => generer_url_public('spip_inscription'), + 'oubli' => generer_url_public('spip_pass'))); + } else { + // forcer ces valeur + $auteur = $GLOBALS['auteur_session']['nom']; + $email_auteur = $GLOBALS['auteur_session']['email']; + } } - // Tableau des valeurs servant au calcul d'une signature de securite. // Elles seront placees en Input Hidden pour que inc/forum_insert // recalcule la meme chose et verifie l'identité des resultats. @@ -103,6 +108,7 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) $ids[$o] = ($x = intval($$o)) ? $x : ''; } + // ne pas mettre '', sinon le squelette n'affichera rien. $previsu = ' '; @@ -118,16 +124,13 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) // qu'en sortie, on inscrit donc une valeur absurde ("!") $retour_forum = "!"; - // sauf si on a passe un parametre en argument (exemple : {#SELF}) - if ($url_param_retour) { - $retour_forum = $url_param_retour; - $script = $retour_forum; - } } if (isset($_COOKIE['spip_forum_user']) AND is_array($cookie_user = unserialize($_COOKIE['spip_forum_user']))) { $auteur = $cookie_user['nom']; $email_auteur = $cookie_user['email']; + $nom_site_forum = $cookie_user['nom_site_forum']; + $url_site = $cookie_user['url_site']; } else { $auteur = $GLOBALS['auteur_session']['nom']; $email_auteur = $GLOBALS['auteur_session']['email']; @@ -143,9 +146,6 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) $nom_site_forum = _request('nom_site_forum'); $url_site = _request('url_site'); - // cas du #FORMULAIRE_FORUM{#SELF} (??) - if ($retour_forum != "!") $script = $retour_forum; - if ($afficher_texte != 'non') $previsu = inclure_previsu($texte, $titre, $email_auteur, $auteur, $url_site, $nom_site_forum, $ajouter_mot); @@ -154,6 +154,19 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) $hash = calculer_action_auteur('ajout_forum'.join(' ', $ids).' '.$alea); } + // Poser un cookie pour ne pas retaper les infos invariables + include_spip('inc/cookie'); + spip_setcookie('spip_forum_user', + serialize(array('nom' => $auteur, + 'email' => $email_auteur, + 'nom_site_forum' => $nom_site_forum, + 'url_site' => $url_site))); + + // sauf si on a passe un parametre en argument (exemple : {#SELF}) + if ($url_param_retour) { + $script = $url_param_retour; + } + // pour la chaine de hidden $script_hidden = $script = str_replace('&', '&', $script); foreach ($ids as $id => $v) -- GitLab