Changeset 39330 in spip-zone


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

c'est un peu tire par les cheveux mais {compteur_left xxx} permet de faire un comptage sans exclure ceux dont le compte est nul grace a un left join

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

Legend:

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

    r39324 r39330  
    44  <icon>img_pack/spip-bonux.png</icon>
    55  <licence>(c) 2008-2009 GPL</licence>
    6   <version>2.2.1</version>
     6  <version>2.2.2</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.2.1</version>
     33  <version>2.2.2</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_balises.php

    r39324 r39330  
    228228 */
    229229function balise_COMPTEUR_dist($p) {
    230         return calculer_balise_criteres('compteur', $p);
     230        calculer_balise_criteres('compteur', $p);
     231        if ($p->code=="''")
     232                calculer_balise_criteres('compteur', $p, "compteur_left");
     233        return $p;
    231234}
    232235
     
    267270}
    268271
    269 function calculer_balise_criteres($nom, $p, $balise="") {
    270         $p->code = '';
    271         $balise = $balise ? $balise : $nom;
     272function calculer_balise_criteres($nom, $p, $motif="") {
     273        $p->code = "''";
     274        $motif = $motif ? $motif : $nom;
    272275        if (isset($p->param[0][1][0])
    273276        AND $champ = ($p->param[0][1][0]->texte)) {
    274                 return rindex_pile($p, $nom."_$champ", $balise);
     277                return rindex_pile($p, $nom."_$champ", $motif);
    275278        }
    276279  return $p;
  • _plugins_/spip-bonux-2/public/spip_bonux_criteres.php

    r39318 r39330  
    4242 * @param unknown_type $crit
    4343 */
    44 function critere_compteur($idb, &$boucles, $crit){
    45         $boucle = &$boucles[$idb];
    46        
     44function critere_compteur($idb, &$boucles, $crit, $left=false){
     45        $boucle = &$boucles[$idb];
     46
    4747        $_fusion = calculer_liste($crit->param[1], array(), $boucles, $boucle->id_parent);
    4848        $params = $crit->param;
     
    6464        $depart = array($boucle->id_table,$trouver_table($boucle->id_table, $boucle->sql_serveur));
    6565
     66        // noter les jointures deja installees
     67        $joins = array_keys($boucle->from);
    6668        if ($compt = calculer_jointure($boucle,$depart,$arrivee)){
    6769                if ($_fusion!="''"){
     
    7779                if ($op)
    7880                        $boucle->having[]= array("'".$op."'", "'compteur_".$table."'",$op_val);
    79         }
    80 }
    81 
     81                if ($left){
     82                        foreach($boucle->from as $k=>$val){
     83                                if (!in_array($k, $joins)){
     84                                        $boucle->from_type[$k] = 'left';
     85                                }
     86                        }
     87                }
     88        }
     89}
     90
     91/**
     92 * {compteur_left xxx} permet de faire la meme chose que {compteur xxx}
     93 * mais avec un LEFT JOIN pour ne pas ignorer ceux qui ont un compteur nul
     94 * @param <type> $idb
     95 * @param <type> $boucles
     96 * @param <type> $crit
     97 */
     98function critere_compteur_left($idb, &$boucles, $crit){
     99        critere_compteur($idb, $boucles, $crit, true);
     100}
    82101
    83102/**  Critere {somme champ} #SOMME{champ} */
Note: See TracChangeset for help on using the changeset viewer.