breve publiée automatiquement en espace public

Avec ceci dans une rubrique

     <div class='ajax'>\#FORMULAIRE\_EDITER\_BREVE\{id\_breve, 

#ID_RUBRIQUE, #SELF}</div>

 &lt;div class=&#39;ajax&#39;&gt;\#FORMULAIRE\_EDITER\_ARTICLE\{id\_article, 

#ID_RUBRIQUE, #SELF}</div>

J'ai mis dans config/mes_options.php ce code pour publier un article en
espace public et c'est parfait, il s'affiche automatiquement

<?php

// 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;
}
// Utilisation du pipeline pre_insertion
$GLOBALS['spip_pipeline']['pre_insertion2'] .=
"|ma_fonction_pre_insertion2";

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_insertion2($flux){
if ($flux['args']['table']=='spip_breves'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}

J'essaie de faire la même chose pour les brèves pour ne pas avoir à
choisir (proposé, valider, refuser) mais je l'ai toujours

Merci

RP

Le 20/01/2019 à 23:36, Renée Picard a écrit :

Avec ceci dans une rubrique

   <div class='ajax'>#FORMULAIRE_EDITER_BREVE{id_breve,
#ID_RUBRIQUE, #SELF}</div>

   <div class='ajax'>#FORMULAIRE_EDITER_ARTICLE{id_article,
#ID_RUBRIQUE, #SELF}</div>

J'ai mis dans config/mes_options.php ce code pour publier un article en
espace public et c'est parfait, il s'affiche automatiquement

<?php

// 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;
}
// Utilisation du pipeline pre_insertion
$GLOBALS['spip_pipeline']['pre_insertion2'] .=
"|ma_fonction_pre_insertion2";

Bonjour

