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

Last change on this file was 93640, checked in by marcimat@…, 4 years ago

Meilleure compatibilité avec PSR-2 et nos règles d'écriture, en appliquant
différents fix avec php-cs-fixers. Fixers appliqués ici :

'encoding', utf8
'eof_ending',
un saut de ligne en fin de fichier
'elseif', elseif plutôt que else if
'function_call_space',
espaces sur fonctions
'function_declaration', espaces sur fonctions
'function_typehint_space',
espaces sur fonctions
'linefeed', sauts de ligne \n uniquement
'lowercase_constants',
true, false, null en munuscule
'lowercase_keywords', mots clés PHP en lowercase
'method_argument_space',
espaces sur appels de fonctions
'multiple_use', use unique sur fonctions anonymes
'newline_after_open_tag',
ouverture de php… et c'est tout sur cette ligne
'operators_spaces', espaces de part et d'autres des opérateurs binaires
'parenthesis',
pas d'espace juste après parenthèse ouvrante, ou avant parenthèse fermante
'php_closing_tag', pas de fermeture de php
'short_tag',
tag PHP corrects
'trailing_spaces', pas d'espace qui traîne en fin de ligne
'visibility',
déclarer 'public / private / protected' sur les méthodes

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