tu as l'air de le faire de la bonne façon, j'ai juste un doute sur le:
return action_joindre_dist();
si tu ne charges jamais ecrire/action/joindre.php, alors cette
fonction n'existera pas et du coup, php va pas aimer, non?
Pierre
On 10/17/07, cam.lafit@azerttyu.net <cam.lafit@azerttyu.net> wrote:
Bonjour
J'essaye bêtement de surcharger l'action action_joindre_dist()
Du coup dans mon plugin j'ai mis un /action/joindre.php avec
function action_joindre() {
spip_log('action_joindre','doc2img');
return action_joindre_dist();
}
Or ceci ne marche pas du tout. j'ai tenté en nommant mon fichier
/action/doc2img_joindre.php, pas mieux.
J'ai tenté aussi avec un spip_include('action/joindre'), que dale.
En regardant sur la zone, les plugins que j'ai trouvé copie/colle
complètement les actions natives de spip, si j'ai bien lu le code.
Du coup ma question est comment faire une surcharge d'une action ?
Le truc, c'est que quand tu vas faire un
include_spip('action/joindre');
spip va charger TON fichier joindre, puisque include_spip prend la
surcharge en compte.
probablement, tu devrais utiliser un include_once, ou alors trouver le
moyen de dire à SPIP de charger le fichier original...
Pierre
On 10/17/07, cam.lafit@azerttyu.net <cam.lafit@azerttyu.net> wrote:
Bonjour
Je viens de tester ainsi :
include_spip('inc/charsets'); # pour le nom de fichier
include_spip('base/abstract_sql');
include_spip('inc/actions');
include_spip('action/joindre');
function action_joindre() {
spip_log('action_joindre','doc2img');
return action_joindre_dist();
}
le action_joindre_dist() n'est pas appellé ....
km
--
Pierre Andrews
Ph.D. Student, The University of York
Ing.info.dipl. EPFL
pierre.andrews@a3.epfl.ch http://www.cs.york.ac.uk/~pandrews
Merci à vous 2, sur l'idée de Pierre en fouillant avec un getcwd(),
j'ai pu voir que les actions sont lancés depuis la racine donc :
require('ecrire/action/joindre.php') marche
Et je viens de tester la solution de james qui marche aussi :
include(_DIR_RESTREINT.'action/joindre.php');
function action_joindre() {
//on charge le action originel
include(_DIR_RESTREINT.'action/joindre.php');
global $redirect;
//on fait les traitement propre à la surcharge
spip_log('action_joindre','doc2img');
//on appelle la fonction orignelle
action_joindre_dist();
//on fait les traitement propre à la surcharge
spip_log('action_joindre2','doc2img');
}
Dans ce cas le seconde spip_log n'est pas lancé, je suppose que sur
les cascades de fonctions on a la redirection qui est exécuté entre
temps.
L'idée était de récupérer l'id_document une fois chargé pour lancer un
traitement dessus.
Du coup en fouillant un peu, je vois que c'est
inc/inc_ajouter_documents_dist() qui semble faire le boulot.
Or là impossible de faire une surchage j'ai repris le même principe
que pour action mais là ça coince et spip.log ne dit rien et mes
spip_log ne sont pas retournés.
Ceci empêche bien l'action normale de chargement mais le spip_log
n'est pas écrit. Alors je dois avoir un autre effet de bord.