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

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

pétouille de cmmentaires

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