source: spip-zone/_plugins_/encarts/trunk/encarts_autorisations.php @ 100136

Last change on this file since 100136 was 100136, checked in by teddy.spip@…, 5 years ago
  • Retour du traitement des balises <encart> et <marge> dans le texte ;
  • Intégration de la liste des articles auxquels l'encart est lié dans sa fiche au lieu de la zone d'extra ;
  • On a maintenant une liaison plus classique des encarts, à la méthode de SPIP. On verra au retour des utilisateurs si on garde cette affichage ou pas.
  • Grosse mise à niveau, donc, up de y.
File size: 6.8 KB
Line 
1<?php
2/**
3 * Définit les autorisations du plugin encarts
4 *
5 * @plugin     encarts
6 * @copyright  2013-2016
7 * @author     Cyril
8 * @licence    GNU/GPL
9 * @package    SPIP\Encarts\Autorisations
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) {
13        return;
14}
15
16
17/*
18 * Un fichier d'autorisations permet de regrouper
19 * les fonctions d'autorisations de votre plugin
20 */
21
22/**
23 * Fonction d'appel pour le pipeline
24 *
25 * @pipeline autoriser
26 */
27function encarts_autoriser() { }
28
29
30/* Exemple
31function autoriser_configurer_encarts_dist($faire, $type, $id, $qui, $opt) {
32        // type est un objet (la plupart du temps) ou une chose.
33        // autoriser('configurer', '_encarts') => $type = 'encarts'
34        // au choix
35        return autoriser('webmestre', $type, $id, $qui, $opt); // seulement les webmestres
36        return autoriser('configurer', '', $id, $qui, $opt); // seulement les administrateurs complets
37        return $qui['statut'] == '0minirezo'; // seulement les administrateurs (même les restreints)
38        // ...
39}
40*/
41
42// -----------------
43// Objet encarts
44
45
46/**
47 * Autorisation de voir un élément de menu (encarts)
48 *
49 * @param  string $faire Action demandée
50 * @param  string $type Type d'objet sur lequel appliquer l'action
51 * @param  int $id Identifiant de l'objet
52 * @param  array $qui Description de l'auteur demandant l'autorisation
53 * @param  array $opt Options de cette autorisation
54 * @return bool          true s'il a le droit, false sinon
55 **/
56function autoriser_encarts_menu_dist($faire, $type, $id, $qui, $opt) {
57        return true;
58}
59
60
61/**
62 * Autorisation de voir le bouton d'accès rapide de création (encart)
63 *
64 * @param  string $faire Action demandée
65 * @param  string $type Type d'objet sur lequel appliquer l'action
66 * @param  int $id Identifiant de l'objet
67 * @param  array $qui Description de l'auteur demandant l'autorisation
68 * @param  array $opt Options de cette autorisation
69 * @return bool          true s'il a le droit, false sinon
70 **/
71function autoriser_encartcreer_menu_dist($faire, $type, $id, $qui, $opt) {
72        include_spip('inc/autoriser');
73        return autoriser('creer', 'encart', '', $qui, $opt);
74}
75
76/**
77 * Autorisation de créer (encart)
78 *
79 * @param  string $faire Action demandée
80 * @param  string $type Type d'objet sur lequel appliquer l'action
81 * @param  int $id Identifiant de l'objet
82 * @param  array $qui Description de l'auteur demandant l'autorisation
83 * @param  array $opt Options de cette autorisation
84 * @return bool          true s'il a le droit, false sinon
85 **/
86function autoriser_encart_creer_dist($faire, $type, $id, $qui, $opt) {
87        return in_array($qui['statut'], array('0minirezo', '1comite'));
88}
89
90/**
91 * Autorisation de voir (encart)
92 *
93 * @param  string $faire Action demandée
94 * @param  string $type Type d'objet sur lequel appliquer l'action
95 * @param  int $id Identifiant de l'objet
96 * @param  array $qui Description de l'auteur demandant l'autorisation
97 * @param  array $opt Options de cette autorisation
98 * @return bool          true s'il a le droit, false sinon
99 **/
100function autoriser_encart_voir_dist($faire, $type, $id, $qui, $opt) {
101        return true;
102}
103
104/**
105 * Autorisation de modifier (encart)
106 *
107 * @param  string $faire Action demandée
108 * @param  string $type Type d'objet sur lequel appliquer l'action
109 * @param  int $id Identifiant de l'objet
110 * @param  array $qui Description de l'auteur demandant l'autorisation
111 * @param  array $opt Options de cette autorisation
112 * @return bool          true s'il a le droit, false sinon
113 **/
114function autoriser_encart_modifier_dist($faire, $type, $id, $qui, $opt) {
115        return in_array($qui['statut'], array('0minirezo', '1comite'));
116}
117
118/**
119 * Autorisation de supprimer (encart)
120 *
121 * @param  string $faire Action demandée
122 * @param  string $type Type d'objet sur lequel appliquer l'action
123 * @param  int $id Identifiant de l'objet
124 * @param  array $qui Description de l'auteur demandant l'autorisation
125 * @param  array $opt Options de cette autorisation
126 * @return bool          true s'il a le droit, false sinon
127 **/
128function autoriser_encart_supprimer_dist($faire, $type, $id, $qui, $opt) {
129        return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
130}
131
132/**
133 * Autorisation à associer un encart à un objet donné.
134 *
135 * Il faut pouvoir modifier l'objet
136 * ou être admin complet
137 *
138 * @example
139 *     ```
140 *     #AUTORISER{associer,encart,#ID_ENCART,'',#ARRAY{objet,#OBJET,id_objet,#ID_OBJET}}
141 *     ```
142 *
143 * @param  string $faire Action demandée
144 * @param  string $type Type d'objet auquel on veut associer un encart
145 * @param  int $id Identifiant de l'objet auquel on veut associer un encart
146 * @param  array $qui Description de l'auteur demandant l'autorisation
147 * @param  array $opts Options de cette autorisation
148 *                       Doit contenir les clés `objet` et `id_objet`
149 *                       pour rensigner le type et l'identifiant de l'objet
150 * @return bool          true s'il a le droit, false sinon
151 **/
152function autoriser_encart_associer_dist($faire, $type, $id, $qui, $opts) {
153        include_spip('inc/autoriser');
154        $autoriser = (
155                ($qui['statut'] == '0minirezo' AND !$qui['restreint'])
156                OR (autoriser('modifier', $opts['objet'], $opts['id_objet'], $qui))
157        ) ? true : false;
158
159        return $autoriser;
160}
161
162/**
163 * Autorisation à dissocier un encart d'un objet donné.
164 *
165 * Il faut être autorisé à associer un encart à l'objet,
166 * et qu'il ne soit pas inséré dans le texte.
167 *
168 * @example
169 *     ```
170 *     #AUTORISER{dissocier,encart,#ID_ENCART,'',#ARRAY{objet,#OBJET,id_objet,#ID_OBJET}}
171 *     ```
172 *
173 * @param  string $faire Action demandée
174 * @param  string $type Type d'objet sur lequel appliquer l'action
175 * @param  int $id Identifiant de l'objet
176 * @param  array $qui Description de l'auteur demandant l'autorisation
177 * @param  array $opts Options de cette autorisation
178 *                       Doit contenir les clés `objet` et `id_objet`
179 *                       pour renseigner le type et l'identifiant de l'objet
180 * @return bool          true s'il a le droit, false sinon
181 */
182function autoriser_encart_dissocier_dist($faire, $type, $id, $qui, $opts) {
183        include_spip('base/abstract_sql');
184        include_spip('inc/autoriser');
185        $autoriser = (
186                autoriser('associer', 'encart', $id, $qui, $opts)
187                AND (sql_getfetsel('vu', "spip_encarts_liens", "id_encart=" . intval($id) . " AND objet=" . sql_quote($opts['objet']) . " AND id_objet=" . intval($opts['id_objet'])) == 'non')
188        ) ? true : false;
189
190        return $autoriser;
191}
192
193
194/**
195 * Autorisation de lier/délier l'élément (encarts)
196 *
197 * @param  string $faire Action demandée
198 * @param  string $type Type d'objet sur lequel appliquer l'action
199 * @param  int $id Identifiant de l'objet
200 * @param  array $qui Description de l'auteur demandant l'autorisation
201 * @param  array $opt Options de cette autorisation
202 * @return bool          true s'il a le droit, false sinon
203 **/
204function autoriser_associerencarts_dist($faire, $type, $id, $qui, $opt) {
205        return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
206}
207
Note: See TracBrowser for help on using the repository browser.