Avec la sémantique précédente, on pouvait avoir le scénario suivant:
1. un utilisateur compile un squelette comportant l'exemple de Mathieu reférensçant le filtre F du plugin P alors inactif.
2. il active le plugin P.
3. il demande une page utilisant le squelette en question: paf, erreur filtre F indéfini.
Si le plugin est actif, le filtre est bien là, justement, et il n'y a pas de problème.
Je pensais que tu connaissais le compilateur mieux que ça. En cas de filtre indéfini, le compilateur précédent ne provoquait pas d'erreur, mais produisait du code qui, à l'exécution, provoque une erreur. Le scénario que je donne comporte donc un pb, parce que le code produit date d'avant l'activation du plugin.
Par ailleurs ton évolution est plutôt bloquante dans le scénario contraire :
- l'admin compile le squelette utilisant le filtre F avec le plugin actif, tout va bien
- il désactive le plugin
- il demande la page utilisant le squelette en question qui est simplement calculée : paf, plantage brutal sans aucun avertissement et page blanche sans aucune explication.
En effet, mais c'est un scénario moins absurde: il désactive donc ça se passe mal, c'est assez logique. Dans l'autre, il a activé et ça se passe mal quand même, parce qu'il n'a pas activé au bon moment, c'est beaucoup plus tordu.
Si on se contente de vérifier la présence des filtres à la compilation, on suppose que son existense n'est pas susceptible de changer ensuite, ce qui dans le cas des plugins n'est pas le cas.
Il est donc bien nécessaire de vérifier l'existence des filtres au calcul, si besoin, pas à la compilation.
Ce n'est pas faux, mais alors à ce moment là il faut le faire pour tous: entites_html, textebrut etc etc car qui nous dit qu'une surcharge de fitlres.php, texte.php etc n'ont pas rendu ces fonctions indisponibles ? Ce serait plus sûr, mais bonjour les perfs. Je trouve beaucoup plus simple de dire:
1. pour utiliser critères, filtres et balises d'un plugin, il doit être actif à la compilation
2. si vraiment vous voulez rendre un plugin actif par intermitence, utiliser chercher_filtre.
Committo,Ergo:Sum