diff --git a/abonnements_pipelines.php b/abonnements_pipelines.php index f2f399f..c971f48 100644 --- a/abonnements_pipelines.php +++ b/abonnements_pipelines.php @@ -230,7 +230,7 @@ function abonnements_affiche_gauche($flux) { } /* - * Ajouter la boite des abonnements sur la fiche auteur et les offres sur les objets configurés + * Ajouter la boite des abonnements sur la fiche auteur */ function abonnements_affiche_milieu($flux) { $e = trouver_objet_exec($flux['args']['exec']); @@ -254,7 +254,7 @@ function abonnements_affiche_milieu($flux) { } /* - * Ajouter la boite des abonnements sur la fiche auteur et les offres sur les objets configurés + * Ajouter les offres sur les objets configurés */ function abonnements_affiche_enfants($flux) { $e = trouver_objet_exec($flux['args']['exec']); @@ -263,14 +263,13 @@ function abonnements_affiche_enfants($flux) { if ( is_array($e) and !$e['edition'] - and isset($flux['args'][$e['id_table_objet']]) and in_array($e['table_objet_sql'], lire_config('abonnements/objets', array())) and $texte = recuperer_fond( 'prive/objets/editer/liens', array( 'table_source' => 'abonnements_offres', 'objet' => $e['type'], - 'id_objet' => $flux['args'][$e['id_table_objet']] + 'id_objet' => $flux['args']['id_objet'] ) ) ) { @@ -284,6 +283,57 @@ function abonnements_affiche_enfants($flux) { return $flux; } +/** + * Afficher les contenus dans lesquels sont rangés les offres + * + * @param array $flux + * @return array + */ +function abonnements_affiche_hierarchie($flux) { + include_spip('inc/config'); + + // Sur la page d'une offre + if ( + $flux['args']['objet'] == 'abonnements_offre' + and $objets = lire_config('abonnements/objets') + ) { + include_spip('action/editer_liens'); + $objets = array_map('objet_type', $objets); + + // On cherche si cette offre à des liens + if ($liens = objet_trouver_liens( + array('abonnements_offre' => $flux['args']['id_objet']), + array('*' => '*') + )) { + $liens_parents = array(); + $liens_offres = array(); + foreach ($liens as $lien) { + // Seulement si ce lien est actuellement prévu dans la config + if (in_array($lien['objet'], $objets)) { + // Si c'est une liaison entre deux offres + if ($lien['objet'] == 'abonnements_offre') { + $liens_offres[] = "[->{$lien['objet']}{$lien['id_objet']}]"; + } + else { + $liens_parents[] = "[->{$lien['objet']}{$lien['id_objet']}]"; + } + } + } + + if ($liens_parents) { + $liens_parents = PtoBR(propre(_T('abonnementsoffre:liens_parents_label') . join(', ', $liens_parents))); + $flux['data'] .= '