[spip-dev] ajout de colonne dans une table spip

pour créer une nouvelle table, il suffit de créer des entrées dans
tables_principales, depuis mes_fonctions, mais pour ajouter une colonne
à spip_articles, par exemple, on est obligé de faire ça dans
inc_serialbase ?

Reprenons:

1 pour que Spip connaisse des tables déja créées (par mysql etc), affecter $tables_principales dans mes_fonctions

2 pour que Spip crée des tables (et donc les connaisse), affecter $tables_principales dans mes_options

3 pour que Spip sache que les tables standard ont été modifiées, affecter $tables_principales dans mes_options

4 pour que Spip crée des tables standard vides, avec des colonnes supplémentaires, cf 2.

5 pour que Spip modifie des tables standard, on recrute....

Déesse A.

comme ça, par exemple ?
$GLOBALS['tables_principales']['spip_articles']['field']['machin']= "varchar(80)";

  ben ça marche pô :frowning:
  un var_export($GLOBALS['tables_principales']) n'affiche que mes
modifs, pas le reste de la table.

Ah oui, parce qu'en fait tables_principales contient des pointeurs sur les tables, pas les tables elles-mêmes (c'est assez volumineux quand même, il n'y avait pas de raison de recopier).
Il faut donc que tu affectes $spip_articles dans ce cas-là.

Déesse A.

Déesse A. a écrit :

Ah oui, parce qu'en fait tables_principales contient des pointeurs sur
les tables, pas les tables elles-mêmes (c'est assez volumineux quand
même, il n'y avait pas de raison de recopier).

et alors ? un accès direct à un de ses enregistrement devrait
tomber au bout du même pointeur non ?

Il faut donc que tu affectes $spip_articles dans ce cas-là.

  un dump du tableau tables_principale devrait tout dumper de toutes
façons non ?
  là, on dirait que mes_options et appelé avant inc_serialbase, et vu
le nombre de tiroirs, j'ai pas trop envie de vérifier de bout en bout le
graphe d'appel.

Ah oui, parce qu'en fait tables_principales contient des pointeurs sur
les tables, pas les tables elles-mêmes (c'est assez volumineux quand
même, il n'y avait pas de raison de recopier).

et alors ? un accès direct à un de ses enregistrement devrait
tomber au bout du même pointeur non ?

Pas si tu affectes la dite variable après.

Il faut donc que tu affectes $spip_articles dans ce cas-là.

  un dump du tableau tables_principale devrait tout dumper de toutes
façons non ?
  là, on dirait que mes_options et appelé avant inc_serialbase, et vu
le nombre de tiroirs, j'ai pas trop envie de vérifier de bout en bout le
graphe d'appel.

je n'avais pas pensé à la modif des stables standards comme application, je réponds du tac au tac.
Là je pense que tu devrais pouvoir t'en tirer en faisant un include de inc_serialbase dans mes fonctions et en modifisant ensuite tables_principales ou spip_article, au choix.

Déesse A.

YES ! ça marche
bien vu, merci :wink: