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 :

// 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;
}

Auteur RastaPopoulos Publié le : Mis à jour : 13/10/10

Traductions : English, français