#PHP
[(#INCLURE{fond=fabrique/entetes/php,env,
description=Utilisations de pipelines par #ENV{paquet/nom},
package=Pipelines})]
/*
* Un fichier de pipelines permet de regrouper
* les fonctions de branchement de votre plugin
* sur des pipelines existants.
*/
[
(#REM)
AFFICHE ENFANTS
]
/**
* Ajouter les objets sur les vues de rubriques
*
* @pipeline affiche_enfants
* @param array $flux Données du pipeline
* @return array Données du pipeline
**/
function [(#PREFIXE)]_affiche_enfants($flux) {
if ($e = trouver_objet_exec($flux['args']['exec'])
AND $e['type'] == 'rubrique'
AND $e['edition'] == false) {
$id_rubrique = $flux['args']['id_rubrique'];
$lister_objets = charger_fonction('lister_objets', 'inc');
$bouton = '';
if (autoriser('creer#TYPEdans', 'rubrique', $id_rubrique)) {
$bouton .= icone_verticale(_T("#TYPE:icone_creer_#TYPE"), generer_url_ecrire("[(#TYPE)]_edit", "id_rubrique=$id_rubrique"), "#TYPE-24.png", "new", "right")
. "
";
}
$flux['data'] .= $lister_objets('#OBJET', array('titre'=>_T('#TYPE:titre_[(#OBJET)]_rubrique') , 'id_rubrique'=>$id_rubrique[, 'par'=>'(#CHAMP_TITRE)']));
$flux['data'] .= $bouton;
}
return $flux;
}
[
(#REM)
AFFICHE MILIEU
]
/**
* Ajout de contenu sur certaines pages,
* notamment des formulaires de liaisons entre objets
*
* @pipeline affiche_milieu
* @param array $flux Données du pipeline
* @return array Données du pipeline
*/
function [(#PREFIXE)]_affiche_milieu($flux) {
$texte = "";
$e = trouver_objet_exec($flux['args']['exec']);
// auteurs sur les [(#OBJETS|objets_option_presente{auteurs_liens, objet}|implode{', '})]
if (!$e['edition'] AND in_array($e['type'], array('[(#OBJETS|objets_option_presente{auteurs_liens, type}|implode{"', '"})]'))) {
$texte .= recuperer_fond('prive/objets/editer/liens', array(
'table_source' => 'auteurs',
'objet' => $e['type'],
'id_objet' => $flux['args'][$e['id_table_objet']]
));
}
// #LOBJET sur les [(#VAL{table_objet}|array_map{#VUE_LIENS}|implode{', '})]
if (!$e['edition'] AND in_array($e['type'], array('[(#VAL{objet_type}|array_map{#VUE_LIENS}|implode{"', '"})]'))) {
$texte .= recuperer_fond('prive/objets/editer/liens', array(
'table_source' => '#LOBJET',
'objet' => $e['type'],
'id_objet' => $flux['args'][$e['id_table_objet']]
));
}
if ($texte) {
if ($p=strpos($flux['data'],""))
$flux['data'] = substr_replace($flux['data'],$texte,$p,0);
else
$flux['data'] .= $texte;
}
return $flux;
}
[
(#REM)
AFFICHE AUTEURS INTERVENTIONS
]
/**
* Ajout de liste sur la vue d'un auteur
*
* @pipeline affiche_auteurs_interventions
* @param array $flux Données du pipeline
* @return array Données du pipeline
*/
function [(#PREFIXE)]_affiche_auteurs_interventions($flux) {
if ($id_auteur = intval($flux['args']['id_auteur'])) {
$flux['data'] .= recuperer_fond('prive/objets/liste/#OBJET', array(
'id_auteur' => $id_auteur,
'titre' => _T('#TYPE:info_[(#OBJET)]_auteur')
), array('ajax' => true));
}
return $flux;
}
[
(#REM)
AFFICHER CONTENU OBJET
]
/**
* Ajout de formulaires de liens
*
* @pipeline affiche_contenu_objet
* @param array $flux Données du pipeline
* @return array Données du pipeline
*/
function [(#PREFIXE)]_afficher_contenu_objet($flux) {
$type = $flux['args']['type'];
$id = $flux['args']['id_objet'];
return $flux;
}
[
(#REM)
OBJET COMPTE ENFANT
]
/**
* Compter les enfants d'une rubrique
*
* @pipeline objets_compte_enfants
* @param array $flux Données du pipeline
* @return array Données du pipeline
**/
function [(#PREFIXE)]_objet_compte_enfants($flux) {
if ($flux['args']['objet']=='rubrique'
AND $id_rubrique=intval($flux['args']['id_objet'])) {
[(#STATUT|oui)
// juste les publiés ?
if (array_key_exists('statut', $flux\['args'\]) and ($flux\['args'\]\['statut'\] == 'publie')) {
$flux\['data'\]\['#OBJET'\] = sql_countsel('#TABLE', "id_rubrique=".intval($id_rubrique)." AND (statut='publie')");
} else {
$flux\['data'\]\['#OBJET'\] = sql_countsel('#TABLE', "id_rubrique=".intval($id_rubrique)." AND (statut<>'poubelle')");
}
][(#STATUT|non)
$flux\['data'\]\['#OBJET'\] = sql_countsel('#TABLE', "id_rubrique=".intval($id_rubrique));
]
}
return $flux;
}
[
(#REM)
OPTIMISER BASE DISPARUS
]
/**
* Optimiser la base de données en supprimant les liens orphelins
* de l'objet vers quelqu'un et de quelqu'un vers l'objet.
*
* @pipeline optimiser_base_disparus
* @param array $flux Données du pipeline
* @return array Données du pipeline
*/
function [(#PREFIXE)]_optimiser_base_disparus($flux){
include_spip('action/editer_liens');
$flux['data'] += objet_optimiser_liens(array('#TYPE'=>'*'),'*');
return $flux;
}
?>