[SPIP] ~maj v2.1.25-->2.1.26
[velocampus/web/www.git] / www / ecrire / notifications / forumvalide.php
1 <?php
2 /*
3 * Plugin Notifications
4 * (c) 2009 SPIP
5 * Distribue sous licence GPL
6 *
7 */
8
9 if (!defined('_ECRIRE_INC_VERSION')) return;
10
11 /**
12 * cette notification s'execute quand on valide un message 'prop'ose,
13 * dans ecrire/inc/forum_insert.php ; ici on va notifier ceux qui ne l'ont
14 * pas ete a la notification forumposte (sachant que les deux peuvent se
15 * suivre si le forum est valide directement ('pos' ou 'abo')
16 * http://doc.spip.org/@notifications_forumvalide_dist
17 *
18 * @param string $quoi
19 * @param int $id_forum
20 */
21 function notifications_forumvalide_dist($quoi, $id_forum, $options) {
22
23 $t = sql_fetsel("*", "spip_forum", "id_forum=".intval($id_forum));
24 if (!$t
25 // forum sur un message prive : pas de notification ici (cron)
26 OR @$t['statut'] == 'perso')
27 return;
28
29 // plugin notification si present
30 $prevenir_auteurs = isset($GLOBALS['notifications']['prevenir_auteurs']) AND $GLOBALS['notifications']['prevenir_auteurs'];
31 // sinon voie normale
32 if ($t['id_article'] AND !$prevenir_auteurs){
33 $s = sql_getfetsel('accepter_forum','spip_articles',"id_article=" . $t['id_article']);
34 if (!$s) $s = substr($GLOBALS['meta']["forums_publics"],0,3);
35
36 $prevenir_auteurs = (strpos(@$GLOBALS['meta']['prevenir_auteurs'],",$s,")!==false
37 OR @$GLOBALS['meta']['prevenir_auteurs'] === 'oui'); // compat
38 }
39
40 include_spip('inc/texte');
41 include_spip('inc/filtres');
42 include_spip('inc/autoriser');
43
44 // Qui va-t-on prevenir ?
45 $tous = array();
46 // Ne pas ecrire au posteur du message, ni au moderateur qui valide le forum,
47 $pasmoi = array($t['email_auteur'],$GLOBALS['visiteur_session']['email']);
48
49 // 1. Les auteurs de l'article ; si c'est un article, ceux qui n'ont
50 // pas le droit de le moderer (les autres l'ont recu plus tot)
51 if ($t['id_article']
52 AND $prevenir_auteurs) {
53 $result = sql_select("auteurs.*","spip_auteurs AS auteurs, spip_auteurs_articles AS lien","lien.id_article=".intval($t['id_article'])." AND auteurs.id_auteur=lien.id_auteur");
54
55 while ($qui = sql_fetch($result)) {
56 if (!autoriser('modererforum', 'article', $t['id_article'], $qui['id_auteur']))
57 $tous[] = $qui['email'];
58 else
59 // Ne pas ecrire aux auteurs deja notifies precedemment
60 $pasmoi[] = $qui['email'];
61
62 }
63 }
64
65
66 $options['forum'] = $t;
67 $destinataires = pipeline('notifications_destinataires',
68 array(
69 'args'=>array('quoi'=>$quoi,'id'=>$id_forum,'options'=>$options)
70 ,
71 'data'=>$tous)
72 );
73
74 // Nettoyer le tableau
75 // en enlevant les exclus
76 notifications_nettoyer_emails($destinataires,$pasmoi);
77
78 //
79 // Envoyer les emails
80 //
81 foreach ($destinataires as $email) {
82 $texte = email_notification_forum($t, $email);
83 notifications_envoyer_mails($email, $texte);
84 }
85
86 }
87
88 ?>