2043eb38ab0e92b5f747c89802f7cf4455fc042c
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
6 * Copyright (c) 2001-2016 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
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 \***************************************************************************/
14 * Définit les autorisations du plugin forum
16 * @package SPIP\Forum\Autorisations
18 if (!defined("_ECRIRE_INC_VERSION")) {
23 * Fonction d'appel pour le pipeline
27 function forum_autoriser() { }
30 * Autorisation de voir l'élément «forums internes» dans le menu
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
39 function 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'))
50 * Autorisation de voir l'élément «suivi des forums» dans le menu
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
59 function autoriser_forumreactions_menu_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) {
60 return (sql_countsel('spip_forum') && autoriser('publierdans', 'rubrique', _request('id_rubrique')));
65 * Autorisation de modérer un message de forum
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).
71 * @see autoriser_forum_moderer_dist()
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
80 function autoriser_modererforum_dist($faire, $type, $id, $qui, $opt) {
81 return $type ?
autoriser('modifier', $type, $id, $qui, $opt) : autoriser('moderer', 'forum', 0, $qui, $opt);
85 * Autorisation de changer le statut d'un message de forum
87 * Seulement sur les objets qu'on a le droit de modérer.
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
96 function autoriser_forum_instituer_dist($faire, $type, $id, $qui, $opt) {
98 return autoriser('moderer', 'forum');
100 $row = sql_fetsel('objet,id_objet', 'spip_forum', 'id_forum=' . intval($id));
102 return $row ?
autoriser('modererforum', $row['objet'], $row['id_objet'], $qui, $opt) : false;
106 * Autorisation par défaut de modérer un message de forum
108 * Si l'on connait l'objet, on délègue à modererforum, sinon il faut
109 * être administrateur
111 * @see autoriser_modererforum_dist()
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
120 function autoriser_forum_moderer_dist($faire, $type, $id, $qui, $opt) {
121 // si on fournit un id : deleguer a modererforum sur l'objet concerne
123 include_spip('inc/forum');
124 if ($racine = racine_forum($id)
125 and list($objet, $id_objet, ) = $racine
128 return autoriser('modererforum', $objet, $id_objet);
132 // sinon : admins uniquement
133 return $qui['statut'] == '0minirezo'; // les admins restreints peuvent moderer leurs messages
138 * Autorisation de modifier un message de forum
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
149 function autoriser_forum_modifier_dist($faire, $type, $id, $qui, $opt) {
154 * Autorisation de consulter le forum des administrateurs
156 * Il faut être administrateur (y compris restreint)
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
165 function autoriser_forum_admin_dist($faire, $type, $id, $qui, $opt) {
166 return $qui['statut'] == '0minirezo';
170 * Autorisation d'auto-association de documents sur des forum
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
181 function autoriser_forum_autoassocierdocument_dist($faire, $type, $id, $qui, $opt) {
186 * Autorisation d'association de documents sur des forum
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
197 function autoriser_forum_associerdocuments_dist($faire, $type, $id, $qui, $opt) {
202 * Autorisation de dissociation de documents sur des forum
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
213 function autoriser_forum_dissocierdocuments_dist($faire, $type, $id, $qui, $opt) {
218 * Autorisation de participer au forum des admins
220 * Il faut être administrateur (y compris restreint)
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
229 function autoriser_forumadmin_participer_dist($faire, $type, $id, $qui, $opt) {
230 return ($GLOBALS['meta']['forum_prive_admin'] == 'oui') && $qui['statut'] == '0minirezo';
235 * Autorisation de participer au forum privé d'un objet quelconque
237 * Afin de rester compatible avec l'existant cette autorisation est toujours vraie.
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
246 function autoriser_participerforumprive_dist($faire, $type, $id, $qui, $opt) {
251 * Autorisation de voir le menu configurer_forum
253 * Il faut avoir accès à la page configurer_forum
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
262 function autoriser_configurerforum_menu_dist($faire, $type, $id, $qui, $opt) {
263 return autoriser('configurer', 'forum', $id, $qui, $opt);