breve publiée automatiquement en espace public

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 cela 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.

in_array($obj, array('breve', 'article','syndic', 'syndic_articles'))

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

Le 17/02/2019 à 21:44, Renée Picard a écrit :

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'] = "";
}

//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['request'] = $_REQUEST;
   //après edition
   //spip_log($flux, 'postedit');

   return $flux;
}

Bonjour,
Je ne te serai pas utile sur le coup car je n'utilise pas ces fonctionnalités, et de plus je suis trop occupé pour m'y pencher d’avantage. Je peux te donner des pistes de recherches qui te feraient gagner en autonomie de développement, si tu connais un peu php. Il te faut débugger. A l'ancienne, en affichant les variables, avec un echo ou un var_dump ou en journalisant (avec spip_log par exemple), en utilisant un die ou exit au besoin. Ça te permettrait de voir si tu passes par tel ou tel endroit (pour bien choisir ton pipeline notamment), et d'afficher les données traitées et contextuelles (les paramètres d'entrée du pipeline, soit le flux, tableau associatif, et les request). Bref, faut mettre les mains dans le camboui :wink: Si tu as des question sur les méthodes de debugages, je suis sûr que tu trouveras des réponses ici.