Re: {branche?} provoque une jointure / SPIP 3.1.1 SVN

RealET <[email protected]>
Newsgroups gmane.comp.web.spip.devel
Message-ID <[email protected]>
RealET a écrit le 12/08/2016 à 10:10 :
> RastaPopoulos a écrit le 12/08/2016 à 09:34 :
>> Bah {branche} travaille sur les rubriques. Or les événements ne sont
>> absolument pas liés à des rubriques mais à des articles. Et donc il y a
>> un cas de {branche} où ça va chercher les événements *des articles*
>> liées aux rubriques demandées. Donc jointure sur les articles.
>>
>> Je ne vois pas ce qu'il y a de bizarre.
> Ce qui est bizarre, c'est que {branche?} (la version sensée être
> facultative), au lieu de ne rien modifier à la requête SQL quand il n'y
> a pas de id_rubrique dans le contexte, rajoute au contraire
> systématiquement un code comportant toutes les rubriques.
> D'une part, en terme de performances, ça rajoute une jointure et in IN
> coûteux.
> D'autre part, ça plante la recherche d'événements rattachés à une page
> unique.
>
J'ai tenté de lire le code du critère branche.
D'après ce que j'en comprends, on commence par aller chercher l'id de 
rubrique (soit passé en paramètre, soit dans le contexte :
https://core.spip.net/projects/spip/repository/entry/branches/spip-3.1/ecrire/public/criteres.php#L496

AMHA, on devrait sortir du critère sans rien modifier à la boucle :
- s'il n'y a pas d'id_rubrique trouvé
- et que le critère est conditionnel {branche?}

Est-ce que c'est ce que 
https://core.spip.net/projects/spip/repository/entry/branches/spip-3.1/ecrire/public/criteres.php#L522 
tente de faire ?
$boucle->where[] = !$crit->cond ? $c :
      ("($arg ? $c : " . ($not ? "'0=1'" : "'1=1'") . ')');

-- 
RealET
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.