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

Last change on this file since 65558 was 65558, checked in by gouz@…, 9 years ago

Correction : possibilite pour des admins restreint de moderer les forums pour lesquels ils sont admins de la rubrique (et uniquement pour ceux la)

File size: 19.4 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}
244} else
245        $autorite_erreurs[] = 'autoriser_article_modifier';
246}
247
248
249##
250## autoriser_rubrique_publierdans
251##
252if ($GLOBALS['autorite']['espace_wiki']
253OR $GLOBALS['autorite']['publierdans'] 
254OR false // autre possibilite de surcharge ?
255) {
256if (!function_exists('autoriser_rubrique_publierdans')) {
257function autoriser_rubrique_publierdans($faire, $type, $id, $qui, $opt) {
258       
259        // Si on est deja autorise en standard, dire 'OK'
260        if (!$GLOBALS['autorite']['publierdans']
261                && autoriser_rubrique_publierdans_dist($faire, $type, $id, $qui, $opt))
262                        return true;
263       
264        // Verifions qui a le droit
265        // 1 : webmestre
266        // 2 : admin complet
267        // 4 : admin restreint
268        // 8 : redacteur
269        // cas du redacteur : attention, il faut verifier
270        // aussi qu'il est l'auteur de l'objet publie...
271
272        if (($GLOBALS['autorite']['publierdans'] & 1)
273                && autoriser('webmestre', $type, $id, $qui, $opt))
274                        return true;           
275        if (($GLOBALS['autorite']['publierdans'] & 2)
276                && ($qui['statut'] == '0minirezo')
277                && (!$qui['restreint']))
278                        return true;
279        if (($GLOBALS['autorite']['publierdans'] & 4)   
280                && ($qui['statut'] == '0minirezo')
281                && ($qui['restreint'] AND $id AND in_array($id, $qui['restreint'])))
282                        return true;
283        /*       
284        if (($GLOBALS['autorite']['publierdans'] & 8)
285                && ($qui['statut'] == '1comite'))
286                        return true;
287        */
288        // Sinon, verifier si la rubrique est ouverte aux publieurs
289        // et si on est bien enregistre
290        if ($GLOBALS['autorite']['espace_publieur']) {
291                $s = spip_query(
292                "SELECT id_secteur FROM spip_rubriques WHERE id_rubrique="._q($id));
293                $r = sql_fetch($s);
294
295                if (autorisation_publie_visiteur($qui, $r['id_secteur'])
296                AND ($qui['statut'])
297                )
298                        return true;
299
300        }
301        // Sinon, verifier si la rubrique est wiki
302        // et si on est bien enregistre (sauf cas de creation anonyme explicitement autorisee)
303        if ($GLOBALS['autorite']['espace_wiki']) {
304                $s = spip_query(
305                "SELECT id_secteur FROM spip_rubriques WHERE id_rubrique="._q($id));
306                $r = sql_fetch($s);
307
308                if (autorisation_wiki_visiteur($qui, $r['id_secteur'])
309                AND (
310                        $GLOBALS['autorite']['espace_wiki_rubrique_anonyme']
311                        OR $qui['statut']
312                ))
313                        return true;
314        }
315       
316        // par defaut, NIET
317        return false;
318}
319} else
320        $autorite_erreurs[] = 'autoriser_rubrique_publierdans';
321}
322
323
324##
325## autoriser_rubrique_creerrubriquedans
326##
327if ($GLOBALS['autorite']['interdire_creer_secteur']
328OR $GLOBALS['autorite']['interdire_creer_sousrub']
329OR false // autre possibilite de surcharge ?
330) {
331if (!function_exists('autoriser_rubrique_creerrubriquedans')) {
332function autoriser_rubrique_creerrubriquedans($faire, $type, $id, $qui, $opt) {
333        if ($id == 0
334        AND $GLOBALS['autorite']['interdire_creer_secteur'])
335                return
336                        $GLOBALS['autorite']['interdire_creer_rub_sauf_webmestre']
337                        AND autoriser('webmestre');
338
339        if ($id != 0
340        AND $GLOBALS['autorite']['interdire_creer_sousrub'])
341                return
342                        $GLOBALS['autorite']['interdire_creer_rub_sauf_webmestre']
343                        AND autoriser('webmestre');
344
345        return
346                autoriser_rubrique_creerrubriquedans_dist($faire, $type, $id, $qui, $opt);
347}
348} else
349        $autorite_erreurs[] = 'autoriser_rubrique_creerrubriquedans';
350}
351
352
353
354##
355## autoriser_auteur_modifier
356##
357if ($GLOBALS['autorite']['auteur_mod_email']
358OR false // autre possibilite de surcharge ?
359) {
360if (!function_exists('autoriser_auteur_modifier')) {
361function autoriser_auteur_modifier($faire, $type, $id, $qui, $opt) {
362        if ($GLOBALS['autorite']['auteur_mod_email']) {
363                unset($opt['email']);
364        }
365        return autoriser_auteur_modifier_dist($faire, $type, $id, $qui, $opt);
366}
367} else
368        $autorite_erreurs[] = 'autoriser_auteur_modifier';
369}
370
371
372##
373## autoriser_modererforum
374##
375if ($GLOBALS['autorite']['auteur_modere_forum']
376OR false // autre possibilite de surcharge ?
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                autoriser('modifier', $type, $id, $qui, $opt)
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} else
395        $autorite_erreurs[] = 'autoriser_modererforum';
396}
397
398##
399## autoriser_modererpetition
400##
401if ($GLOBALS['autorite']['auteur_modere_petition']
402OR false // autre possibilite de surcharge ?
403) {
404if (!function_exists('autoriser_modererpetition')) {
405function autoriser_modererpetition($faire, $type, $id, $qui, $opt) {
406        if (intval($GLOBALS['spip_version_branche'])<3)
407                $auteurs_articles = "spip_auteurs_articles WHERE id_article=";
408        else
409                $auteurs_articles = "spip_auteurs_liens WHERE objet='article' AND id_objet=";
410        return
411                autoriser('modifier', $type, $id, $qui, $opt)
412                OR (
413                        $GLOBALS['autorite']['auteur_modere_petition']
414                        AND $type == 'article'
415                        AND in_array($qui['statut'], array('0minirezo', '1comite'))
416                        AND sql_fetch(spip_query("SELECT * FROM $auteurs_articles".intval($id)." AND id_auteur=".intval($qui['id_auteur'])))
417                );
418}
419} else
420        $autorite_erreurs[] = 'autoriser_modererpetition';
421}
422
423
424##
425## autoriser_voirstats
426##
427if ($GLOBALS['autorite']['redacteurs_lire_stats']
428OR false // autre possibilite de surcharge ?
429) {
430if (!function_exists('autoriser_voirstats')) {
431function autoriser_voirstats($faire, $type, $id, $qui, $opt) {
432        return
433                $GLOBALS['autorite']['redacteurs_lire_stats']
434                        ? in_array($qui['statut'], array('0minirezo', '1comite'))
435                        : $qui['statut'] == '0minirezo';
436}
437} else
438        $autorite_erreurs[] = 'autoriser_voirstats';
439}
440
441
442// Autoriser a modifier un groupe de mots $id
443// y compris en ajoutant/modifiant les mots lui appartenant
444// http://doc.spip.org/@autoriser_groupemots_modifier
445##
446## autoriser_groupemots_modifier
447##
448if ($GLOBALS['autorite']['editer_mots']
449OR false // autre possibilite de surcharge ?
450) {
451if (!function_exists('autoriser_groupemots_modifier')) {
452function autoriser_groupemots_modifier($faire, $type, $id, $qui, $opt) {
453        return (
454                $qui['statut'] == '0minirezo'
455                AND (
456                        !$qui['restreint']
457                        OR
458                        $GLOBALS['autorite']['editer_mots'] >= 1
459                )
460        ) OR (
461                $qui['statut'] == '1comite'
462                AND $GLOBALS['autorite']['editer_mots'] >= 2
463        );
464}
465        # signaler un risque de bug avec un autoriser_mot_modifier personnalise
466        if (function_exists('autoriser_mot_modifier'))
467                $autorite_erreurs[] = 'autoriser_mot_modifier';
468} else
469        $autorite_erreurs[] = 'autoriser_groupemots_modifier';
470}
471
472##
473## Modifier un forum ?
474## A noter : il n'existe pas d'interface dans SPIP, il faut utiliser les crayons
475## TODO : cookie specialise (voir commentaires dans cfg_autorite.html)
476##
477if ($GLOBALS['autorite']['editer_forums']
478OR false // autre possibilite de surcharge ?
479) {
480if (!function_exists('autoriser_forum_modifier')) {
481function autoriser_forum_modifier($faire, $type, $id, $qui, $opt) {
482
483        // Le webmestre
484        if ($GLOBALS['autorite']['editer_forums'] >= 1
485        AND autoriser('webmestre', $type, $id, $qui, $opt))
486                return true;
487
488        // Les admins
489        if (
490                $GLOBALS['autorite']['editer_forums'] >= 2
491                AND $qui['statut'] == '0minirezo'
492                AND !$qui['restreint']
493        )
494                return true;
495
496        // Les admins restreint pour les articles attachés à une rubrique dont ils sont admins
497        if ($GLOBALS['autorite']['editer_forums'] >= 2 AND $qui['statut'] == '0minirezo') {
498              $id=intval($id); // ?
499              if (intval($GLOBALS['spip_version_branche']) < 3 ){
500                      $id_rubrique = sql_getfetsel("id_rubrique", "spip_forum", "id_forum=$id");
501              } else {
502                      $objet = sql_getfetsel("objet", "spip_forum", "id_forum=$id");
503                      $id_objet = sql_getfetsel("id_objet", "spip_forum", "id_forum=$id AND objet='$objet'");
504                      if ($objet == "rubrique"){
505                            $id_rubrique=$id_objet;
506                      } else if ($objet == "article"){
507                            $id_rubrique=sql_getfetsel("id_rubrique", "spip_articles", "id_article=$id_objet");
508                      }
509              }
510              return ($id_rubrique AND in_array ($id_rubrique, $qui['restreint']));
511        }
512
513        // L'auteur du message (enregistre')
514        // 2 = avec une periode de grace d'une heure
515        // 3 = ad vitam
516        if ($GLOBALS['autorite']['editer_forums'] >= 3
517        AND isset($qui['id_auteur'])) {
518                $q = "SELECT id_forum FROM spip_forum WHERE id_forum="._q($id)." AND id_auteur="._q($qui['id_auteur']);
519                if ($GLOBALS['autorite']['editer_forums'] == 3)
520                        $q .= " AND date_heure > DATE_SUB(NOW(), INTERVAL 1 HOUR)";
521                $s = spip_query($q);
522                if (sql_count($s))
523                        return true;
524        }
525
526        // par defaut
527        return autoriser_forum_modifier_dist($faire, $type, $id, $qui, $opt);
528
529}
530} else
531        $autorite_erreurs[] = 'autoriser_forum_modifier';
532}
533
534##
535## Modifier une signature ?
536## A noter : il n'existe pas d'interface dans SPIP, il faut utiliser les crayons
537## TODO : cookie specialise (voir commentaires dans cfg_autorite.html)
538##
539if ($GLOBALS['autorite']['editer_signatures']
540OR false // autre possibilite de surcharge ?
541) {
542if (!function_exists('autoriser_signature_modifier')) {
543function autoriser_signature_modifier($faire, $type, $id, $qui, $opt) {
544
545        // Le webmestre
546        if ($GLOBALS['autorite']['editer_signatures'] >= 1
547        AND autoriser('webmestre', $type, $id, $qui, $opt))
548                return true;
549
550        // Les admins
551        if (
552                $GLOBALS['autorite']['editer_signatures'] >= 2
553                AND $qui['statut'] == '0minirezo'
554                AND !$qui['restreint']
555        )
556                return true;
557
558        // par defaut
559        return autoriser_signature_modifier_dist($faire, $type, $id, $qui, $opt);
560}
561} else
562        $autorite_erreurs[] = 'autoriser_signature_modifier';
563}
564
565
566##
567## autoriser_configurer (pages de configuration)
568##
569if ($GLOBALS['autorite']['configurer']
570OR $GLOBALS['autorite']['configurer_plugin']
571) {
572if (!function_exists('autoriser_configurer')) {
573function autoriser_configurer($faire, $type, $id, $qui, $opt) {
574        // TODO:
575        // cas particulier : configurer les plugins doit etre bloque
576        // en mode 'webmestre', sinon on pourrait desactiver autorite.
577        // mais comment faire pour ne pas bloquer quelqu'un qui installe
578        // ce plugin alors qu'il est id_auteur > 1 ?
579        if (in_array($type, array('plugins', 'admin_plugin'))) {
580                if ($GLOBALS['autorite']['configurer_plugin'] == 'webmestre')
581                        return autoriser('webmestre');
582        }
583
584        if ($GLOBALS['autorite']['configurer'] == 'webmestre')
585                return autoriser('webmestre');
586        else
587                return autoriser('x'); // autorisation par defaut
588}
589} else
590        $autorite_erreurs[] = 'autoriser_configurer';
591}
592
593##
594## autoriser_sauvegarder (faire un backup partiel ou complet)
595##
596if ($GLOBALS['autorite']['sauvegarder']
597OR false // autre possibilite de surcharge ?
598) {
599if (!function_exists('autoriser_sauvegarder')) {
600function autoriser_sauvegarder($faire, $type, $id, $qui, $opt) {
601
602        if ($GLOBALS['autorite']['sauvegarder'] == 'webmestre')
603                return autoriser('webmestre');
604
605        // admins y compris restreints
606        if ($GLOBALS['autorite']['sauvegarder'] == 'minirezo')
607                return
608                        $qui['statut'] == '0minirezo';
609
610        // version normale
611        if ($GLOBALS['autorite']['sauvegarder'] == ''
612        OR $GLOBALS['autorite']['sauvegarder'] == 'admin' # jusque v0.7 de ce plugin
613        )
614                return
615                        $qui['statut'] == '0minirezo'
616                        AND !$qui['restreint'];
617}
618} else
619        $autorite_erreurs[] = 'autoriser_sauvegarder';
620}
621
622##
623## autoriser_detruire (vider la base de donnees)
624##
625if ($GLOBALS['autorite']['detruire']
626OR false // autre possibilite de surcharge ?
627) {
628if (!function_exists('autoriser_detruire')) {
629function autoriser_detruire($faire, $type, $id, $qui, $opt) {
630
631        if ($GLOBALS['autorite']['detruire'] == 'webmestre')
632                return autoriser('webmestre');
633
634        if ($GLOBALS['autorite']['detruire'] == 'non')
635                return false;
636
637        // Par defaut, idem configuration
638        return autoriser('configurer');
639}
640} else
641        $autorite_erreurs[] = 'autoriser_detruire';
642}
643
644##
645## autoriser_ecrire
646##
647if ($GLOBALS['autorite']['redacteurs_ecrire']
648OR false // autre possibilite de surcharge ?
649) {
650if (!function_exists('autoriser_ecrire')) {
651function autoriser_ecrire($faire, $type, $id, $qui, $opt) {
652    return
653        $GLOBALS['autorite']['redacteurs_ecrire']
654            ? $qui['statut'] == '0minirezo'
655            : in_array($qui['statut'], array('0minirezo', '1comite'));
656}
657} else
658    $autorite_erreurs[] = 'autoriser_ecrire';
659}
660
661if ($autorite_erreurs) $GLOBALS['autorite_erreurs'] = $autorite_erreurs;
662
663
664?>
Note: See TracBrowser for help on using the repository browser.