Changeset 81462 in spip-zone


Ignore:
Timestamp:
Mar 19, 2014, 12:33:47 AM (5 years ago)
Author:
rastapopoulos@…
Message:

Toujours que des espacements, indentations, accolades, commentaires un peu.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/acces_restreint/trunk/inc/accesrestreint.php

    r62372 r81462  
    66 */
    77
    8 if (!defined("_ECRIRE_INC_VERSION")) return;
     8if (!defined('_ECRIRE_INC_VERSION')) return;
    99
    1010// Liste des zones a laquelle appartient le visiteur, au format '1,2,3'
     
    2020function accesrestreint_liste_zones_autorisees($zones='', $id_auteur=NULL) {
    2121        $id = NULL;
    22         if (!is_null($id_auteur))
     22       
     23        if (!is_null($id_auteur)) {
    2324                $id = $id_auteur;
    24         elseif (isset($GLOBALS['visiteur_session']['id_auteur']) && $GLOBALS['visiteur_session']['id_auteur'])
     25        }
     26        elseif (isset($GLOBALS['visiteur_session']['id_auteur']) && $GLOBALS['visiteur_session']['id_auteur']) {
    2527                $id = $GLOBALS['visiteur_session']['id_auteur'];
     28        }
     29       
    2630        if (!is_null($id)) {
    2731                $new = accesrestreint_liste_zones_appartenance_auteur($id);
    2832                if ($zones AND $new) {
    29                         $zones = array_unique(array_merge(explode(',',$zones),$new));
     33                        $zones = array_unique(array_merge(explode(',', $zones), $new));
    3034                        sort($zones);
    3135                        $zones = join(',', $zones);
     
    3438                }
    3539        }
     40       
    3641        return $zones;
    3742}
    3843
    3944/**
    40  * liste des rubriques contenues dans une zone, directement.
     45 * Liste des rubriques contenues dans une zone, directement.
    4146 * pour savoir quelles rubriques on peut decocher
    4247 * si id_zone = '' : toutes les rub en acces restreint
     
    4550 * @return array
    4651 */
    47 function accesrestreint_liste_contenu_zone_rub_direct($id_zone){
     52function accesrestreint_liste_contenu_zone_rub_direct($id_zone) {
     53        include_spip('base/abstract_sql');
    4854        $liste_rubriques=array();
    49         // liste des rubriques directement liees a la zone
     55       
     56        // Liste des rubriques directement liees a la zone
    5057        $where = array();
    51         if (is_numeric($id_zone))
     58        if (is_numeric($id_zone)) {
    5259                $where[] = "z.id_zone=".intval($id_zone);
    53         elseif ($id_zone)
     60        }
     61        elseif ($id_zone) {
    5462                $where = $id_zone;
    55 
    56         if (is_array($where))
     63        }
     64
     65        if (is_array($where)) {
    5766                $where[] = "zr.objet='rubrique'";
    58         else
     67        }
     68        else {
    5969                $where = "($where) AND zr.objet='rubrique'";
    60 
    61         include_spip('base/abstract_sql');
    62         $liste_rubriques = sql_allfetsel('id_objet','spip_zones_liens AS zr INNER JOIN spip_zones AS z ON zr.id_zone=z.id_zone',$where);
    63         $liste_rubriques = array_map('reset',$liste_rubriques);
     70        }
     71
     72        $liste_rubriques = sql_allfetsel('id_objet', 'spip_zones_liens AS zr INNER JOIN spip_zones AS z ON zr.id_zone=z.id_zone', $where);
     73        $liste_rubriques = array_map('reset', $liste_rubriques);
    6474        $liste_rubriques = array_unique($liste_rubriques);
     75       
    6576        return $liste_rubriques;
    6677}
     
    6980 * liste des rubriques contenues dans une zone, directement ou par heritage.
    7081 *
     82 * @use calcul_branche_in
    7183 * @param int/string $id_zone
    7284 * @return array
    7385 */
    74 function accesrestreint_liste_contenu_zone_rub($id_zone){
     86function accesrestreint_liste_contenu_zone_rub($id_zone) {
    7587        include_spip('inc/rubriques');
     88       
    7689        $liste_rubriques = accesrestreint_liste_contenu_zone_rub_direct($id_zone);
    77         if (!count($liste_rubriques))
     90        if (!count($liste_rubriques)) {
    7891                return $liste_rubriques;
    79         $liste_rubriques = calcul_branche_in(join(',',$liste_rubriques));
    80         if (!strlen($liste_rubriques))
     92        }
     93       
     94        // On va cherche les rubriques de toute les branches, avec la fonction du noyau
     95        $liste_rubriques = calcul_branche_in(join(',', $liste_rubriques));
     96       
     97        if (!strlen($liste_rubriques)) {
    8198                return array();
    82         $liste_rubriques = explode(',',$liste_rubriques);
     99        }
     100       
     101        // On remet sous forme de tableau
     102        $liste_rubriques = explode(',', $liste_rubriques);
     103       
    83104        return $liste_rubriques;
    84105}
     
    91112 * @return array
    92113 */
    93 function accesrestreint_liste_parentee_zone_rub($id_zone){
     114function accesrestreint_liste_parentee_zone_rub($id_zone) {
    94115        include_spip('inc/rubriques');
     116       
    95117        $liste_rubriques = accesrestreint_liste_contenu_zone_rub_direct($id_zone);
    96         if (!count($liste_rubriques))
     118        if (!count($liste_rubriques)) {
    97119                return $liste_rubriques;
     120        }
    98121
    99122        $id = $liste_rubriques;
    100         while ($parents = sql_allfetsel('id_parent', 'spip_rubriques',
    101         sql_in('id_rubrique', $id))) {
     123        while (
     124                $parents = sql_allfetsel('id_parent', 'spip_rubriques', sql_in('id_rubrique', $id))
     125        ) {
    102126                $parents = array_map('array_shift', $parents);
    103127                $parents = array_diff($parents, array(0));
     
    115139 * @return array
    116140 */
    117 function accesrestreint_liste_zones_appartenance_auteur($id_auteur){
     141function accesrestreint_liste_zones_appartenance_auteur($id_auteur) {
    118142        static $liste_zones = array();
    119         if (!isset($liste_zones[$id_auteur])){
     143       
     144        if (!isset($liste_zones[$id_auteur])) {
    120145                include_spip('base/abstract_sql');
     146               
    121147                $liste_zones[$id_auteur] = sql_allfetsel("id_zone","spip_zones_liens","objet='auteur' AND id_objet=".intval($id_auteur));
    122148                $liste_zones[$id_auteur] = array_map('reset',$liste_zones[$id_auteur]);
    123149        }
     150       
    124151        return $liste_zones[$id_auteur];
    125152}
     
    134161 * @return unknown
    135162 */
    136 function accesrestreint_test_appartenance_zone_auteur($id_zone,$id_auteur){
     163function accesrestreint_test_appartenance_zone_auteur($id_zone, $id_auteur) {
    137164        return in_array($id_zone,accesrestreint_liste_zones_appartenance_auteur($id_auteur));
    138165}
     
    145172 */
    146173function accesrestreint_liste_contenu_zone_auteur($id_zone) {
     174        include_spip('base/abstract_sql');
    147175        $liste_auteurs=array();
    148         include_spip('base/abstract_sql');
    149         $liste_auteurs = sql_allfetsel("id_objet","spip_zones_liens","objet='auteur' AND id_zone=".intval($id_zone));
    150         $liste_auteurs = array_map('reset',$liste_auteurs);
     176       
     177        $liste_auteurs = sql_allfetsel("id_objet", "spip_zones_liens", "objet='auteur' AND id_zone=".intval($id_zone));
     178        $liste_auteurs = array_map('reset', $liste_auteurs);
     179       
    151180        return $liste_auteurs;
    152181}
     
    170199        if ($quelquesoit_visibilite) { $publique = 'tout'; }
    171200
    172         if (is_null($id_auteur) AND isset($GLOBALS['visiteur_session']['id_auteur']))
     201        // Si pas d'auteur, on prend le visiteur en cours si connecté
     202        if (is_null($id_auteur) AND isset($GLOBALS['visiteur_session']['id_auteur'])) {
    173203                $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
    174         if (!isset($liste_rub_exclues[$id_auteur][$publique]) || !is_array($liste_rub_exclues[$id_auteur][$publique])) {
    175 
     204        }
     205       
     206        if (!isset($liste_rub_exclues[$id_auteur][$publique]) or !is_array($liste_rub_exclues[$id_auteur][$publique])) {
    176207                $where = array();
     208               
    177209                // Ne selectionner que les zones pertinentes
    178210                if (!$quelquesoit_visibilite) {
     
    187219                // sinon on selectionne toutes celles correspondant a une zone.
    188220                include_spip('base/abstract_sql');
    189                 if ($GLOBALS['accesrestreint_zones_autorisees']
    190                   AND $id_auteur==$GLOBALS['visiteur_session']['id_auteur'])
     221                if (
     222                        $GLOBALS['accesrestreint_zones_autorisees']
     223                        and $id_auteur==$GLOBALS['visiteur_session']['id_auteur']
     224                ) {
    191225                        $where[] = sql_in('zr.id_zone',$GLOBALS['accesrestreint_zones_autorisees'],'NOT');
    192                 elseif ($id_auteur)
     226                }
     227                elseif ($id_auteur) {
    193228                        $where[] = sql_in('zr.id_zone',accesrestreint_liste_zones_autorisees('',$id_auteur),'NOT');
     229                }
    194230
    195231                // liste les rubriques (+branches) des zones dont ne fait pas parti l'auteur
     
    197233                #$liste_rub_exclues[$publique] = array_unique($liste_rub_exclues[$publique]);
    198234        }
     235       
     236        // On stocke la liste finale qui pourra être modifiée suivant l'option ci-dessous
    199237        $final_liste_rub_exclues = $liste_rub_exclues[$id_auteur][$publique];
    200238       
     239        // AR_TYPE_RESTRICTION définit le type de réstriction pour traiter les élements communs à plusieurs zone
     240        //
     241        // - Une restriction exclusive (ou forte) donne l'acces aux rubriques restreintes par
     242        //   plusieurs zones aux seuls membres de *toutes* les zones concernees.
     243        // - Une restriction faible donne acces à une rubrique, même restreinte par
     244        //   plusieurs zones, aux membres de chaque zone concernée.
     245        // - Valeurs possibles : 'faible', 'forte, ou 'exclusive'               
     246        //
     247        // Autrement dit, si une rubrique 2 est enfant d'une rubrique 1,
     248        // et qu'il existe une zone 1 (rubrique 1) et une zone 2 (rubrique 2) :
     249        // - un auteur present dans la zone 1 (uniquement) ne pourra pas voir la rubrique 2
     250        //   lorsque la restriction est "forte". Il le pourra avec une restriction "faible"
     251        //
     252        // - A l'inverse, un auteur present uniquement dans la zone 2 ne pourra pas voir
     253        //   la rubrique 1 meme si la restriction est "faible" car la parentee n'est pas concernee.
     254        //   il faut (si souhaite) dans ce cas definir en plus AR_TYPE_RESTRICTION_PARENTEE a "faible"
     255        //   pour l'autoriser.
    201256        if (defined("AR_TYPE_RESTRICTION") AND AR_TYPE_RESTRICTION == "faible") {
    202                 // AR_TYPE_RESTRICTION definit le type de restriction pour traiter les elements communs a plusieurs zone
    203                 // Une restriction exclusive (ou forte) donne l'acces aux rubriques restreintes par
    204                 // plusieurs zone aux seuls membres de toutes les zones concernees.
    205                 // Une restriction faible donne acces a une rubrique, meme restreinte par
    206                 // plusieurs zones, aux membres de chaque zone concernee.
    207                 // valeurs : 'faible', 'forte, ou 'exclusive'           
    208 
    209                 // Autrement dit, si une rubrique 2 est enfant d'une rubrique 1,
    210                 // et qu'il existe une zone 1 (rubrique 1) et une zone 2 (rubrique 2) :
    211                 // - un auteur present dans la zone 1 (uniquement) ne pourra pas voir la rubrique 2
    212                 //   lorsque la restriction est "forte". Il le pourra avec une restriction "faible"
    213                 //
    214                 // - A l'inverse, un auteur present uniquement dans la zone 2 ne pourra pas voir
    215                 //   la rubrique 1 meme si la restriction est "faible" car la parentee n'est pas concernee.
    216                 //   il faut (si souhaite) dans ce cas definir en plus AR_TYPE_RESTRICTION_PARENTEE a "faible"
    217                 //   pour l'autoriser.
    218                 if (!isset($liste_rub_inclues[$id_auteur][$publique]) OR !is_array($liste_rub_inclues[$id_auteur][$publique])) {
    219 
     257                // Ne faire la recherche que si la variable statique n'est pas déjà définie
     258                if (!isset($liste_rub_inclues[$id_auteur][$publique]) or !is_array($liste_rub_inclues[$id_auteur][$publique])) {
    220259                        $where = array();
    221260                        // Ne selectionner que les zones pertinentes
     
    229268                        // Calcul des rubriques dans des zones autorisees
    230269                        include_spip('base/abstract_sql');
    231                         if ($GLOBALS['accesrestreint_zones_autorisees']
    232                           AND $id_auteur==$GLOBALS['visiteur_session']['id_auteur'])
    233                                 $where[] = sql_in('zr.id_zone',$GLOBALS['accesrestreint_zones_autorisees']);
    234                         elseif ($id_auteur)
    235                                 $where[] = sql_in('zr.id_zone',accesrestreint_liste_zones_autorisees('',$id_auteur));
     270                        if (
     271                                $GLOBALS['accesrestreint_zones_autorisees']
     272                                and $id_auteur==$GLOBALS['visiteur_session']['id_auteur']
     273                        ){
     274                                $where[] = sql_in('zr.id_zone', $GLOBALS['accesrestreint_zones_autorisees']);
     275                        }
     276                        elseif ($id_auteur) {
     277                                $where[] = sql_in('zr.id_zone', accesrestreint_liste_zones_autorisees('',$id_auteur));
     278                        }
    236279
    237280                        // liste les rubriques (+branches) des zones de l'auteur
     
    241284                        // memes si elles sont restreintes par une autre zone
    242285                        if (defined("AR_TYPE_RESTRICTION_PARENTEE") AND AR_TYPE_RESTRICTION_PARENTEE == "faible") {
    243                                 $liste_rub_inclues[$id_auteur][$publique] =
    244                                         array_merge($liste_rub_inclues[$id_auteur][$publique],
    245                                                 accesrestreint_liste_parentee_zone_rub($where));
     286                                $liste_rub_inclues[$id_auteur][$publique] = array_merge(
     287                                        $liste_rub_inclues[$id_auteur][$publique],
     288                                        accesrestreint_liste_parentee_zone_rub($where)
     289                                );
    246290                        }
    247291                }
    248292
    249293                // Ne pas exclure les elements qui sont autorises
    250                 $final_liste_rub_exclues = array_diff($final_liste_rub_exclues,
    251                         array_intersect($final_liste_rub_exclues,$liste_rub_inclues[$id_auteur][$publique]));
     294                $final_liste_rub_exclues = array_diff(
     295                        $final_liste_rub_exclues,
     296                        array_intersect($final_liste_rub_exclues, $liste_rub_inclues[$id_auteur][$publique])
     297                );
    252298        }
    253299
     
    255301}
    256302
    257 
    258 ?>
Note: See TracChangeset for help on using the changeset viewer.