calculer_rubriques

Ce pipeline sert à modifier la manière avec laquelle est automatiquement calculé le statut et la date de mise à jour d’une rubrique.

Lorsqu’un plugin déclare des objets d’un nouveau type, il peut par exemple se servir du pipeline calculer_rubriques pour modifier le statut (’publie’ ou non) des rubriques qui contiendraient certains de ces objets.

Notamment, cela sera nécessaire pour rendre visible, sur le site public, une rubrique qui ne contient que des objets de ce type.

Pour cela, le pipeline doit enregistrer les nouvelles valeurs de statut et date dans les champs statut_tmp et date_tmp de la table spip_rubriques. À la fin des appels par les différents plugins, ces valeurs seront recopiées dans les champs statut et date.

Documentation en chantier. Voir  :
 la fonction calculer_rubriques_publiees qui appelle ce pipeline
 la fonction calculer_rubriques_if, qui recalcule les statuts d’une rubrique en particulier.

Exemple

Exemple dans le plugins produits :

Le plugin ’produits’ implémente une instance du pipeline calculer_rubriques (source), qui est activé ou non selon une configuration de ce plugin.

/**
 * Publier et dater les rubriques qui ont un produit publie
 *
 * @param array $flux
 * @return array
 */
function produits_calculer_rubriques($flux){
  include_spip('inc/config');
  if (lire_config('produits/publier_rubriques')) {
    $r = sql_select(
            "R.id_rubrique AS id, max(A.date) AS date_h", 
            "spip_rubriques AS R, spip_produits AS A", 
            "R.id_rubrique = A.id_rubrique 
              AND R.date_tmp <= A.date 
              AND A.statut='publie' ", 
            "R.id_rubrique");
    while ($row = sql_fetch($r)) {
      sql_updateq('spip_rubriques', array('statut_tmp' => 'publie', 'date_tmp' => $row['date_h']), "id_rubrique=" . $row['id']);
    }
  }
  return $flux;
}

À noter que le critère R.id_rubrique = A.id_rubrique pourrait figurer dans la jointure en tant que ON R.id_rubrique = A.id_rubrique plutôt que dans le WHERE.

Auteur JLuc Publié le : Mis à jour : 12/11/22