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

Last change on this file since 41556 was 41556, checked in by cedric@…, 11 years ago

notification des auteurs des objets lie au forum : generalisation a n'importe quel objet.
cependant, par defaut dans le core, seuls les articles restent concernes (gestion de la configuration).
Il suffira d'etendre ce cas en positionnant $prevenir_auteurs dans le plugin notifications

File size: 2.3 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        foreach ($destinataires as $email) {
67                $texte = email_notification_forum($t, $email);
68                notifications_envoyer_mails($email, $texte);
69        }
70
71        // Notifier les autres si le forum est valide
72        // est-ce que cet appel devrait bien etre la ?
73        if ($t['statut'] == 'publie') {
74                $notifications = charger_fonction('notifications', 'inc');
75                $notifications('forumvalide', $id_forum);
76        }
77}
78?>
Note: See TracBrowser for help on using the repository browser.