Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] Fonctionnement des plugins du coordinateur

Posted by Mike on 02/13/2008 16:27

Bonjour, Je voulais avoir quelques précisions quant au fonctionnement de jCoord avec plusieurs plugins. Nous utilisons plusieurs plugins de coordinateur pour notre application dont jauth, et jusqu'à maintenant nous ne faisions pas attention à l'ordre dans le defaultconfig.ini.php

Exemple:

 [plugins]
 auth = auth.coord.ini.php
 pluginA = 1
 pluginB = 1

Cependant nous avons trouvé un problème sur les pages qui requierent une authentification. Le plugin jAuth fait son travail et nous renvoi sur une page d'identification comme prévu, seulement voilà les plugins A et B ne sont pas executés.

Si l'on regarde d'un peu plus pres la classe jCoordinator, on voit qu'entre les lignes 215 et 226, on execute les actions beforeAction() de chaque plugins dans l'ordre et dès qu'un plugin renvoi autre chose que NULL, on "break" (ligne 224). Ainsi les autres plugins ne sont pas traités.

La solution est donc de changer l'ordre d'inclusions des plugins dans la conf en mettant en premier ceux dont on est sûr qu'ils renverront une valeur NULL (plugin A).

Exemple:

 [plugins]
 pluginA = 1
 auth = auth.coord.ini.php
 pluginB = 1

Alors question est-ce le fonctionnement voulu?

Si oui il faudrait le spécifier dans la doc car l'ordre d'éxecution des plugins est très important et actuellement cela apparaît nul part. De plus il n'est pas facile de débugger à ce niveau; on se rend bien compte que l'on ne passe pas dans le plugins mais sans savoir pourquoi...

Si non il faut corriger ce fonctionnement pour au moins executer tous les beforeAction() avant de rediriger sur une autre action. Je peux proposer un patch.

J'espère que ceci pourra aider d'autres personnes.

  [Opened] Re: Fonctionnement des plugins du coordinateur

Reply #1 Posted by laurentj on 02/13/2008 17:24

Salut,

est-ce le fonctionnement voulu?

Oui, dans le sens où, si plusieurs plugins renvoi une nouvelle action, laquelle prendre ?

Comment un plugin peut-il prétendre qu'il a la priorité sur un autre ?

De plus, si il n'y a pas d'arrêt après le plugin auth, le plugin A pourrait faire des choses en rapport à l'action demandé, alors même que celle-ci ne sera pas exécutée parce que le plugin auth a demandé une redirection.

Bref, la solution actuelle est une réponse simple (ou simpliste peut-être) à un problème complexe.

Si tu as d'autres idées de fonctionnement, n'hésite pas.

Pour la doc, je te laisse la compléter sur ce sujet :-)

 
Page
  1. Fonctionnement des plugins du coordinateur