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 des actions effectuées dans le core : -* {{controler}} : contrôler les contenus postés d’un objet, cf. controler_contenu() dans ecrire/inc/editer -* {{modifier}} : modifier le contenu d’un objet, cf. objet_modifier_champs() dans ecrire/inc/modifier.php -* {{instituer}} : changer le statut d’un objet, cf. objet_instituer() dans ecrire/action/editer_objet.php -* {{copie_locale}} : créer au besoin la copie locale d’un fichier distant, cf. copie_locale dans ecrire/inc/distant.php 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 ?
            'serveur' => $serveur,
            'action' => isset($options['action']) ? $options['action'] : 'modifier'
        ),
        'data' => $champs
    )
);

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;
}

Auteur tcharlss Publié le : Mis à jour : 16/03/19