Changeset 39318 in spip-zone


Ignore:
Timestamp:
Jul 17, 2010, 3:17:17 PM (9 years ago)
Author:
cedric@…
Message:

{tri} et #TRI acceptent dorenavant les 'num titre' et 'multi titre'

Location:
_plugins_/spip-bonux-2
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/spip-bonux-2/plugin.xml

    r38865 r39318  
    44  <icon>img_pack/spip-bonux.png</icon>
    55  <licence>(c) 2008-2009 GPL</licence>
    6   <version>2.1.2</version>
     6  <version>2.2.0</version>
    77  <etat>stable</etat>
    88  <description>Le plugin qui lave plus SPIP que SPIP, avec des chouettes cadeaux dedans ! Interface douce, boucles POUR et CONDITION, tableaux, compteur, etc.</description>
     
    3131  <icon>img_pack/spip-bonux.png</icon>
    3232  <licence>(c) 2008-2009 GPL</licence>
    33   <version>2.1.2</version>
     33  <version>2.2.0</version>
    3434  <etat>stable</etat>
    3535  <description>Le plugin qui lave plus SPIP que SPIP, avec des chouettes cadeaux dedans ! Interface douce, boucles POUR et CONDITION, tableaux, compteur, etc.</description>
  • _plugins_/spip-bonux-2/public/spip_bonux_criteres.php

    r35488 r39318  
    162162        $_variable = !isset($crit->param[2][0]) ? "'$idb'" : calculer_liste(array($crit->param[2][0]), array(), $boucles, $boucle->id_parent);
    163163
    164         $_tri = "((\$t=(isset(\$Pile[0]['tri'.$_variable]))?\$Pile[0]['tri'.$_variable]:$_champ_defaut)?preg_replace(',[^\w.+],','',\$t):'')";
     164        $_tri = "((\$t=(isset(\$Pile[0]['tri'.$_variable]))?\$Pile[0]['tri'.$_variable]:$_champ_defaut)?tri_protege_champ(\$t):'')";
    165165       
    166166        $_sens_defaut = "(is_array(\$s=$_sens_defaut)?(isset(\$s[\$st=$_tri])?\$s[\$st]:reset(\$s)):\$s)";
     
    180180        };
    181181        ";
    182         $boucle->order[] = "\$tri.\$senstri";
     182        $boucle->select[] = "\".tri_champ_select(\$tri).\"";
     183        $boucle->order[] = "tri_champ_order(\$tri).\$senstri";
    183184}
    184185
  • _plugins_/spip-bonux-2/spip_bonux_fonctions.php

    r33927 r39318  
    174174}
    175175
     176/**
     177 * Proteger les champs passes dans l'url et utiliser dans {tri ...}
     178 * preserver l'espace pour interpreter ensuite num xxx et multi xxx
     179 * @param string $t
     180 * @return string
     181 */
     182function tri_protege_champ($t){
     183        return preg_replace(',[^\s\w.+],','',$t);
     184}
     185
     186/**
     187 * Interpreter les multi xxx et num xxx utilise comme tri
     188 * pour la clause order
     189 * 'multi xxx' devient simplement 'multi' qui est calcule dans le select
     190 * @param string $t
     191 * @return string
     192 */
     193function tri_champ_order($t){
     194        if (strncmp($t,'num ',4)==0){
     195                $t = substr($t,4);
     196                $t = preg_replace(',\s,','',$t);
     197                $t = "0+$t";
     198                return $t;
     199        }
     200        elseif(strncmp($t,'multi ',6)==0){
     201                return "multi";
     202        }
     203        return preg_replace(',\s,','',$t);
     204}
     205
     206/**
     207 * Interpreter les multi xxx et num xxx utilise comme tri
     208 * pour la clause select
     209 * 'multi xxx' devient select "...." as multi
     210 * les autres cas ne produisent qu'une chaine vide '' en select
     211 *
     212 * @param string $t
     213 * @return string
     214 */
     215function tri_champ_select($t){
     216        if(strncmp($t,'multi ',6)==0){
     217                $t = substr($t,6);
     218                $t = preg_replace(',\s,','',$t);
     219                $t = sql_multi($t,$GLOBALS['spip_lang']);
     220                return $t;
     221        }
     222        return "''";
     223}
     224
    176225?>
Note: See TracChangeset for help on using the changeset viewer.