[spip-dev] Bug trouver_table() et champ 'titre'

Bonjour,

Sous 2.1 et 2.0 svn, trouver_table() renvoie une clé 'titre' qui devrait contenir l'adresse de la colonne titre est de la langue, renseignée avec le tableau table_titre :

$desc['titre'] = isset($GLOBALS['table_titre'][$nom])
  ? $GLOBALS['table_titre'][$nom] : '';

Sauf que...
Selon l'appel, $nom vaut 'spip_articles' ou 'articles', mais $GLOBALS['table_titre'] n'a connaissance que de 'articles'.

Avec le cache SQL et un peu de malchance, 'titre' n'est jamais renseigné :
?page=hop&var_mode=recalcul . Fichier hop.html
<?php
$trouver_table = charger_fonction('trouver_table', 'base');
// met en cache SANS table_titre
$desc = $trouver_table('spip_articles');
print_r($desc['titre']); // ''
echo "<hr />";
$desc = $trouver_table('articles');
print_r($desc['titre']); // ''
?>

?page=hip&var_mode=recalcul . Fichier hip.html
<?php
$trouver_table = charger_fonction('trouver_table', 'base');
// met en cache AVEC table_titre
$desc = $trouver_table('articles');
print_r($desc['titre']); // 'titre, lang'
echo "<hr />";
$desc = $trouver_table('spip_articles');
print_r($desc['titre']); // 'titre, lang'
?>

En fait il y a un autre bug... avec le cache SQL : Les champs retournés 'table' et 'id_table' sont ceux sauvés dans le fichier de cache, mais ne correspondent pas à ce qui entre.

Exemple, si on met en premier
$desc = $trouver_table('articles');
On obtient :
     [table] => spip_articles
     [id_table] => articles

Si c'est :
$desc = $trouver_table('spip_articles');
On obtient :
     [table] => spip_articles
     [id_table] => spip_articles

Comme c'est mis en cache... si on appelle l'autre par la suite, le résultat ne sera pas celui attendu. Cependant, je me demande si 'id_table' ne devrait pas renvoyer TOUJOURS 'articles' non ?

http://trac.rezo.net/trac/spip/changeset/15551
semble pas mal
Il reste un bug sous jacent :

trouver_table(‹ articles ›)
recherchera ‹ spip_articles › avec translation du prefixe
mais

trouver_table(‹ spip_articles ›) recherchera ‹ spip_articles › explicitement, (independamment du prefixe de l’installation)
Hors les deux partagent le meme cache !

Cédric