diff --git a/ecrire/inc/forum.php b/ecrire/inc/forum.php index 41c9fdc9152e635a2efa356e50e0a1eea53c5b72..f6009c265823b26b635ac18f735ef32779cdcd8b 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 18c90d85f870d6f8d856ed3dd566c6bab9ad892c..7e7ace9e014c7c0799709b97cd486f286f80c2db 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 3035452d9ec4d9b6d1cc4b14be81e5eca29df7c6..59dafec5ee88a12f8c9478117ec1db2e0fc9ab2b 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)