dans le cadre d’un intranet, j’ai intégré une pipeline de pre_insertion afin que les articles s’affichent tout de suite en mode public. Ça marche c’est cool ! Par contre ça me créé un bug gênant en privé. En effet, ça bascule les articles du privé en public sauf qu’il faut les mettre en cours de rédaction puis les remettre en public pour qu’une rubrique et l’article s’affiche correctement sur le site.
dans le cadre d’un intranet, j’ai intégré une pipeline de pre_insertion
afin que les articles s’affichent tout de suite en mode public. Ça
marche c’est cool ! Par contre ça me créé un bug gênant en privé. En
effet, ça bascule les articles du privé en public sauf qu’il faut les
mettre en cours de rédaction puis les remettre en public pour qu’une
rubrique et l’article s’affiche correctement sur le site.
// Utilisation du pipeline pre_insertion
$GLOBALS['spip_pipeline']['pre_insertion'] .= "|ma_fonction_pre_insertion";
// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_insertion($flux){
if ($flux['args']['table']=='spip_articles'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}
avez-vous déjà eu ce cas de figure et comment l’avez-vous corrigé ? Ou
bien comment feriez-vous ?
Teenoo
salut,
le mieux serait que tu passe par la pipeline post_insertion (donc une fois que l'id article est connu) et que tu bascule le statut grâce à la fonction instituer_article()
celle-ci s'occupera de publier la rubrique correspondante.
le bug n'est donc pas dans la pipeline, mais dans ton emploi
dans le cadre d’un intranet, j’ai intégré une pipeline de pre_insertion
afin que les articles s’affichent tout de suite en mode public. Ça
marche c’est cool ! Par contre ça me créé un bug gênant en privé. En
effet, ça bascule les articles du privé en public sauf qu’il faut les
mettre en cours de rédaction puis les remettre en public pour qu’une
rubrique et l’article s’affiche correctement sur le site.
// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_insertion($flux){
if ($flux[‹ args ›][‹ table ›]==‹ spip_articles ›){
$flux[‹ data ›][‹ statut ›] = ‹ publie ›;
}
return $flux;
}
avez-vous déjà eu ce cas de figure et comment l’avez-vous corrigé ? Ou
bien comment feriez-vous ?
Teenoo
salut,
le mieux serait que tu passe par la pipeline post_insertion (donc une fois que l’id article est connu) et que tu bascule le statut grâce à la fonction instituer_article()
celle-ci s’occupera de publier la rubrique correspondante.
le bug n’est donc pas dans la pipeline, mais dans ton emploi
non, c'est pas bon. J'essaierai de trouver quelque chose cet après-midi
Le 09.12.16 à 12:10, Laetitia Boiron a écrit :
Tu crois que ça c’est une bonne fonction ? Je suis pas trop sûre de mon
coup là… Et du coup je supprime ma pipeline pre_insertion ?
// Utilisation du pipeline post_insertion
$GLOBALS['spip_pipeline']['post_insertion'] .= "|article_pre_insertion";
// Les nouveaux articles seront publiés
function article_pre_insertion($flux){
if ($flux['args']['table']=='spip_articles'){
if (isset($flux['data']['statut']) && ($flux['data']['statut'] !=
'publie')) {
$flux['data']['statut'] = 'publie';
}
}
return $flux;
}
Le 9 déc. 2016 à 10:51, Maïeul <maieul@maieul.net
<mailto:maieul@maieul.net>> a écrit :
Le 09.12.16 à 10:44, Laetitia Boiron a écrit :
Bonjour,
dans le cadre d’un intranet, j’ai intégré une pipeline de pre_insertion
afin que les articles s’affichent tout de suite en mode public. Ça
marche c’est cool ! Par contre ça me créé un bug gênant en privé. En
effet, ça bascule les articles du privé en public sauf qu’il faut les
mettre en cours de rédaction puis les remettre en public pour qu’une
rubrique et l’article s’affiche correctement sur le site.
// Utilisation du pipeline pre_insertion
$GLOBALS['spip_pipeline']['pre_insertion'] .=
"|ma_fonction_pre_insertion";
// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_insertion($flux){
if ($flux['args']['table']=='spip_articles'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}
avez-vous déjà eu ce cas de figure et comment l’avez-vous corrigé ? Ou
bien comment feriez-vous ?
Teenoo
salut,
le mieux serait que tu passe par la pipeline post_insertion (donc une
fois que l'id article est connu) et que tu bascule le statut grâce à
la fonction instituer_article()
celle-ci s'occupera de publier la rubrique correspondante.
le bug n'est donc pas dans la pipeline, mais dans ton emploi
function article_post_insertion($flux){
if ($flux['args']['table']=='spip_articles'){
if ($flux['data']['statut'] != 'publie'){ // si pas publié
$id_article = $flux['args']['id_objet']; //récuperer l'id_article
$flux['data']['statut'] = 'publie'; //on modifie le flux de sortie, mais c'est pas le plus important pour la publication
include_spip('action/editer_article');
instituer_article($id_article,array('statut'=>'publie'));// on publie l'article (et du coup cela publie la rubrique si besoin)
}
}
}
function article_post_insertion($flux){
if ($flux[‹ args ›][‹ table ›]==‹ spip_articles ›){
if ($flux[‹ data ›][‹ statut ›] != ‹ publie ›){ // si pas publié
$id_article = $flux[‹ args ›][‹ id_objet ›]; //récuperer l’id_article
$flux[‹ data ›][‹ statut ›] = ‹ publie ›; //on modifie le flux de sortie, mais c’est pas le plus important pour la publication
include_spip(‹ action/editer_article ›);
instituer_article($id_article,array(‹ statut ›=>‹ publie ›));// on publie l’article (et du coup cela publie la rubrique si besoin)
}
}
}