source: spip-zone/_core_/plugins/forum/notifications/forumposte.php @ 48832

Last change on this file since 48832 was 48832, checked in by guy.cesaro@…, 10 years ago

repare l'ajout de document et la notification mais il reste probleme de jointure.

resoud #2108

File size: 2.4 KB
Line 
1<?php
2/*
3 * Plugin Notifications
4 * (c) 2009 SPIP
5 * Distribue sous licence GPL
6 *
7 */
8
9
10/**
11 * cette notification s'execute quand un message est poste,
12 *
13 * @param string $quoi
14 * @param int $id_forum
15 */
16function notifications_forumposte_dist($quoi, $id_forum, $options) {
17        $t = sql_fetsel("*", "spip_forum", "id_forum=".intval($id_forum));
18        if (!$t)
19                return;
20
21        // plugin notification si present
22        $prevenir_auteurs = isset($GLOBALS['notifications']['prevenir_auteurs']) AND $GLOBALS['notifications']['prevenir_auteurs'];
23        // sinon voie normale
24        if ($t['objet']=='article' AND !$prevenir_auteurs){
25                $s = sql_getfetsel('accepter_forum','spip_articles',"id_article=" . $t['id_objet']);
26                if (!$s)  $s = substr($GLOBALS['meta']["forums_publics"],0,3);
27
28                $prevenir_auteurs = (strpos(@$GLOBALS['meta']['prevenir_auteurs'],",$s,")!==false
29                        OR @$GLOBALS['meta']['prevenir_auteurs'] === 'oui'); // compat
30        }
31
32        include_spip('inc/texte');
33        include_spip('inc/filtres');
34        include_spip('inc/autoriser');
35
36        // Qui va-t-on prevenir ?
37        $tous = array();
38
39        // 1. Les auteurs de l'objet lie au forum
40        // seulement s'ils ont le droit de le moderer (les autres seront
41        // avertis par la notifications_forumvalide).
42        if ($prevenir_auteurs) {
43                $result = sql_select("auteurs.*","spip_auteurs AS auteurs, spip_auteurs_liens AS lien","lien.objet=".sql_quote($t['objet'])." AND lien.id_objet=".intval($t['id_objet'])." AND auteurs.id_auteur=lien.id_auteur");
44
45                while ($qui = sql_fetch($result)) {
46                        if ($qui['email'] AND autoriser('modererforum', $t['objet'], $t['id_objet'], $qui['id_auteur']))
47                                $tous[] = $qui['email'];
48                }
49        }
50
51        $options['forum'] = $t;
52        $destinataires = pipeline('notifications_destinataires',
53                array(
54                        'args'=>array('quoi'=>$quoi,'id'=>$id_forum,'options'=>$options)
55                ,
56                        'data'=>$tous)
57        );
58
59        // Nettoyer le tableau
60        // Ne pas ecrire au posteur du message !
61        notifications_nettoyer_emails($destinataires,array($t['email_auteur']));
62
63        //
64        // Envoyer les emails
65        //
66        $email_notification_forum = charger_fonction('email_notification_forum','inc');
67        foreach ($destinataires as $email) {
68                $texte = $email_notification_forum($t, $email);
69                notifications_envoyer_mails($email, $texte);
70        }
71
72        // Notifier les autres si le forum est valide
73        // est-ce que cet appel devrait bien etre la ?
74        if ($t['statut'] == 'publie') {
75                $notifications = charger_fonction('notifications', 'inc');
76                $notifications('forumvalide', $id_forum);
77        }
78}
79?>
Note: See TracBrowser for help on using the repository browser.