Changeset 50075 in spip-zone


Ignore:
Timestamp:
Jul 29, 2011, 2:46:34 PM (10 years ago)
Author:
marcimat@…
Message:

Une fonction pour savoir si une rubrique fait partie d'une zone.

[(#ID_RUBRIQUE|accesrestreint_rubrique_zone_restreinte{tout}|oui)

Cette rubrique fait partie d'une zone.<br />

]

[(#ID_RUBRIQUE|accesrestreint_rubrique_zone_restreinte|oui)

Cette rubrique fait partie d'une zone dont les rubriques sont cachés.<br />

]

Location:
_plugins_/acces_restreint
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/acces_restreint/acces_restreint_fonctions.php

    r50067 r50075  
    143143}
    144144
     145/**
     146 * Cherche si la rubrique donnée est inclue dans une zone d'accès restreinte.
     147 *
     148 * [(#ID_RUBRIQUE|accesrestreint_rubrique_zone_restreinte|oui) Rubrique non visible dans une zone]
     149 * [(#ID_RUBRIQUE|accesrestreint_rubrique_zone_restreinte{tout}) Rubrique dans une zone ]
     150 *
     151 * @param int $id_rubrique : identifiant de la rubrique
     152 * @param null|bool|'tout'      Sélectionner les rubriques
     153 *   cachées dans le public (true),
     154 *   le privé (false),
     155 *   selon le contexte privé ou public (null),
     156 *   cachées ou non quelque soit le contexte ('tout')
     157 * @return bool La rubrique est présente dans une zone
     158**/
     159function accesrestreint_rubrique_zone_restreinte($id_rubrique, $_publique=null) {
     160        return
     161                @in_array($id_rubrique,
     162                        accesrestreint_liste_rubriques_restreintes_et_enfants($_publique)
     163                );
     164}
    145165
    146166/**
    147167 * Retourne la liste de toutes les rubriques sélectionnées dans des zones
    148168 *
     169  @param null|bool|'tout'       Sélectionner les rubriques
     170 *   cachées dans le public (true),
     171 *   le privé (false),
     172 *   selon le contexte privé ou public (null),
     173 *   cachées ou non quelque soit le contexte ('tout')
    149174 * @return Array liste d'identifiants de rubriques
    150175**/
    151 function accesrestreint_liste_rubriques_restreintes() {
     176function accesrestreint_liste_rubriques_restreintes($_publique = null) {
    152177        static $rubs = array();
    153178
    154         $_publique = !test_espace_prive();
     179        // $_publique : null, true, false, 'tout'
     180        $tout = false;
     181        if (is_null($_publique)) {
     182                $_publique = !test_espace_prive();
     183        } elseif ($_publique === 'tout') {
     184                $tout = true;
     185        }
    155186
    156187        if (isset($rubs[$_publique])) {
    157188                return $rubs[$_publique];
    158         }
    159        
    160         if ($_publique) {
    161                 $p = 'publique=' . sql_quote('oui');
    162         } else {
    163                 $p = 'prive=' . sql_quote('non');
    164         }
    165        
    166         $idz = sql_allfetsel('DISTINCT(id_rubrique)', array('spip_zones_rubriques AS zr', 'spip_zones AS z'), array(
    167                 'z.id_zone = zr.id_zone', $p
    168         ));
     189        }
     190
     191        $where = array('z.id_zone = zr.id_zone');
     192        if (!$tout) {
     193                if ($_publique) {
     194                        $where[] = 'publique=' . sql_quote('oui');
     195                } else {
     196                        $where[] = 'privee=' . sql_quote('oui');
     197                }
     198        }
     199       
     200        $idz = sql_allfetsel('DISTINCT(id_rubrique)', array('spip_zones_rubriques AS zr', 'spip_zones AS z'), $where);
    169201       
    170202        if (is_array($idz)) {
     
    180212 * Retourne la liste de toutes les rubriques sélectionnées dans des zones
    181213 *
     214 * @param null|bool|'tout'      Sélectionner les rubriques
     215 *   cachées dans le public (true),
     216 *   le privé (false),
     217 *   selon le contexte privé ou public (null),
     218 *   cachées ou non quelque soit le contexte ('tout')
    182219 * @return Array liste d'identifiants de rubriques
    183220**/
    184 function accesrestreint_liste_rubriques_restreintes_et_enfants() {
     221function accesrestreint_liste_rubriques_restreintes_et_enfants($_publique = null) {
    185222        static $rubs = array();
    186223
    187         $_publique = !test_espace_prive();
     224        if (is_null($_publique)) {
     225                $_publique = !test_espace_prive();
     226        }
    188227
    189228        if (isset($rubs[$_publique])) {
    190229                return $rubs[$_publique];
    191230        }
    192 
    193         $parents = accesrestreint_liste_rubriques_restreintes();
     231       
     232        $parents = accesrestreint_liste_rubriques_restreintes($_publique);
     233
    194234        if ($parents) {
    195235                include_spip('inc/rubriques');
  • _plugins_/acces_restreint/plugin.xml

    r50067 r50075  
    66        <auteur>[cedric.morin@yterium.com->http://www.yterium.net]</auteur>
    77        <licence>GPL &#169; 2007-2008</licence>
    8         <version>3.3.0</version>
     8        <version>3.3.1</version>
    99        <version_base>0.3.0.2</version_base>
    1010        <etat>stable</etat>
Note: See TracChangeset for help on using the changeset viewer.