source: spip-zone/_core_/plugins/forum/forum_autoriser.php

Last change on this file was 113294, checked in by spip.franck@…, 11 months ago

Il parait que le futur c'est maintenant :-D

File size: 9.1 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2019                                                *
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
13/**
14 * Définit les autorisations du plugin forum
15 *
16 * @package SPIP\Forum\Autorisations
17 **/
18if (!defined("_ECRIRE_INC_VERSION")) {
19        return;
20}
21
22/**
23 * Fonction d'appel pour le pipeline
24 *
25 * @pipeline autoriser
26 */
27function forum_autoriser() { }
28
29/**
30 * Autorisation de voir l'élément «forums internes» dans le menu
31 *
32 * @param  string $faire Action demandée
33 * @param  string $type Type d'objet sur lequel appliquer l'action
34 * @param  int $id Identifiant de l'objet
35 * @param  array $qui Description de l'auteur demandant l'autorisation
36 * @param  array $opt Options de cette autorisation
37 * @return bool          true s'il a le droit, false sinon
38 **/
39function autoriser_foruminternesuivi_menu_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) {
40        if ((($GLOBALS['meta']['forum_prive'] == 'non') && ($GLOBALS['meta']['forum_prive_admin'] == 'non'))
41                or (($GLOBALS['meta']['forum_prive'] == 'non') && ($qui['statut'] == '1comite'))
42        ) {
43                return false;
44        }
45
46        return true;
47}
48
49/**
50 * Autorisation de voir l'élément «suivi des forums» dans le menu
51 *
52 * @param  string $faire Action demandée
53 * @param  string $type Type d'objet sur lequel appliquer l'action
54 * @param  int $id Identifiant de l'objet
55 * @param  array $qui Description de l'auteur demandant l'autorisation
56 * @param  array $opt Options de cette autorisation
57 * @return bool          true s'il a le droit, false sinon
58 **/
59function autoriser_forumreactions_menu_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) {
60        return (sql_countsel('spip_forum') && autoriser('publierdans', 'rubrique', _request('id_rubrique')));
61}
62
63
64/**
65 * Autorisation de modérer un message de forum
66 *
67 * Il faut l'autorisation de modifier l'objet correspondant
68 * (si le forum est attaché à un objet), sinon avoir droits par défaut
69 * (être administrateur).
70 *
71 * @see autoriser_forum_moderer_dist()
72 *
73 * @param  string $faire Action demandée
74 * @param  string $type Type d'objet sur lequel appliquer l'action
75 * @param  int $id Identifiant de l'objet
76 * @param  array $qui Description de l'auteur demandant l'autorisation
77 * @param  array $opt Options de cette autorisation
78 * @return bool          true s'il a le droit, false sinon
79 **/
80function autoriser_modererforum_dist($faire, $type, $id, $qui, $opt) {
81        return $type ? autoriser('modifier', $type, $id, $qui, $opt) : autoriser('moderer', 'forum', 0, $qui, $opt);
82}
83
84/**
85 * Autorisation de changer le statut d'un message de forum
86 *
87 * Seulement sur les objets qu'on a le droit de modérer.
88 *
89 * @param  string $faire Action demandée
90 * @param  string $type Type d'objet sur lequel appliquer l'action
91 * @param  int $id Identifiant de l'objet
92 * @param  array $qui Description de l'auteur demandant l'autorisation
93 * @param  array $opt Options de cette autorisation
94 * @return bool          true s'il a le droit, false sinon
95 */
96function autoriser_forum_instituer_dist($faire, $type, $id, $qui, $opt) {
97        if (!intval($id)) {
98                return autoriser('moderer', 'forum');
99        }
100        $row = sql_fetsel('objet,id_objet', 'spip_forum', 'id_forum=' . intval($id));
101
102        return $row ? autoriser('modererforum', $row['objet'], $row['id_objet'], $qui, $opt) : false;
103}
104
105/**
106 * Autorisation par défaut de modérer un message de forum
107 *
108 * Si l'on connait l'objet, on délègue à modererforum, sinon il faut
109 * être administrateur
110 *
111 * @see autoriser_modererforum_dist()
112 *
113 * @param  string $faire Action demandée
114 * @param  string $type Type d'objet sur lequel appliquer l'action
115 * @param  int $id Identifiant de l'objet
116 * @param  array $qui Description de l'auteur demandant l'autorisation
117 * @param  array $opt Options de cette autorisation
118 * @return bool          true s'il a le droit, false sinon
119 */
120function autoriser_forum_moderer_dist($faire, $type, $id, $qui, $opt) {
121        // si on fournit un id : deleguer a modererforum sur l'objet concerne
122        if ($id) {
123                include_spip('inc/forum');
124                if ($racine = racine_forum($id)
125                        and list($objet, $id_objet, ) = $racine
126                        and $objet
127                ) {
128                        return autoriser('modererforum', $objet, $id_objet);
129                }
130        }
131
132        // sinon : admins uniquement
133        return $qui['statut'] == '0minirezo'; // les admins restreints peuvent moderer leurs messages
134}
135
136
137/**
138 * Autorisation de modifier un message de forum
139 *
140 * Jamais
141 *
142 * @param  string $faire Action demandée
143 * @param  string $type Type d'objet sur lequel appliquer l'action
144 * @param  int $id Identifiant de l'objet
145 * @param  array $qui Description de l'auteur demandant l'autorisation
146 * @param  array $opt Options de cette autorisation
147 * @return bool          true s'il a le droit, false sinon
148 */
149function autoriser_forum_modifier_dist($faire, $type, $id, $qui, $opt) {
150        return false;
151}
152
153/**
154 * Autorisation de consulter le forum des administrateurs
155 *
156 * Il faut être administrateur (y compris restreint)
157 *
158 * @param  string $faire Action demandée
159 * @param  string $type Type d'objet sur lequel appliquer l'action
160 * @param  int $id Identifiant de l'objet
161 * @param  array $qui Description de l'auteur demandant l'autorisation
162 * @param  array $opt Options de cette autorisation
163 * @return bool          true s'il a le droit, false sinon
164 */
165function autoriser_forum_admin_dist($faire, $type, $id, $qui, $opt) {
166        return $qui['statut'] == '0minirezo';
167}
168
169/**
170 * Autorisation d'auto-association de documents sur des forum
171 *
172 * Jamais
173 *
174 * @param  string $faire Action demandée
175 * @param  string $type Type d'objet sur lequel appliquer l'action
176 * @param  int $id Identifiant de l'objet
177 * @param  array $qui Description de l'auteur demandant l'autorisation
178 * @param  array $opt Options de cette autorisation
179 * @return bool          true s'il a le droit, false sinon
180 */
181function autoriser_forum_autoassocierdocument_dist($faire, $type, $id, $qui, $opt) {
182        return false;
183}
184
185/**
186 * Autorisation d'association de documents sur des forum
187 *
188 * Toujours
189 *
190 * @param  string $faire Action demandée
191 * @param  string $type Type d'objet sur lequel appliquer l'action
192 * @param  int $id Identifiant de l'objet
193 * @param  array $qui Description de l'auteur demandant l'autorisation
194 * @param  array $opt Options de cette autorisation
195 * @return bool          true s'il a le droit, false sinon
196 */
197function autoriser_forum_associerdocuments_dist($faire, $type, $id, $qui, $opt) {
198        return true;
199}
200
201/**
202 * Autorisation de dissociation de documents sur des forum
203 *
204 * Toujours
205 *
206 * @param  string $faire Action demandée
207 * @param  string $type Type d'objet sur lequel appliquer l'action
208 * @param  int $id Identifiant de l'objet
209 * @param  array $qui Description de l'auteur demandant l'autorisation
210 * @param  array $opt Options de cette autorisation
211 * @return bool          true s'il a le droit, false sinon
212 */
213function autoriser_forum_dissocierdocuments_dist($faire, $type, $id, $qui, $opt) {
214        return true;
215}
216
217/**
218 * Autorisation de participer au forum des admins
219 *
220 * Il faut être administrateur (y compris restreint)
221 *
222 * @param  string $faire Action demandée
223 * @param  string $type Type d'objet sur lequel appliquer l'action
224 * @param  int $id Identifiant de l'objet
225 * @param  array $qui Description de l'auteur demandant l'autorisation
226 * @param  array $opt Options de cette autorisation
227 * @return bool          true s'il a le droit, false sinon
228 */
229function autoriser_forumadmin_participer_dist($faire, $type, $id, $qui, $opt) {
230        return ($GLOBALS['meta']['forum_prive_admin'] == 'oui') && $qui['statut'] == '0minirezo';
231}
232
233
234/**
235 * Autorisation de participer au forum privé d'un objet quelconque
236 *
237 * Afin de rester compatible avec l'existant cette autorisation est toujours vraie.
238 *
239 * @param  string $faire Action demandée
240 * @param  string $type Type d'objet sur lequel appliquer l'action
241 * @param  int $id Identifiant de l'objet
242 * @param  array $qui Description de l'auteur demandant l'autorisation
243 * @param  array $opt Options de cette autorisation
244 * @return bool          true s'il a le droit, false sinon
245 */
246function autoriser_participerforumprive_dist($faire, $type, $id, $qui, $opt) {
247        return true;
248}
249
250/**
251 * Autorisation de voir le menu configurer_forum
252 *
253 * Il faut avoir accès à la page configurer_forum
254 *
255 * @param  string $faire Action demandée
256 * @param  string $type Type d'objet sur lequel appliquer l'action
257 * @param  int $id Identifiant de l'objet
258 * @param  array $qui Description de l'auteur demandant l'autorisation
259 * @param  array $opt Options de cette autorisation
260 * @return bool          true s'il a le droit, false sinon
261 **/
262function autoriser_configurerforum_menu_dist($faire, $type, $id, $qui, $opt) {
263    return autoriser('configurer', 'forum', $id, $qui, $opt);
264}
Note: See TracBrowser for help on using the repository browser.