Tu dois remplacer $GLOBALS['spip_pipeline']['pre_insertion2'] par $GLOBALS['spip_pipeline']['pre_insertion'] (le nom du pipeline c'est "pre_insertion" pas "pre_insertion2".

donc mettre

// Utilisation du pipeline pre_insertion
$GLOBALS['spip_pipeline']['pre_insertion'] .=
"|ma_fonction_pre_insertion2";

Autres solutions sinon, ne pas ajouter de fonction supplémentaire pour les brèves au pipeline,tout faire en même temps (articles et brèves) en ajoutant les brèves à ta première fonction

// Les nouveaux articles et les brèves seront automatiquement publiés
function ma_fonction_pre_insertion($flux){
    if ($flux['args']['table']=='spip_articles' || $flux['args']['table']=='spip_breves'){
      $flux['data']['statut'] = 'publie';
    }
    return $flux;
}

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_insertion2($flux){
   if ($flux['args']['table']=='spip_breves'){
   $flux['data']['statut'] = 'publie';
   }
   return $flux;
}

J'essaie de faire la même chose pour les brèves pour ne pas avoir à
choisir (proposé, valider, refuser) mais je l'ai toujours

Merci

RP

Merci j'ai essayé les 2 solutions
avec l'ajout à la suite de la pre_insertion de l'article:

$GLOBALS['spip_pipeline']['pre_insertion'] .= "|ma_fonction_pre_insertion2";

// Les nouveaux breves seront automatiquement publiés
function ma_fonction_pre_insertion2($flux){
if ($flux['args']['table']=='spip_breves'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}

Cela ne change rien au comportement du <div
class='ajax'>#FORMULAIRE_EDITER_BREVE{id_breve, #ID_RUBRIQUE,#SELF}</div>
Je suis obligé de choisir de publier

Avec la 2ième solution qui devrait auto-publier article et brève, cela
ne fonctionne pas ni pour l'article ni pour la brève.

???

Le 19-01-21 à 00:13, 6ril a écrit :

Le 20/01/2019 à 23:36, Renée Picard a écrit :

Avec ceci dans une rubrique

      &lt;div class=&#39;ajax&#39;&gt;\#FORMULAIRE\_EDITER\_BREVE\{id\_breve,

#ID_RUBRIQUE, #SELF}</div>

  &lt;div class=&#39;ajax&#39;&gt;\#FORMULAIRE\_EDITER\_ARTICLE\{id\_article,

#ID_RUBRIQUE, #SELF}</div>

J'ai mis dans config/mes_options.php ce code pour publier un article en
espace public et c'est parfait, il s'affiche automatiquement

<?php

// 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;
}
// Utilisation du pipeline pre_insertion
$GLOBALS['spip_pipeline']['pre_insertion2'] .=
"|ma_fonction_pre_insertion2";

Bonjour

Tu dois remplacer $GLOBALS['spip_pipeline']['pre_insertion2'] par
$GLOBALS['spip_pipeline']['pre_insertion'] (le nom du pipeline c'est
"pre_insertion" pas "pre_insertion2".

donc mettre

// Utilisation du pipeline pre_insertion
$GLOBALS['spip_pipeline']['pre_insertion'] .=
"|ma_fonction_pre_insertion2";

Autres solutions sinon, ne pas ajouter de fonction supplémentaire pour
les brèves au pipeline,tout faire en même temps (articles et brèves)
en ajoutant les brèves à ta première fonction

// Les nouveaux articles et les brèves seront automatiquement publiés
function ma_fonction_pre_insertion($flux){
if ($flux['args']['table']=='spip_articles' ||
$flux['args']['table']=='spip_breves'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_insertion2($flux){
if ($flux['args']['table']=='spip_breves'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}

J'essaie de faire la même chose pour les brèves pour ne pas avoir à
choisir (proposé, valider, refuser) mais je l'ai toujours

Merci

RP

.

Quelle galère ces pipelines... tu peux essayer ça STP ? Chez moi ça fonctionne. Je ne trouve que ça pour l'instant, ça force la publication. Mais du coup, exit les autres statuts. On doit pouvoir peaufiner, mais pas le temps de chercher plus.

$GLOBALS['spip_pipeline']['pre_edition'] .= "|ma_fonction_pre_edition";

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_edition($flux){
    if ($flux['args']['table']=='spip_articles' || $flux['args']['table']=='spip_breves'){
      $flux['data']['statut'] = 'publie';
    }
    return $flux;
}

Le 21/01/2019 à 16:54, Renée Picard a écrit :

Merci j'ai essayé les 2 solutions
avec l'ajout à la suite de la pre_insertion de l'article:

$GLOBALS['spip_pipeline']['pre_insertion'] .= "|ma_fonction_pre_insertion2";

// Les nouveaux breves seront automatiquement publiés
function ma_fonction_pre_insertion2($flux){
   if ($flux['args']['table']=='spip_breves'){
   $flux['data']['statut'] = 'publie';
   }
   return $flux;
}

Cela ne change rien au comportement du <div
class='ajax'>#FORMULAIRE_EDITER_BREVE{id_breve, #ID_RUBRIQUE,#SELF}</div>
Je suis obligé de choisir de publier

Avec la 2ième solution qui devrait auto-publier article et brève, cela
ne fonctionne pas ni pour l'article ni pour la brève.

???

Le 19-01-21 à 00:13, 6ril a écrit :

Le 20/01/2019 à 23:36, Renée Picard a écrit :

Avec ceci dans une rubrique

       &lt;div class=&#39;ajax&#39;&gt;\#FORMULAIRE\_EDITER\_BREVE\{id\_breve,

#ID_RUBRIQUE, #SELF}</div>

   &lt;div class=&#39;ajax&#39;&gt;\#FORMULAIRE\_EDITER\_ARTICLE\{id\_article,

#ID_RUBRIQUE, #SELF}</div>

J'ai mis dans config/mes_options.php ce code pour publier un article en
espace public et c'est parfait, il s'affiche automatiquement

<?php

// 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;
}
// Utilisation du pipeline pre_insertion
$GLOBALS['spip_pipeline']['pre_insertion2'] .=
"|ma_fonction_pre_insertion2";

Bonjour

Tu dois remplacer $GLOBALS['spip_pipeline']['pre_insertion2'] par
$GLOBALS['spip_pipeline']['pre_insertion'] (le nom du pipeline c'est
"pre_insertion" pas "pre_insertion2".

donc mettre

// Utilisation du pipeline pre_insertion
$GLOBALS['spip_pipeline']['pre_insertion'] .=
"|ma_fonction_pre_insertion2";

Autres solutions sinon, ne pas ajouter de fonction supplémentaire pour
les brèves au pipeline,tout faire en même temps (articles et brèves)
en ajoutant les brèves à ta première fonction

// Les nouveaux articles et les brèves seront automatiquement publiés
function ma_fonction_pre_insertion($flux){
if ($flux['args']['table']=='spip_articles' ||
$flux['args']['table']=='spip_breves'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_insertion2($flux){
if ($flux['args']['table']=='spip_breves'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}

J'essaie de faire la même chose pour les brèves pour ne pas avoir à
choisir (proposé, valider, refuser) mais je l'ai toujours

Merci

RP

.

C'est très très bourrin comme méthode, parce qu'ainsi personne ne peut changer ensuite le statut (il faudrait rajouter des conditions dans la fonction, voir qui est connecté, si on est en public ou pas). J'adorerai un pipeline plus souple pour ne proposer que les statuts que l'on souhaite à l'insertion, et rejeter les autres à l'insertion. La même en édition. Qui n eproposerait quelque soit le contexte que les choix de statuts désiré, le tout hors plugin, juste dans mes_options.

Le 21/01/2019 à 19:47, 6ril a écrit :

Quelle galère ces pipelines... tu peux essayer ça STP ? Chez moi ça fonctionne. Je ne trouve que ça pour l'instant, ça force la publication. Mais du coup, exit les autres statuts. On doit pouvoir peaufiner, mais pas le temps de chercher plus.

$GLOBALS['spip_pipeline']['pre_edition'] .= "|ma_fonction_pre_edition";

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_edition($flux){
if ($flux['args']['table']=='spip_articles' || $flux['args']['table']=='spip_breves'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}

Le 21/01/2019 à 16:54, Renée Picard a écrit :

Merci j'ai essayé les 2 solutions
avec l'ajout à la suite de la pre_insertion de l'article:

$GLOBALS['spip_pipeline']['pre_insertion'] .= "|ma_fonction_pre_insertion2";

// Les nouveaux breves seront automatiquement publiés
function ma_fonction_pre_insertion2($flux){
if ($flux['args']['table']=='spip_breves'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}

Cela ne change rien au comportement du <div
class='ajax'>#FORMULAIRE_EDITER_BREVE{id_breve, #ID_RUBRIQUE,#SELF}</div>
Je suis obligé de choisir de publier

Avec la 2ième solution qui devrait auto-publier article et brève, cela
ne fonctionne pas ni pour l'article ni pour la brève.

???

Le 19-01-21 à 00:13, 6ril a écrit :

Le 20/01/2019 à 23:36, Renée Picard a écrit :

Avec ceci dans une rubrique

       &lt;div class=&#39;ajax&#39;&gt;\#FORMULAIRE\_EDITER\_BREVE\{id\_breve,

#ID_RUBRIQUE, #SELF}</div>

   &lt;div class=&#39;ajax&#39;&gt;\#FORMULAIRE\_EDITER\_ARTICLE\{id\_article,

#ID_RUBRIQUE, #SELF}</div>

J'ai mis dans config/mes_options.php ce code pour publier un article en
espace public et c'est parfait, il s'affiche automatiquement

<?php

// 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;
}
// Utilisation du pipeline pre_insertion
$GLOBALS['spip_pipeline']['pre_insertion2'] .=
"|ma_fonction_pre_insertion2";

Bonjour

Tu dois remplacer $GLOBALS['spip_pipeline']['pre_insertion2'] par
$GLOBALS['spip_pipeline']['pre_insertion'] (le nom du pipeline c'est
"pre_insertion" pas "pre_insertion2".

donc mettre

// Utilisation du pipeline pre_insertion
$GLOBALS['spip_pipeline']['pre_insertion'] .=
"|ma_fonction_pre_insertion2";

Autres solutions sinon, ne pas ajouter de fonction supplémentaire pour
les brèves au pipeline,tout faire en même temps (articles et brèves)
en ajoutant les brèves à ta première fonction

// Les nouveaux articles et les brèves seront automatiquement publiés
function ma_fonction_pre_insertion($flux){
if ($flux['args']['table']=='spip_articles' ||
$flux['args']['table']=='spip_breves'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_insertion2($flux){
if ($flux['args']['table']=='spip_breves'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}

J'essaie de faire la même chose pour les brèves pour ne pas avoir à
choisir (proposé, valider, refuser) mais je l'ai toujours

Merci

RP

.

Cela ne fonctionne pas.
Ni pour l'article ni pour la brève.
Y a-t-il un pipeline qui publie tout directement pour [(#SESSION{statut}|=={0minirezo}|oui)

Le 19-01-21 à 13:47, 6ril a écrit :
$GLOBALS['spip_pipeline']['pre_edition'] .= "|ma_fonction_pre_edition";

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_edition($flux){
   if ($flux['args']['table']=='spip_articles' || $flux['args']['table']=='spip_breves'){
     $flux['data']['statut'] = 'publie';
   }
   return $flux;
}

Le 21/01/2019 à 22:08, Renée Picard a écrit :

Cela ne fonctionne pas.
Ni pour l'article ni pour la brève.
Y a-t-il un pipeline qui publie tout directement pour [(#SESSION{statut}|=={0minirezo}|oui)

Le 19-01-21 à 13:47, 6ril a écrit :

$GLOBALS['spip_pipeline']['pre_edition'] .= "|ma_fonction_pre_edition";

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_edition($flux){
if ($flux['args']['table']=='spip_articles' || $flux['args']['table']=='spip_breves'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}

Ça fonctionne, en espace privé, sur la 3.2.3, pour articles et brèves.

Merci
Cela fonctionne pour article et breve.
J'ai jeté tout le contenu de tmp avant de faire l'essai.

$GLOBALS['spip_pipeline']['pre_edition'] .= "|ma_fonction_pre_edition";

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_edition($flux){
if ($flux['args']['table']=='spip_articles' ||
$flux['args']['table']=='spip_breves'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}

Le 22/01/2019 à 14:43, Renée Picard a écrit :

Merci
Cela fonctionne pour article et breve.
J'ai jeté tout le contenu de tmp avant de faire l'essai.

$GLOBALS['spip_pipeline']['pre_edition'] .= "|ma_fonction_pre_edition";

// Les nouveaux articles seront automatiquement publiés
function ma_fonction_pre_edition($flux){
if ($flux['args']['table']=='spip_articles' ||
$flux['args']['table']=='spip_breves'){
$flux['data']['statut'] = 'publie';
}
return $flux;
}

Bonsoir,
Attention, il faudrait nuancer les conditions, car en l'état il ne sera plus possible que faire autre chose de publier. Par exemple pour les articles, ne publier que si le statut demandé est en cours de rédaction, ou proposé à la publication, comme ça à la création le staut passe en publié, mais si tu veux le supprimer tu ne sras pas bloqué
if (in_array($flux['data']['statut'], array('prop', 'prepa'))) {
             $flux['data']['statut'] = 'prepa';
         }
Bref, à personnaliser selon tes besoins (d'autres contextes peuvent conditionner, comme la rubrique ou l'auteur connecté), mais à ne pas utiliser en l'état.

Le 19-01-22 à 14:25, 6ril a écrit :

if (in_array($flux['data']['statut'], array('prop', 'prepa'))) {
$flux['data']['statut'] = 'prepa';
}

Effectivement je ne peux rien mettre à la poubelle.

J'essaie donc d'ajouter le code pour publier l'article seulement s'il
est en cours de redaction (prepa)

Je ne sais pas ou mettre le bout de code fourni?

J'ai essayé un peu partout et jeter tout ce qui est dans tmp à chaque
fois et rien n'y fait.

Je trouve cela compliqué les pipelines!

<?php
$GLOBALS['spip_pipeline']['pre_edition'] .= "|ma_fonction_pre_edition";

// Les nouveaux articles seront automatiquement publiés
if (in_array($flux['data']['statut'], array('prop', 'prepa'))) {
$flux['data']['statut'] = 'prepa';
}
function ma_fonction_pre_edition($flux){

if \($flux\[&#39;args&#39;\]\[&#39;table&#39;\]==&#39;spip\_articles&#39; || 

$flux['args']['table']=='spip_breves'){
$flux['data']['statut'] = 'publie';
}
return $flux;

}

Le 23/01/2019 à 23:32, Renée Picard a écrit :

Le 19-01-22 à 14:25, 6ril a écrit :

if (in_array($flux['data']['statut'], array('prop', 'prepa'))) {
$flux['data']['statut'] = 'prepa';
}

Effectivement je ne peux rien mettre à la poubelle.

J'essaie donc d'ajouter le code pour publier l'article seulement s'il
est en cours de redaction (prepa)

Je ne sais pas ou mettre le bout de code fourni?

J'ai essayé un peu partout et jeter tout ce qui est dans tmp à chaque
fois et rien n'y fait.

Je trouve cela compliqué les pipelines!

<?php
$GLOBALS['spip_pipeline']['pre_edition'] .= "|ma_fonction_pre_edition";

// Les nouveaux articles seront automatiquement publiés
if (in_array($flux['data']['statut'], array('prop', 'prepa'))) {
   $flux['data']['statut'] = 'prepa';
   }
function ma_fonction_pre_edition($flux){

   if ($flux['args']['table']=='spip_articles' ||
$flux['args']['table']=='spip_breves'){
   $flux['data']['statut'] = 'publie';
   }
   return $flux;

}

A tester, pas le temps ce matin dsl mais ça devrait fonctionner. On peut y ajouter aussi condition sur id_rubrique, secteur, qui est connecté..

function ma_fonction_pre_edition($flux){
     if (($flux['args']['table']=='spip_articles' ||
$flux['args']['table']=='spip_breves') && in_array($flux['data']['statut'], array('prop', 'prepa'))){
       $flux['data']['statut'] = 'publie';
     }
     return $flux;
}

A voir ça aussi, peut-être plus propre
Gestion des Statuts, à creuser.

Le 24/01/2019 à 05:55, 6ril a écrit :

function ma_fonction_pre_edition($flux){
if (($flux['args']['table']=='spip_articles' ||
$flux['args']['table']=='spip_breves') && in_array($flux['data']['statut'], array('prop', 'prepa'))){
$flux['data']['statut'] = 'publie';
}
return $flux;
}

Le code total pour ce que tu veux (à tester, pas le temps pour moi ce matin):

$GLOBALS['spip_pipeline']['pre_edition'] .= "|ma_fonction_pre_edition";

function ma_fonction_pre_edition($flux){
     if ( in_array($flux['data']['table'], array('spip_breves', 'spip_articles')) && in_array($flux['data']['statut'], array('prop', 'prepa')) ) { $flux['data']['statut'] = 'publie';
     }
     return $flux;
}

Le 24/01/2019 à 06:03, 6ril a écrit :

Le 24/01/2019 à 05:55, 6ril a écrit :

function ma_fonction_pre_edition($flux){
if (($flux['args']['table']=='spip_articles' ||
$flux['args']['table']=='spip_breves') && in_array($flux['data']['statut'], array('prop', 'prepa'))){
$flux['data']['statut'] = 'publie';
}
return $flux;
}

Le code total pour ce que tu veux (à tester, pas le temps pour moi ce matin):

$GLOBALS['spip_pipeline']['pre_edition'] .= "|ma_fonction_pre_edition";

function ma_fonction_pre_edition($flux){
if ( in_array($flux['data']['table'], array('spip_breves', 'spip_articles')) && in_array($flux['data']['statut'], array('prop', 'prepa')) ) { $flux['data']['statut'] = 'publie';
}
return $flux;
}

Marche pas après test, je regarderai ce soir, bonne journée

Testé, fonctionne.
Publie les nouveaux articles ou brèves directement sans en empêcher le changement de status ensuite.
Remplacer les pipeline précédent par celui-ci:

$GLOBALS['spip_pipeline']['post_edition'] .= "|postedit";

function postedit($flux)
{
  if (in_array( $flux['args']['table'],array( 'spip_breves','spip_articles') )
  && ( _request('id_breve')=='oui' || _request('id_article')=='oui' ) ){
     include_spip('action/editer_objet');
    objet_modifier( objet_type($flux['args']['table']), intval($flux['args']['id_objet']), array('statut'=>'publie'));
  }
  $flux['request']=$_REQUEST;
  //après edition
  spip_log($flux,'postedit');

     return $flux;
}

Le 24/01/2019 à 13:00, 6ril a écrit :

Testé, fonctionne.
Publie les nouveaux articles ou brèves directement sans en empêcher le changement de status ensuite.
Remplacer les pipeline précédent par celui-ci:

$GLOBALS['spip_pipeline']['post_edition'] .= "|postedit";

function postedit($flux)
{
if (in_array( $flux['args']['table'],array( 'spip_breves','spip_articles') )
&& ( _request('id_breve')=='oui' || _request('id_article')=='oui' ) ){
include_spip('action/editer_objet');
objet_modifier( objet_type($flux['args']['table']), intval($flux['args']['id_objet']), array('statut'=>'publie'));
}
$flux['request']=$_REQUEST;
//après edition
spip_log($flux,'postedit');

 return $flux;

}

  supprimer les 2 lignes
  $flux['request']=$_REQUEST;
  spip_log($flux,'postedit');

inutiles et qui ne m'ont servi qu'aux débuggages

Merci beaucoup
J'ai testé et cela fonctionne pour les articles et les brèves
J'apprécie énormément
Si il y avait une contrib d'astuces pour les pipelines, ça vaudrait la
peine d'y ranger ce code.

.Le 19-01-24 à 07:06, 6ril a écrit :

Le 24/01/2019 à 13:00, 6ril a écrit :

Testé, fonctionne.
Publie les nouveaux articles ou brèves directement sans en empêcher
le changement de status ensuite.
Remplacer les pipeline précédent par celui-ci:

$GLOBALS['spip_pipeline']['post_edition'] .= "|postedit";

function postedit($flux)
{
if (in_array( $flux['args']['table'],array(
'spip_breves','spip_articles') )
&& ( _request('id_breve')=='oui' ||
_request('id_article')=='oui' ) ){
include_spip('action/editer_objet');
objet_modifier( objet_type($flux['args']['table']),
intval($flux['args']['id_objet']), array('statut'=>'publie'));
}
$flux['request']=$_REQUEST;
//après edition
spip_log($flux,'postedit');

 return $flux;

}

supprimer les 2 lignes
$flux['request']=$_REQUEST;
spip_log($flux,'postedit');

inutiles et qui ne m'ont servi qu'aux débuggages

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc
.

Le 24/01/2019 à 15:36, Renée Picard a écrit :

Merci beaucoup
J'ai testé et cela fonctionne pour les articles et les brèves
J'apprécie énormément
Si il y avait une contrib d'astuces pour les pipelines, ça vaudrait la
peine d'y ranger ce code.

Merci, content si ça te dépanne.
Plus proprement, il faudrait l'écrire comme suit à la fin de la présente, pour éviter une erreur de niveau notice PHP (erreur ni bloquante, ni grave cependant). En effet le pipeline peut-être vide, et la concaténation qu'on lui fait avec .= entraine alors une erreur notice. Donc on l'initialise d'abord à chaine vide si il est vide au départ.
J'ai factorisé aussi la référence à l'objet (ici breve ou article) pour faire plus concis.
Pour expliquer le truc, la condition sur if _request(("id_$obj")) == 'oui' sert à s'assurer qu'il s'agit bien d'un nouvel objet qui ne possède donc pas d'id (qu'on est donc en création), et de ne forcer le statut publie qu'à cette condition (sur les breves et articles ici).
Le code:

//initialiser le str du pipeline à chaine vide si variable indéfinie:

if (!isset($GLOBALS['spip_pipeline']['post_edition'])) {
     $GLOBALS['spip_pipeline']['post_edition'] = "";
}

//passer la fonction au pipeline:

$GLOBALS['spip_pipeline']['post_edition'] .= "|postedit";

//Traitement affecté précédemment dans le pipeline:

function postedit($flux)
{
     //récupération du type d'objet grâce au param ['args']['table']:
     $obj = objet_type($flux['args']['table']);
     if (
         //verif qu'on est sur un objet article ou breve:
         in_array($obj, array('breve', 'article'))
         //et qu'on est en création:
          && _request(("id_$obj")) == 'oui') {
         //alors on lui change son statut en publie
         include_spip('action/editer_objet');
         objet_modifier($obj, intval($flux['args']['id_objet']), array('statut' => 'publie'));
     }

     //$flux['request'] = $_REQUEST;
     //après edition
     //spip_log($flux, 'postedit');

     return $flux;
}

Cela fonctionne très bien
Je vais essayer de comprendre les explications.

Je découvre la puissance des pipelines.
Je vais ouvrir un autre questionnement (entre AUTEURS et GROUPE de MOTS
CLÉS) et c'est probablement avec un pipeline que je résoudrai???

MERCI

Le 19-01-24 à 12:51, 6ril a écrit :

//initialiser le str du pipeline à chaine vide si variable indéfinie:

if (!isset($GLOBALS['spip_pipeline']['post_edition'])) {
$GLOBALS['spip_pipeline']['post_edition'] = "";
}

//passer la fonction au pipeline:

$GLOBALS['spip_pipeline']['post_edition'] .= "|postedit";

//Traitement affecté précédemment dans le pipeline:

function postedit($flux)
{
//récupération du type d'objet grâce au param ['args']['table']:
$obj = objet_type($flux['args']['table']);
if (
//verif qu'on est sur un objet article ou breve:
in_array($obj, array('breve', 'article'))
//et qu'on est en création:
&& _request(("id_$obj")) == 'oui') {
//alors on lui change son statut en publie
include_spip('action/editer_objet');
objet_modifier($obj, intval($flux['args']['id_objet']),
array('statut' => 'publie'));
}

//$flux\[&#39;request&#39;\] = $\_REQUEST;
//après edition
//spip\_log\($flux, &#39;postedit&#39;\);

return $flux;

}

Le 25/01/2019 à 20:50, Renée Picard a écrit :

Cela fonctionne très bien
Je vais essayer de comprendre les explications.

Je découvre la puissance des pipelines.
Je vais ouvrir un autre questionnement (entre AUTEURS et GROUPE de MOTS
CLÉS) et c'est probablement avec un pipeline que je résoudrai???

MERCI

Je peux essayer de t'aider à comprendre le fonctionnement des pipeline, que l'on me corrige si je dis des bêtises.

C'est une suite de traitements (de fonctions) que l'on applique à un "flux" en entrée, lequel ressort traité par les fonctions du pipeline.

Dans les traitements initiaux (les fonctions codées dans le core du système de gestion de contenu, prévu par Spip en brut donc), il est ainsi possible de glisser des traitements personnalisés, par le biais de cette tuyauterie à l'endroit où elle a été prévue dans le core.

Cela permet de ne pas avoir à surcharger (écraser) les fonctions initiales du cœur du système, car cela présenterait l'insurmontable car trop pénible inconvénient de suivre chaque évolution (chaque release) de ce dernier pour y réinjecter les bidouilles que nous souhaiterions à chaque nouvelle version.

Avec le système de pipeline, on ne touche donc pas directement au core, on effectue nos traitements persos sans avoir peur de faire de bêtises dans le core.

Pour cela il faut que le pipeline soit prévu initialement à certains endroits dans les fonctions du core afin de pouvoir les exploiter.
Il est tout à fait possible d'écrire ses propres pipeline mais dans ce cas ça nécessite de surcharger les fonctions du core, faut juste ensuite suivre les évolutions de ce dernier pour réinjecter le pipeline à l'endroit désiré.
On retrouve ce système d'entrée sortie sur les commandes unix (les pipe).

Bref, quand tu fais
$GLOBALS['spip_pipeline']['post_edition'] .= "|postedit";

$GLOBALS['spip_pipeline']['post_edition'] est un une chaine de caractère (variable, ici globale, de type string) qui sert à contenir tous les noms de fonctions (de traitements) du pipeline.

Chaque fonction supplémentaire sera ajoutée en mettant son nom de fonction précédé du séparateur | par ce que le système est ainsi codé pour savoir délimiter les noms de fonctions contenues dans le pipeline grâce à ce caractère.

Par exemple le pipeline 'post_edition' pourrait être valorisé ainsi:
$GLOBALS['spip_pipeline']['post_edition'] = "|mafonction1|mafonction2|mafonction3";
avec les functions1,functions2,functions3 déclarées ailleurs, avec leurs traitements repectifs.
L'opérateur .= concaténe (ajoute des éléments à la chaine de caractère constitutive du pipeline), il équivaut à écrire $GLOBALS['spip_pipeline']['post_edition'] = $GLOBALS['spip_pipeline']['post_edition'] + "|postedit";

Chaque fonction du pipeline prend donc en entrée un flux (un tableau associatif) et retourne ce flux après traitement pour le traitement prévu ensuite.

La doc SPIP donne une liste de pipelines prédéfinis

avec des exemples de code qui donne une idée du flux entrant, et avec aussi les caractéristiques de chacun (où se situe le pipeline, à quel moment il agit).

Après il faut débuger pour fouiller d’avantage.

Faut-il installer un autre pipeline pour la syndiication automatique à
partir de ceci?
#FORMULAIRE_EDITER_SITE{id_syndic, #ID_RUBRIQUE,#SELF}
et comment forcer la syndication si le site a un fil rss?

J'ai mis ceci en pensant que le formulaire d'ajout de site allait être
validé automatiquement comme pour les articles et les brèves. Mais non
cela ne fonctionne pas ???

<?php
//initialiser le str du pipeline à chaine vide si variable indéfinie:

if (!isset($GLOBALS['spip_pipeline']['post_edition'])) {
$GLOBALS['spip_pipeline']['post_edition'] = "";
$GLOBALS['spip_pipeline']['post_edition'] = "";
$GLOBALS['spip_pipeline']['post_edition'] = "";
}

//passer la fonction au pipeline:

$GLOBALS['spip_pipeline']['post_edition'] .= "|postedit";

//Traitement affecté précédemment dans le pipeline:

function postedit($flux)
{
//récupération du type d'objet grâce au param ['args']['table']:
$obj = objet_type($flux['args']['table']);
if (
//verif qu'on est sur un objet article ou breve:
in_array($obj, array('breve', 'article',
'syndic','syndic_articles'))
//et qu'on est en création:
&& _request(("id_$obj")) == 'oui') {
//alors on lui change son statut en publie
include_spip('action/editer_objet');
objet_modifier($obj, intval($flux['args']['id_objet']),
array('statut' => 'publie'));
}

 //$flux\[&#39;request&#39;\] = $\_REQUEST;
 //après edition
 //spip\_log\($flux, &#39;postedit&#39;\);

 return $flux;

}

Le 19-01-25 à 16:27, 6ril a écrit :

Le 25/01/2019 à 20:50, Renée Picard a écrit :

Cela fonctionne très bien
Je vais essayer de comprendre les explications.

Je découvre la puissance des pipelines.
Je vais ouvrir un autre questionnement (entre AUTEURS et GROUPE de MOTS
CLÉS) et c'est probablement avec un pipeline que je résoudrai???

MERCI

Je peux essayer de t'aider à comprendre le fonctionnement des
pipeline, que l'on me corrige si je dis des bêtises.

C'est une suite de traitements (de fonctions) que l'on applique à un
"flux" en entrée, lequel ressort traité par les fonctions du pipeline.

Dans les traitements initiaux (les fonctions codées dans le core du
système de gestion de contenu, prévu par Spip en brut donc), il est
ainsi possible de glisser des traitements personnalisés, par le biais
de cette tuyauterie à l'endroit où elle a été prévue dans le core.

Cela permet de ne pas avoir à surcharger (écraser) les fonctions
initiales du cœur du système, car cela présenterait l'insurmontable
car trop pénible inconvénient de suivre chaque évolution (chaque
release) de ce dernier pour y réinjecter les bidouilles que nous
souhaiterions à chaque nouvelle version.

Avec le système de pipeline, on ne touche donc pas directement au
core, on effectue nos traitements persos sans avoir peur de faire de
bêtises dans le core.

Pour cela il faut que le pipeline soit prévu initialement à certains
endroits dans les fonctions du core afin de pouvoir les exploiter.
Il est tout à fait possible d'écrire ses propres pipeline mais dans ce
cas ça nécessite de surcharger les fonctions du core, faut juste
ensuite suivre les évolutions de ce dernier pour réinjecter le
pipeline à l'endroit désiré.
On retrouve ce système d'entrée sortie sur les commandes unix (les pipe).

Bref, quand tu fais
$GLOBALS['spip_pipeline']['post_edition'] .= "|postedit";

$GLOBALS['spip_pipeline']['post_edition'] est un une chaine de
caractère (variable, ici globale, de type string) qui sert à contenir
tous les noms de fonctions (de traitements) du pipeline.

Chaque fonction supplémentaire sera ajoutée en mettant son nom de
fonction précédé du séparateur | par ce que le système est ainsi codé
pour savoir délimiter les noms de fonctions contenues dans le pipeline
grâce à ce caractère.

Par exemple le pipeline 'post_edition' pourrait être valorisé ainsi:
$GLOBALS['spip_pipeline']['post_edition'] =
"|mafonction1|mafonction2|mafonction3";
avec les functions1,functions2,functions3 déclarées ailleurs, avec
leurs traitements repectifs.
L'opérateur .= concaténe (ajoute des éléments à la chaine de caractère
constitutive du pipeline), il équivaut à écrire
$GLOBALS['spip_pipeline']['post_edition'] =
$GLOBALS['spip_pipeline']['post_edition'] + "|postedit";

Chaque fonction du pipeline prend donc en entrée un flux (un tableau
associatif) et retourne ce flux après traitement pour le traitement
prévu ensuite.

La doc SPIP donne une liste de pipelines prédéfinis
Liste des pipelines - Programmer avec SPIP 4
avec des exemples de code qui donne une idée du flux entrant, et avec
aussi les caractéristiques de chacun (où se situe le pipeline, à quel
moment il agit).

Après il faut débuger pour fouiller d’avantage.

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc