source: spip-zone/_plugins_/comments/comments-200/comments_pipelines.php @ 39373

Last change on this file since 39373 was 39373, checked in by prigent.yohann@…, 9 years ago

Un peu plus propre avec une variable

File size: 5.4 KB
Line 
1<?php
2/*
3 * Plugin Comments
4 * (c) 2010 Collectif
5 * Distribue sous licence GPL
6 *
7 */
8
9/**
10 * Generer les boutons d'admin des forum selon les droits du visiteur
11 * en SPIP 2.1 uniquement
12 *
13 * @param <type> $p
14 * @return <type>
15 */
16function balise_BOUTONS_ADMIN_FORUM_dist($p) {
17        if (($_id = interprete_argument_balise(1,$p))===NULL)
18                $_id = champ_sql('id_forum', $p);
19
20        if (function_exists('bouton_action'))
21                $p->code = "
22'<'.'?php
23        if (\$GLOBALS[\'visiteur_session\'][\'statut\']==\'0minirezo\'
24                AND (\$id = '.intval($_id).')
25                AND     include_spip(\'inc/autoriser\')
26                AND autoriser(\'moderer\',\'forum\',\$id)) {
27                        include_spip(\'inc/actions\');
28                        echo \"<div class=\'spip-admin actions modererforum\'>\"
29                        . bouton_action(_T(\'icone_supprimer_message\'),generer_action_auteur(\'instituer_forum\',\$id.\'-off\',ancre_url(self(),\'forum\')))
30                        . bouton_action(_T(\'SPAM\'),generer_action_auteur(\'instituer_forum\',\$id.\'-spam\',ancre_url(self(),\'forum\')))
31                        . \"</div>\";
32                }
33?'.'>'";
34        else
35                $p->code = "''";
36
37        $p->interdire_scripts = false;
38
39        return $p;
40}
41
42
43/**
44 * Moderer le forum ?
45 * = modifier l'objet correspondant (si forum attache a un objet)
46 * = droits par defaut sinon (admin complet pour moderation complete)
47 *
48 * @param <type> $faire
49 * @param <type> $type
50 * @param <type> $id
51 * @param <type> $qui
52 * @param <type> $opt
53 * @return <type>
54 */
55function autoriser_forum_moderer_dist($faire, $type, $id, $qui, $opt) {
56        $row = sql_fetsel("*", "spip_forum", "id_forum=".intval($id));
57        if (isset($row['objet']))
58                return autoriser('modererforum', $row['objet'], $row['id_objet'], $qui, $opt);
59        elseif($row['id_article'])
60                return autoriser('modererforum', 'article', $row['id_article'], $qui, $opt);
61        elseif($row['id_breve'])
62                return autoriser('modererforum', 'breve', $row['id_breve'], $qui, $opt);
63        elseif($row['id_rubrique'])
64                return autoriser('modererforum', 'rubrique', $row['id_rubrique'], $qui, $opt);
65        elseif($row['id_message'])
66                return autoriser('modererforum', 'message', $row['id_message'], $qui, $opt);
67        elseif($row['id_syndic'])
68                return autoriser('modererforum', 'site', $row['id_syndic'], $qui, $opt);
69        return false;
70}
71
72
73/**
74 * surcharger les boucles FORUMS
75 * pour afficher uniquement les forums public meme en preview
76 *
77 * @param <type> $boucle
78 * @return <type>
79 */
80function comments_pre_boucle($boucle){
81        if ($boucle->type_requete == 'forums') {
82                $id_table = $boucle->id_table;
83                $mstatut = $id_table .'.statut';
84                // Par defaut, selectionner uniquement les forums sans mere
85                // Les criteres {tout} et {plat} inversent ce choix
86                if (!isset($boucle->modificateur['tout']) AND !isset($boucle->modificateur['plat'])) {
87                        array_unshift($boucle->where,array("'='", "'$id_table." ."id_parent'", 0));
88                }
89                // Restreindre aux elements publies
90                if (!$boucle->modificateur['criteres']['statut']) {
91                                array_unshift($boucle->where,array("'='", "'$mstatut'", "'\\'publie\\''"));
92                }
93        }
94        return $boucle;
95}
96
97
98/**
99 * Traiter le formulaire de forum :
100 *
101 * - ne pas rediriger en fin de traitement si pas d'url demandee explicitement
102 *   et si on est pas sur la ?page=forum
103 *
104 * - preparer un message en cas de moderation
105 *
106 * @param <type> $flux
107 * @return <type>
108 */
109function comments_formulaire_traiter($flux){
110        if ($flux['args']['form']=='forum'
111                ){
112                // args :
113                // $titre, $table, $type, $script,
114                // $id_rubrique, $id_forum, $id_article, $id_breve, $id_syndic,
115                // $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour
116                // si pas d'url de retour explicite
117                $redirect = $flux['data']['redirect'];
118                if (!isset($flux['args']['args'][12]) OR !$flux['args']['args'][12]){
119                        // si on est pas sur la page forum, on ne redirige pas
120                        // mais il faudra traiter l'ancre
121                        if (!($p=_request('page')) OR $p!=='forum'){
122                                unset($flux['data']['redirect']);
123                                // mais on le remet editable !
124                                $flux['data']['editable']=true;
125                                // vider la saisie :
126                                set_request('texte');
127                                set_request('titre');
128                                set_request('url_site');
129                                set_request('ajouter_groupe');
130                                set_request('ajouter_mot');
131                                set_request('id_forum');
132                        }
133                }
134
135                $id_forum = $flux['data']['id_forum'];
136                include_spip('base/abstract_sql');
137                $statut = sql_getfetsel('statut','spip_forum','id_forum='.intval($id_forum));
138                if ($statut=='publie'){
139                        // le message est OK, il suffit de mettre une ancre !
140                        $flux['data']['message_ok'] = 
141                          _T('comments:reponse_comment_ok')
142                                . "<script type='text/javascript'>jQuery(function(){
143                        jQuery('#formulaire_forum .reponse_formulaire').detach().appendTo(jQuery('#forum$id_forum').parent()).addClass('success');
144                        jQuery('#forum$id_forum').parent().positionner();
145                        //window.location.hash='forum$id_forum';
146                        });</script>";
147                        ;
148                }
149                else {
150                        // dire que le message a ete modere
151                        $flux['data']['message_ok'] = _T('comments:reponse_comment_modere');
152                }
153               
154                $res = $flux['data'];
155        #var_dump($flux);
156        }
157        #die('paf');
158        return $flux;
159
160}
161
162/**
163 * Inserer le code javascript pour placer le formulaire de reponde ou il faut
164 *
165 * On inclut seulement si on est dans le mode one-thread
166 *
167 * @param <type> $flux
168 * @return <type>
169 */
170
171function comments_insert_head ($flux) {
172        if (lire_config('comments/comments_fil') == 'one-thread') {
173                $flux .= '<script type="text/javascript" src="'.chemin('javascript/thread-move.js').'">var chaine = "'._T('public:repondre_message').'";</script>';
174                $flux .= '<script type="text/javascript">';
175                $flux .= 'var chaine = "'._T('public:repondre_message').'";';
176                $flux .= '</script>';
177        }
178        return $flux;
179}
180?>
Note: See TracBrowser for help on using the repository browser.