source: spip-zone/_plugins_/autorite/trunk/inc/autoriser.php @ 85340

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

version 0.10.2 : suivre SPIP pour réparer l'autorisation de publier ouverte aux visiteurs cf http://comments.gmane.org/gmane.comp.web.spip.devel/65505 (merci à jean marie pour les tests)

File size: 20.0 KB
Line 
1<?php
2
3// Ceci est une surcharge de inc/autoriser.php
4//
5// Voir le fichier fonds/cfg_autorite.html pour la definition des reglages
6// et bien sur "ecrire/?exec=cfg&cfg=autorite"
7
8if (!defined("_ECRIRE_INC_VERSION")) return;
9
10define ('_DEBUG_AUTORISER', false);
11$GLOBALS['autorite'] = @unserialize($GLOBALS['meta']['autorite']);
12$autorite_erreurs = array();
13
14// Compatibilite 1.92 : on a besoin de sql_fetch
15if ($GLOBALS['spip_version_code'] < '1.93'
16AND $f = charger_fonction('compat_autorite', 'inc'))
17        $f(array('sql_fetch','sql_count'));
18
19
20//
21// Les DEFINE
22//
23
24if ($GLOBALS['autorite']['statut_auteur_creation']) {
25        if (defined('_STATUT_AUTEUR_CREATION'))
26                $autorite_erreurs[] = 'statut_auteur_creation';
27        else {
28                switch($GLOBALS['autorite']['statut_auteur_creation']) {
29                        case 'visiteur':
30                                define('_STATUT_AUTEUR_CREATION', '6forum');
31                        case 'redacteur':
32                                define('_STATUT_AUTEUR_CREATION', '1comite');
33                        case 'admin':
34                                define('_STATUT_AUTEUR_CREATION', '0minirezo');
35                }
36        }
37}
38
39if ($GLOBALS['autorite']['statut_auteur_rubrique']) {
40        if (defined('_STATUT_AUTEUR_RUBRIQUE'))
41                $autorite_erreurs[] = 'statut_auteur_rubrique';
42        else {
43                switch($GLOBALS['autorite']['statut_auteur_rubrique']) {
44                        case '1':
45                                define('_STATUT_AUTEUR_RUBRIQUE', '0minirezo,1comite');
46                        case '2':
47                                define('_STATUT_AUTEUR_RUBRIQUE', '0minirezo,1comite,6forum');
48                }
49        }
50}
51
52if ($GLOBALS['autorite']['statut_ignorer_admins_restreints'] == 'oui') {
53        if (defined('_ADMINS_RESTREINTS'))
54                $autorite_erreurs[] = 'ignorer_admins_restreints';
55        else
56                define('_ADMINS_RESTREINTS', false);
57}
58
59
60// Charger les versions *_dist des fonctions
61include_once _DIR_RESTREINT.'inc/autoriser.php';
62// si ca n'a pas ete fait et que l'on est dans une version ancienne de spip
63// definir _ID_WEBMESTRES
64if (!defined('_ID_WEBMESTRES')
65        AND include_spip('inc/plugin')
66        AND (!function_exists('spip_version_compare') OR
67        spip_version_compare($GLOBALS['spip_version_branche'],"2.1.0-rc","<"))) {
68        define ('_ID_WEBMESTRES', '1'); // '1:5:90' a regler dans mes_options
69}
70
71
72//
73// Les FONCTIONS
74//
75
76##
77## une fonction qui gere les droits publieurs
78##
79
80if ($GLOBALS['autorite']['espace_publieur']) {
81if (!function_exists('autorisation_publie_visiteur')) {
82        function autorisation_publie_visiteur($qui, $id_secteur) {
83                // espace publieur est un array(secteur1, secteur2), ou un id_secteur
84                if (
85                        (is_array($GLOBALS['autorite']['espace_publieur'])
86                        AND !in_array($id_secteur,$GLOBALS['autorite']['espace_publieur']))
87                AND
88                        $id_secteur != $GLOBALS['autorite']['espace_publieur']
89                )
90                        return false;
91
92                switch($qui['statut']) {
93                        case '0minirezo':
94                        case '1comite':
95                                if ($GLOBALS['autorite']['espace_publieur_redacteurs'])
96                                return true;
97                        case '6forum':
98                                if ($GLOBALS['autorite']['espace_publieur_visiteurs'])
99                                return true;
100                }
101                return false;
102        }
103        } else
104                $autorite_erreurs[] = 'autorisation_publie_visiteur';
105}
106
107##
108## une fonction qui gere les droits wiki
109##
110if ($GLOBALS['autorite']['espace_wiki']) {
111        if (!function_exists('autorisation_wiki_visiteur')) {
112        function autorisation_wiki_visiteur($qui, $id_secteur) {
113                // espace_wiki est un array(secteur1, secteur2), ou un id_secteur
114                if (
115                        (is_array($GLOBALS['autorite']['espace_wiki'])
116                        AND !in_array($id_secteur,$GLOBALS['autorite']['espace_wiki']))
117                AND
118                        $id_secteur != $GLOBALS['autorite']['espace_wiki']
119                )
120                        return false;
121
122                switch($qui['statut']) {
123                        case '0minirezo':
124                        case '1comite':
125                                if ($GLOBALS['autorite']['espace_wiki_redacteurs'])
126                                        return true;
127                        case '6forum':
128                                if ($GLOBALS['autorite']['espace_wiki_visiteurs'])
129                                        return true;
130                        default:
131                                if ($GLOBALS['autorite']['espace_wiki_anonyme'])
132                                        return true;
133                }
134                return false;
135        }
136        } else
137                $autorite_erreurs[] = 'autorisation_wiki_visiteur';
138}
139
140
141##
142## une fonction qui gere les droits wiki géré par mot clef
143##
144if ($GLOBALS['autorite']['espace_wiki_motsclef']) {
145        if (!function_exists('autorisation_wiki_motsclef_visiteur')) {
146        function autorisation_wiki_motsclef_visiteur($qui, $id_article) {
147
148            //determine les mots clef affectés à l'article
149            if (intval($GLOBALS['spip_version_branche'])<3)
150              $s = spip_query("SELECT id_mot FROM spip_mots_articles WHERE id_article=".$id_article);
151            else
152              $s = spip_query("SELECT id_mot FROM spip_mots_liens WHERE objet='article' AND id_objet=".$id_article);
153
154            //obtient la liste des mots clefs affecté à l'article
155        while ( $r = sql_fetch($s) ) { 
156            $array_mot[] = $r['id_mot'];
157        }           
158       
159        //aucun mot clef d'affecter à l'article, rien à faire
160        if (is_null($array_mot))
161            return false;
162                                   
163            //vérification que l'article posséde un mot clef correspondant au staut du visiteur
164                switch($qui['statut']) {
165                        case '0minirezo':
166                        case '1comite':
167                                if (in_array($GLOBALS['autorite']['espace_wiki_motsclef_redacteurs'],$array_mot))
168                                        return true;
169                        case '6forum':
170                                if (in_array($GLOBALS['autorite']['espace_wiki_motsclef_visiteurs'],$array_mot))
171                                        return true;
172                        default:
173                                if (in_array($GLOBALS['autorite']['espace_wiki_motsclef_anonyme'],$array_mot))
174                                        return true;
175                }
176                return false;
177        }
178        } else
179                $autorite_erreurs[] = 'autorisation_wiki_motsclef_visiteur';
180}
181
182
183##
184## autoriser_article_modifier
185##
186if ($GLOBALS['autorite']['auteur_mod_article']
187OR $GLOBALS['autorite']['espace_wiki']
188OR $GLOBALS['autorite']['espace_wiki_motsclef']
189OR $GLOBALS['autorite']['redacteur_mod_article']
190OR false // autre possibilite de surcharge ?
191) {
192if (!function_exists('autoriser_article_modifier')) {
193function autoriser_article_modifier($faire, $type, $id, $qui, $opt) {
194        if (intval($GLOBALS['spip_version_branche'])<3)
195                $auteurs_articles = "spip_auteurs_articles WHERE id_article=";
196        else
197                $auteurs_articles = "spip_auteurs_liens WHERE objet='article' AND id_objet=";
198
199        $s = spip_query(
200        "SELECT id_rubrique,id_secteur,statut FROM spip_articles WHERE id_article="._q($id));
201        $r = sql_fetch($s);
202        include_spip('inc/auth');
203        if (!$GLOBALS['autorite']['espace_publieur'])
204        $a = autoriser('publierdans', 'rubrique', $r['id_rubrique'], $qui, $opt);
205        else {
206        if (!in_array($qui['statut'],array('1comite', '6forum')))
207        $a = autoriser('publierdans', 'rubrique', $r['id_rubrique'], $qui, $opt);       
208        }
209        return
210                $a
211                OR (
212                        // Cas du wiki, on appelle la fonction qui verifie les droits wiki
213                        $GLOBALS['autorite']['espace_wiki']
214                        AND autorisation_wiki_visiteur($qui, $r['id_secteur'])
215                )
216                OR (
217                        // Cas du wiki par mot clefs, on appelle la fonction qui verifie les droits wiki
218                        $GLOBALS['autorite']['espace_wiki_motsclef']
219                        AND autorisation_wiki_motsclef_visiteur($qui, _q($id))
220                )
221                OR (
222                        // auteur autorise a modifier son article
223                        // (sauf si l'article est refuse ou l'auteur mis a la poubelle)
224                        $GLOBALS['autorite']['auteur_mod_article']
225                        AND in_array($qui['statut'],
226                                array('0minirezo', '1comite', '6forum'))
227                        AND in_array($r['statut'],
228                                array('publie', 'prop', 'prepa', 'poubelle'))
229                        AND sql_fetch(spip_query("SELECT * FROM $auteurs_articles".intval($id)." AND id_auteur=".intval($qui['id_auteur'])))
230                )
231                OR (
232                        // un redacteur peut-il modifier un article propose ?
233                        $GLOBALS['autorite']['redacteur_mod_article']
234                        AND in_array($qui['statut'], array('0minirezo', '1comite'))
235                        AND $r['statut']=='prop'
236                )
237                OR (
238                        // un auteur peut modifier son propre article lorsqu'il est proposé ou en cours de rédaction
239                        in_array($qui['statut'], array('0minirezo', '1comite'))
240                        AND in_array($r['statut'], array('prop','prepa'))
241                        AND auteurs_article($id, "id_auteur=".$qui['id_auteur'])
242                );
243}
244function autoriser_rubrique_creerarticledans($faire, $type, $id, $qui, $opt) {
245    return autoriser_rubrique_publierdans($faire, $type, $id, $qui, $opt);
246}
247} else
248        $autorite_erreurs[] = 'autoriser_article_modifier';
249}
250
251
252##
253## autoriser_rubrique_publierdans
254##
255if ($GLOBALS['autorite']['espace_wiki']
256OR $GLOBALS['autorite']['publierdans'] 
257OR false // autre possibilite de surcharge ?
258) {
259if (!function_exists('autoriser_rubrique_publierdans')) {
260function autoriser_rubrique_publierdans($faire, $type, $id, $qui, $opt) {
261       
262        // Si on est deja autorise en standard, dire 'OK'
263        if (!$GLOBALS['autorite']['publierdans']
264                && autoriser_rubrique_publierdans_dist($faire, $type, $id, $qui, $opt))
265                        return true;
266       
267        // Verifions qui a le droit
268        // 1 : webmestre
269        // 2 : admin complet
270        // 4 : admin restreint
271        // 8 : redacteur
272        // cas du redacteur : attention, il faut verifier
273        // aussi qu'il est l'auteur de l'objet publie...
274
275        if (($GLOBALS['autorite']['publierdans'] & 1)
276                && autoriser('webmestre', $type, $id, $qui, $opt))
277                        return true;           
278        if (($GLOBALS['autorite']['publierdans'] & 2)
279                && ($qui['statut'] == '0minirezo')
280                && (!$qui['restreint']))
281                        return true;
282        if (($GLOBALS['autorite']['publierdans'] & 4)   
283                && ($qui['statut'] == '0minirezo')
284                && ($qui['restreint'] AND $id AND in_array($id, $qui['restreint'])))
285                        return true;
286        /*       
287        if (($GLOBALS['autorite']['publierdans'] & 8)
288                && ($qui['statut'] == '1comite'))
289                        return true;
290        */
291        // Sinon, verifier si la rubrique est ouverte aux publieurs
292        // et si on est bien enregistre
293        if ($GLOBALS['autorite']['espace_publieur']) {
294                $s = spip_query(
295                "SELECT id_secteur FROM spip_rubriques WHERE id_rubrique="._q($id));
296                $r = sql_fetch($s);
297
298                if (autorisation_publie_visiteur($qui, $r['id_secteur'])
299                AND ($qui['statut'])
300                )
301                        return true;
302
303        }
304        // Sinon, verifier si la rubrique est wiki
305        // et si on est bien enregistre (sauf cas de creation anonyme explicitement autorisee)
306        if ($GLOBALS['autorite']['espace_wiki']) {
307                $s = spip_query(
308                "SELECT id_secteur FROM spip_rubriques WHERE id_rubrique="._q($id));
309                $r = sql_fetch($s);
310
311                if (autorisation_wiki_visiteur($qui, $r['id_secteur'])
312                AND (
313                        $GLOBALS['autorite']['espace_wiki_rubrique_anonyme']
314                        OR $qui['statut']
315                ))
316                        return true;
317        }
318       
319        // par defaut, NIET
320        return false;
321}
322} else
323        $autorite_erreurs[] = 'autoriser_rubrique_publierdans';
324}
325
326
327##
328## autoriser_rubrique_creerrubriquedans
329##
330if ($GLOBALS['autorite']['interdire_creer_secteur']
331OR $GLOBALS['autorite']['interdire_creer_sousrub']
332OR false // autre possibilite de surcharge ?
333) {
334if (!function_exists('autoriser_rubrique_creerrubriquedans')) {
335function autoriser_rubrique_creerrubriquedans($faire, $type, $id, $qui, $opt) {
336        if ($id == 0
337        AND $GLOBALS['autorite']['interdire_creer_secteur'])
338                return
339                        $GLOBALS['autorite']['interdire_creer_rub_sauf_webmestre']
340                        AND autoriser('webmestre');
341
342        if ($id != 0
343        AND $GLOBALS['autorite']['interdire_creer_sousrub'])
344                return
345                        $GLOBALS['autorite']['interdire_creer_rub_sauf_webmestre']
346                        AND autoriser('webmestre');
347
348        return
349                autoriser_rubrique_creerrubriquedans_dist($faire, $type, $id, $qui, $opt);
350}
351} else
352        $autorite_erreurs[] = 'autoriser_rubrique_creerrubriquedans';
353}
354
355
356
357##
358## autoriser_auteur_modifier
359##
360if ($GLOBALS['autorite']['auteur_mod_email']
361OR false // autre possibilite de surcharge ?
362) {
363if (!function_exists('autoriser_auteur_modifier')) {
364function autoriser_auteur_modifier($faire, $type, $id, $qui, $opt) {
365        if ($GLOBALS['autorite']['auteur_mod_email']) {
366                unset($opt['email']);
367        }
368        return autoriser_auteur_modifier_dist($faire, $type, $id, $qui, $opt);
369}
370} else
371        $autorite_erreurs[] = 'autoriser_auteur_modifier';
372}
373
374
375##
376## autoriser_modererforum
377##
378if (!function_exists('autoriser_modererforum')) {
379function autoriser_modererforum($faire, $type, $id, $qui, $opt) {
380        if (intval($GLOBALS['spip_version_branche'])<3)
381                $auteurs_articles = "spip_auteurs_articles WHERE id_article=";
382        else
383                $auteurs_articles = "spip_auteurs_liens WHERE objet='article' AND id_objet=";
384
385        return
386                ($qui['statut']=='0minirezo')
387                OR  (
388                        $GLOBALS['autorite']['auteur_modere_forum']
389                        AND $type == 'article'
390                        AND in_array($qui['statut'], array('0minirezo', '1comite'))
391                        AND sql_fetch(spip_query("SELECT * FROM $auteurs_articles".intval($id)." AND id_auteur=".intval($qui['id_auteur'])))
392                );
393}
394}
395
396##
397## autoriser_modererpetition
398##
399if (!function_exists('autoriser_modererpetition')) {
400function autoriser_modererpetition($faire, $type, $id, $qui, $opt) {
401        if (intval($GLOBALS['spip_version_branche'])<3)
402                $auteurs_articles = "spip_auteurs_articles WHERE id_article=";
403        else
404                $auteurs_articles = "spip_auteurs_liens WHERE objet='article' AND id_objet=";
405        return
406                ($qui['statut']=='0minirezo')
407                OR  (
408                        $GLOBALS['autorite']['auteur_modere_petition']
409                        AND $type == 'article'
410                        AND in_array($qui['statut'], array('0minirezo', '1comite'))
411                        AND sql_fetch(spip_query("SELECT * FROM $auteurs_articles".intval($id)." AND id_auteur=".intval($qui['id_auteur'])))
412                );
413}
414} 
415
416##
417## autoriser_voirstats
418##
419if ($GLOBALS['autorite']['redacteurs_lire_stats']
420OR false // autre possibilite de surcharge ?
421) {
422if (!function_exists('autoriser_voirstats')) {
423function autoriser_voirstats($faire, $type, $id, $qui, $opt) {
424        return
425                $GLOBALS['autorite']['redacteurs_lire_stats']
426                        ? in_array($qui['statut'], array('0minirezo', '1comite'))
427                        : $qui['statut'] == '0minirezo';
428}
429} else
430        $autorite_erreurs[] = 'autoriser_voirstats';
431}
432
433
434// Autoriser a modifier un groupe de mots $id
435// y compris en ajoutant/modifiant les mots lui appartenant
436// http://doc.spip.org/@autoriser_groupemots_modifier
437##
438## autoriser_groupemots_modifier
439##
440if ($GLOBALS['autorite']['editer_mots']
441OR false // autre possibilite de surcharge ?
442) {
443if (!function_exists('autoriser_groupemots_modifier')) {
444function autoriser_groupemots_modifier($faire, $type, $id, $qui, $opt) {
445        return (
446                $qui['statut'] == '0minirezo'
447                AND (
448                        !$qui['restreint']
449                        OR
450                        $GLOBALS['autorite']['editer_mots'] >= 1
451                )
452        ) OR (
453                $qui['statut'] == '1comite'
454                AND $GLOBALS['autorite']['editer_mots'] >= 2
455        );
456}
457        # signaler un risque de bug avec un autoriser_mot_modifier personnalise
458        if (function_exists('autoriser_mot_modifier'))
459                $autorite_erreurs[] = 'autoriser_mot_modifier';
460               
461// la config d'autorite sur le groupe de mot doit être idem sur les mots
462        function autoriser_mot_modifier($faire, $type, $id, $qui, $opt) {
463                return autoriser_groupemots_modifier($faire, $type, $id, $qui, $opt);
464        }
465        function autoriser_mot_creer($faire, $type, $id, $qui, $opt) {
466                return autoriser_groupemots_modifier($faire, $type, $id, $qui, $opt);
467        }
468               
469} else
470        $autorite_erreurs[] = 'autoriser_groupemots_modifier';
471}
472
473##
474## Modifier un forum ?
475## A noter : il n'existe pas d'interface dans SPIP, il faut utiliser les crayons
476## TODO : cookie specialise (voir commentaires dans cfg_autorite.html)
477##
478if ($GLOBALS['autorite']['editer_forums']
479OR false // autre possibilite de surcharge ?
480) {
481if (!function_exists('autoriser_forum_modifier')) {
482function autoriser_forum_modifier($faire, $type, $id, $qui, $opt) {
483
484        // Le webmestre
485        if ($GLOBALS['autorite']['editer_forums'] >= 1
486        AND autoriser('webmestre', $type, $id, $qui, $opt))
487                return true;
488
489        // Les admins
490        if (
491                $GLOBALS['autorite']['editer_forums'] >= 2
492                AND $qui['statut'] == '0minirezo'
493                AND !$qui['restreint']
494        )
495                return true;
496
497
498
499        // Les admins restreint pour les articles attachés à une rubrique dont ils sont admins
500        if ($GLOBALS['autorite']['editer_forums'] >= 2 AND $qui['statut'] == '0minirezo') {
501              $id=intval($id); // ?
502              if (intval($GLOBALS['spip_version_branche']) < 3 ){
503                  $id_rubrique = sql_getfetsel("id_rubrique", "spip_forum", "id_forum=$id");
504                  if (!$id_rubrique AND ($id_article = sql_getfetsel("id_article", "spip_forum", "id_forum=$id") ))
505                      $id_rubrique = sql_getfetsel("id_rubrique", "spip_articles", "id_article=$id_article");
506                  if (!$id_rubrique AND ($id_breve = sql_getfetsel("id_breve", "spip_forum", "id_forum=$id")))
507                      $id_rubrique = sql_getfetsel("id_rubrique", "spip_breves", "id_breve=$id_breve");
508              } else {
509                      $objet = sql_getfetsel("objet", "spip_forum", "id_forum=$id");
510                      $id_objet = sql_getfetsel("id_objet", "spip_forum", "id_forum=$id AND objet='$objet'");
511                      if ($objet == "rubrique")
512                          $id_rubrique=$id_objet;
513                      else if ($objet == "article")
514                          $id_rubrique=sql_getfetsel("id_rubrique", "spip_articles", "id_article=$id_objet");
515                      else if ($objet == "breve")
516                          $id_rubrique=sql_getfetsel("id_rubrique", "spip_breves", "id_breve=$id_objet");
517              }
518              return ($id_rubrique AND in_array ($id_rubrique, $qui['restreint']));
519        }
520
521
522
523        // L'auteur du message (enregistre')
524        // 2 = avec une periode de grace d'une heure
525        // 3 = ad vitam
526        if ($GLOBALS['autorite']['editer_forums'] >= 3
527        AND isset($qui['id_auteur'])) {
528                $q = "SELECT id_forum FROM spip_forum WHERE id_forum="._q($id)." AND id_auteur="._q($qui['id_auteur']);
529                if ($GLOBALS['autorite']['editer_forums'] == 3)
530                        $q .= " AND date_heure > DATE_SUB(NOW(), INTERVAL 1 HOUR)";
531                $s = spip_query($q);
532                if (sql_count($s))
533                        return true;
534        }
535
536        // par defaut
537        return autoriser_forum_modifier_dist($faire, $type, $id, $qui, $opt);
538
539}
540} else
541        $autorite_erreurs[] = 'autoriser_forum_modifier';
542}
543
544##
545## Modifier une signature ?
546## A noter : il n'existe pas d'interface dans SPIP, il faut utiliser les crayons
547## TODO : cookie specialise (voir commentaires dans cfg_autorite.html)
548##
549if ($GLOBALS['autorite']['editer_signatures']
550OR false // autre possibilite de surcharge ?
551) {
552if (!function_exists('autoriser_signature_modifier')) {
553function autoriser_signature_modifier($faire, $type, $id, $qui, $opt) {
554
555        // Le webmestre
556        if ($GLOBALS['autorite']['editer_signatures'] >= 1
557        AND autoriser('webmestre', $type, $id, $qui, $opt))
558                return true;
559
560        // Les admins
561        if (
562                $GLOBALS['autorite']['editer_signatures'] >= 2
563                AND $qui['statut'] == '0minirezo'
564                AND !$qui['restreint']
565        )
566                return true;
567
568        // par defaut
569        return autoriser_signature_modifier_dist($faire, $type, $id, $qui, $opt);
570}
571} else
572        $autorite_erreurs[] = 'autoriser_signature_modifier';
573}
574
575
576##
577## autoriser_configurer (pages de configuration)
578##
579if ($GLOBALS['autorite']['configurer']
580OR $GLOBALS['autorite']['configurer_plugin']
581) {
582if (!function_exists('autoriser_configurer')) {
583function autoriser_configurer($faire, $type, $id, $qui, $opt) {
584        // TODO:
585        // cas particulier : configurer les plugins doit etre bloque
586        // en mode 'webmestre', sinon on pourrait desactiver autorite.
587        // mais comment faire pour ne pas bloquer quelqu'un qui installe
588        // ce plugin alors qu'il est id_auteur > 1 ?
589        if (in_array($type, array('plugins', 'admin_plugin'))) {
590                if ($GLOBALS['autorite']['configurer_plugin'] == 'webmestre')
591                        return autoriser('webmestre');
592        }
593
594        if ($GLOBALS['autorite']['configurer'] == 'webmestre')
595                return autoriser('webmestre');
596        else
597                return autoriser('x'); // autorisation par defaut
598}
599} else
600        $autorite_erreurs[] = 'autoriser_configurer';
601}
602
603##
604## autoriser_sauvegarder (faire un backup partiel ou complet)
605##
606if ($GLOBALS['autorite']['sauvegarder']
607OR false // autre possibilite de surcharge ?
608) {
609if (!function_exists('autoriser_sauvegarder')) {
610function autoriser_sauvegarder($faire, $type, $id, $qui, $opt) {
611
612        if ($GLOBALS['autorite']['sauvegarder'] == 'webmestre')
613                return autoriser('webmestre');
614
615        // admins y compris restreints
616        if ($GLOBALS['autorite']['sauvegarder'] == 'minirezo')
617                return
618                        $qui['statut'] == '0minirezo';
619
620        // version normale
621        if ($GLOBALS['autorite']['sauvegarder'] == ''
622        OR $GLOBALS['autorite']['sauvegarder'] == 'admin' # jusque v0.7 de ce plugin
623        )
624                return
625                        $qui['statut'] == '0minirezo'
626                        AND !$qui['restreint'];
627}
628} else
629        $autorite_erreurs[] = 'autoriser_sauvegarder';
630}
631
632##
633## autoriser_detruire (vider la base de donnees)
634##
635if ($GLOBALS['autorite']['detruire']
636OR false // autre possibilite de surcharge ?
637) {
638if (!function_exists('autoriser_detruire')) {
639function autoriser_detruire($faire, $type, $id, $qui, $opt) {
640
641        if ($GLOBALS['autorite']['detruire'] == 'webmestre')
642                return autoriser('webmestre');
643
644        if ($GLOBALS['autorite']['detruire'] == 'non')
645                return false;
646
647        // Par defaut, idem configuration
648        return autoriser('configurer');
649}
650} else
651        $autorite_erreurs[] = 'autoriser_detruire';
652}
653
654##
655## autoriser_ecrire
656##
657if ($GLOBALS['autorite']['redacteurs_ecrire']
658OR false // autre possibilite de surcharge ?
659) {
660if (!function_exists('autoriser_ecrire')) {
661function autoriser_ecrire($faire, $type, $id, $qui, $opt) {
662    return
663        $GLOBALS['autorite']['redacteurs_ecrire']
664            ? $qui['statut'] == '0minirezo'
665            : in_array($qui['statut'], array('0minirezo', '1comite'));
666}
667} else
668    $autorite_erreurs[] = 'autoriser_ecrire';
669}
670
671if ($autorite_erreurs) $GLOBALS['autorite_erreurs'] = $autorite_erreurs;
672
673
674?>
Note: See TracBrowser for help on using the repository browser.