source: spip-zone/_plugins_/comments/trunk/comments_fonctions.php

Last change on this file was 99248, checked in by brunobergot@…, 3 years ago

version 3.4.0 : permettre de désactiver l'obligation de renseigner un nom dans le form de forum

retour sur r66004

File size: 5.6 KB
Line 
1<?php
2/*
3 * Plugin Comments
4 * (c) 2010 Collectif
5 * Distribue sous licence GPL
6 *
7 */
8
9/* pour que le pipeline ne rale pas ! */
10function comments_autoriser(){}
11
12/**
13 *
14 * Inserer des styles
15 *
16 * @param string $flux
17 * @return string
18 */
19function comments_insert_head_css($flux){
20        if ($f = find_in_path("css/comments.css"))
21                $flux .= '<link rel="stylesheet" href="'.direction_css($f).'" type="text/css" media="all" />';
22        return $flux;
23}
24
25/***
26 * (c)James 2006, Licence GNU/GPL
27 * |me compare un id_auteur, par exemple,
28 * d'une boucle FORUMS avec les auteurs d'un objet
29 * et renvoie la valeur booleenne true (vrai) si on trouve
30 *  une correspondance
31 * utilisation:
32 * <div id="forum#ID_FORUM"[(#ID_OBJET|me{#OBJET,#ID_AUTEUR})class="me"]>
33 *
34 * @param int $id_objet
35 * @param string $objet
36 * @param int $id_auteur
37 * @param string $sioui
38 * @param string $sinon
39 * @return bool
40 */
41function filtre_me_dist($id_objet, $objet, $id_auteur, $sioui = ' ', $sinon = '') {
42        static $auteurs = array();
43        if(!isset($auteurs[$objet][$id_objet])) {
44                $r = sql_allfetsel("id_auteur","spip_auteurs_liens","objet=".sql_quote($objet)." AND id_objet=".intval($id_objet));
45                $auteurs[$objet][$id_objet] = array_map('reset',$r);
46        }
47        return (in_array($id_auteur, $auteurs[$objet][$id_objet])?$sioui:$sinon);
48}
49
50/**
51 * Generer les boutons d'admin des forum selon les droits du visiteur
52 * en SPIP >= 2.1 uniquement
53 *
54 * @param object $p
55 * @return object
56 */
57function balise_BOUTONS_ADMIN_FORUM_dist($p) {
58        if (($_id = interprete_argument_balise(1,$p))===NULL)
59                $_id = champ_sql('id_forum', $p);
60
61                $p->code = "
62'<'.'?php
63        if (isset(\$GLOBALS[\'visiteur_session\'][\'statut\'])
64          AND \$GLOBALS[\'visiteur_session\'][\'statut\']==\'0minirezo\'
65                AND (\$id = '.intval($_id).')
66                AND     include_spip(\'inc/autoriser\')
67                AND autoriser(\'moderer\',\'forum\',\$id)) {
68                        include_spip(\'inc/actions\');include_spip(\'inc/filtres\');
69                        echo \"<div class=\'boutons spip-admin actions modererforum\'>\"
70                        . bouton_action(_T(\'forum:icone_supprimer_message\'),generer_action_auteur(\'instituer_forum\',\$id.\'-off\',ancre_url(self(),\'forum\')),\'poubelle\')
71                        . bouton_action(_T(\'forum:icone_bruler_message\'),generer_action_auteur(\'instituer_forum\',\$id.\'-spam\',ancre_url(self(),\'forum\')),\'spam\')
72                        . \"</div>\";
73                }
74?'.'>'";
75
76        $p->interdire_scripts = false;
77        return $p;
78}
79
80/**
81 * Charger la saisie du formulaire forum : declarer le champ 'notification' en plus
82 * (seulement utilise si plugin notifications dispo)
83 *
84 * @param array $flux
85 * @return array
86 */
87function comments_formulaire_charger($flux){
88        if ($flux['args']['form']=='forum'){
89                $flux['data']['notification']=1;
90        }
91        return $flux;
92}
93
94/**
95 * Verifier la saisie dans le formulaire forum :
96 * login obligatoire
97 * email optionnellement obligatoire
98 *
99 * @param array $flux
100 * @return array
101 */
102function comments_formulaire_verifier($flux){
103
104        if ($flux['args']['form']=='forum'){
105                // vérifier le champ nom et email si la conf le demande
106                if (!isset($GLOBALS['visiteur_session']['statut'])){
107                        include_spip('inc/config');
108                        if (lire_config('comments/nom_obli',1)
109                                AND !_request('session_nom')
110                                AND (!isset($GLOBALS['visiteur_session']['session_nom']) OR !strlen($GLOBALS['visiteur_session']['session_nom']))
111                        ){
112                                        $flux['data']['session_nom'] = _T('info_obligatoire');
113                                        unset($flux['data']['previsu']);
114                        }
115                        if (lire_config('comments/email_obli','')
116                                AND !_request('session_email')
117                                AND (!isset($GLOBALS['visiteur_session']['session_email']) OR !strlen($GLOBALS['visiteur_session']['session_email']))
118                        ){
119                                $flux['data']['session_email'] = _T('info_obligatoire');
120                                unset($flux['data']['previsu']);
121                        }
122                }
123        }
124        return $flux;
125}
126
127/**
128 * Traiter le formulaire de forum :
129 *
130 * - ne pas rediriger en fin de traitement si pas d'url demandee explicitement
131 *   et si on est pas sur la ?page=forum
132 *
133 * - preparer un message en cas de moderation
134 *
135 * @param array $flux
136 * @return array
137 */
138function comments_formulaire_traiter($flux){
139        if ($flux['args']['form']=='forum'
140                ){
141                // args :
142                // $objet,$id_objet, $id_forum,$ajouter_mot, $ajouter_groupe, $afficher_previsu, $retour
143                // si pas d'url de retour explicite
144                $redirect = $flux['data']['redirect'];
145                if (!isset($flux['args']['args'][6]) OR !$flux['args']['args'][6]){
146                        // si on est pas sur la page forum, on ne redirige pas
147                        // mais il faudra traiter l'ancre
148                        if (!($p=_request('page')) OR $p!=='forum'){
149                                unset($flux['data']['redirect']);
150                                // mais on le remet editable !
151                                $flux['data']['editable']=true;
152                                // vider la saisie :
153                                set_request('texte');
154                                set_request('titre');
155                                set_request('url_site');
156                                set_request('ajouter_groupe');
157                                set_request('ajouter_mot');
158                                set_request('id_forum');
159                                set_request('notification');
160                        }
161                }
162
163                $id_forum = $flux['data']['id_forum'];
164                include_spip('base/abstract_sql');
165                $statut = sql_getfetsel('statut','spip_forum','id_forum='.intval($id_forum));
166                if ($statut=='publie'){
167                        // le message est OK, il suffit de mettre une ancre !
168                        $flux['data']['message_ok'] = 
169                          _T('comments:reponse_comment_ok');
170                        if (!isset($flux['data']['redirect'])){
171                                $flux['data']['message_ok'] .=
172                                                "<script type='text/javascript'>function move_comment$id_forum(){
173jQuery('#formulaire_forum .reponse_formulaire').detach().appendTo(jQuery('#forum$id_forum').parent()).addClass('success');
174jQuery('#forum$id_forum').parent().positionner();
175//window.location.hash='forum$id_forum';
176}
177jQuery(function(){jQuery('.comments-posts').ajaxReload({callback:move_comment$id_forum})});</script>";
178
179                        }
180                }
181                else {
182                        // dire que le message a ete modere
183                        $flux['data']['message_ok'] = _T('comments:reponse_comment_modere');
184                }
185               
186        }
187        return $flux;
188
189}
190?>
Note: See TracBrowser for help on using the repository browser.