RE: [SPIP Zone] BUG de SPIP ? Séquencement des appels aux pipelines dans SPIP

Merci pour ta réponse.

Je comprend le principe d’indépendance et d’auto suffisance des pipelines.

Cependant il y a peut être une règle intermédiaire qui serait acceptable : sequenser uniquement certains pipelines… exec_init() toujours en premier (son nom ne laisse pas présager qu’il retourne du flux). Peut-être body_prive avant les affiche* dans la mesure ou body est un conteneur des milieu_gauche, milieu_droite et milieu_centre ?

Dans mon cas, la fonction de SPIP « surcharger_langue() » n’est pas accessible depuis le pipeline exec_init lorsque je suis dans article et est accessible quand je suis dans article_edit. De la même façon, si j’appelle surcharger_langue dans body_prive elle est appelé trop tard quand je suis dans article (body_prive est appelé après affiche_milieu dans article).

Connaissant cette contrainte ( ou cette « non contrainte ;-) » ), je peux m’en sortir mais ca m’oblige à jongler (tatonner) avec les appels en testant le comportement du plugin sur chaque page.
Peut-être y a-il une solution ?

Olivier

Date: Fri, 1 Jun 2007 17:12:55 +0200
From: cedric.morin@yterium.com
To: olvb@hotmail.fr
CC: spip-zone@rezo.net
Subject: Re: [SPIP Zone] BUG de SPIP ? Séquencement des appels aux pipelines dans SPIP

O B a écrit :

Bonjour,

J’ai constaté une différence de comportement sur un plugin que j’ai
développé sur les pages article_edit et article.
Apres investigation, cela est du à un probleme de séquencement des
appels pipelines.
En effet, les appels ne sont pas effectués dans le même odre lors de
l’appel à ces 2 écrans (même si le flux de sortie est, lui, bien ordonné)

Voici un résumé des appels des 2 fonctions :


on constate que l’ordre d’appel des pipeline n’est pas le même sur ces
2 pages, ce qui dans le cadre de mon plugin, me derange un peu
(assignation de variables, inclusions etc…)…

Instinctivement j’aurais plutot imaginé le sequencement suivant qqsoit
la page appelée :
pipeline : exec_init()
pipeline : init_body
pipeline : affiche_gauche()
pipeline : exec_droite()
pipeline : exec_milieu()

Y-a-t-il un contrainte qui empêcherait d’uniformiser le séquencement
de ces appels ? Dois-je déclarer un bug ?
mmm en toute rigueur, rien ne permet de garantir l’ordre d’appel.
Selon le layout que l’on utilise(ra) dans SPIP, le flux peut commencer
par le milieu (contenu) ou par la gauche.
On pourrait a la rigueur supposer que init_body soit appelé avant le
reste. Mais en l’etat rien ne l’impose car toutes les fonctions
retournent un flux, et il se peut très bien que dans certains cas on
calcule la page d’abord, puis le init apres afin d’y glisser les bons
scripts.

Donc pas sur que ce soit la un bug, juste une contrainte que l’on a pas
jugé utile de mettre et qui pourrait poser autant de problème qu’elle en
résoud.

Les pipelines sont supposés par nature indépendants les uns des autres,
et auto suffisants (ie ils contiennent dans leur contexte ce qui est
necessaire a leur calcul).

Cédric


Hotmail to go? Get your Hotmail, news, sports and much more! Check out the New MSN Mobile