Changeset 91827 in spip-zone for _plugins_/autorite


Ignore:
Timestamp:
Sep 13, 2015, 11:12:49 AM (4 years ago)
Author:
teddy.spip@…
Message:

Eviter des warnnings PHP. Up de Z pour la version. Et
le numéro de schema soit être en x.y.z

Location:
_plugins_/autorite/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/autorite/trunk/inc/autoriser.php

    r90606 r91827  
    1313
    1414// Compatibilite 1.92 : on a besoin de sql_fetch
    15 if ($GLOBALS['spip_version_code'] < '1.93'
    16 AND $f = charger_fonction('compat_autorite', 'inc'))
    17         $f(array('sql_fetch','sql_count'));
     15if (isset($GLOBALS['spip_version_code']) and $GLOBALS['spip_version_code'] < '1.93'
     16and $f = charger_fonction('compat_autorite', 'inc'))
     17    $f(array('sql_fetch','sql_count'));
    1818
    1919
     
    2222//
    2323
    24 if ($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                                 if (!defined('_STATUT_AUTEUR_CREATION')) define('_STATUT_AUTEUR_CREATION', '6forum');
    31                         case 'redacteur':
    32                                 if (!defined('_STATUT_AUTEUR_CREATION')) define('_STATUT_AUTEUR_CREATION', '1comite');
    33                         case 'admin':
    34                                 if (!defined('_STATUT_AUTEUR_CREATION')) define('_STATUT_AUTEUR_CREATION', '0minirezo');
    35                 }
    36         }
    37 }
    38 
    39 if ($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                                 if (!defined('_STATUT_AUTEUR_RUBRIQUE')) define('_STATUT_AUTEUR_RUBRIQUE', '0minirezo,1comite');
    46                         case '2':
    47                                 if (!defined('_STATUT_AUTEUR_RUBRIQUE')) define('_STATUT_AUTEUR_RUBRIQUE', '0minirezo,1comite,6forum');
    48                 }
    49         }
    50 }
    51 
    52 if ($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);
     24if (isset($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                if (!defined('_STATUT_AUTEUR_CREATION')) define('_STATUT_AUTEUR_CREATION', '6forum');
     31            case 'redacteur':
     32                if (!defined('_STATUT_AUTEUR_CREATION')) define('_STATUT_AUTEUR_CREATION', '1comite');
     33            case 'admin':
     34                if (!defined('_STATUT_AUTEUR_CREATION')) define('_STATUT_AUTEUR_CREATION', '0minirezo');
     35        }
     36    }
     37}
     38
     39if (isset($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                if (!defined('_STATUT_AUTEUR_RUBRIQUE')) define('_STATUT_AUTEUR_RUBRIQUE', '0minirezo,1comite');
     46            case '2':
     47                if (!defined('_STATUT_AUTEUR_RUBRIQUE')) define('_STATUT_AUTEUR_RUBRIQUE', '0minirezo,1comite,6forum');
     48        }
     49    }
     50}
     51
     52if (isset($GLOBALS['autorite']['statut_ignorer_admins_restreints']) and $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);
    5757}
    5858
     
    6363// definir _ID_WEBMESTRES
    6464if (!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
     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
    6969}
    7070
     
    8080if (isset($GLOBALS['autorite']['espace_publieur'])) {
    8181if (!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';
     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                break;
     95            case '1comite':
     96                if (isset($GLOBALS['autorite']['espace_publieur_redacteurs']))
     97                return true;
     98                break;
     99            case '6forum':
     100                if (isset($GLOBALS['autorite']['espace_publieur_visiteurs']))
     101                return true;
     102                break;
     103        }
     104        return false;
     105    }
     106    } else
     107        $autorite_erreurs[] = 'autorisation_publie_visiteur';
    105108}
    106109
     
    109112##
    110113if (isset($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';
     114    if (!function_exists('autorisation_wiki_visiteur')) {
     115    function autorisation_wiki_visiteur($qui, $id_secteur) {
     116        // espace_wiki est un array(secteur1, secteur2), ou un id_secteur
     117        if (
     118            (is_array($GLOBALS['autorite']['espace_wiki'])
     119            and !in_array($id_secteur,$GLOBALS['autorite']['espace_wiki']))
     120        and
     121            $id_secteur != $GLOBALS['autorite']['espace_wiki']
     122        )
     123            return false;
     124
     125        switch($qui['statut']) {
     126            case '0minirezo':
     127            case '1comite':
     128                if (isset($GLOBALS['autorite']['espace_wiki_redacteurs']))
     129                    return true;
     130                break;
     131            case '6forum':
     132                if (isset($GLOBALS['autorite']['espace_wiki_visiteurs']))
     133                    return true;
     134                break;
     135            default:
     136                if (isset($GLOBALS['autorite']['espace_wiki_anonyme']))
     137                    return true;
     138                break;
     139        }
     140        return false;
     141    }
     142    } else
     143        $autorite_erreurs[] = 'autorisation_wiki_visiteur';
    138144}
    139145
     
    143149##
    144150if (isset($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és à l'article
    155         while ( $r = sql_fetch($s) ) { 
     151    if (!function_exists('autorisation_wiki_motsclef_visiteur')) {
     152    function autorisation_wiki_motsclef_visiteur($qui, $id_article) {
     153
     154        //determine les mots clef affectés à l'article
     155        if (intval($GLOBALS['spip_version_branche'])<3)
     156          $s = spip_query("SELECT id_mot FROM spip_mots_articles WHERE id_article=".$id_article);
     157        else
     158          $s = spip_query("SELECT id_mot FROM spip_mots_liens WHERE objet='article' AND id_objet=".$id_article);
     159
     160        //obtient la liste des mots clefs affectés à l'article
     161        while ( $r = sql_fetch($s) ) {
    156162            $array_mot[] = $r['id_mot'];
    157         }           
    158        
     163        }
     164
    159165        //aucun mot clef d'affecter à  l'article, rien à faire
    160166        if (is_null($array_mot))
    161167            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';
     168
     169        //vérification que l'article possède un mot clef correspondant au staut du visiteur
     170        switch($qui['statut']) {
     171            case '0minirezo':
     172            case '1comite':
     173                if (in_array($GLOBALS['autorite']['espace_wiki_motsclef_redacteurs'],$array_mot))
     174                    return true;
     175                break;
     176            case '6forum':
     177                if (in_array($GLOBALS['autorite']['espace_wiki_motsclef_visiteurs'],$array_mot))
     178                    return true;
     179                break;
     180            default:
     181                if (in_array($GLOBALS['autorite']['espace_wiki_motsclef_anonyme'],$array_mot))
     182                    return true;
     183                break;
     184        }
     185        return false;
     186    }
     187    } else
     188        $autorite_erreurs[] = 'autorisation_wiki_motsclef_visiteur';
    180189}
    181190
     
    184193## autoriser_article_modifier
    185194##
    186 if ($GLOBALS['autorite']['auteur_mod_article']
    187 OR $GLOBALS['autorite']['espace_wiki']
    188 OR $GLOBALS['autorite']['espace_wiki_motsclef']
    189 OR $GLOBALS['autorite']['redacteur_mod_article']
    190 OR false // autre possibilite de surcharge ?
     195if (isset($GLOBALS['autorite']['auteur_mod_article'])
     196or isset($GLOBALS['autorite']['espace_wiki'])
     197or isset($GLOBALS['autorite']['espace_wiki_motsclef'])
     198or isset($GLOBALS['autorite']['redacteur_mod_article'])
     199or false // autre possibilite de surcharge ?
    191200) {
    192201if (!function_exists('autoriser_article_modifier')) {
    193202function 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                 );
     203    if (isset($GLOBALS['spip_version_branche']) and intval($GLOBALS['spip_version_branche'])<3)
     204        $auteurs_articles = "spip_auteurs_articles WHERE id_article=";
     205    else
     206        $auteurs_articles = "spip_auteurs_liens WHERE objet='article' AND id_objet=";
     207
     208    $s = spip_query(
     209    "SELECT id_rubrique,id_secteur,statut FROM spip_articles WHERE id_article="._q($id));
     210    $r = sql_fetch($s);
     211    include_spip('inc/auth');
     212    if (!isset($GLOBALS['autorite']['espace_publieur']))
     213    $a = autoriser('publierdans', 'rubrique', $r['id_rubrique'], $qui, $opt);
     214    else {
     215    if (!in_array($qui['statut'],array('1comite', '6forum')))
     216    $a = autoriser('publierdans', 'rubrique', $r['id_rubrique'], $qui, $opt);
     217    }
     218    return
     219        $a
     220        or (
     221            // Cas du wiki, on appelle la fonction qui verifie les droits wiki
     222            $GLOBALS['autorite']['espace_wiki']
     223            and autorisation_wiki_visiteur($qui, $r['id_secteur'])
     224        )
     225        or (
     226            // Cas du wiki par mot clefs, on appelle la fonction qui verifie les droits wiki
     227            $GLOBALS['autorite']['espace_wiki_motsclef']
     228            and autorisation_wiki_motsclef_visiteur($qui, _q($id))
     229        )
     230        or (
     231            // auteur autorise a modifier son article
     232            // (sauf si l'article est refuse ou l'auteur mis a la poubelle)
     233            $GLOBALS['autorite']['auteur_mod_article']
     234            and in_array($qui['statut'],
     235                array('0minirezo', '1comite', '6forum'))
     236            and in_array($r['statut'],
     237                array('publie', 'prop', 'prepa', 'poubelle'))
     238            and sql_fetch(spip_query("SELECT * FROM $auteurs_articles".intval($id)." AND id_auteur=".intval($qui['id_auteur'])))
     239        )
     240        or (
     241            // un redacteur peut-il modifier un article propose ?
     242            $GLOBALS['autorite']['redacteur_mod_article']
     243            and in_array($qui['statut'], array('0minirezo', '1comite'))
     244            and $r['statut']=='prop'
     245        )
     246        or (
     247            // un auteur peut modifier son propre article lorsqu'il est proposé ou en cours de rédaction
     248            in_array($qui['statut'], array('0minirezo', '1comite'))
     249            and in_array($r['statut'], array('prop','prepa'))
     250            and auteurs_article($id, "id_auteur=".$qui['id_auteur'])
     251        );
    243252}
    244253if (!function_exists('autoriser_rubrique_creerarticledans')) {
    245         function autoriser_rubrique_creerarticledans($faire, $type, $id, $qui, $opt) {
    246                 return autoriser_voir_dist($faire, $type, $id, $qui, $opt);
    247         }
    248 }
    249 } else
    250         $autorite_erreurs[] = 'autoriser_article_modifier';
     254    function autoriser_rubrique_creerarticledans($faire, $type, $id, $qui, $opt) {
     255        return autoriser_voir_dist($faire, $type, $id, $qui, $opt);
     256    }
     257}
     258} else
     259    $autorite_erreurs[] = 'autoriser_article_modifier';
    251260}
    252261
     
    256265##
    257266if (isset($GLOBALS['autorite']['espace_wiki'])
    258 OR $GLOBALS['autorite']['publierdans']
    259 OR false // autre possibilite de surcharge ?
     267or isset($GLOBALS['autorite']['publierdans'])
     268or false // autre possibilite de surcharge ?
    260269) {
    261270if (!function_exists('autoriser_rubrique_publierdans')) {
    262271function autoriser_rubrique_publierdans($faire, $type, $id, $qui, $opt) {
    263        
    264         // Si on est deja autorise en standard, dire 'OK'
    265         if (!$GLOBALS['autorite']['publierdans']
    266                 && autoriser_rubrique_publierdans_dist($faire, $type, $id, $qui, $opt))
    267                         return true;
    268        
    269         // Verifions qui a le droit
    270         // 1 : webmestre
    271         // 2 : admin complet
    272         // 4 : admin restreint
    273         // 8 : redacteur
    274         // cas du redacteur : attention, il faut verifier
    275         // aussi qu'il est l'auteur de l'objet publie...
    276 
    277         if (($GLOBALS['autorite']['publierdans'] & 1)
    278                 && autoriser('webmestre', $type, $id, $qui, $opt))
    279                         return true;           
    280         if (($GLOBALS['autorite']['publierdans'] & 2)
    281                 && ($qui['statut'] == '0minirezo')
    282                 && (!$qui['restreint']))
    283                         return true;
    284         if (($GLOBALS['autorite']['publierdans'] & 4)   
    285                 && ($qui['statut'] == '0minirezo')
    286                 && ($qui['restreint'] AND $id AND in_array($id, $qui['restreint'])))
    287                         return true;
    288         /*       
    289         if (($GLOBALS['autorite']['publierdans'] & 8)
    290                 && ($qui['statut'] == '1comite'))
    291                         return true;
    292         */
    293         // Sinon, verifier si la rubrique est ouverte aux publieurs
    294         // et si on est bien enregistre
    295         if ($GLOBALS['autorite']['espace_publieur']) {
    296                 $s = spip_query(
    297                 "SELECT id_secteur FROM spip_rubriques WHERE id_rubrique="._q($id));
    298                 $r = sql_fetch($s);
    299 
    300                 if (autorisation_publie_visiteur($qui, $r['id_secteur'])
    301                 AND ($qui['statut'])
    302                 )
    303                         return true;
    304 
    305         }
    306         // Sinon, verifier si la rubrique est wiki
    307         // et si on est bien enregistre (sauf cas de creation anonyme explicitement autorisee)
    308         if ($GLOBALS['autorite']['espace_wiki']) {
    309                 $s = spip_query(
    310                 "SELECT id_secteur FROM spip_rubriques WHERE id_rubrique="._q($id));
    311                 $r = sql_fetch($s);
    312 
    313                 if (autorisation_wiki_visiteur($qui, $r['id_secteur'])
    314                 AND (
    315                         $GLOBALS['autorite']['espace_wiki_rubrique_anonyme']
    316                         OR $qui['statut']
    317                 ))
    318                         return true;
    319         }
    320        
    321         // par defaut, NIET
    322         return false;
    323 }
    324 } else
    325         $autorite_erreurs[] = 'autoriser_rubrique_publierdans';
     272
     273    // Si on est deja autorise en standard, dire 'OK'
     274    if (!isset($GLOBALS['autorite']['publierdans'])
     275        && autoriser_rubrique_publierdans_dist($faire, $type, $id, $qui, $opt))
     276            return true;
     277
     278    // Verifions qui a le droit
     279    // 1 : webmestre
     280    // 2 : admin complet
     281    // 4 : admin restreint
     282    // 8 : redacteur
     283    // cas du redacteur : attention, il faut verifier
     284    // aussi qu'il est l'auteur de l'objet publie...
     285
     286    if (($GLOBALS['autorite']['publierdans'] & 1)
     287        && autoriser('webmestre', $type, $id, $qui, $opt))
     288            return true;
     289    if (($GLOBALS['autorite']['publierdans'] & 2)
     290        && ($qui['statut'] == '0minirezo')
     291        && (!$qui['restreint']))
     292            return true;
     293    if (($GLOBALS['autorite']['publierdans'] & 4)
     294        && ($qui['statut'] == '0minirezo')
     295        && ($qui['restreint'] AND $id AND in_array($id, $qui['restreint'])))
     296            return true;
     297    /*
     298    if (($GLOBALS['autorite']['publierdans'] & 8)
     299        && ($qui['statut'] == '1comite'))
     300            return true;
     301    */
     302    // Sinon, verifier si la rubrique est ouverte aux publieurs
     303    // et si on est bien enregistre
     304    if (isset($GLOBALS['autorite']['espace_publieur'])) {
     305        $s = spip_query(
     306        "SELECT id_secteur FROM spip_rubriques WHERE id_rubrique="._q($id));
     307        $r = sql_fetch($s);
     308
     309        if (autorisation_publie_visiteur($qui, $r['id_secteur'])
     310        and ($qui['statut'])
     311        )
     312            return true;
     313
     314    }
     315    // Sinon, verifier si la rubrique est wiki
     316    // et si on est bien enregistre (sauf cas de creation anonyme explicitement autorisee)
     317    if (isset($GLOBALS['autorite']['espace_wiki'])) {
     318        $s = spip_query(
     319        "SELECT id_secteur FROM spip_rubriques WHERE id_rubrique="._q($id));
     320        $r = sql_fetch($s);
     321
     322        if (autorisation_wiki_visiteur($qui, $r['id_secteur'])
     323        and (
     324            isset($GLOBALS['autorite']['espace_wiki_rubrique_anonyme'])
     325            or $qui['statut']
     326        ))
     327            return true;
     328    }
     329
     330    // par defaut, NIET
     331    return false;
     332}
     333} else
     334    $autorite_erreurs[] = 'autoriser_rubrique_publierdans';
    326335}
    327336
     
    330339## autoriser_rubrique_creerrubriquedans
    331340##
    332 if ($GLOBALS['autorite']['interdire_creer_secteur']
    333 OR $GLOBALS['autorite']['interdire_creer_sousrub']
    334 OR false // autre possibilite de surcharge ?
     341if (isset($GLOBALS['autorite']['interdire_creer_secteur'])
     342or isset($GLOBALS['autorite']['interdire_creer_sousrub'])
     343or false // autre possibilite de surcharge ?
    335344) {
    336345if (!function_exists('autoriser_rubrique_creerrubriquedans')) {
    337346function autoriser_rubrique_creerrubriquedans($faire, $type, $id, $qui, $opt) {
    338         if ($id == 0
    339         AND $GLOBALS['autorite']['interdire_creer_secteur'])
    340                 return
    341                         $GLOBALS['autorite']['interdire_creer_rub_sauf_webmestre']
    342                         AND autoriser('webmestre');
    343 
    344         if ($id != 0
    345         AND $GLOBALS['autorite']['interdire_creer_sousrub'])
    346                 return
    347                         $GLOBALS['autorite']['interdire_creer_rub_sauf_webmestre']
    348                         AND autoriser('webmestre');
    349 
    350         return
    351                 autoriser_rubrique_creerrubriquedans_dist($faire, $type, $id, $qui, $opt);
    352 }
    353 } else
    354         $autorite_erreurs[] = 'autoriser_rubrique_creerrubriquedans';
     347    if ($id == 0
     348    and isset($GLOBALS['autorite']['interdire_creer_secteur']))
     349        return
     350            $GLOBALS['autorite']['interdire_creer_rub_sauf_webmestre']
     351            and autoriser('webmestre');
     352
     353    if ($id != 0
     354    and isset($GLOBALS['autorite']['interdire_creer_sousrub']))
     355        return
     356            $GLOBALS['autorite']['interdire_creer_rub_sauf_webmestre']
     357            and autoriser('webmestre');
     358
     359    return
     360        autoriser_rubrique_creerrubriquedans_dist($faire, $type, $id, $qui, $opt);
     361}
     362} else
     363    $autorite_erreurs[] = 'autoriser_rubrique_creerrubriquedans';
    355364}
    356365
     
    361370##
    362371if (isset($GLOBALS['autorite']['auteur_mod_email'])
    363 OR false // autre possibilite de surcharge ?
     372or false // autre possibilite de surcharge ?
    364373) {
    365374if (!function_exists('autoriser_auteur_modifier')) {
    366375function autoriser_auteur_modifier($faire, $type, $id, $qui, $opt) {
    367         if ($GLOBALS['autorite']['auteur_mod_email']) {
    368                 unset($opt['email']);
    369         }
    370         return autoriser_auteur_modifier_dist($faire, $type, $id, $qui, $opt);
    371 }
    372 } else
    373         $autorite_erreurs[] = 'autoriser_auteur_modifier';
     376    if (isset($GLOBALS['autorite']['auteur_mod_email'])) {
     377        unset($opt['email']);
     378    }
     379    return autoriser_auteur_modifier_dist($faire, $type, $id, $qui, $opt);
     380}
     381} else
     382    $autorite_erreurs[] = 'autoriser_auteur_modifier';
    374383}
    375384
     
    380389if (!function_exists('autoriser_modererforum')) {
    381390function autoriser_modererforum($faire, $type, $id, $qui, $opt) {
    382         if (intval($GLOBALS['spip_version_branche'])<3)
    383                 $auteurs_articles = "spip_auteurs_articles WHERE id_article=";
    384         else
    385                 $auteurs_articles = "spip_auteurs_liens WHERE objet='article' AND id_objet=";
    386 
    387         return
    388                 ($qui['statut']=='0minirezo')
    389                 OR  (
    390                         $GLOBALS['autorite']['auteur_modere_forum']
    391                         AND $type == 'article'
    392                         AND in_array($qui['statut'], array('0minirezo', '1comite'))
    393                         AND sql_fetch(spip_query("SELECT * FROM $auteurs_articles".intval($id)." AND id_auteur=".intval($qui['id_auteur'])))
    394                 );
     391    if (intval($GLOBALS['spip_version_branche'])<3)
     392        $auteurs_articles = "spip_auteurs_articles WHERE id_article=";
     393    else
     394        $auteurs_articles = "spip_auteurs_liens WHERE objet='article' AND id_objet=";
     395
     396    return
     397        ($qui['statut']=='0minirezo')
     398        or  (
     399            $GLOBALS['autorite']['auteur_modere_forum']
     400            and $type == 'article'
     401            and in_array($qui['statut'], array('0minirezo', '1comite'))
     402            and sql_fetch(spip_query("SELECT * FROM $auteurs_articles".intval($id)." AND id_auteur=".intval($qui['id_auteur'])))
     403        );
    395404}
    396405}
     
    401410if (!function_exists('autoriser_modererpetition')) {
    402411function autoriser_modererpetition($faire, $type, $id, $qui, $opt) {
    403         if (intval($GLOBALS['spip_version_branche'])<3)
    404                 $auteurs_articles = "spip_auteurs_articles WHERE id_article=";
    405         else
    406                 $auteurs_articles = "spip_auteurs_liens WHERE objet='article' AND id_objet=";
    407         return
    408                 ($qui['statut']=='0minirezo')
    409                 OR  (
    410                         $GLOBALS['autorite']['auteur_modere_petition']
    411                         AND $type == 'article'
    412                         AND in_array($qui['statut'], array('0minirezo', '1comite'))
    413                         AND sql_fetch(spip_query("SELECT * FROM $auteurs_articles".intval($id)." AND id_auteur=".intval($qui['id_auteur'])))
    414                 );
    415 }
    416 } 
     412    if (isset($GLOBALS['spip_version_branche']) and intval($GLOBALS['spip_version_branche'])<3)
     413        $auteurs_articles = "spip_auteurs_articles WHERE id_article=";
     414    else
     415        $auteurs_articles = "spip_auteurs_liens WHERE objet='article' AND id_objet=";
     416    return
     417        ($qui['statut']=='0minirezo')
     418        or  (
     419            $GLOBALS['autorite']['auteur_modere_petition']
     420            and $type == 'article'
     421            and in_array($qui['statut'], array('0minirezo', '1comite'))
     422            and sql_fetch(spip_query("SELECT * FROM $auteurs_articles".intval($id)." AND id_auteur=".intval($qui['id_auteur'])))
     423        );
     424}
     425}
    417426
    418427##
     
    420429##
    421430if (isset($GLOBALS['autorite']['redacteurs_lire_stats'])
    422 OR false // autre possibilite de surcharge ?
     431or false // autre possibilite de surcharge ?
    423432) {
    424433if (!function_exists('autoriser_voirstats')) {
    425434function autoriser_voirstats($faire, $type, $id, $qui, $opt) {
    426         return
    427                 $GLOBALS['autorite']['redacteurs_lire_stats']
    428                         ? in_array($qui['statut'], array('0minirezo', '1comite'))
    429                         : $qui['statut'] == '0minirezo';
    430 }
    431 } else
    432         $autorite_erreurs[] = 'autoriser_voirstats';
     435    return
     436        $GLOBALS['autorite']['redacteurs_lire_stats']
     437            ? in_array($qui['statut'], array('0minirezo', '1comite'))
     438            : $qui['statut'] == '0minirezo';
     439}
     440} else
     441    $autorite_erreurs[] = 'autoriser_voirstats';
    433442}
    434443
     
    440449## autoriser_groupemots_modifier
    441450##
    442 if ($GLOBALS['autorite']['editer_mots']
    443 OR false // autre possibilite de surcharge ?
     451if (isset($GLOBALS['autorite']['editer_mots'])
     452or false // autre possibilite de surcharge ?
    444453) {
    445454if (!function_exists('autoriser_groupemots_modifier')) {
    446455function autoriser_groupemots_modifier($faire, $type, $id, $qui, $opt) {
    447         return (
    448                 $qui['statut'] == '0minirezo'
    449                 AND (
    450                         !$qui['restreint']
    451                         OR
    452                         $GLOBALS['autorite']['editer_mots'] >= 1
    453                 )
    454         ) OR (
    455                 $qui['statut'] == '1comite'
    456                 AND $GLOBALS['autorite']['editer_mots'] >= 2
    457         );
    458 }
    459         # signaler un risque de bug avec un autoriser_mot_modifier personnalise
    460         if (function_exists('autoriser_mot_modifier'))
    461                 $autorite_erreurs[] = 'autoriser_mot_modifier';
    462                
     456    return (
     457        $qui['statut'] == '0minirezo'
     458        and (
     459            !$qui['restreint']
     460            or
     461            $GLOBALS['autorite']['editer_mots'] >= 1
     462        )
     463    ) or (
     464        $qui['statut'] == '1comite'
     465        and $GLOBALS['autorite']['editer_mots'] >= 2
     466    );
     467}
     468    # signaler un risque de bug avec un autoriser_mot_modifier personnalise
     469    if (function_exists('autoriser_mot_modifier'))
     470        $autorite_erreurs[] = 'autoriser_mot_modifier';
     471
    463472// la config d'autorite sur le groupe de mot doit être idem sur les mots
    464         function autoriser_mot_modifier($faire, $type, $id, $qui, $opt) {
    465                 return autoriser_groupemots_modifier($faire, $type, $id, $qui, $opt);
    466         }
    467         function autoriser_mot_creer($faire, $type, $id, $qui, $opt) {
    468                 return autoriser_groupemots_modifier($faire, $type, $id, $qui, $opt);
    469         }
    470                
    471 } else
    472         $autorite_erreurs[] = 'autoriser_groupemots_modifier';
     473    function autoriser_mot_modifier($faire, $type, $id, $qui, $opt) {
     474        return autoriser_groupemots_modifier($faire, $type, $id, $qui, $opt);
     475    }
     476    function autoriser_mot_creer($faire, $type, $id, $qui, $opt) {
     477        return autoriser_groupemots_modifier($faire, $type, $id, $qui, $opt);
     478    }
     479
     480} else
     481    $autorite_erreurs[] = 'autoriser_groupemots_modifier';
    473482}
    474483
     
    478487## TODO : cookie specialise (voir commentaires dans cfg_autorite.html)
    479488##
    480 if ($GLOBALS['autorite']['editer_forums']
    481 OR false // autre possibilite de surcharge ?
     489if (isset($GLOBALS['autorite']['editer_forums'])
     490or false // autre possibilite de surcharge ?
    482491) {
    483492if (!function_exists('autoriser_forum_modifier')) {
    484493function autoriser_forum_modifier($faire, $type, $id, $qui, $opt) {
    485494
    486         // Le webmestre
    487         if ($GLOBALS['autorite']['editer_forums'] >= 1
    488         AND autoriser('webmestre', $type, $id, $qui, $opt))
    489                 return true;
    490 
    491         // Les admins
    492         if (
    493                 $GLOBALS['autorite']['editer_forums'] >= 2
    494                 AND $qui['statut'] == '0minirezo'
    495                 AND !$qui['restreint']
    496         )
    497                 return true;
    498 
    499 
    500 
    501         // Les admins restreint pour les articles attachés à une rubrique dont ils sont admins
    502         if ($GLOBALS['autorite']['editer_forums'] >= 2 AND $qui['statut'] == '0minirezo') {
    503               $id=intval($id); // ?
    504               if (intval($GLOBALS['spip_version_branche']) < 3 ){
    505                   $id_rubrique = sql_getfetsel("id_rubrique", "spip_forum", "id_forum=$id");
    506                   if (!$id_rubrique AND ($id_article = sql_getfetsel("id_article", "spip_forum", "id_forum=$id") ))
    507                       $id_rubrique = sql_getfetsel("id_rubrique", "spip_articles", "id_article=$id_article");
    508                   if (!$id_rubrique AND ($id_breve = sql_getfetsel("id_breve", "spip_forum", "id_forum=$id")))
    509                       $id_rubrique = sql_getfetsel("id_rubrique", "spip_breves", "id_breve=$id_breve");
    510               } else {
    511                       $objet = sql_getfetsel("objet", "spip_forum", "id_forum=$id");
    512                       $id_objet = sql_getfetsel("id_objet", "spip_forum", "id_forum=$id AND objet='$objet'");
    513                       if ($objet == "rubrique")
    514                           $id_rubrique=$id_objet;
    515                       else if ($objet == "article")
    516                           $id_rubrique=sql_getfetsel("id_rubrique", "spip_articles", "id_article=$id_objet");
    517                       else if ($objet == "breve")
    518                           $id_rubrique=sql_getfetsel("id_rubrique", "spip_breves", "id_breve=$id_objet");
    519               }
    520               return ($id_rubrique AND in_array ($id_rubrique, $qui['restreint']));
    521         }
    522 
    523 
    524 
    525         // L'auteur du message (enregistre')
    526         // 2 = avec une periode de grace d'une heure
    527         // 3 = ad vitam
    528         if ($GLOBALS['autorite']['editer_forums'] >= 3
    529         AND isset($qui['id_auteur'])) {
    530                 $q = "SELECT id_forum FROM spip_forum WHERE id_forum="._q($id)." AND id_auteur="._q($qui['id_auteur']);
    531                 if ($GLOBALS['autorite']['editer_forums'] == 3)
    532                         $q .= " AND date_heure > DATE_SUB(NOW(), INTERVAL 1 HOUR)";
    533                 $s = spip_query($q);
    534                 if (sql_count($s))
    535                         return true;
    536         }
    537 
    538         // par defaut
    539         return autoriser_forum_modifier_dist($faire, $type, $id, $qui, $opt);
    540 
    541 }
    542 } else
    543         $autorite_erreurs[] = 'autoriser_forum_modifier';
     495    // Le webmestre
     496    if (isset($GLOBALS['autorite']['editer_forums']) and $GLOBALS['autorite']['editer_forums'] >= 1
     497    and autoriser('webmestre', $type, $id, $qui, $opt))
     498        return true;
     499
     500    // Les admins
     501    if (
     502        isset($GLOBALS['autorite']['editer_forums'])
     503        and $GLOBALS['autorite']['editer_forums'] >= 2
     504        and $qui['statut'] == '0minirezo'
     505        and !$qui['restreint']
     506    )
     507        return true;
     508
     509
     510
     511    // Les admins restreint pour les articles attachés à une rubrique dont ils sont admins
     512    if (isset($GLOBALS['autorite']['editer_forums']) and $GLOBALS['autorite']['editer_forums'] >= 2 and $qui['statut'] == '0minirezo') {
     513          $id=intval($id); // ?
     514          if (isset($GLOBALS['spip_version_branche']) and intval($GLOBALS['spip_version_branche']) < 3 ){
     515          $id_rubrique = sql_getfetsel("id_rubrique", "spip_forum", "id_forum=$id");
     516          if (!$id_rubrique and ($id_article = sql_getfetsel("id_article", "spip_forum", "id_forum=$id") ))
     517              $id_rubrique = sql_getfetsel("id_rubrique", "spip_articles", "id_article=$id_article");
     518          if (!$id_rubrique and ($id_breve = sql_getfetsel("id_breve", "spip_forum", "id_forum=$id")))
     519              $id_rubrique = sql_getfetsel("id_rubrique", "spip_breves", "id_breve=$id_breve");
     520          } else {
     521              $objet = sql_getfetsel("objet", "spip_forum", "id_forum=$id");
     522              $id_objet = sql_getfetsel("id_objet", "spip_forum", "id_forum=$id AND objet='$objet'");
     523              if ($objet == "rubrique")
     524              $id_rubrique=$id_objet;
     525              else if ($objet == "article")
     526              $id_rubrique=sql_getfetsel("id_rubrique", "spip_articles", "id_article=$id_objet");
     527              else if ($objet == "breve")
     528              $id_rubrique=sql_getfetsel("id_rubrique", "spip_breves", "id_breve=$id_objet");
     529          }
     530          return ($id_rubrique and in_array ($id_rubrique, $qui['restreint']));
     531    }
     532
     533
     534
     535    // L'auteur du message (enregistre')
     536    // 2 = avec une periode de grace d'une heure
     537    // 3 = ad vitam
     538    if (isset($GLOBALS['autorite']['editer_forums']) and $GLOBALS['autorite']['editer_forums'] >= 3
     539    and isset($qui['id_auteur'])) {
     540        $q = "SELECT id_forum FROM spip_forum WHERE id_forum="._q($id)." AND id_auteur="._q($qui['id_auteur']);
     541        if ($GLOBALS['autorite']['editer_forums'] == 3)
     542            $q .= " AND date_heure > DATE_SUB(NOW(), INTERVAL 1 HOUR)";
     543        $s = spip_query($q);
     544        if (sql_count($s))
     545            return true;
     546    }
     547
     548    // par defaut
     549    return autoriser_forum_modifier_dist($faire, $type, $id, $qui, $opt);
     550
     551}
     552} else
     553    $autorite_erreurs[] = 'autoriser_forum_modifier';
    544554}
    545555
     
    549559## TODO : cookie specialise (voir commentaires dans cfg_autorite.html)
    550560##
    551 if ($GLOBALS['autorite']['editer_signatures']
    552 OR false // autre possibilite de surcharge ?
     561if (isset($GLOBALS['autorite']['editer_signatures'])
     562or false // autre possibilite de surcharge ?
    553563) {
    554564if (!function_exists('autoriser_signature_modifier')) {
    555565function autoriser_signature_modifier($faire, $type, $id, $qui, $opt) {
    556566
    557         // Le webmestre
    558         if ($GLOBALS['autorite']['editer_signatures'] >= 1
    559         AND autoriser('webmestre', $type, $id, $qui, $opt))
    560                 return true;
    561 
    562         // Les admins
    563         if (
    564                 $GLOBALS['autorite']['editer_signatures'] >= 2
    565                 AND $qui['statut'] == '0minirezo'
    566                 AND !$qui['restreint']
    567         )
    568                 return true;
    569 
    570         // par defaut
    571         return autoriser_signature_modifier_dist($faire, $type, $id, $qui, $opt);
    572 }
    573 } else
    574         $autorite_erreurs[] = 'autoriser_signature_modifier';
     567    // Le webmestre
     568    if (isset($GLOBALS['autorite']['editer_signatures']) and $GLOBALS['autorite']['editer_signatures'] >= 1
     569    and autoriser('webmestre', $type, $id, $qui, $opt)) {
     570        return true;
     571    }
     572
     573    // Les admins
     574    if (
     575        isset($GLOBALS['autorite']['editer_signatures'])
     576        and $GLOBALS['autorite']['editer_signatures'] >= 2
     577        and $qui['statut'] == '0minirezo'
     578        and !$qui['restreint']
     579    ) {
     580        return true;
     581    }
     582
     583    // par defaut
     584    return autoriser_signature_modifier_dist($faire, $type, $id, $qui, $opt);
     585}
     586} else
     587    $autorite_erreurs[] = 'autoriser_signature_modifier';
    575588}
    576589
     
    579592## autoriser_configurer (pages de configuration)
    580593##
    581 if ($GLOBALS['autorite']['configurer']
    582 OR $GLOBALS['autorite']['configurer_plugin']
     594if (isset($GLOBALS['autorite']['configurer'])
     595or isset($GLOBALS['autorite']['configurer_plugin'])
    583596) {
    584597if (!function_exists('autoriser_configurer')) {
    585598function autoriser_configurer($faire, $type, $id, $qui, $opt) {
    586         // TODO:
    587         // cas particulier : configurer les plugins doit etre bloque
    588         // en mode 'webmestre', sinon on pourrait desactiver autorite.
    589         // mais comment faire pour ne pas bloquer quelqu'un qui installe
    590         // ce plugin alors qu'il est id_auteur > 1 ?
    591         if (in_array($type, array('plugins', 'admin_plugin'))) {
    592                 if ($GLOBALS['autorite']['configurer_plugin'] == 'webmestre')
    593                         return autoriser('webmestre');
    594         }
    595 
    596         if ($GLOBALS['autorite']['configurer'] == 'webmestre')
    597                 return autoriser('webmestre');
    598         else
    599                 return autoriser('x'); // autorisation par defaut
    600 }
    601 } else
    602         $autorite_erreurs[] = 'autoriser_configurer';
     599    // TODO:
     600    // cas particulier : configurer les plugins doit etre bloque
     601    // en mode 'webmestre', sinon on pourrait desactiver autorite.
     602    // mais comment faire pour ne pas bloquer quelqu'un qui installe
     603    // ce plugin alors qu'il est id_auteur > 1 ?
     604    if (in_array($type, array('plugins', 'admin_plugin'))) {
     605        if (isset($GLOBALS['autorite']['configurer_plugin']) and $GLOBALS['autorite']['configurer_plugin'] == 'webmestre') {
     606            return autoriser('webmestre');
     607        }
     608    }
     609
     610    if (isset($GLOBALS['autorite']['configurer']) and $GLOBALS['autorite']['configurer'] == 'webmestre') {
     611        return autoriser('webmestre');
     612    } else {
     613        return autoriser('x'); // autorisation par defaut
     614    }
     615}
     616} else
     617    $autorite_erreurs[] = 'autoriser_configurer';
    603618}
    604619
     
    606621## autoriser_sauvegarder (faire un backup partiel ou complet)
    607622##
    608 if ($GLOBALS['autorite']['sauvegarder']
    609 OR false // autre possibilite de surcharge ?
     623if (isset($GLOBALS['autorite']['sauvegarder'])
     624or false // autre possibilite de surcharge ?
    610625) {
    611626if (!function_exists('autoriser_sauvegarder')) {
    612627function autoriser_sauvegarder($faire, $type, $id, $qui, $opt) {
    613628
    614         if ($GLOBALS['autorite']['sauvegarder'] == 'webmestre')
    615                 return autoriser('webmestre');
    616 
    617         // admins y compris restreints
    618         if ($GLOBALS['autorite']['sauvegarder'] == 'minirezo')
    619                 return
    620                         $qui['statut'] == '0minirezo';
    621 
    622         // version normale
    623         if ($GLOBALS['autorite']['sauvegarder'] == ''
    624         OR $GLOBALS['autorite']['sauvegarder'] == 'admin' # jusque v0.7 de ce plugin
    625         )
    626                 return
    627                         $qui['statut'] == '0minirezo'
    628                         AND !$qui['restreint'];
    629 }
    630 } else
    631         $autorite_erreurs[] = 'autoriser_sauvegarder';
     629    if (isset($GLOBALS['autorite']['sauvegarder']) and $GLOBALS['autorite']['sauvegarder'] == 'webmestre')
     630        return autoriser('webmestre');
     631
     632    // admins y compris restreints
     633    if (isset($GLOBALS['autorite']['sauvegarder']) and $GLOBALS['autorite']['sauvegarder'] == 'minirezo')
     634        return
     635            $qui['statut'] == '0minirezo';
     636
     637    // version normale
     638    if (isset($GLOBALS['autorite']['sauvegarder']) and ($GLOBALS['autorite']['sauvegarder'] == ''
     639        or $GLOBALS['autorite']['sauvegarder'] == 'admin') # jusque v0.7 de ce plugin
     640    )
     641        return
     642            $qui['statut'] == '0minirezo'
     643            and !$qui['restreint'];
     644}
     645} else
     646    $autorite_erreurs[] = 'autoriser_sauvegarder';
    632647}
    633648
     
    635650## autoriser_detruire (vider la base de donnees)
    636651##
    637 if ($GLOBALS['autorite']['detruire']
    638 OR false // autre possibilite de surcharge ?
     652if (isset($GLOBALS['autorite']['detruire'])
     653or false // autre possibilite de surcharge ?
    639654) {
    640655if (!function_exists('autoriser_detruire')) {
    641656function autoriser_detruire($faire, $type, $id, $qui, $opt) {
    642657
    643         if ($GLOBALS['autorite']['detruire'] == 'webmestre')
    644                 return autoriser('webmestre');
    645 
    646         if ($GLOBALS['autorite']['detruire'] == 'non')
    647                 return false;
    648 
    649         // Par defaut, idem configuration
    650         return autoriser('configurer');
    651 }
    652 } else
    653         $autorite_erreurs[] = 'autoriser_detruire';
     658    if (isset($GLOBALS['autorite']['detruire']) and $GLOBALS['autorite']['detruire'] == 'webmestre')
     659        return autoriser('webmestre');
     660
     661    if (isset($GLOBALS['autorite']['detruire']) and $GLOBALS['autorite']['detruire'] == 'non')
     662        return false;
     663
     664    // Par defaut, idem configuration
     665    return autoriser('configurer');
     666}
     667} else
     668    $autorite_erreurs[] = 'autoriser_detruire';
    654669}
    655670
     
    658673##
    659674if (isset($GLOBALS['autorite']['redacteurs_ecrire'])
    660 OR false // autre possibilite de surcharge ?
     675or false // autre possibilite de surcharge ?
    661676) {
    662677if (!function_exists('autoriser_ecrire')) {
    663678function autoriser_ecrire($faire, $type, $id, $qui, $opt) {
    664679    return
    665         $GLOBALS['autorite']['redacteurs_ecrire']
     680        isset($GLOBALS['autorite']['redacteurs_ecrire'])
    666681            ? $qui['statut'] == '0minirezo'
    667682            : in_array($qui['statut'], array('0minirezo', '1comite'));
     
    671686}
    672687
    673 if ($autorite_erreurs) $GLOBALS['autorite_erreurs'] = $autorite_erreurs;
     688if ($autorite_erreurs) { $GLOBALS['autorite_erreurs'] = $autorite_erreurs;}
    674689
    675690
  • _plugins_/autorite/trunk/paquet.xml

    r90606 r91827  
    22        prefix="autorite"
    33        categorie="auteur"
    4         version="0.10.9"
     4        version="0.10.10"
    55        etat="stable"
    66        compatibilite="[1.9.2;3.1.*]"
    77        logo="illuminati-32.png"
    8         schema="0.1"
     8        schema="0.1.0"
    99        documentation="http://contrib.spip.net/Le-plugin-Autorite"
    10 >       
     10>
    1111
    1212        <nom>Autorit&#233;</nom>
     
    1818
    1919        <licence lien="http://www.gnu.org/licenses/lgpl-3.0.html">GNU/LGPL</licence>
    20        
     20
    2121        <traduire module="autorite" reference="fr" gestionnaire="salvatore" />
    2222
  • _plugins_/autorite/trunk/plugin.xml

    r90606 r91827  
    2020        <auteur>Fil, James, Superyms</auteur>
    2121        <licence>GNU/LGPL</licence>
    22         <version>0.10.9</version>
     22        <version>0.10.10</version>
    2323        <etat>stable</etat>
    2424        <description>
     
    3636        <options>autorite_options.php</options>
    3737        <install>autorite_administrations.php</install>
    38         <version_base>0.1</version_base>
     38        <version_base>0.1.0</version_base>
    3939        <necessite id="SPIP" version="[1.9.2;3.1.99]" />
    4040        <necessite id='cfg' version='[1.5.0;]' />
Note: See TracChangeset for help on using the changeset viewer.