r11087 - spip/ecrire/public

Author: esj@rezo.net
Date: 2008-01-17 10:49:02 +0100 (jeu, 17 jan 2008)
New Revision: 11087

Log:
Amélioration de la détection des boucles dont le corps est constant, afin de transformer le While-Fetch en For sans requête (le Numrows initial suffit).
Le manque se situait dans la non prise en compte des {{{\'}}} dans l'analyse du texte.

Application au plugin Nuage qui veut mettre en exergue les mots clés d'un article:

{{{
<BOUCLE2(MOTS)><br />
<span<BOUCLE3(MOTS){id_article}{id_mot}> class='on'</BOUCLE3>>#TITRE</span>
</BOUCLE2>
}}}
qui fournit:
{{{
$result = calculer_select(
        array("1"), # SELECT
        array('mots' => 'spip_mots','L1' => 'spip_mots_articles'), # FROM
        array(), # FROM type jointure
        
            array(
            array('=', 'L1.id_article', intval(@$Pile[0]['id_article'])),
            array('=', 'mots.id_mot', intval($Pile[$SP]['id_mot']))), # WHERE
        array(1 => array('mots', 'id_mot')), # WHERE pour jointure
        array(), # GROUP
        array(), # ORDER
        '', # LIMIT
        
            array(), # HAVING
        'mots', # table
        '3', # boucle
        ''); # serveur
    $Numrows['3']['total'] = @sql_count($result,'');
    $t0 = "";
    for($x=$Numrows["3"]["total"];$x>0;$x--)
            $t0 .=
// 15 signes
' class=\'arial1\'';
    @sql_free($result,'');
    return $t0;
}}}

Modified:
   spip/ecrire/public/compiler.php

Details: http://trac.rezo.net/trac/spip/changeset/11087