diff --git a/ecrire/base/objets.php b/ecrire/base/objets.php index 3d5c9c11d6a595dc144c237f99177052b11171df..b22188c8b797e09158e42d588ce1ede49d4b59ea 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; } }