Je suis en train de regarder le fonctionement de Spip, et il me semble qu'il y a un truc bizzare dans la gestion des metas.
Spip aime bien les variables globales, soit, c'est un choix.
Donc lorsqu'on appelle la page index.php3, sommaire.php3 est appelé qui lui même appelle inc-public.php3.
Système classique pour centraliser le code tout en ayant des urls qui ressemble à quelquechose.
inc-public.php3 appelle inc-meta.php3 avec un système équivalent à include_once apparu avec PHP 4.0.1pl2.
inc-meta.php3 propose 3 fonctions : lire, ecrire, effacer. Il y a même un système de cache pour éviter de martyriser Mysql inutilement.
Sauf qu'il y a quelques soucis de logique, on peut effacer une clef, mais pas en créer, juste en modifier. Est il envisageable de normaliser la syntaxe pour que des contribs utilise le système des métas sans tout casser?
En utilisant une clef avec un prefixe, par exemple 'maContrib.maClef', comme ça, on peut faire le ménage avec un LIKE 'maContrib.%'.
Deuxième soucis, le cache.
Le script réecrit var_export apparu dans php 4.2.0, c'est pour des raisons historique et de compatibilité, normal, et puis ça marche trés bien. A la fin, le script appele lire_metas() qui déclenche une requète SQL.
Le cache est court circuité.
Visiblement, inc-metas.php3 était appelé par ecrire/inc.php3 aprés avoir vérifié la présence du cache.
Maintenant, il est appelé directement.
Tout étant imbriqué, je ne sais pas par quel bout il faut attaquer pour corriger ça sans tout casser.
M.