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

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

Correction de la correction : le nom est obligatoire à la premiere étape !

File size: 5.1 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 (\$GLOBALS[\'visiteur_session\'][\'statut\']==\'0minirezo\'
64                AND (\$id = '.intval($_id).')
65                AND     include_spip(\'inc/autoriser\')
66                AND autoriser(\'moderer\',\'forum\',\$id)) {
67                        include_spip(\'inc/actions\');include_spip(\'inc/filtres\');
68                        echo \"<div class=\'boutons spip-admin actions modererforum\'>\"
69                        . bouton_action(_T(\'forum:icone_supprimer_message\'),generer_action_auteur(\'instituer_forum\',\$id.\'-off\',ancre_url(self(),\'forum\')))
70                        . bouton_action(_T(\'forum:icone_bruler_message\'),generer_action_auteur(\'instituer_forum\',\$id.\'-spam\',ancre_url(self(),\'forum\')))
71                        . \"</div>\";
72                }
73?'.'>'";
74
75        $p->interdire_scripts = false;
76        return $p;
77}
78
79/**
80 * Verifier la saisie dans le formulaire forum :
81 * login obligatoire
82 * email optionnellement obligatoire
83 *
84 * @param array $flux
85 * @return array
86 */
87function comments_formulaire_verifier($flux){
88
89        if ($flux['args']['form']=='forum'){
90                // on doit indiquer un login au moins
91                if (!isset($GLOBALS['visiteur_session']['statut'])){
92                        if (!_request('session_nom') AND
93                                (!isset($GLOBALS['visiteur_session']['session_nom']) OR !strlen($GLOBALS['visiteur_session']['session_nom']))){
94                                $flux['data']['session_nom'] = _T('info_obligatoire');
95                                unset($flux['data']['previsu']);
96                        }
97                        include_spip("inc/config");
98                        if (lire_config("comments/email_obli",'')
99                                AND !_request('session_email')
100                                AND (!isset($GLOBALS['visiteur_session']['session_email']) OR !strlen($GLOBALS['visiteur_session']['session_email']))){
101                                $flux['data']['session_email'] = _T('info_obligatoire');
102                                unset($flux['data']['previsu']);
103                        }
104                }
105        }
106        return $flux;
107}
108
109/**
110 * Traiter le formulaire de forum :
111 *
112 * - ne pas rediriger en fin de traitement si pas d'url demandee explicitement
113 *   et si on est pas sur la ?page=forum
114 *
115 * - preparer un message en cas de moderation
116 *
117 * @param array $flux
118 * @return array
119 */
120function comments_formulaire_traiter($flux){
121        if ($flux['args']['form']=='forum'
122                ){
123                // args :
124                // $objet,$id_objet, $id_forum,$ajouter_mot, $ajouter_groupe, $afficher_previsu, $retour
125                // si pas d'url de retour explicite
126                $redirect = $flux['data']['redirect'];
127                if (!isset($flux['args']['args'][6]) OR !$flux['args']['args'][6]){
128                        // si on est pas sur la page forum, on ne redirige pas
129                        // mais il faudra traiter l'ancre
130                        if (!($p=_request('page')) OR $p!=='forum'){
131                                unset($flux['data']['redirect']);
132                                // mais on le remet editable !
133                                $flux['data']['editable']=true;
134                                // vider la saisie :
135                                set_request('texte');
136                                set_request('titre');
137                                set_request('url_site');
138                                set_request('ajouter_groupe');
139                                set_request('ajouter_mot');
140                                set_request('id_forum');
141                        }
142                }
143
144                $id_forum = $flux['data']['id_forum'];
145                include_spip('base/abstract_sql');
146                $statut = sql_getfetsel('statut','spip_forum','id_forum='.intval($id_forum));
147                if ($statut=='publie'){
148                        // le message est OK, il suffit de mettre une ancre !
149                        $flux['data']['message_ok'] = 
150                          _T('comments:reponse_comment_ok');
151                        if (!isset($flux['data']['redirect'])){
152                                $flux['data']['message_ok'] .=
153                                                "<script type='text/javascript'>function move_comment$id_forum(){
154jQuery('#formulaire_forum .reponse_formulaire').detach().appendTo(jQuery('#forum$id_forum').parent()).addClass('success');
155jQuery('#forum$id_forum').parent().positionner();
156//window.location.hash='forum$id_forum';
157}
158jQuery(function(){jQuery('.comments-posts').ajaxReload({callback:move_comment$id_forum})});</script>";
159
160                        }
161                }
162                else {
163                        // dire que le message a ete modere
164                        $flux['data']['message_ok'] = _T('comments:reponse_comment_modere');
165                }
166               
167        }
168        return $flux;
169
170}
171?>
Note: See TracBrowser for help on using the repository browser.