Accueil > Pro Vincent > Anciennes réalisations > SPIP : Envoyer un mail lors d’une réponse de réponse dans le forum

SPIP : Envoyer un mail lors d’une réponse de réponse dans le forum

vendredi 10 mars 2006, par Vincent

Avec SPIP 1.8.2, les auteurs d’articles peuvent recevoir un mail lorsqu’un visiteur laisse un message sur le forum lié.

Grâce au code suivant, il devient aussi possible aux visiteurs de recevoir un mail quand une réponse est faite à leur message.

Dans le fichier inc-messforum.php3 vers la ligne 78, il faut ajouter le code suivant (en gras) :

        $result = spip_query("SELECT auteurs.email, auteurs.lang FROM spip_auteurs AS auteurs,
                                spip_auteurs_articles AS lien
                                WHERE lien.id_article='$id_article'
                                AND auteurs.id_auteur=lien.id_auteur");
        while (list($email, $salangue) = spip_fetch_array($result)) {
                $email = trim($email);
                if (strlen($email) < 3) continue;
                $GLOBALS['spip_lang'] = ($salangue ? $salangue : $old_lang);
                envoyer_mail($email, $sujet, $corps) ;

// On stocke les adresses mails des auteurs pour ne pas leur envoyer le mail d'alerte en double
                $emails[] = $email;

        }
        $GLOBALS['spip_lang'] = $old_lang;

// Code d'envoi de mail aux visiteurs ayant eu une réponse
// par Vincent GUIGUI 2006-03-10

//  trouve tous les messages du même thread (sauf celui en cours)
        $query = "SELECT forums_parent.email_auteur, forums_parent.id_forum
        FROM spip_forum AS forums, spip_forum as forums_parent
        WHERE forums_parent.id_thread = forums.id_thread
        AND forums.id_forum = $id_forum AND forums_parent.id_forum <> $id_forum";
        $result_parent = spip_query($query);
        while (list($email, $id_forum_parent) = spip_fetch_array($result_parent))
        {
                $email = trim($email);
// Si le mail ne lui a pas déjà été envoyé
                if (!in_array($email, $emails))
                {
                        if (strlen($email) < 3) continue;
                        envoyer_mail($email, $sujet, $corps);
                        $emails[] = $email;
// On stocke les adresses mails des visiteurs déjà alertés pour ne pas leur envoyer le mail d'alerte en double
                }
        }

}