Correction d'une erreur de compilation possible avec le critère {si} retournant faux, signalé par Cédric, par exemple avec : {si #ID_SECTEUR|=={2}} {enfants_indirects #ID_RUBRIQUE}

Avec un critere {si} renvoyant faux, l'itérateur vide alors construit envoyé au décorateur (appliquant les critères entre autres) transmettait aussi les informations destinées normalement à un iterateur SQL, et dans ce cas le décorateur tentait de construire des filtres qui ne fonctionnaient pas. On vide donc le tableau de commande envoyé au décorateur dans ce cas là. 

Il est étonnant qu'on ne soit pas tombé bien plus tôt sur ce problème.
svn/root/tags/spip-3.0.4
Matthieu Marcillaud 12 years ago
parent 8e524d0b5e
commit ff6adf80ce

@ -27,7 +27,9 @@ class IterFactory{
if (isset($command['si'])) {
foreach ($command['si'] as $si) {
if (!$si) {
return new IterDecorator(new EmptyIterator(), $command, $info);
// $command pour boucle SQL peut generer des erreurs de compilation
// s'il est transmis alors qu'on est dans un iterateur vide
return new IterDecorator(new EmptyIterator(), array(), $info);
}
}
}

Loading…
Cancel
Save