Changeset 57428 in spip-zone


Ignore:
Timestamp:
Jan 21, 2012, 12:52:03 AM (8 years ago)
Author:
denisb@…
Message:

spip-bonux-2 : le filtre ne retourne rien si la rubrique n'existe pas.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/spip-bonux-2/spip_bonux_fonctions.php

    r57392 r57428  
    1313
    1414/**
    15  * une fonction pour generer des menus avec liens
    16  * ou un span lorsque l'item est selectionne
     15 * une fonction pour générer des menus avec liens
     16 * ou un span lorsque l'item est sélectionné
    1717 *
    1818 * @param string $url
     
    2929
    3030/**
    31  * une fonction pour generer une balise img a partir d'un nom de fichier
     31 * une fonction pour générer une balise img à partir d'un nom de fichier
    3232 *
    3333 * @param string $img
     
    5252
    5353/**
    54  * Ajouter un timestamp a une url de fichier
     54 * Ajouter un timestamp à une url de fichier
    5555 *
    5656 * @param unknown_type $fichier
     
    6464
    6565/**
    66  * Transformer un tableau d'entrees array("rubrique|9","article|8",...)
    67  * en un tableau contenant uniquement les identifiants d'un type donne.
    68  * Accepte aussi que les valeurs d'entrees soient une chaine brute
     66 * Transformer un tableau d'entrées array("rubrique|9","article|8",...)
     67 * en un tableau contenant uniquement les identifiants d'un type donné.
     68 * Accepte aussi que les valeurs d'entrées soient une chaîne brute
    6969 * "rubrique|9,article|8,..."
    7070 *
    71  * @param array/string $selected liste des entrees : tableau ou chaine separee par des virgules
    72  * @param string $type type de valeur a recuperer ('rubrique', 'article')
     71 * @param array/string $selected liste des entrées : tableau ou chaîne séparée par des virgules
     72 * @param string $type type de valeur à récuperer ('rubrique', 'article')
    7373 *
    74  * @return array liste des identifiants trouves.
     74 * @return array liste des identifiants trouvés.
    7575**/
    7676function picker_selected($selected, $type){
     
    106106
    107107/**
    108  * Donner n'importe quelle information sur un objet de maniere generique.
    109  *
    110  * La fonction va gerer en interne deux cas particuliers les plus utilises :
     108 * Donner n'importe quelle information sur un objet de manière générique.
     109 *
     110 * La fonction va gérer en interne deux cas particuliers les plus utilisés :
    111111 * l'URL et le titre (qui n'est pas forcemment la champ SQL "titre").
    112112 *
    113  * On peut ensuite personnaliser les autres infos en creant une fonction
     113 * On peut ensuite personnaliser les autres infos en créant une fonction
    114114 * generer_<nom_info>_entite($id_objet, $type_objet, $ligne).
    115  * $ligne correspond a la ligne SQL de tous les champs de l'objet, les fonctions
    116  * de personnalisation n'ont donc pas a refaire de requete.
     115 * $ligne correspond à la ligne SQL de tous les champs de l'objet, les fonctions
     116 * de personnalisation n'ont donc pas à refaire de requête.
    117117 *
    118118 * @param int $id_objet
     
    122122 */
    123123function generer_info_entite($id_objet, $type_objet, $info, $etoile=''){
    124         // On verifie qu'on a tout ce qu'il faut
     124        // On vérifie qu'on a tout ce qu'il faut
    125125        $id_objet = intval($id_objet);
    126126        if (!($id_objet and $type_objet and $info))
     
    131131                return generer_url_entite($id_objet, $type_objet);
    132132       
    133         // Si on demande le titre, on le gere en interne
     133        // Si on demande le titre, on le gère en interne
    134134        if ($demande_titre = ($info == 'titre')){
    135135                global $table_titre;
     
    139139        }
    140140       
    141         // Sinon on va tout chercher dans la table et on garde en memoire
     141        // Sinon on va tout chercher dans la table et on garde en mémoire
    142142        static $objets;
    143143       
    144         // On ne fait la requete que si on a pas deja l'objet ou si on demande le titre mais qu'on ne l'a pas encore
     144        // On ne fait la requête que si on n'a pas déjà l'objet ou si on demande le titre mais qu'on ne l'a pas encore
    145145        if (!$objets[$type_objet][$id_objet] or ($demande_titre and !$objets[$type_objet][$id_objet]['titre'])){
    146146                include_spip('base/abstract_sql');
     
    163163                $info_generee = $ligne[$info];
    164164       
    165         // On va ensuite chercher les traitements automatiques a faire
     165        // On va ensuite chercher les traitements automatiques à faire
    166166        global $table_des_traitements;
    167167        $maj = strtoupper($info);
     
    179179
    180180/**
    181  * Proteger les champs passes dans l'url et utiliser dans {tri ...}
    182  * preserver l'espace pour interpreter ensuite num xxx et multi xxx
     181 * Protéger les champs passés dans l'url et utilisés dans {tri ...}
     182 * préserver l'espace pour interpréter ensuite num xxx et multi xxx
    183183 * @param string $t
    184184 * @return string
     
    189189
    190190/**
    191  * Interpreter les multi xxx et num xxx utilise comme tri
     191 * Interpréter les multi xxx et num xxx utilisés comme tri
    192192 * pour la clause order
    193  * 'multi xxx' devient simplement 'multi' qui est calcule dans le select
     193 * 'multi xxx' devient simplement 'multi' qui est calculé dans le select
    194194 * 'hasard' est calculé dans le select
    195195 * @param string $t
     
    200200                $t = substr($t,4);
    201201                $t = preg_replace(',\s,','',$t);
    202                 // Lever une ambiguit� possible si le champs fait partie de la table (pour compatibilit� de la balise tri avec compteur, somme, etc.)
     202                // Lever une ambiguïté possible si le champ fait partie de la table (pour compatibilité de la balise tri avec compteur, somme, etc.)
    203203                if (!is_null($table) && !is_null($field) && in_array($t,unserialize($field)))
    204204                        $t = "0+$table.$t";
     
    212212        else {
    213213                $t = preg_replace(',\s,','',$t);
    214                 // Lever une ambiguit� possible si le champs fait partie de la table (pour compatibilit� de la balise tri avec compteur, somme, etc.)
     214                // Lever une ambiguïté possible si le champ fait partie de la table (pour compatibilité de la balise tri avec compteur, somme, etc.)
    215215                if (!is_null($table) && !is_null($field) && in_array($t,unserialize($field)))
    216216                        return $table.'.'.$t;
     
    221221
    222222/**
    223  * Interpreter les multi xxx et num xxx utilise comme tri
     223 * Interpréter les multi xxx et num xxx utilisés comme tri
    224224 * pour la clause select
    225225 * 'multi xxx' devient select "...." as multi
    226  * les autres cas ne produisent qu'une chaine vide '' en select
     226 * les autres cas ne produisent qu'une chaîne vide '' en select
    227227 * 'hasard' devient 'rand() AS hasard' dans le select
    228228 *
     
    245245/**
    246246 * Rediriger une page suivant une autorisation,
    247  * et ce, n'importe o� dans un squelette, m�me dans les inclusions.
     247 * et ce, n'importe où dans un squelette, même dans les inclusions.
    248248 *
    249249 * @param bool $ok Indique si l'on doit rediriger ou pas
     
    264264        // Si aucun argument on essaye de deviner quoi faire
    265265        if (!$url and !$statut){
    266                 // Si on est dans l'espace priv�, on g�n�re du 403 Forbidden
     266                // Si on est dans l'espace privé, on génère du 403 Forbidden
    267267                if (test_espace_prive()){
    268268                        http_status(403);
     
    276276        }
    277277       
    278         // Sinon on suit les directives indiqu�es dans les deux arguments
     278        // Sinon on suit les directives indiquées dans les deux arguments
    279279       
    280280        // S'il y a un statut
    281281        if ($statut){
    282                 // Dans tous les cas on modifie l'ent�te avec ce qui est demand�
     282                // Dans tous les cas on modifie l'entité avec ce qui est demandé
    283283                http_status($statut);
    284284                // Si le statut est une erreur 4xx on va chercher le squelette
     
    294294
    295295/**
    296  * Calculer et retourner la profondeur de la rubrique 
     296 * Calculer et retourner la profondeur de la rubrique
    297297 * (dans spip3, c'est un champ de la table rubrique)
    298  *
     298 * les rubriques à la racine sont à une profondeur de 1
     299 *
     300 * @param string
    299301 * @return int
    300302*/
     
    302304        $id_rubrique = intval($id_rubrique);
    303305       
    304         // sauver les calculs deja faits
     306        // sauver les calculs déjà faits
    305307        static $profs = array();
    306308        if (isset($profs[$id_rubrique])) {
     
    308310        }
    309311
    310         // recuperer le parent.
     312        // récupérer le parent.
    311313        $id_parent = sql_getfetsel('id_parent', 'spip_rubriques', 'id_rubrique='.$id_rubrique);
    312314
    313         // pas de parent, on est tout en haut...
    314         if (!$id_parent) {
     315        // pas de parent : id_rubrique n'existe pas
     316        if (is_null($id_parent)) {
     317                return '';
     318        }
     319
     320        // parent zéro : on est tout en haut (racine)
     321        if ($id_parent == '0') {
    315322                return $profs[$id_rubrique] = 1;
    316323        }
Note: See TracChangeset for help on using the changeset viewer.