post_edition

Ce pipeline permet d’agir lors de l’édition d’un élément éditorial, lorsque l’utilisateur édite les champs ou change le statut de l’objet. Il est appelé juste après l’enregistrement des données.

Plusieurs informations sont transmises dans un tableau comportant 2 clés :

  • data contient les champs et leurs valeurs.
  • args contient des informations sur la table, l’objet édité, et l’action effectuée.

Voici une liste d’actions effectuées dans le core :

Exemple d’appel dans objet_modifier_champs() :

pipeline('post_edition',
    array(
        'args' => array(
            'table' => $spip_table_objet,
            'table_objet' => $table_objet,
            'spip_table_objet' => $spip_table_objet,
            'type' => $objet,
            'id_objet' => $id_objet,
            'champs' => isset($options['champs']) ? $options['champs'] : array(), // [doc] kesako ?
            'champs_anciens' => $row,
            'serveur' => $serveur,
            'action' => isset($options['action']) ? $options['action'] : 'modifier'
        ),
        'data' => $champs
    )
);

D’autres actions transitent par le pipeline post_edition. Par exemple :
 sur les documents : tourner, delier_document, supprimer_document, ajouter_document
 sur les sites syndiqués : syndiquer
 ...

Exemple

Le plugin Spipicious modifie les tags spipicious de l’objet lors du changement de statut.

function spipicious_post_edition($flux) {
    if($flux['args']['action'] == 'instituer') {
        $objet = objet_type($flux['args']['table']);
        if (isset($flux['data']['statut']) && ($flux['data']['statut'] != 'publie')) {
                sql_updateq(
                        'spip_spipicious', 
                        array('statut'=>'prop'), 
                        'id_objet='.intval($flux['args']['id_objet']) . ' AND objet=' . sql_quote($objet) . ' AND statut="publie"'
                );
        } else {
                sql_updateq(
                        'spip_spipicious', 
                        array('statut'=>'publie'), 
                        'id_objet=' . intval($flux['args']['id_objet']) . ' AND objet='  .sql_quote($objet) . ' AND statut="prop"'
                );
        }
    }
    return $flux;
}

Voir aussi : la mise en place d’un pipeline post_edition dans le plugin livraison

Auteur tcharlss Publié le : Mis à jour : 27/08/25