[SPIP Zone] Plugins notifications

Bonjour,

J'ai modifié le plugin notifications afin de permettre la notification des auteurs d'un article lors de la publication de celui-ci.

J'ai modifié notifications.php et cfg_notifications

Si vous pensez que c'est utile, je peux le mettre sur la zone.

Voila ce que j'ai ajouté dans notification.php

function notifications_instituerarticle($quoi, $id_article, $options) {

  // ne devrait jamais se produire
  if ($options['statut'] == $options['statut_ancien']) {
    spip_log("statut inchange");
    return;
  }

  include_spip('inc/texte');

  if ($options['statut'] == 'publie') {
    notifier_publication_article($id_article);
    notifier_publication_auteurs_article($id_article);
    }
    
  if ($options['statut'] == 'prop' AND $options['statut_ancien'] != 'publie')
    notifier_proposition_article($id_article);
}

function notifier_publication_auteurs_article($id_article) {

  $envoyer_mail = charger_fonction('envoyer_mail','inc');
  $nom_site_spip = nettoyer_titre_email($GLOBALS['meta']["nom_site"]);
  $suivi_edito = $GLOBALS['meta']["suivi_edito"];
  
  if ($suivi_edito == "oui" AND $GLOBALS['notifications']['prevenir_auteurs_articles']) {
    $row = sql_fetsel("*", "spip_articles", "id_article = $id_article");
    if ($row) {

      $l = lang_select($row['lang']);

      // URL de l'article
      charger_generer_url(false);
      $url = url_absolue(_DIR_RACINE.generer_url_article($id_article, '','', 'publie'));

      $titre = nettoyer_titre_email($row['titre']);

      $sujet = _T('info_publie_1', array('nom_site_spip' => $nom_site_spip, 'titre' => $titre));
      $sujet = _T('info_publie_1', array('nom_site_spip' => $debut_sujet, 'titre' => $titre));
      $courr = _T('info_publie_2')."\n\n";

      $nom = $GLOBALS['visiteur_session']['nom'];
      $nom = trim(supprimer_tags(typo($nom)));
      $courr .= _T('info_publie_01', array('titre' => $titre, 'connect_nom' => $nom))
        . "\n\n"
        . "-> " . $url
        . "\n";
        
    // Qui va-t-on prevenir ?
      $tous = array();
      
      $result_email = sql_select("auteurs.email", "spip_auteurs AS auteurs, spip_auteurs_articles AS lien", "lien.id_article=$id_article AND auteurs.id_auteur=lien.id_auteur");

      while ($qui = sql_fetch($result_email)) {
        $tous[] = $qui['email'];
      }

  // Nettoyer le tableau
  // Ne pas ecrire au posteur du message !
  $destinataires = array();
  foreach ($tous as $m) {
    if ($m = email_valide($m))
      $destinataires[$m]++;
  }

Il manque un morceau de code à la fin de la fonction , le voici :
  //
  // Envoyer les emails
  //
  foreach (array_keys($destinataires) as $email) {

    $envoyer_mail($email, $sujet, $courr);
  }

      if ($l) lang_select();
    }
  }
}

Phil a écrit :

Bonjour,

J'ai modifié le plugin notifications afin de permettre la notification des auteurs d'un article lors de la publication de celui-ci.

J'ai modifié notifications.php et cfg_notifications

Si vous pensez que c'est utile, je peux le mettre sur la zone.

Voila ce que j'ai ajouté dans notification.php

function notifications_instituerarticle($quoi, $id_article, $options) {

    // ne devrait jamais se produire
    if ($options['statut'] == $options['statut_ancien']) {
        spip_log("statut inchange");
        return;
    }

    include_spip('inc/texte');

    if ($options['statut'] == 'publie') {
        notifier_publication_article($id_article);
        notifier_publication_auteurs_article($id_article);
        }
           if ($options['statut'] == 'prop' AND $options['statut_ancien'] != 'publie')
        notifier_proposition_article($id_article);
}

function notifier_publication_auteurs_article($id_article) {

    $envoyer_mail = charger_fonction('envoyer_mail','inc');
    $nom_site_spip = nettoyer_titre_email($GLOBALS['meta']["nom_site"]);
    $suivi_edito = $GLOBALS['meta']["suivi_edito"];
    
        $row = sql_fetsel("*", "spip_articles", "id_article = $id_article");
        if ($row) {

            $l = lang_select($row['lang']);

            // URL de l'article
            charger_generer_url(false);
            $url = url_absolue(_DIR_RACINE.generer_url_article($id_article, '','', 'publie'));

            $titre = nettoyer_titre_email($row['titre']);

            $sujet = _T('info_publie_1', array('nom_site_spip' => $nom_site_spip, 'titre' => $titre));
            $sujet = _T('info_publie_1', array('nom_site_spip' => $debut_sujet, 'titre' => $titre));
            $courr = _T('info_publie_2')."\n\n";

            $nom = $GLOBALS['visiteur_session']['nom'];
            $nom = trim(supprimer_tags(typo($nom)));
            $courr .= _T('info_publie_01', array('titre' => $titre, 'connect_nom' => $nom))
                . "\n\n"
                . "-> " . $url
                . "\n";
                       // Qui va-t-on prevenir ?
            $tous = array();
                       $result_email = sql_select("auteurs.email", "spip_auteurs AS auteurs, spip_auteurs_articles AS lien", "lien.id_article=$id_article AND auteurs.id_auteur=lien.id_auteur");

            while ($qui = sql_fetch($result_email)) {
                $tous = $qui['email'];
            }

    // Nettoyer le tableau
    // Ne pas ecrire au posteur du message !
    $destinataires = array();
    foreach ($tous as $m) {
        if ($m = email_valide($m))
            $destinataires[$m]++;
    }

J’ai modifié notifications.php et cfg_notifications
Si vous pensez que c’est utile, je peux le mettre sur la zone.

gogogo

J’ai modifié notifications.php et cfg_notifications
Si vous pensez que c’est utile, je peux le mettre sur la zone.

gogogo

Au fait pense à mettre à jour la doc ?
Cette fonctionnalité va être très appréciée je pense, notamment sur spip-contrib


Fil