5 * Distribue sous licence GPL
10 * Notification de message de forum proposé
12 * @package SPIP\Forum\Notifications
15 if (!defined("_ECRIRE_INC_VERSION")) {
20 * Cette notification s'exécute quand on valide un message 'prop'osé.
22 * On va notifier ceux qui ne l'ont
23 * pas été à la notification forumposte (sachant que les deux peuvent se
24 * suivre si le forum est validé directement ('pos' ou 'abo')
26 * @pipeline_appel notifications_destinataires
27 * @see inc/forum_insert.php
30 * @param int $id_forum
31 * @param array $options
33 function notifications_forumvalide_dist($quoi, $id_forum, $options) {
35 $t = sql_fetsel("*", "spip_forum", "id_forum=" . intval($id_forum));
37 // forum sur un message prive : pas de notification ici (cron)
38 or @$t['statut'] == 'perso'
43 // plugin notification si present
44 $prevenir_auteurs = isset($GLOBALS['notifications']['prevenir_auteurs']) and $GLOBALS['notifications']['prevenir_auteurs'];
46 if ($t['objet'] == 'article' and !$prevenir_auteurs) {
47 $s = sql_getfetsel('accepter_forum', 'spip_articles', "id_article=" . $t['id_objet']);
49 $s = substr($GLOBALS['meta']["forums_publics"], 0, 3);
52 $prevenir_auteurs = (strpos(@$GLOBALS['meta']['prevenir_auteurs'], ",$s,") !== false
53 or @$GLOBALS['meta']['prevenir_auteurs'] === 'oui'); // compat
56 include_spip('inc/texte');
57 include_spip('inc/filtres');
58 include_spip('inc/autoriser');
59 include_spip('inc/session');
61 // Qui va-t-on prevenir ?
63 // Ne pas ecrire au posteur du message, ni au moderateur qui valide le forum,
64 $pasmoi = array_filter(array($t['email_auteur'], session_get('email')));
66 // 1. Les auteurs de l'objet lie au forum
67 // seulement ceux qui n'ont
68 // pas le droit de le moderer (les autres l'ont recu plus tot)
69 if ($prevenir_auteurs) {
70 $result = sql_select("auteurs.*", "spip_auteurs AS auteurs, spip_auteurs_liens AS lien",
71 "lien.objet=" . sql_quote($t['objet']) . " AND lien.id_objet=" . intval($t['id_objet']) . " AND auteurs.id_auteur=lien.id_auteur");
73 while ($qui = sql_fetch($result)) {
75 if (!autoriser('modererforum', $t['objet'], $t['id_objet'], $qui['id_auteur'])) {
76 $tous[] = $qui['email'];
77 } else // Ne pas ecrire aux auteurs deja notifies precedemment
79 $pasmoi[] = $qui['email'];
85 $options['forum'] = $t;
86 $destinataires = pipeline('notifications_destinataires', array(
95 // Nettoyer le tableau
96 // en enlevant les exclus
97 notifications_nettoyer_emails($destinataires, $pasmoi);
100 // Envoyer les emails
102 $email_notification_forum = charger_fonction('email_notification_forum', 'inc');
103 foreach ($destinataires as $email) {
104 $texte = $email_notification_forum($t, $email);
105 notifications_envoyer_mails($email, $texte);