Changeset 39267 in spip-zone


Ignore:
Timestamp:
Jul 13, 2010, 2:28:22 PM (9 years ago)
Author:
marcimat@…
Message:

Correction : comme le $where du critère est modifié lorsqu'il n'y a pas de résultat trouvé pour un suivant ou précédent, il faut que la fonction ne le déclare pas en static, sinon la modification est reportée sur les appels suivants. On force le non passage en static avec un sql_quote dans un where... vilain, mais fonctionne !

Location:
_plugins_/criteres_suivant_precedent
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/criteres_suivant_precedent/plugin.xml

    r39266 r39267  
    22        <nom>Critères Suivant / Précédent</nom>
    33       
    4         <version>1.0.0</version>
     4        <version>1.0.1</version>
    55       
    66        <etat>test</etat>
  • _plugins_/criteres_suivant_precedent/public/csp_criteres.php

    r39266 r39267  
    6161        // sauf si pas de primaire, ou si primaire composee
    6262        // dans ce cas, on ne sait pas gerer une pagination indirecte
    63 #
    64 # A GARDER ? je sais pas à quoi ça sert...
    65 #
     63        // : il faut id_xx dans le select pour la fonction quete_position_primary()
    6664        $t = $boucle->id_table . '.' . $primary;
    6765        if ($boucle->primary
    6866                AND !preg_match('/[,\s]/',$primary)
    69                 AND !in_array($t, $boucle->select))
     67                AND !in_array($t, $boucle->select)) {
    7068          $boucle->select[]= $t;
     69        }
    7170
     71        // forcer le compilo à ne pas prendre en static a cause du $where fluctuant
     72        $boucle->where[]= array("'='","'1'","sql_quote(1)");
    7273         
    7374}
     
    7879        // on ne devrait pas arriver ici si la cle primaire est inexistante
    7980        // ou composee, mais verifions
    80         if (!$primary OR preg_match('/[,\s]/',$primary))
     81        spip_log('quete_position_primary','csp');
     82        spip_log("$primary = $valeur * $trouver ..." ,'csp');
     83        if (!$primary OR preg_match('/[,\s]/', $primary))
    8184                return false;
    8285
    8386        $pos = 0;
    8487        while ($row = sql_fetch($res, $serveur) AND $row[$primary]!=$valeur){
     88                spip_log("$pos = $row[$primary] * $valeur ..." ,'csp');
    8589                $pos++;
    8690        }
     91        spip_log("$pos = $row[$primary] * $valeur ..." ,'csp');
    8792        // si on a pas trouve
    8893        if ($row[$primary]!=$valeur)
Note: See TracChangeset for help on using the changeset viewer.