Accueil > Tickets > a propos de la description du pipeline post_insertion

Ticket #270 - a propos de la description du pipeline post_insertion

Créé le mardi 8 novembre 2011 par Pierre-Aurelien

Assigné à :
Le ticket n’a été assigné à personne.

Bonjour,

ce serait bien de préciser dans la documentation du pipeline post_insertion que $flux[’data’] ne contient pas tous les champs de l’enregistrement qui vient d’etre inséré dans la table MySQL, mais seulement très peu de champs, et que parmi ces quelques champs, la plupart sont inexploitables (car ils contiennent à ce moment-là des valeurs temporaires qui vont d’être remplacées l’instant d’après par les valeurs définitives).

Bref, contrairement à ce que laisse supposer la documentation actuelle, à l’intérieur de la fonction mon_plugin_post_insertion(), la seule valeur fiable que l’on peut récupérer d’un champ de l’enregistrement courant c’est $flux[’args’][’id_objet’] (c.a.d. le champ id_XXX). On n’a accès aux valeurs d’aucun autre champs à cet instant précis. Ce qui rend dans certains cas l’utilisation du pipeline post_insertion très délicate voire inutilisable.

En ce qui me concerne j’aurai eu besoin pour le développement de mon plugin d’un pipeline sur lequel je puisse me raccrocher pour etre mis au courant à chaque fois qu’un auteur est rajouté dans la table spip_auteurs et j’aurais voulu avoir à ce moment-là la liste complete des champs pour cet auteur, de manière à pouvoir récupérer son nom, son email, etc. pour en faire quelque chose avec dans mon plugin. A la lecture de la doc je pensais que le pipeline post_insertion serait idéal pour moi, mais j’ai finalement déchanté en voyant qu’il me permet seulement de récupérer id_auteur et rien d’autre. (car les autres champs ne sont pas remplis au moment de la création de l’enregistrement dans la table spip_auteurs). Je vais maintenant vérifier s’il n’existe pas un autre pipeline qui concernerait cette fois-ci non plus l’enregistrement d’un auteur mais la mise à jour de ses champs dans la table spip_auteurs. Je prie pour qu’un tel pipeline existe ! Si c’est le cas, vous devriez mettre un lien dans la documentation du pipeline post_insertion vers cet autre pipeline. Et si jamais il n’existe pas... je suis dans la mouise !!!

Exemple : post_insertion

2 commentaires

  • a propos de la description du pipeline post_insertion date forum , par Matthieu Marcillaud

    Effectivement les pipelines pre / post insertion ne connaissent pas grand chose, car SPIP effectue ses insertions en 2 temps.

    Le pipeline post_edition (non encore décrit sur ce site) existe aussi, là il y aura tous tes champs modifiés, mais on ne saura pas s’il s’agit d’une création de l’auteur ou d’une simple modification.

    Une manière de procéder peut être comme a fait le plugin « date_inscription » en se branchant sur le traitement du formulaire d’édition d’auteur ou du formulaire d’inscription au site.

    ( http://zone.spip.org/trac/spip-zone/browser/_plugins_/date_inscription/date_inscription_pipelines.php#L10 )

  • a propos de la description du pipeline post_insertion date forum , par Pierre-Aurelien

    Merci pour cette info. Entre temps j’ai effectivement découvert l’existence du pipeline post_edition en épluchant le code source de SPIP (je viens d’y passer 2 heures :-( ...)

    Bon, enfin, maintenant j’ai plus qu’à trouver une manière de faire la différence entre création d’un nouvel enregistrement et modification d’un enregistrement déjà existant (parce que ce pipeline post_edition est appelé de la meme facon dans ces deux cas...).

    Certes, il y a la possibilité de se brancher sur les formulaires d’inscription et d’édition... Mais je vais voir si je peux pas trouver une solution plus ’propre’.

    Merci pour votre réponse en tout cas !

Seules les personnes identifiées peuvent écrire des tickets ou commentaires.

Identifiez vous.