Changeset 81511 in spip-zone


Ignore:
Timestamp:
Mar 19, 2014, 11:20:59 PM (5 years ago)
Author:
kent1@…
Message:

Permettre d'afficher toutes les rubriques même celles non publiées avec un argument "tout" qui vaut "oui"

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/xmlrpc/trunk/action/xmlrpc_serveur.php

    r81509 r81511  
    573573                 * -* pass string
    574574                 * -* id_rubrique int : obligatoire
     575                 * -* tout string "oui" : affiche toutes les rubriques même celles non publiées
    575576                 */
    576577                function spip_lire_rubrique($args){
     
    579580                                return new IXR_Error(-32601, attribut_html($erreur));
    580581                        }
    581                        
     582                        $tout = false;
     583                        if(isset($args['tout']) && $args['tout'] == 'oui')
     584                                $tout = true;
     585
    582586                        $from = 'spip_rubriques';
    583587                        $where = 'id_rubrique='.intval($args['id_rubrique']);
    584588                       
    585                         $statut = sql_getfetsel('statut',$from,$where);
     589                        if(!$tout)
     590                                $statut = sql_getfetsel('statut',$from,$where);
    586591                        $args_rubrique = array_merge($args,array('id_objet'=>$args['id_rubrique'],'objet'=>'rubrique'));
    587592                       
     
    590595                         * Si on a un id_rubrique non publié dans la requète on regarde si on a le droit de créer un article dedans
    591596                         */
    592                         if(($statut != 'publie') && is_array($GLOBALS['visiteur_session']) && autoriser('creerarticledans','rubrique',$args['id_rubrique'],$GLOBALS['visiteur_session'])){
     597                        if(!$tout && ($statut != 'publie') && is_array($GLOBALS['visiteur_session']) && autoriser('creerarticledans','rubrique',$args['id_rubrique'],$GLOBALS['visiteur_session'])){
    593598                                $res = $this->read($args_rubrique);
    594599                                if(!$res)
     
    607612                         * On liste la rubrique uniquement si publié
    608613                         */
    609                         else if($statut == 'publie'){
     614                        else if($tout || $statut == 'publie'){
    610615                                $res = $this->read($args_rubrique);
    611616                                if(!$res)
     
    868873                        $where = is_array($args['where']) ? $args['where'] : array();
    869874                        $order = is_array($args['tri']) ? $args['tri'] : array('!id_document');
    870                        
     875
    871876                        if(intval($args['id_objet']) && $args['objet']){
    872877                                $where[] = 'lien.id_objet='.intval($args['id_objet']).' AND lien.objet='.sql_quote($args['objet']);
    873878                        }
    874                        
     879
    875880                        if(is_string($args['recherche']) AND strlen($args['recherche']) > 3){
    876881                                $prepare_recherche = charger_fonction('prepare_recherche', 'inc');
     
    880885                                $where[] = 'resultats.'.$rech_where;
    881886                        }
    882                        
     887
    883888                        $documents_struct = array();
    884        
     889
    885890                        if($documents = sql_select($what,$from,$where,array(),$order,$args['limite'])){
    886891                                while($document = sql_fetch($documents)){
     
    931936
    932937                        $mots_struct = array();
    933        
     938
    934939                        if($mots = sql_select($what,$from,$where,array(),$order,$args['limite'])){
    935940                                while($mot = sql_fetch($mots)){
     
    951956                 *
    952957                 * Arguments possibles :
    953                  * -* id_parent
    954                  * -* id_secteur
     958                 * -* id_parent int
     959                 * -* id_secteur int
     960                 * -* tout string "oui" : affiche toutes les rubriques même celles non publiées
    955961                 * -* login string
    956962                 * -* pass string
    957963                 * -* where array : conditions à ajouter dans la clause where du select
    958                  * -* recherche
     964                 * -* recherche string
    959965                 * -* tri array (un array de champs pour trier)
    960966                 * -* limite int : le nombre de résultats à retourner
     
    962968                function spip_liste_rubriques($args){
    963969                        $objet = 'rubrique';
     970                        $tout = false;
     971                        if(isset($args['tout']) && $args['tout'] == 'oui')
     972                                $tout = true;
    964973
    965974                        $where = is_array($args['where']) ? $args['where'] : array();
     
    975984                                $where[] = 'rubriques.id_secteur='.intval($id_secteur);
    976985                        }
    977                        
     986
    978987                        if(is_string($args['recherche']) AND strlen($args['recherche']) > 3){
    979988                                $prepare_recherche = charger_fonction('prepare_recherche', 'inc');
     
    983992                                $where[] = 'resultats.'.$rech_where;
    984993                        }
    985                        
     994
    986995                        $categories_struct = array();
    987996
    988                         if($cats = sql_select($what,$from,$where,array(),$order,$args['limite'] ? $args['limite'] : 100)){
    989                                 while($cat = sql_fetch($cats)){
     997                        if($cats = sql_allfetsel($what,$from,$where,array(),$order,$args['limite'] ? $args['limite'] : 100)){
     998                                foreach($cats as $cat){
    990999                                        $struct=array();
    991                                         if($cat['statut'] == 'publie' || autoriser('creerarticledans','rubrique',$cat['id_rubrique'],$GLOBALS['visiteur_session'])){
     1000                                        if($tout || $cat['statut'] == 'publie' || autoriser('creerarticledans','rubrique',$cat['id_rubrique'],$GLOBALS['visiteur_session'])){
    9921001                                                $args['id_rubrique'] = $cat['id_rubrique'];
    9931002                                                /**
Note: See TracChangeset for help on using the changeset viewer.