OICI un patch de la fonction formulaire_ecrire_auteur() situé dans inc_formulaire.php3. Ce patch corrige ou améliore diverses petites choses :
lorsqu'on valide l'envoi alors que le champ 'message' est vide, le formulaire est réaffiché sans aucun message d'erreur.
le code de validation de l'email ne fonctionnait pas
il manquait l'intutilé du champ 'message' (pas bien grave mais j'y était ).
Code de la fonction email_valide() situé dans ecrire/inc_version.php3.
function email_valide($adresse) {
$adresses = explode(',', $adresse);
if (is_array($adresses)) {
while (list(, $adresse) = each($adresses)) {
// RFC 822
if (!eregi('^([-_0-9a-z\.]+)\@([-_0-9a-z\.]+)\.([-_0-9a-z]+)?$', trim($adresse)))
{
return false;
}
}
return true;
}
return false;
}
Code de la fonction formulaire_ecrire_auteur() situé dans inc-formaulaires.php3.
function formulaire_ecrire_auteur($id_auteur, $email_auteur) {
global $flag_wordwrap;
include_ecrire("inc_texte.php3") ;
include_ecrire("inc_filtres.php3") ;
include_ecrire("inc_mail.php3") ;
global $passages;
$passages++;
$affiche_formulaire = true;
if ($GLOBALS['texte_message_auteur'.$id_auteur]) {
if ($GLOBALS['sujet_message_auteur'.$id_auteur] == "")
$erreur .= erreur(_T('form_prop_indiquer_sujet')) ;
else if (! email_valide($GLOBALS['email_message_auteur'.$id_auteur]) )
$erreur .= erreur(_T('form_prop_indiquer_email'));
else if ($GLOBALS['valide_message_auteur'.$id_auteur]) { // verifier hash ?
$GLOBALS['texte_message_auteur'.$id_auteur] .= "\n\n-- Envoi via le site "
.lire_meta('nom_site')
." (".lire_meta('adresse_site')
."/) --\n";
envoyer_mail($email_auteur,
$GLOBALS['sujet_message_auteur'.$id_auteur],
$GLOBALS['texte_message_auteur'.$id_auteur],
$GLOBALS['email_message_auteur'.$id_auteur],
"X-Originating-IP: ".$GLOBALS['REMOTE_ADDR']);
$erreur .= erreur(_T('form_prop_message_envoye'));
$affiche_formulaire = false;
} else { //preview
echo "<p><div class='spip_encadrer'>Sujet : <b>"
.$GLOBALS['sujet_message_auteur'.$id_auteur]."</b></div>";
if ($flag_wordwrap)
$GLOBALS['texte_message_auteur'.$id_auteur] = wordwrap($GLOBALS['texte_message_auteur'.$id_auteur]);
echo "<pre>".entites_html($GLOBALS['texte_message_auteur'.$id_auteur])."</pre>";
$affiche_formulaire = false;
$link = $GLOBALS['clean_link'];
$link->addVar('email_message_auteur'.$id_auteur, $GLOBALS['email_message_auteur'.$id_auteur]);
$link->addVar('sujet_message_auteur'.$id_auteur, $GLOBALS['sujet_message_auteur'.$id_auteur]);
$link->addVar('texte_message_auteur'.$id_auteur, $GLOBALS['texte_message_auteur'.$id_auteur]);
$link->addVar('valide_message_auteur'.$id_auteur, 'oui');
echo $link->getForm('POST');
echo "<DIV ALIGN=\"right\"><INPUT TYPE=\"submit\" "
."NAME=\"Confirmer\" "
."CLASS=\"spip_bouton\" VALUE=\""
._T('form_prop_confirmer_envoi')."\">";
echo "</DIV></FORM>";
}
}
else
{
$erreur .= erreur(_T('form_indiquer_message'));
}
if ($erreur)
if ($passages > 1)
echo "<p><div class='spip_encadrer'><h3 class='spip'>"
._T('forum_titre_erreur')
."</h3><div class='reponse_formulaire'>$erreur</div></div></p>\n";
if ($affiche_formulaire) {
$retour = $GLOBALS['REQUEST_URI'];
$link = $GLOBALS['clean_link'];
echo $link->getForm('POST');
echo "<INPUT TYPE=\"hidden\" NAME=\"passages\" VALUE=\"$passages\">\n";
echo "<div class='spip_encadrer'><P><B>"._T('form_pet_votre_email')."</B><BR>";
echo "<INPUT TYPE=\"text\" CLASS=\"forml\" NAME=\"email_message_auteur$id_auteur\" VALUE=\""
.entites_html($GLOBALS['email_message_auteur'.$id_auteur])."\" SIZE=\"30\"></P>\n";
echo "<P><B>"._T('form_prop_sujet')."</B><BR>";
echo "<INPUT TYPE=\"text\" CLASS=\"forml\" NAME=\"sujet_message_auteur$id_auteur\" VALUE=\""
.entites_html($GLOBALS['sujet_message_auteur'.$id_auteur])."\" SIZE=\"30\"></P>\n";
echo "<P><B>"._T('form_pet_message_commentaire')."</B><BR>";
echo "<TEXTAREA NAME='texte_message_auteur$id_auteur' ROWS='10' CLASS='forml' COLS='40' wrap=soft>"
.entites_html($GLOBALS['texte_message_auteur'.$id_auteur])."</textarea></P></div><br />\n";
echo "<DIV ALIGN=\"right\"><INPUT TYPE=\"submit\" NAME=\"Valider\" CLASS=\"spip_bouton\" VALUE=\""
._T('form_prop_envoyer')."\">";
echo "</DIV></FORM>";
}
}