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