Ce pipeline permet de compléter ou de modifier le comptage des enfants d’un objet.
Il est appelé comme ceci dans le fichier
ecrire/inc/rubriques.php :
// On passe le tableau des comptes dans un pipeline pour que les plugins puissent ajouter (ou retirer) des enfants
$compte = pipeline('objet_compte_enfants',
array(
'args' => array(
'objet' => 'rubrique',
'id_objet' => $id_rubrique,
'statut' => 'publie',
'date' => $date
),
'data' => $compte
)
);
Il reçoit comme arguments l’objet dont on veut compter les enfants grâce à
objet
et
id_objet
. Il peut aussi recevoir la date ainsi que le statut des enfants que l’on veut compter.
Dans l’appel précédent, on demande donc à compter les enfants publiés d’une rubrique donnée.
Le contenu
data
du pipeline est un tableau associatif, dans lequel la clé est le type d’un objet {{au pluriel}} (par exemple : « articles »), et la valeur est un nombre entier, correspondant au nombre d’enfants de ce type.
Exemple
Le plugin « Polyhiérarchie » ajoute aux rubriques le comptage des enfants {{indirects}} :
function polyhier_objet_compte_enfants($flux) {
if ($flux['args']['objet']=='rubrique'){
$statut = (isset($flux['args']['statut'])?" AND A.statut=".sql_quote($flux['args']['statut']):"");
$postdates = ($GLOBALS['meta']["post_dates"] == "non") ?
" AND A.date <= ".sql_quote(date('Y-m-d H:i:s')) : '';
$flux['data']['articles_indirects']+= sql_countsel(
"spip_rubriques_liens as RL join spip_articles as A ON (RL.objet='article' AND RL.id_objet=A.id_article)",
'RL.id_parent='.$flux['args']['id_objet'].$statut.$postdates);
$statut = (isset($flux['args']['statut'])?" AND R.statut=".sql_quote($flux['args']['statut']):"");
$flux['data']['rubriques_indirectes']+= sql_countsel(
"spip_rubriques_liens as RL join spip_rubriques as R ON (RL.objet='rubrique' AND RL.id_objet=R.id_rubrique)",
'RL.id_parent='.$flux['args']['id_objet'].$statut);
}
return $flux;
}