+40
−23
Chargement en cours
complement a [15551] : separer les caches de spip_articles et articles, qui ne sont pas interpretes de la meme facon :
trouver_table('articles') recherche 'spip_articles' avec translation du prefixe
trouver_table('spip_articles') recherchera 'spip_articles' explicitement, (independamment du prefixe de l'installation)
On en profite pour nommer plus precisemment le fichier cache afin qu'il depende aussi du nom de la db et du prefixe, et qu'il soit auto invalide si config/connect.php est edite a la main
Enfin, puisque trouver_table('mots_articles') fonctionne sans preciser le prefixe spip_, on autoriser le meme raccourci implicite sur toutes les tables principales, meme si pas de declaration dans table_des_tables, ce qui permet une homogeneite du comportement
Le regle d'ecriture d'un nom de table dans une boucle est donc :
- ne pas mettre le prefixe spip_ pour toutes les tables principales/auxiliaires, si on veut etre sur qu'il s'agit de la table avec le prefixe de la connexion
- mettre le prefixe 'spip_' pour aller chercher explicitement la table nommee ainsi, independamment du prefixe de la connexion.
Pour faire un squelette generique avec une boucle sur xxx, il faut donc declarer la table xxx en principale au auxiliaire, sinon on est oblige d'indiquer le prefixe dans le nom de la boucle, et il ne sera pas traduit a l'execution.
Ce point est genant, dans d'autres situations egalement.
On pourrait modifier la regle en disant que 'spip_' doit toujours etre traduit, mais cela empecherait du coup d'acceder a une table externe 'spip_articles' sur une installation avec un prefixe different de 'spip_'.
Le probleme semble insoluble sans ajouter un argument a la fonction trouver_table, ce qui n'est pas envisageable a ce stade.
A revoir sur la branche dev, donc
Forge communautaire SPIP | Charte d'utilisation | Signaler un problème sur ce site