From 6c6798511f57e270501699e66654b94e43819679 Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Fri, 16 Apr 2021 10:50:15 +0200 Subject: [PATCH] =?UTF-8?q?Le=20retour=20de=20la=20fonction=20objet=5Ftrou?= =?UTF-8?q?ver=5Fparents()=20inclue=20la=20description=20compl=C3=A8te=20d?= =?UTF-8?q?u=20lien=20quand=20le=20parent=20est=20trouv=C3=A9=20via=20une?= =?UTF-8?q?=20table=20de=20xxxx=5Fliens?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/base/objets.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/ecrire/base/objets.php b/ecrire/base/objets.php index 3d5c9c11d6..b22188c8b7 100644 --- a/ecrire/base/objets.php +++ b/ecrire/base/objets.php @@ -1263,10 +1263,10 @@ function objet_test_si_publie($objet, $id_objet, $serveur = '') { /** - * Cherche le contenu parent d'un contenu précis - * - * Permet également de gérer un parent trouvé dans une table de lien, comme : + * Cherche les contenus parent d'un contenu précis. + * Cette version permet de gérer un/des parents trouvés dans une table de lien * + * comme : * ``` * $tables['spip_auteurs']['parent'] = array( * 'type' => 'organisation', @@ -1278,6 +1278,11 @@ function objet_test_si_publie($objet, $id_objet, $serveur = '') { * ); * ``` * + * La fonction retourne un tableau de parents, chacun de la forme + * ['objet' => '...', 'id_objet' => X, 'table' => '...', 'champ' => '...'] + * Si la table utilisée pour trouver le parent est une table de liens (finissant par _liens), + * le tableau contient en plus en entrée 'lien' qui contient les informations complètes du lien (rang, role...) + * * @api * @param string $objet * Type de l'objet dont on cherche les parent @@ -1361,10 +1366,11 @@ function objet_trouver_parents($objet, $id_objet, $parent_direct_seulement = fal } // On lance la requête de récupération du parent + $is_table_lien = (strpos($table, '_liens') !== false and substr($table, -6) === '_liens'); if ( !$condition_objet_invalide and $where - and ($lignes = sql_allfetsel($select, $table, $where)) + and ($lignes = sql_allfetsel( $is_table_lien ? '*' : $select, $table, $where)) ) { foreach ($lignes as $ligne) { // Si le type est fixe @@ -1385,6 +1391,9 @@ function objet_trouver_parents($objet, $id_objet, $parent_direct_seulement = fal 'table' => $table, ); } + if ($is_table_lien) { + $parent['lien'] = $ligne; + } $parents[] = $parent; } } -- GitLab