instituermessage.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. /***************************************************************************\
  3. * SPIP, Systeme de publication pour l'internet *
  4. * *
  5. * Copyright (c) 2001-2014 *
  6. * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
  7. * *
  8. * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
  9. * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
  10. \***************************************************************************/
  11. if (!defined('_ECRIRE_INC_VERSION')) return;
  12. /**
  13. * Envoyer les notifications consecutives a l'envoi d'un message
  14. * (ie passage en statut=publie)
  15. *
  16. * @param string $quoi
  17. * @param int $id_message
  18. * @param array $options
  19. */
  20. function notifications_instituermessage_dist($quoi, $id_message, $options=array()){
  21. // ne devrait jamais se produire
  22. if ($options['statut'] == $options['statut_ancien']) {
  23. spip_log("statut inchange",'notifications');
  24. return;
  25. }
  26. if ($options['statut']=='publie'){
  27. include_spip('inc/messages');
  28. $type = sql_getfetsel('type','spip_messages','id_message='.intval($id_message));
  29. $vue = "notifications/message_{$type}_publie";
  30. if (trouver_fond($vue)){
  31. $envoyer_mail = charger_fonction('envoyer_mail','inc'); // pour nettoyer_titre_email
  32. $texte = recuperer_fond($vue,array('id_message'=>$id_message));
  33. // recuperer tous les emails des auteurs qui ont recu le message dans leur boite
  34. // si c'est une annonce generale, on envoie a tout le monde
  35. include_spip('inc/messages');
  36. $where = array(
  37. "email!=''",
  38. "statut!='5poubelle'",
  39. sql_in('statut',messagerie_statuts_destinataires_possibles())
  40. );
  41. // pour une annonce : tous ceux qui recoivent des messages
  42. if ($type!=='affich'){
  43. $ids = sql_allfetsel('id_auteur','spip_auteurs_liens',"objet='message' AND id_objet=".intval($id_message));
  44. $ids = array_map('reset',$ids);
  45. $where[] = sql_in('id_auteur',$ids);
  46. }
  47. $emails = sql_allfetsel('email',"spip_auteurs",$where);
  48. $emails = array_map('reset',$emails);
  49. include_spip('inc/notifications');
  50. notifications_envoyer_mails($emails,$texte);
  51. }
  52. }
  53. }