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

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

En SPIP 2.1, ça pouvait donner cette erreur :
PHP Fatal error: Call to undefined function autoriser_rubrique_publierdans() in plugins/autorite/inc/autoriser.php on line 245

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