source: spip-zone/_plugins_/selections_editoriales/trunk/selections_editoriales_autorisations.php @ 88212

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

2 bugfixs : auteurs_objet existe deja dans d'autres plugins, on la prefix pour eviter les collisions + nom de la boucle dans le resume/selections_contenu

File size: 8.6 KB
Line 
1<?php
2/**
3 * Définit les autorisations du plugin Sélections éditoriales
4 *
5 * @plugin     Sélections éditoriales
6 * @copyright  2014
7 * @author     Les Développements Durables
8 * @licence    GNU/GPL v3
9 * @package    SPIP\Selections_editoriales\Autorisations
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) return;
13
14
15/**
16 * Fonction d'appel pour le pipeline
17 * @pipeline autoriser */
18function selections_editoriales_autoriser(){}
19
20
21// -----------------
22// Objet selections
23
24
25/**
26 * Autorisation de voir un élément de menu (selections)
27 *
28 * @param  string $faire Action demandée
29 * @param  string $type  Type d'objet sur lequel appliquer l'action
30 * @param  int    $id    Identifiant de l'objet
31 * @param  array  $qui   Description de l'auteur demandant l'autorisation
32 * @param  array  $opt   Options de cette autorisation
33 * @return bool          true s'il a le droit, false sinon
34**/
35function autoriser_selections_menu_dist($faire, $type, $id, $qui, $opt){
36        return true;
37} 
38
39
40/**
41 * Autorisation de voir le bouton d'accès rapide de création (selection)
42 * - pouvoir créer une sélection
43 *
44 * @param  string $faire Action demandée
45 * @param  string $type  Type d'objet sur lequel appliquer l'action
46 * @param  int    $id    Identifiant de l'objet
47 * @param  array  $qui   Description de l'auteur demandant l'autorisation
48 * @param  array  $opt   Options de cette autorisation
49 * @return bool          true s'il a le droit, false sinon
50**/
51function autoriser_selectioncreer_menu_dist($faire, $type, $id, $qui, $opt){
52        return autoriser('creer', 'selection', '', $qui, $opt);
53} 
54
55/**
56 * Autorisation de créer (selection)
57 * - au moins rédacteur
58 *
59 * @param  string $faire Action demandée
60 * @param  string $type  Type d'objet sur lequel appliquer l'action
61 * @param  int    $id    Identifiant de l'objet
62 * @param  array  $qui   Description de l'auteur demandant l'autorisation
63 * @param  array  $opt   Options de cette autorisation
64 * @return bool          true s'il a le droit, false sinon
65**/
66function autoriser_selection_creer_dist($faire, $type, $id, $qui, $opt) {
67        return $qui['statut'] <= '1comite'; 
68}
69
70/**
71 * Autorisation de voir (selection)
72 * - tout le monde
73 *
74 * @param  string $faire Action demandée
75 * @param  string $type  Type d'objet sur lequel appliquer l'action
76 * @param  int    $id    Identifiant de l'objet
77 * @param  array  $qui   Description de l'auteur demandant l'autorisation
78 * @param  array  $opt   Options de cette autorisation
79 * @return bool          true s'il a le droit, false sinon
80**/
81function autoriser_selection_voir_dist($faire, $type, $id, $qui, $opt) {
82        return true;
83}
84
85/**
86 * Autorisation de modifier (selection)
87 * - être admin complet
88 * - ou faire partie des auteurs liés
89 *
90 * @param  string $faire Action demandée
91 * @param  string $type  Type d'objet sur lequel appliquer l'action
92 * @param  int    $id    Identifiant de l'objet
93 * @param  array  $qui   Description de l'auteur demandant l'autorisation
94 * @param  array  $opt   Options de cette autorisation
95 * @return bool          true s'il a le droit, false sinon
96**/
97function autoriser_selection_modifier_dist($faire, $type, $id, $qui, $opt) {
98        $ok = (
99                ($qui['statut'] == '0minirezo' and !$qui['restreint'])
100                or ($auteurs = selections_auteurs_objet('selection', intval($id)) and in_array($qui['id_auteur'], $auteurs))
101        );
102       
103        return $ok;
104}
105
106/**
107 * Autorisation de supprimer (selection)
108 * - pouvoir modifier la sélection
109 * - et qu'elle soit vide de contenus
110 *
111 * @param  string $faire Action demandée
112 * @param  string $type  Type d'objet sur lequel appliquer l'action
113 * @param  int    $id    Identifiant de l'objet
114 * @param  array  $qui   Description de l'auteur demandant l'autorisation
115 * @param  array  $opt   Options de cette autorisation
116 * @return bool          true s'il a le droit, false sinon
117**/
118function autoriser_selection_supprimer_dist($faire, $type, $id, $qui, $opt) {
119        $ok = (
120                autoriser('modifier', $type, $id, $qui, $opt)
121                and !sql_countsel('spip_selections_contenus', 'id_selection = '.intval($id))
122        );
123       
124        return $ok;
125}
126
127/**
128 * Autorisation de créer des contenus dans une sélection
129 * - pouvoir modifier la sélection
130 * - ne pas dépasser le nombre limite de contenu s'il existe
131 *
132 * @param  string $faire Action demandée
133 * @param  string $type  Type d'objet sur lequel appliquer l'action
134 * @param  int    $id    Identifiant de l'objet
135 * @param  array  $qui   Description de l'auteur demandant l'autorisation
136 * @param  array  $opt   Options de cette autorisation
137 * @return bool          true s'il a le droit, false sinon
138**/
139function autoriser_selection_creerselectionscontenudans_dist($faire, $type, $id, $qui, $opt) {
140        $id_selection = intval($id);
141       
142        $ok = (
143                autoriser('modifier', $type, $id, $qui, $opt)
144                and (
145                        !$limite = intval(sql_getfetsel('limite', 'spip_selections', 'id_selection = '.$id_selection))
146                        or
147                        $limite > sql_countsel('spip_selections_contenus', 'id_selection = '.$id_selection)
148                )
149        );
150       
151        return $ok;
152}
153
154/**
155 * Autorisation de lier/délier l'élément (selections)
156 * - pouvoir modifier l'objet où l'on se trouve
157 * - et qu'il fasse partie des objets configurés
158 *
159 * @param  string $faire Action demandée
160 * @param  string $type  Type d'objet sur lequel appliquer l'action
161 * @param  int    $id    Identifiant de l'objet
162 * @param  array  $qui   Description de l'auteur demandant l'autorisation
163 * @param  array  $opt   Options de cette autorisation
164 * @return bool          true s'il a le droit, false sinon
165**/
166function autoriser_associerselections_dist($faire, $type, $id, $qui, $opt) {
167        include_spip('inc/config');
168        include_spip('base/objets');
169       
170        $ok = (
171                $objets = lire_config('selections_editoriales/objets')
172                and is_array($objets)
173                and in_array(table_objet_sql($type), $objets)
174                and autoriser('modifier', $type, $id, $qui, $opt)
175        );
176       
177        return $ok;
178}
179
180
181// -----------------
182// Objet selections_contenus
183
184
185/**
186 * Autorisation de créer (selectionscontenu)
187 *
188 * @param  string $faire Action demandée
189 * @param  string $type  Type d'objet sur lequel appliquer l'action
190 * @param  int    $id    Identifiant de l'objet
191 * @param  array  $qui   Description de l'auteur demandant l'autorisation
192 * @param  array  $opt   Options de cette autorisation
193 * @return bool          true s'il a le droit, false sinon
194**/
195function autoriser_selectionscontenu_creer_dist($faire, $type, $id, $qui, $opt) {
196        return in_array($qui['statut'], array('0minirezo', '1comite')); 
197}
198
199/**
200 * Autorisation de voir (selectionscontenu)
201 * - tout le monde
202 *
203 * @param  string $faire Action demandée
204 * @param  string $type  Type d'objet sur lequel appliquer l'action
205 * @param  int    $id    Identifiant de l'objet
206 * @param  array  $qui   Description de l'auteur demandant l'autorisation
207 * @param  array  $opt   Options de cette autorisation
208 * @return bool          true s'il a le droit, false sinon
209**/
210function autoriser_selectionscontenu_voir_dist($faire, $type, $id, $qui, $opt) {
211        return true;
212}
213
214/**
215 * Autorisation de modifier (selectionscontenu)
216 * - pouvoir modifier la sélection parente
217 *
218 * @param  string $faire Action demandée
219 * @param  string $type  Type d'objet sur lequel appliquer l'action
220 * @param  int    $id    Identifiant de l'objet
221 * @param  array  $qui   Description de l'auteur demandant l'autorisation
222 * @param  array  $opt   Options de cette autorisation
223 * @return bool          true s'il a le droit, false sinon
224**/
225function autoriser_selectionscontenu_modifier_dist($faire, $type, $id, $qui, $opt) {
226        $ok = (
227                (
228                        $id_selection = intval($opt['id_selection'])
229                        or $id_selection = sql_getfetsel('id_selection', 'spip_selections_contenus', 'id_selections_contenu = '.intval($id))
230                )
231                and autoriser('modifier', 'selection', $id_selection, $qui, $opt)
232        );
233       
234        return $ok;
235}
236
237/**
238 * Autorisation de supprimer (selectionscontenu)
239 * - pouvoir modifier le contenu
240 *
241 * @param  string $faire Action demandée
242 * @param  string $type  Type d'objet sur lequel appliquer l'action
243 * @param  int    $id    Identifiant de l'objet
244 * @param  array  $qui   Description de l'auteur demandant l'autorisation
245 * @param  array  $opt   Options de cette autorisation
246 * @return bool          true s'il a le droit, false sinon
247**/
248function autoriser_selectionscontenu_supprimer_dist($faire, $type, $id, $qui, $opt) {
249        return autoriser('modifier', $type, $id, $qui, $opt);
250}
251
252/**
253 * Lister les auteurs d'un objet
254 *
255 * @param string $objet Type de l'objet
256 * @param int $id_objet Identifiant de l'objet
257 * @param string $cond='' Condition supplémentaire
258 * @return array Retourne une liste d'identifiant d'auteurs
259 */
260function selections_auteurs_objet($objet, $id_objet, $cond='') {
261        return sql_allfetsel("id_auteur", "spip_auteurs_liens", "objet='$objet' AND id_objet=".sql_quote($id_objet). ($cond ? " AND $cond" : ''));
262}
263
Note: See TracBrowser for help on using the repository browser.