Changeset 39822 in spip-zone


Ignore:
Timestamp:
Aug 13, 2010, 7:53:00 AM (9 years ago)
Author:
cedric@…
Message:

Implementation robuste de #SAUTER qui ne depend pas de sql_seek

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

Legend:

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

    r39820 r39822  
    44  <icon>img_pack/spip-bonux.png</icon>
    55  <licence>(c) 2008-2009 GPL</licence>
    6   <version>2.2.5</version>
     6  <version>2.2.6</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.5</version>
     33  <version>2.2.6</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

    r39820 r39822  
    461461}
    462462
     463
     464/**
     465 * Implementation securisee du saut en avant
     466 * pour la balise #SAUTER
     467 *
     468 * @param resource $res
     469 * @param int $pos
     470 * @param int $nb
     471 * @param int $total
     472 */
     473function spip_bonux_sauter(&$res, &$pos, $nb, $total){
     474        // pas de saut en arriere qu'on ne sait pas faire sans sql_seek
     475        if (($nb=intval($nb))<=0) return;
     476
     477        $saut = $pos + $nb;
     478        // si le saut fait depasser le maxi, on libere et on sort
     479        if ($saut>=$total) {sql_free($res); return;}
     480
     481        if (sql_seek($res, $saut))
     482                $pos += $nb;
     483        else
     484                while ($pos<$saut AND sql_fetch($res))
     485                        $pos++;
     486        return;
     487}
     488
     489/**
     490 * #SAUTER{n} permet de sauter n resultats dans une boucle
     491 * n>0
     492 *
     493 * @param <type> $p
     494 * @return <type>
     495 */
    463496function balise_SAUTER_dist($p){
    464497        $_nb = interprete_argument_balise(1,$p);
     
    466499        $_max = "\$Numrows['".$p->id_boucle."']['total']";
    467500
    468         $code = "sql_seek(\$result,\$saut)?$_compteur=\$saut:false";
    469         $code = "(\$saut=$_compteur+intval($_nb))<$_max?($code):sql_free(\$result)";
    470         $code = "intval($_nb)?($code):''";
    471         $p->code = "vide($code)";
     501        $p->code = "spip_bonux_sauter(\$result,$_compteur,$_nb,$_max)";
    472502        $p->interdire_scripts = false;
    473503        return $p;
Note: See TracChangeset for help on using the changeset viewer.