source: spip-zone/_plugins_/notifications/trunk/notifications/forumprive.php @ 65614

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

Notification des forums : c'est du contenu html mis en forme par des raccourcis spip, le conserver intact pour l'envoyer dans un mail html plutot que le transformer en texte pour faire un mail texte puis re formater le mail en html par un wrapper qui perd des mises en forme.

On utilise le wrapper pour formater le mail directement en html, et on le fournit a la fonction notifications_envoyer_mails avec les bons arguments.
Si pas de plugin facteur, c'est le mail texte qui est utilisé, comme avant.

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 * notification appelee quand on poste un forum prive
13 *
14 * @param string $quoi
15 * @param int $id_forum
16 * @param array $options
17 * @return <type>
18 */
19function notifications_forumprive_dist($quoi, $id_forum, $options) {
20        include_spip('base/abstract_sql');
21
22        $t = sql_fetsel("*", "spip_forum", "id_forum=".intval($id_forum));
23        if (!$t)
24                return;
25
26        include_spip('inc/texte');
27        include_spip('inc/filtres');
28        include_spip('inc/autoriser');
29
30        // Qui va-t-on prevenir ?
31        $tous = array();
32
33        // 1. Prevenir les auteurs
34        if ($GLOBALS['notifications']['prevenir_auteurs_prive']) {
35
36                // 1.1. Les auteurs du message (si c'est un message)
37                if ($t['objet']=='message' AND $t['id_objet']) {
38                        $result = sql_select("auteurs.email","spip_auteurs AS auteurs, spip_auteurs_liens AS lien ON auteurs.id_auteur=lien.id_auteur","lien.objet='message' AND lien.id_objet=".intval($t['id_objet']));
39
40                        while ($qui = sql_fetch($result))
41                                $tous[] = $qui['email'];
42
43                        $url = url_absolue(generer_url_entite($t['id_objet'], 'message'));
44                        $t['texte'] .= "\n\n"._T('forum_ne_repondez_pas')."\n<html>$url</html>";
45                }
46
47                // 1.2. Les auteurs de l'article (si c'est un article)
48                elseif ($t['objet']=='article' AND $t['id_objet']) {
49                        $result = sql_select("auteurs.email","spip_auteurs AS auteurs, spip_auteurs_liens AS lien ON auteurs.id_auteur=lien.id_auteur","lien.objet='article' AND lien.id_objet=".intval($t['id_objet']));
50
51                        while ($qui = sql_fetch($result))
52                                $tous[] = $qui['email'];
53                }
54        }
55
56// 2. Les moderateurs
57        if ($GLOBALS['notifications']['moderateurs_forum_prive']){
58                foreach (explode(',', $GLOBALS['notifications']['moderateurs_forum_prive']) as $m) {
59                        $tous[] = $m;
60                }
61        }
62
63        $options['forum'] = $t;
64        $destinataires = pipeline('notifications_destinataires',
65                array(
66                        'args'=>array('quoi'=>$quoi,'id'=>$id_forum,'options'=>$options)
67                ,
68                        'data'=>$tous)
69        );
70
71        // Nettoyer le tableau
72        // Ne pas ecrire au posteur du message !
73        notifications_nettoyer_emails($destinataires,array($t['email_auteur']));
74
75        //
76        // Envoyer les emails
77        //
78        $email_notification_forum = charger_fonction('email_notification_forum','inc');
79        foreach ($destinataires as $email) {
80                $texte = $email_notification_forum($t, $email);
81                notifications_envoyer_mails_texte_ou_html($email, $texte);
82        }
83}
84
85?>
Note: See TracBrowser for help on using the repository browser.