Faire suivre par mail les messages du forum public aux participants

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Il s’agit d’envoyer les messages non pas uniquement aux auteurs de l’article mais aussi aux participants de la discussion

Voici quelques lignes qui permettent l’envoi d’un email aux participants d’une discussion (forum) lors d’une réponse à leur commentaire, à inclure à la fin de inc-forum.php3

Il faut surement modifier quelques choses au niveau des requetes mysql.

Cela semble fonctionner chez moi.

$query="select id_parent from spip_forum where id_forum='$id_message' and statut='publie' ";
$result = mysql_query($query);
list($id_parent) = mysql_fetch_row($result);
while($id_parent!='0') {
$q_mail="select email_auteur, id_parent from spip_forum where id_forum=$id_parent";
$r_mail = mysql_query($q_mail);
list($email_auteur, $id_parent) = mysql_fetch_row($r_mail);
if ($email_auteur!='') {
envoyer_mail($email_auteur, $sujet, $courr);
}
}

Insérer le code juste après le dernier while qui se termine ligne 506 dans inc-forum.php3.
version 1.5.2

Discussion

5 discussions

  • 1

    Bonjour,

    Comment passer cette contrib avec la nouvelle version SPIP 1.9 ?
    J’ai essayé de remettre le code dans le fichier forum_insert.php qui apparemment remplace le fichier inc-messforum.php3 de l’ancienne version, mais cela ne marche pas ?

    Merci,
    Chris

    • Bonjour, j’ai essayé la même chose, j’ai tenté quelques modifs mais sans succès.

      Quelqu’un a-t-il une idée de la mise à jour à faire pour SPIP 1.9 ?

      Je vous remercie pour l’aide que vous voudrez bien m’apporter.

    Répondre à ce message

  • 5

    Pour savoir comment utiliser cette contrib sur SPIP 1.8, allez donc jeter un coup d’oeil ici : http://article.gmane.org/gmane.comp...

    (Note : je ne fait que reporter l’info, je n’ai pas testé !)

    • Ca ne marche il y a une variable qui a changé de nom. De plus, ce code n’utilise pas les fonctions d’abstraction de Spip, et a le défaut d’envoyer autant de mails identiques à un intervenant que son nombre d’intervention. Voici un code plus approprié, à mettre à la fin de la fonction prevenir_auteurs dans inc-messforum.php3 :

      	$id_parent = $id_forum;
      	$mails = array($email); 
      	while($r = spip_fetch_array(spip_query("select email_auteur, id_parent from spip_forum where id_forum=$id_parent"))) {
      
      	  list($email_auteur, $id_parent) = $r;
      	  if ($email_auteur!='' && !in_array($email_auteur, $mails)) {
      	    envoyer_mail($email_auteur, $sujet, $corps);
      	    $mails[] = $email_auteur;
      	  }
      	}
    • Bien ce script. Est-il possible de faire la même chose mais juste pour un thread ? En clair : être prévenu de la réponse posté suite à un thread et non pas à tous le forum. J’ai essayé avec $id_parent = $id_thread ; mais sans succès.

    • Je viens de tester la nouvelle contrib, mais sous 1.8.1, mes « receveurs » ne reçoivent que des messages vides. Qu’est-ce qu’il se passe ? j’ai pourtant bien suivi la marche à suivre ? :’o(
      J’ai sans doute fait une fausse manip...Mais laquelle ?
      Merci pour votre aide

    • Bernard

      Un grand Merci à Fil (rezo.net) qui m’a débloqué !
      En fait le vériatble script pour ceux qui ont un problème est le suivant :

      $id_parent = $id_forum;
              $mails = array($email_auteur); 
              while($r = spip_fetch_array(spip_query("select email_auteur, id_parent from spip_forum where id_forum=$id_parent"))) {
      
                list($email_auteur, $id_parent) = $r;
                if ($email_auteur!='' && !in_array($email_auteur, $mails)) {
                  envoyer_mail($email_auteur, $titre, $texte);
                  $mails[] = $email_auteur;
                }
              }


      Vraiment un grand merci à Fil et à Déesse !

    • ce serait plutôt $id_forum = 'numero de l'id_forum'

    Répondre à ce message

  • 1

    Chers spipeurs :
    C’est magnifique ! ça marche… mais, il y a toujours un « mais » surtout quand on ne sait rien à propos de php…

    Comment on peut faire que le message aux contributeurs contienne la phase « ceci est un message automatique. Message poste à la suite de votre message. Ne répondez pas à ce mail mais sur le forum a l’adresse suivante http://www.sitio.org »

    Merci d’avance et merci pour tout !!!

    (J’espère que mon français soit compréhensible… mes excuses !)

    • Je suis nul en php..Alors en regardant dans inc_messforum.php3, j’ai vu l’envoi ordinaire du mail, j’ai donc repris sans trop savoir et en tatonnant certaines parties de ce code et notamment l’incrustation des phrases habituelles et l’objet du mail avec le nom du site et le nom de l’article.
      Il n’en demeure pas moins deux bugs !
      le premier bug, pour celui qui répond à un message, il reçoit en double l’email.
      le deuxième bug : si je prends jean dupont qui répond à Muriel Truc, on obtient :
      Message posté par Jean DupontMuriel.Truc@fai.fr a la suite de votre
      article. il doit y’avoir quelque chose à faire dans array ('parauteur' => $parauteur ))."\n" mais je ne sais pas faire.
      reste tout de même que le mail reçu n’est plus anonyme

      function prevenir_auteurs($auteur, $email_auteur, $id_forum, $id_article, $texte, $titre, $statut) {
      	global $nom_site_forum, $url_site;
      	include_ecrire('inc_texte.php3');
      	include_ecrire('inc_filtres.php3');
      	include_ecrire('inc_mail.php3');
      	$id_parent = $id_forum;
              $mails = array($email); 
      		$nom_site_spip = lire_meta("nom_site");
              while($r = spip_fetch_array(spip_query("select email_auteur, id_parent from spip_forum where id_forum=$id_parent"))) {
      			
                list($email_auteur, $id_parent) = $r;
                if ($email_auteur!='' && !in_array($email_auteur, $mails)) {
      		  $parauteur = (strlen($auteur) <= 2) ? '' :
      		  (" "
      		   ._T('forum_par_auteur',
      		       array('auteur' => $auteur))
      		   . $email_auteur);
      		  $courr =  _T('form_forum_message_auto')."\n\n"
      		  . _T('forum_poste_par', array('parauteur' => $parauteur))."\n"
      		 		  . $texte ;
      		$sujet = "[$nom_site_spip] ["._T('forum_forum')."] $titre";
                  envoyer_mail($email_auteur,  $sujet, $courr);
                  $mails[] = $email_auteur;
                }
              }


      Si quelqu’un savait fignoler cela ce serait super !!

    Répondre à ce message

  • C’est en partie grace à cette contribution que je me suis lancé dans la création de mon site de littérature. A l’époque aucun souci en 1.7
    Malheureusement venant de migrer en 1.8.2d cette contrib ne fonctionne plus.
    J’ai demandé de l’aide que j’ai d’ailleurs reçu et j’en remercie les personnes concernées mais malheureusement cela ne marche pas tout à fait.
    Voilà ce qu’il se passe :
    X fait un commentaire à Y, x reçoit dans sa BAL un mail sans lien, sans nom, mais avec le contenu du message et bien le titre de l’article . Pour Y c’est parfait.
    Y répond à son commentaire à destination de X. Y reçoit dans sa BAL 2 mails !
    Le premier impeccable le second sans lien, sans nom, et X reçoit un mail sans lien et sans nom.
    En résumé X ne sait pas qui l’a commenté et ne peux aller directement via le lien inexistant vers son article.
    C’est une véritable SOS que je lance car cette fonction est vitale pour la survie de mon site. Si quelqu’un avait l’idée géniale pour que cela fonctionne , je l’en remerci d’avance.
    (ps) j’ai lancé ce SOS sur une contrib ici par erreur, je vous prie de bien vouloir m’en excuser

    Répondre à ce message

  • 2
    Sabina

    Bonjour :
    j’ai utilisé votre code sur spip 1.7 et ça marche sans problème chez moi. Mais je voudrai savoir comment peut-on faire pour que ce code fonctionne aussi sur spip 1.8. Je n’arrive pas a trouver le fichier inc-forum.php3. Avez-vous une piste ?
    Merci pour cette contribution.

    • Vous dites avoir réussi à faire fonctionner cette contrib dans SPIP 1.7.2
      Cela m’intéresse beaucoup et j’avoue ne pas avoir trouvé l’emplacement où glisser la commande php . En effet cette contrib étant fait pour une version antérieure, la ligne indiquée n’est plus actuelle dans inc-forum.php3.
      Auriez vous la gentillesse de m’expliquer ou placer les lignes de code php dans le fichier inc-forum.php3 de SPIP 1.7.2 ?

      En vous remerciant par avance...

    • Oups ! j’ai trouvé ! Et ça marche impeccable ! Bravo !

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom