cy_altern | 11 Sep 17:13

petite question concernant la surcharge des fonctions exec

Pour faire un plugin j'ai besoin de modifier quelques fichiers responsables de 
l'affichage de l'espace privé (/exec/article.php par ex). 

Suivant cette doc : 
http://www.spip-contrib.net/SPIP-1-9-Que-fait-SPIP-pour-servir , je fais une 
copie de article.php dans le répertoire /exec de mon plugin dans lequel je 
modifie la fonction exec_article() et tout fonctionne comme prévu :la fonction 
modifiée remplace la fonction native de spip. 

Le problème de cette solution c'est qu'à chaque changement de la version 
originale d'article.php (correction de bogue, changement de version...) 
je serais obligé de refaire une nouvelle version de mon fichier article.php 
*même si c'est une autre fonction* que exec_article() qui est mise à jour...

La même doc précisant que le moteur de spip "regarde si la fonction exec_truc 
est déjà définie" avant d'aller chercher un éventuel fichier .exec/truc.php, 
j'ai donc essayé de mettre uniquement la fonction exec_article() modifiée dans 
un fichier chargé chaque hit de l'espace privé mais dans ce cas j'ai une erreur
du type "call to undefined function xxx()" où xxx est une des fonctions native
de spip appellée par la fonction exec_article() (en général debut_droite())
et cela même si je fait un include_spip() de tous les fichiers inclus en tête 
du fichier article.php original. 

La question est donc : qu'est ce que j'oublie pour que ça 
fonctionnne???

Committo,Ergo:sum | 11 Sep 17:29

Re: petite question concernant la surcharge des fonctions exec


Le 11 sept. 06 à 17:16, cy_altern a écrit :

> j'ai donc essayé de mettre uniquement la fonction exec_article()  
> modifiée dans
> un fichier chargé chaque hit de l'espace privé mais dans ce cas  
> j'ai une erreur
> du type "call to undefined function xxx()" où xxx est une des  
> fonctions native
> de spip appellée par la fonction exec_article() (en général  
> debut_droite())
> et cela même si je fait un include_spip() de tous les fichiers  
> inclus en tête
> du fichier article.php original.
>
> La question est donc : qu'est ce que j'oublie pour que ça
> fonctionnne???

Tu as "oublié" de charger le "article.php" original, dans lequel  
figurent les fonctions qui te manquent.
Ce fichier ne peut etre inclus par "include_spip", car celui-ci va  
repartir de find_in_path, trouver d'abord celui qu'il vient déjà de  
charger, et donc croire qu'il n'a rien à faire.

De manière générale, ce qui marche pour surcharcher une fonction  
exec_X_dist dans un script exec/X.php, c'est de créer donc un fichier  
homonyme dans son spip_path, et qui commence par:

include('exec/X.php');
function exec_X(....)
(Continue reading)

cy_altern | 11 Sep 19:34

Re: petite question concernant la surcharge des fonctions exec

Committo,Ergo:sum <esj <at> rezo.net> writes:

> Tu as "oublié" de charger le "article.php" original, dans lequel  
> figurent les fonctions qui te manquent.
> Ce fichier ne peut etre inclus par "include_spip", car celui-ci va  
> repartir de find_in_path, trouver d'abord celui qu'il vient déjà de  
> charger, et donc croire qu'il n'a rien à faire.
> 
> De manière générale, ce qui marche pour surcharcher une fonction  
> exec_X_dist dans un script exec/X.php, c'est de créer donc un fichier  
> homonyme dans son spip_path, et qui commence par:
> 
> include('exec/X.php');
> function exec_X(....)
> 
> Committo,Ergo:Sum
> 
Merci pour le tuyau : ça marche impec ! 
j'en ai profité pour rajouter ce complément d'info sur la doc de spip-contrib en
question :
http://www.spip-contrib.net/SPIP-1-9-Que-fait-SPIP-pour-servir#forum387499


Gmane