source: spip-zone/_core_/branches/spip-3.0/plugins/forum/inc/email_notification_forum.php @ 70298

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

L'information d'auteur d'un message de forum etait assez peu comprehensible faute de chaine de langue, et meme dans le cas article on n'utilisait plus la chaine de langue faite pour ça car il restait une mention id_article qui n'existe plus.

File size: 3.9 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2013                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13if (!defined("_ECRIRE_INC_VERSION")) return;
14
15/**
16 * Construitre l'email personalise de notification d'un forum
17 *
18 * @param array $t
19 * @param string $email
20 * @param array $contexte
21 * @return string
22 */
23function inc_email_notification_forum_dist ($t, $email, $contexte=array()) {
24        static $contextes_store = array();
25
26        if(!isset($contextes_store[$t['id_forum']])){
27                $url = '';
28                $id_forum = $t['id_forum'];
29
30                if ($t['statut'] == 'prive') # forum prive
31                {
32                        if ($t['id_objet'])
33                                $url = generer_url_entite($t['id_objet'], $t['objet'], '', '#id'.$id_forum, false);
34                }
35                else if ($t['statut'] == 'privrac') # forum general
36                {
37                        $url = generer_url_ecrire('forum').'#id'.$id_forum;
38                }
39                else if ($t['statut'] == 'privadm') # forum des admins
40                {
41                        $url = generer_url_ecrire('forum','quoi=admin').'#id'.$id_forum;
42                }
43                else if ($t['statut'] == 'publie') # forum publie
44                {
45                        $url = generer_url_entite($id_forum, 'forum');
46                }
47                else #  forum modere, spam, poubelle direct ....
48                {
49                        $url = generer_url_ecrire('controler_forum', "debut_id_forum=".$id_forum);
50                }
51
52                if (!$url) {
53                        spip_log("forum $id_forum sans referent",'notifications');
54                        $url = './';
55                }
56                if ($t['id_objet']) {
57                        include_spip('inc/filtres');
58                        $t['titre_source'] = generer_info_entite($t['id_objet'], $t['objet'], 'titre');
59                }
60
61                $t['url'] = $url;
62
63                // detecter les url des liens du forum
64                // pour la moderation (permet de reperer les SPAMS avec des liens caches)
65                // il faut appliquer le traitement de raccourci car sinon on rate des liens sous forme [->..] utilises par les spammeurs !
66                include_spip("public/interfaces");
67                $table_objet = "forum";
68
69                $links = array();
70                foreach ($t as $champ=>$v){
71                        $champ = strtoupper($champ);
72                        $traitement = (isset($GLOBALS['table_des_traitements'][$champ])?$GLOBALS['table_des_traitements'][$champ]:null);
73                        if (is_array($traitement)
74                          AND (isset($traitement[$table_objet]) OR isset($traitement[0]))){
75                                $traitement = $traitement[isset($traitement[$table_objet]) ? $table_objet : 0];
76                                $traitement = str_replace('%s', "'".texte_script($v)."'", $traitement);
77                                eval("\$v = $traitement;");
78                        }
79
80                        $links = $links + extraire_balises($v,'a');
81                }
82                $links = extraire_attribut($links,'href');
83                $links = implode("\n",$links);
84                $t['liens'] = $links;
85
86                $contextes_store[$t['id_forum']] = $t;
87        }
88
89        $fond = "notifications/forum_poste";
90        if (isset($contexte['fond'])){
91                $fond = $contexte['fond'];
92                unset($contexte['fond']);
93        }
94        $t = array_merge($contextes_store[$t['id_forum']],$contexte);
95                // Rechercher eventuellement la langue du destinataire
96        if (NULL !== ($l = sql_getfetsel('lang', 'spip_auteurs', "email=" . sql_quote($email))))
97                $l = lang_select($l);
98
99        $parauteur = (strlen($t['auteur']) <= 2) ? '' :
100                (" " ._T('forum_par_auteur', array(
101                        'auteur' => $t['auteur'])
102                ) .
103                 ($t['email_auteur'] ? ' <' . $t['email_auteur'] . '>' : ''));
104
105        $titre = textebrut(typo($t['titre_source']));
106        $forum_poste_par = _T(
107                $t['objet']=='article'?'forum:forum_poste_par':'forum:forum_poste_par_generique',
108                array('parauteur' => $parauteur, 'titre' => $titre));
109
110        $t['par_auteur'] = $forum_poste_par;
111
112        $envoyer_mail = charger_fonction('envoyer_mail','inc'); // pour nettoyer_titre_email
113        $corps = recuperer_fond($fond,$t);
114
115        if ($l)
116                lang_select();
117
118        return $corps;
119}
Note: See TracBrowser for help on using the repository browser.