source: spip-zone/_plugins_/couteau_suisse/outils/autorisations_config.php @ 93315

Last change on this file since 93315 was 72718, checked in by patfr@…, 7 years ago

Oups, contrib.spip et non www.contrib.spip (Cédric)
+ Passage en UTF8 de certains fichiers par la même occasion

File size: 4.7 KB
Line 
1<?php
2
3#-----------------------------------------------------#
4#  Plugin  : Couteau Suisse - Licence : GPL           #
5#  Auteur  : Patrice Vanneufville, 2013               #
6#  Contact : patrice¡.!vanneufville¡@!laposte¡.!net   #
7#  Infos : http://contrib.spip.net/?article2166       #
8#-----------------------------------------------------#
9if (!defined("_ECRIRE_INC_VERSION")) return;
10
11# Fichier de configuration pris en compte par config_outils.php et specialement dedie a la configuration des autorisations SPIP
12# -----------------------------------------------------------------------------------------------------------------------------
13
14function outils_autorisations_config_dist() {
15
16// Ajout de l'outil 'autorisations'
17add_outil(array(
18        'id' => 'autorisations',
19        'autoriser' => "autoriser('webmestre')",
20        'categorie' => 'securite',
21        'version-min' => '1.9300',
22        'code:spip_options' => '%%autorisations_debug%%',
23        'code:options' => '%%autorisations_alias%%
24function autoriser_redacteur($faire,$type,$id,$qui,$opt) {
25        return in_array($qui["statut"], array("0minirezo", "1comite"));
26}
27function autoriser_administrateur($faire,$type,$id,$qui,$opt) {
28        return $qui["statut"] == "0minirezo" && !$qui["restreint"];
29}
30@include_once "'.str_replace('\\','/',realpath(_DIR_CS_TMP.'mes_autorisations.php')).'";
31',
32        // TODO : Exploiter $GLOBALS['autoriser_exception']
33        'pipelinecode:pre_description_outil' => 'if($id=="autorisations")
34$texte=str_replace(array("@_CS_DIR_TMP@","@_CS_DIR_LOG@"), array(cs_root_canonicalize(_DIR_CS_TMP), cs_root_canonicalize(defined("_DIR_LOG")?_DIR_LOG:_DIR_TMP)), $texte);',
35       
36));
37
38add_variables( array(
39        'nom' => 'autorisations_debug',
40        'check' => 'couteauprive:autorisations_debug',
41        'defaut' => 0,
42        'code:%s' => "define('_DEBUG_AUTORISER', true);",
43        'label' => '',
44        'commentaire' => '(!defined("_SPIP30000") || _LOG_FILTRE_GRAVITE>=_LOG_INFO)?""
45                        :_T("couteauprive:cs_comportement_ko", array("gr1"=>"{{"._LOG_FILTRE_GRAVITE."}}","gr2"=>"{{"._LOG_INFO." (INFO)}}"))',
46) ,array(
47        'nom' => 'autorisations_alias',
48        'defaut' => "'// creer article = creer rubrique\n// 23 : modifier article 18 = ok\n// configurer cs = webmestre\n// auteur 7 = niet'",
49        'format' => _format_CHAINE,
50        'lignes' => 8,
51        'code' => "function _autorisations_LISTE(){return %s;}",
52        'commentaire' => 'couteauprive_T("autorisations_creees")." ".((include_spip(_DIR_CS_TMP."mes_autorisations") && function_exists("autorisations_liste") && $tmp=autorisations_liste())?join(", ",$tmp):couteauprive_T("variable_vide"))',
53));
54
55}
56
57function autorisations_installe_dist() {
58cs_log("autorisations_installe_dist()");
59        if(!function_exists('_autorisations_LISTE')) return NULL;
60
61        // on decode les alias entres dans la config
62        $alias = preg_split("/[\r\n]+/", _autorisations_LISTE());
63        $code = $fct = array(); $erreurs = '';
64        foreach($alias as $_a) {
65                list($a,) = explode('//', $_a, 2);
66                if (preg_match('/^\s*(?:(\d+)\s*:)?(.*?)=\s*(?:(\d+)\s*:)?(.*?)$/', $a, $regs)) {
67                        $qui = intval($regs[1]); list($faire, $type, $id) = autorisations_parse($regs[2]);
68                        $qui2 = intval($regs[3]); list($faire2, $type2, $id2) = autorisations_parse($regs[4]);
69                        if($faire===-1 || $faire2===-1 || ($faire==$faire2 && $type==$type2 && $id==$id2 && $qui=$qui2)) { 
70                                $erreurs .= "// #ERREUR : .$_a\n"; continue;
71                        }
72                        $if = $qui?"\$qui['id_auteur']==$qui":'';
73                        if($id) $if .= ($if?' && ':'') . '$id=='.$id;
74                        if($qui2) $alias = "'$faire2','$type2',$id2,$qui2";
75                        elseif($id2) $alias = "'$faire2','$type2',$id2,\$qui";
76                        elseif($type2) $alias = "'$faire2','$type2',\$id,\$qui";
77                        else $alias = "'$faire2',\$type,\$id,\$qui";
78                        $f = ($faire && $type)?"autoriser_{$type}_{$faire}":($faire?"autoriser_{$faire}":"autoriser_{$type}");
79                        $code[$f][] = "// $_a\n\t".($if?"if($if) ":'')."return autoriser($alias,\$opt);";
80                }
81        }
82        foreach($code as $k=>$v) {
83                $fct[] = $k;
84                $v = join("\n\t", $v);
85                $code[$k] = "if(!function_exists('$k')) {\n\tfunction $k(\$faire,\$type,\$id,\$qui,\$opt) {
86        ".$v.(strpos($v,') return')!==false?"\n\treturn autorisations_return(\$faire,\$type,\$id,\$qui['id_auteur'],\$opt);":'').' } }';
87        }
88        // fonction generique de retour
89        $code[] = 'function autorisations_return($faire,$type,$id,$qui,$opt) {
90        if($faire && $type && $id && intval($qui)) return autoriser($faire,$type,$id,NULL,$opt);
91        if($faire && $type && $id) return autoriser($faire,$type,0,NULL,$opt);
92        if($faire && $type) return autoriser($type,"",0,NULL,$opt);
93        return autoriser("defaut");
94}';
95        // liste de autorisations "maison"
96        $code[] = 'function autorisations_liste() { return '.var_export($fct,1).'; }';
97        // en retour : le code PHP
98        $alias = array($erreurs.join("\n", $code));
99        $code = array('code_autorisations'=>$alias);
100        ecrire_fichier_en_tmp($code, 'autorisations');
101        return $alias;
102}
103
104?>
Note: See TracBrowser for help on using the repository browser.