Changeset 87182 in spip-zone


Ignore:
Timestamp:
Jan 23, 2015, 5:10:52 PM (5 years ago)
Author:
rastapopoulos@…
Message:

Il restait un manque dans la restriction des objets un par un (comme restreindre UN article précis) : les fonctions machins_accessibles ne continuaient de tester que la visibilité de la rubrique parente, mais pas l'objet lui-même. On appelle donc aussi à chaque fois objets_accessibles avec un AND dans le where. En conséquence, les documents et les forums sont bien protégés eux-aussi.

Location:
_plugins_/acces_restreint/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/acces_restreint/trunk/paquet.xml

    r86731 r87182  
    22        prefix="accesrestreint"
    33        categorie="auteur"
    4         version="3.12.1"
     4        version="3.12.2"
    55        etat="dev"
    66        compatibilite="[3.0.0;3.1.*]"
  • _plugins_/acces_restreint/trunk/public/accesrestreint.php

    r86606 r87182  
    139139function accesrestreint_articles_accessibles_where($primary, $_publique=''){
    140140        # hack : on utilise zzz pour eviter que l'optimiseur ne confonde avec un morceau de la requete principale
    141         return "array('NOT IN','$primary','('.sql_get_select('zzza.id_article','spip_articles as zzza',".accesrestreint_rubriques_accessibles_where('zzza.id_rubrique','',$_publique).",'','','','',\$connect).')')";
     141        $where =  "array('NOT IN','$primary','('.sql_get_select('zzza.id_article','spip_articles as zzza',".accesrestreint_rubriques_accessibles_where('zzza.id_rubrique','',$_publique).",'','','','',\$connect).')')";
     142        $where = "array('AND', $where, ".accesrestreint_objets_accessibles_where('articles', $primary, 'not', $_publique).")";
     143        return $where;
    142144        #return array('SUBSELECT','id_article','spip_articles',array(".accesrestreint_rubriques_accessibles_where('id_rubrique').")))";
    143145}
     
    151153function accesrestreint_breves_accessibles_where($primary, $_publique=''){
    152154        # hack : on utilise zzz pour eviter que l'optimiseur ne confonde avec un morceau de la requete principale
    153         return "array('NOT IN','$primary','('.sql_get_select('zzzb.id_breve','spip_breves as zzzb',".accesrestreint_rubriques_accessibles_where('zzzb.id_rubrique','',$_publique).",'','','','',\$connect).')')";
     155        $where = "array('NOT IN','$primary','('.sql_get_select('zzzb.id_breve','spip_breves as zzzb',".accesrestreint_rubriques_accessibles_where('zzzb.id_rubrique','',$_publique).",'','','','',\$connect).')')";
     156        $where = "array('AND', $where, ".accesrestreint_objets_accessibles_where('breves', $primary, 'not', $_publique).")";
     157        return $where;
    154158        #return "array('IN','$primary',array('SUBSELECT','id_breve','spip_breves',array(".accesrestreint_rubriques_accessibles_where('id_rubrique').")))";
    155159}
     
    163167function accesrestreint_syndic_articles_accessibles_where($primary, $_publique=''){
    164168        # hack : on utilise zzz pour eviter que l'optimiseur ne confonde avec un morceau de la requete principale
    165         return "array('NOT IN','$primary','('.sql_get_select('zzzs.id_syndic','spip_syndic as zzzs',".accesrestreint_rubriques_accessibles_where('zzzs.id_rubrique','',$_publique).",'','','','',\$connect).')')";
     169        $where = "array('NOT IN','$primary','('.sql_get_select('zzzs.id_syndic','spip_syndic as zzzs',".accesrestreint_rubriques_accessibles_where('zzzs.id_rubrique','',$_publique).",'','','','',\$connect).')')";
     170        $where = "array('AND', $where, ".accesrestreint_objets_accessibles_where('syndic', $primary, 'not', $_publique).")";
     171        return $where;
    166172        #return "array('IN','$primary',array('SUBSELECT','id_syndic','spip_syndic',array(".accesrestreint_rubriques_accessibles_where('id_rubrique').")))";
    167173}
Note: See TracChangeset for help on using the changeset viewer.