source: spip-zone/_plugins_/notifications/trunk/notifications/forumposte.php @ 57390

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

mise a jour des notifications pour spip3

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