objet_compte_enfants

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 :

  1. // On passe le tableau des comptes dans un pipeline pour que les plugins puissent ajouter (ou retirer) des enfants
  2. $compte = pipeline('objet_compte_enfants',
  3. 'args' => array(
  4. 'objet' => 'rubrique',
  5. 'id_objet' => $id_rubrique,
  6. 'statut' => 'publie',
  7. 'date' => $date
  8. ),
  9. 'data' => $compte
  10. )
  11. );

Télécharger

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 :

  1. function polyhier_objet_compte_enfants($flux) {
  2.  
  3. if ($flux['args']['objet']=='rubrique'){
  4. $statut = (isset($flux['args']['statut'])?" AND A.statut=".sql_quote($flux['args']['statut']):"");
  5. $postdates = ($GLOBALS['meta']["post_dates"] == "non") ?
  6. " AND A.date <= ".sql_quote(date('Y-m-d H:i:s')) : '';
  7.  
  8. $flux['data']['articles_indirects']+= sql_countsel(
  9. "spip_rubriques_liens as RL join spip_articles as A ON (RL.objet='article' AND RL.id_objet=A.id_article)",
  10. 'RL.id_parent='.$flux['args']['id_objet'].$statut.$postdates);
  11.  
  12. $statut = (isset($flux['args']['statut'])?" AND R.statut=".sql_quote($flux['args']['statut']):"");
  13. $flux['data']['rubriques_indirectes']+= sql_countsel(
  14. "spip_rubriques_liens as RL join spip_rubriques as R ON (RL.objet='rubrique' AND RL.id_objet=R.id_rubrique)",
  15. 'RL.id_parent='.$flux['args']['id_objet'].$statut);
  16. }
  17. return $flux;
  18. }

Télécharger

Auteur RastaPopoulos Publié le : Mis à jour : 12/05/17

Traductions : English, français