source: spip-zone/_plugins_/trad-lang/trunk/tradlang_autoriser.php @ 90095

Last change on this file since 90095 was 76842, checked in by kent1@…, 8 years ago

Bien tester le webmestre grml

File size: 9.5 KB
Line 
1<?php
2/**
3 * Trad-lang v2
4 * Plugin SPIP de traduction de fichiers de langue
5 * © Florent Jugla, Fil, kent1
6 *
7 * Fichier des autorisations spécifiques du plugin
8 *
9 * @package SPIP\Tradlang\Autorisations
10 */
11
12
13if (!defined("_ECRIRE_INC_VERSION")) return;
14
15/**
16 * Fonction pour le pipeline, n'a rien a effectuer
17 *
18 * @return
19 */
20function tradlang_autoriser(){}
21
22/**
23 * Renvoie la liste des auteurs ou des statuts autorises pour une action donnee
24 *
25 * @param string $action
26 *              L'action que l'on souhaite faire
27 * @param boolean $utiliser_defaut [optional]
28 * @return array, boolean
29 */ 
30function definir_autorisations_tradlang($action,$utiliser_defaut=true){
31        $aut = null;
32
33        switch(strtolower($action)){
34                case 'configurer':
35                        $define = (defined('_TRADLANG_AUTORISATION_CONFIGURER')) ? _TRADLANG_AUTORISATION_CONFIGURER : false;
36                        break;
37                case 'modifier':
38                        $define = (defined('_TRADLANG_AUTORISATION_MODIFIER')) ? _TRADLANG_AUTORISATION_MODIFIER : '0minirezo';
39                        break;
40                case 'voir':
41                        $define = (defined('_TRADLANG_AUTORISATION_VOIR')) ? _TRADLANG_AUTORISATION_VOIR : false;
42                        break;
43        }
44
45        if($define){
46                $liste = explode(':', $define);
47                if (in_array('webmestre', $liste))
48                        $aut['auteur'] = explode(':', _ID_WEBMESTRES);
49                else if (in_array('0minirezo', $liste))
50                        $aut['statut'] = array('0minirezo');
51                else if (in_array('1comite', $liste))
52                        $aut['statut'] = array('0minirezo', '1comite');
53                else
54                        $aut['auteur'] = $liste;
55                return $aut;
56        }
57       
58        return false;
59}
60
61/**
62 * Autorisation de configurer et d'administrer trad-lang
63 * Permet de :
64 * - importer un nouveau module de langue
65 * - créer une nouvelle version dans une langue
66 * - synchroniser les fichiers de langue avec la base
67 * - traduire des locutions
68 *
69 * @param string $faire
70 * @param string $type
71 * @param int $id
72 * @param array $qui
73 * @param array $opt
74 * @return boolean
75 */
76function autoriser_tradlang_configurer_dist($faire, $type, $id, $qui, $opt){
77        $autorise = false;
78        $utiliser_defaut = true;
79
80        if(!function_exists('lire_config'))
81                include_spip('inc/config');     
82
83        $type = lire_config('tradlang/autorisations/configurer_type');
84        if($type){
85                switch($type) {
86                        case 'webmestre':
87                                // Webmestres uniquement
88                                $autorise = ($qui['webmestre']=='oui');
89                                break;
90                        case 'par_statut':
91                                // Traitement spécifique pour la valeur 'tous'
92                                if(in_array('tous',lire_config('tradlang/autorisations/configurer_statuts',array('0minirezo'))))
93                                        return true;
94                                // Autorisation par statut
95                                $autorise = in_array($qui['statut'], lire_config('tradlang/autorisations/configurer_statuts',array()));
96                                break;
97                        case 'par_auteur':
98                                // Autorisation par id d'auteurs
99                                $autorise = in_array($qui['id_auteur'], lire_config('tradlang/autorisations/configurer_auteurs',array()));
100                                break;
101                }
102                if($autorise == true)
103                        return $autorise;
104                $utiliser_defaut = false;
105        }
106
107        /**
108         * Si pas de CFG ou pas autorise dans le cfg => on teste les define
109         */
110        $liste = definir_autorisations_tradlang('configurer',$utiliser_defaut);
111        if($liste){
112                if ($liste['statut'])
113                        $autorise = in_array($qui['statut'], $liste['statut']);
114                else if ($liste['auteur'])
115                        $autorise = in_array($qui['id_auteur'], $liste['auteur']);
116                return $autorise;
117        }
118        /**
119         * Si vraiment on n'a rien, on utilise une fonction par défaut
120         */
121        else
122                return autoriser('configurer', 'lang');
123}
124
125/**
126 * Autorisation de modification des locution dans tradlang
127 *
128 * @param string $faire
129 * @param string $type
130 * @param int $id
131 * @param array $qui
132 * @param array $opt
133 * @return boolean
134 */ 
135function autoriser_tradlang_modifier_dist($faire, $type, $id, $qui, $opt){
136        $autorise = false;
137        $utiliser_defaut = true;
138
139        if($qui['webmestre'] == 'oui')
140                return true;
141        /**
142         * Retourner false si c'est une chaîne de la langue mère
143         */
144        if(intval($id) > 0){           
145                $infos_chaine = sql_fetsel('lang,module','spip_tradlangs','id_tradlang='.intval($id));
146                $lang_mere = sql_getfetsel('lang_mere','spip_tradlang_modules','module='.sql_quote($infos_chaine['module']));
147                if($infos_chaine['lang'] == $lang_mere)
148                        return false;
149        }
150       
151        /**
152         * Si on est autoriser à configurer tradlang, on est autorisé à modifier la chaîne
153         */
154        if(autoriser_tradlang_configurer_dist($faire, $type, $id, $qui, $opt))
155                return autoriser_tradlang_configurer_dist($faire, $type, $id, $qui, $opt);
156       
157        if(!function_exists('lire_config'))
158                include_spip('inc/config');
159
160        $type = lire_config('tradlang/modifier_type');
161        if($type){
162                switch($type) {
163                        case 'webmestre':
164                                // Webmestres uniquement
165                                $autorise = ($qui['webmestre']=='oui');
166                                break;
167                        case 'par_statut':
168                                // Traitement spécifique pour la valeur 'tous'
169                                if(in_array('tous',lire_config('tradlang/modifier_statuts',array())))
170                                        return true;
171                                // Autorisation par statut
172                                $autorise = in_array($qui['statut'], lire_config('tradlang/modifier_statuts',array('0minirezo')));
173                                break;
174                        case 'par_auteur':
175                                // Autorisation par id d'auteurs
176                                $autorise = in_array($qui['id_auteur'], lire_config('tradlang/modifier_auteurs',array()));
177                                break;
178                }
179                if($autorise == true)
180                        return $autorise;
181       
182                $utiliser_defaut = false;
183        }
184       
185        // Si $utiliser_defaut = true, on utilisera les valeurs par défaut
186        // Sinon on ajoute la possibilité de régler par define
187        $liste = definir_autorisations_tradlang('modifier',$utiliser_defaut);
188        if ($liste['statut'])
189                $autorise = in_array($qui['statut'], $liste['statut']);
190        else if ($liste['auteur'])
191                $autorise = in_array($qui['id_auteur'], $liste['auteur']);
192        return $autorise;
193}
194
195/**
196 * Autorisation de modification des modules dans tradlang
197 * Utilisée aussi par le crayon d'édition multiple
198 *
199 * @param string $faire
200 * @param string $type
201 * @param int $id
202 * @param array $qui
203 * @param array $opt
204 * @return boolean
205 */ 
206function autoriser_tradlangmodule_modifier_dist($faire, $type, $id, $qui, $opt){
207        $autorise = false;
208        $utiliser_defaut = true;
209       
210        /**
211         * Si on est autoriser à configurer tradlang, on est autorisé à modifier la chaîne
212         */
213        if(autoriser_tradlang_configurer_dist($faire, $type, $id, $qui, $opt))
214                return autoriser_tradlang_configurer_dist($faire, $type, $id, $qui, $opt);
215       
216        if(!function_exists('lire_config'))
217                include_spip('inc/config');
218       
219        $type = lire_config('tradlang/modifier_type');
220        if($type){
221                switch($type) {
222                        case 'webmestre':
223                                // Webmestres uniquement
224                                $autorise = ($qui['webmestre']=='oui');
225                                break;
226                        case 'par_statut':
227                                // Traitement spécifique pour la valeur 'tous'
228                                if(in_array('tous',lire_config('tradlang/modifier_statuts',array())))
229                                        return true;
230                                // Autorisation par statut
231                                $autorise = in_array($qui['statut'], lire_config('tradlang/modifier_statuts',array('0minirezo')));
232                                break;
233                        case 'par_auteur':
234                                // Autorisation par id d'auteurs
235                                $autorise = in_array($qui['id_auteur'], lire_config('tradlang/modifier_auteurs',array()));
236                                break;
237                }
238                if($autorise == true)
239                        return $autorise;
240       
241                $utiliser_defaut = false;
242        }
243       
244        // Si $utiliser_defaut = true, on utilisera les valeurs par défaut
245        // Sinon on ajoute la possibilité de régler par define
246        $liste = definir_autorisations_tradlang('modifier',$utiliser_defaut);
247        if ($liste['statut'])
248                $autorise = in_array($qui['statut'], $liste['statut']);
249        else if ($liste['auteur'])
250                $autorise = in_array($qui['id_auteur'], $liste['auteur']);
251        return $autorise;
252}
253
254/**
255 * Autorisation de voir l'interface de tradlang
256 *
257 * @param string $faire
258 * @param string $type
259 * @param int $id
260 * @param array $qui
261 * @param array $opt
262 * @return boolean
263 */
264function autoriser_tradlang_voir_dist($faire, $type, $id, $qui, $opt){
265        $autorise = false;
266        $utiliser_defaut = true;
267
268        if(autoriser_tradlang_modifier_dist($faire, $type, $id, $qui, $opt))
269                return autoriser_tradlang_modifier_dist($faire, $type, $id, $qui, $opt);
270
271        if(!function_exists('lire_config'))
272                include_spip('inc/config');
273
274        $type = lire_config('tradlang/voir_type');
275        if($type){
276                switch($type) {
277                        case 'webmestre':
278                                // Webmestres uniquement
279                                $autorise = ($qui['webmestre']=='oui');
280                                break;
281                        case 'par_statut':
282                                // Traitement spécifique pour la valeur 'tous'
283                                if(in_array('tous',lire_config('tradlang/voir_statuts',array())))
284                                        return true;
285                                // Autorisation par statut
286                                $autorise = in_array($qui['statut'], lire_config('tradlang/voir_statuts',array('0minirezo','1comite')));
287                                break;
288                        case 'par_auteur':
289                                // Autorisation par id d'auteurs
290                                $autorise = in_array($qui['id_auteur'], lire_config('tradlang/voir_auteurs',array()));
291                                break;
292                }
293                if($autorise == true)
294                        return $autorise;
295               
296                $utiliser_defaut = false;
297        }
298       
299        /**
300         * Si pas de CFG ou pas autorise dans le cfg => on teste les define
301         */
302        $liste = definir_autorisations_tradlang('voir',$utiliser_defaut);
303        if($liste){
304                if ($liste['statut'])
305                        $autorise = in_array($qui['statut'], $liste['statut']);
306                else if ($liste['auteur'])
307                        $autorise = in_array($qui['id_auteur'], $liste['auteur']);
308        }
309        /**
310         * Si vraiment on n'a rien, on utilise une fonction par défaut
311         */
312        else
313                return autoriser('voir','lang');
314}
315
316/**
317 * Autorisation à créer un module de langue
318 * Renvoit false, pour l'instant on force l'usage de salvatore
319 *
320 * @param string $faire
321 * @param string $type
322 * @param int $id
323 * @param array $qui
324 * @param array $opt
325 * @return boolean false
326 */
327function autoriser_tradlangmodule_creer_dist($faire, $type, $id, $qui, $opt){
328        return false;
329}
330
331/**
332 * Autorisation à créer une chaine de langue
333 * Renvoit false, pour l'instant on force l'usage de salvatore
334 *
335 * @param string $faire
336 * @param string $type
337 * @param int $id
338 * @param array $qui
339 * @param array $opt
340 * @return boolean false
341 */
342function autoriser_tradlang_creer_dist($faire, $type, $id, $qui, $opt){
343        return false;
344}
345?>
Note: See TracBrowser for help on using the repository browser.