champs dans table spip_meta qui ne s'efface pas

bonjour;
je suis toujours avec mon plugin. j’avance petit à petit. J’utilise le plugin saisie pour la configuration,
Cela fonctionne. j’enregistre les paramètres dans spip_meta, et je les lis/écrit avec lire_config(‹ monplugin/parametre_x ›) et ecrire_config(‹ monplugin/parametre_x ›).
Jusque la, tout va bien.

Par contre, je voudrai supprimer de la table les données, qui ne sont plus utilise, quand on supprime totalement le plugin.
J’ai donc fait, si je suis bien renseigné, un fichier monplugin_administrations.php
Dedans, j’ai l’initialisation de mesta_spip pour mes données, et function monplugin_vider_tables($nom_meta_base_version) { } pour vider la table.

La fonction est bien appelée (je me suis amusé à mettre effacer_config(‹ spip_meta ›) => ça marche plus après! heureusement que c’est dans un bac à sable!)

Donc, la question, est: faut il supprimer tous les éléments du plugin, un par un, puis la référence dans spip_meta, ou est-ce qu’on ne peut rien supprimer?
j’avoue que j’ai tenté pas mal de chose, mais je sèche un peu.

Merci de votre aide.

Rémi.

Le 26/05/2019 à 17:08, "Rémi Suinot via spip <spip@rezo.net>"@alan.cursys.net a écrit :

bonjour;
je suis toujours avec mon plugin. j'avance petit à petit. J'utilise le plugin saisie pour la configuration,
Cela fonctionne. j'enregistre les paramètres dans spip_meta, et je les lis/écrit avec lire_config('monplugin/parametre_x') et ecrire_config('monplugin/parametre_x').
Jusque la, tout va bien.

Par contre, je voudrai supprimer de la table les données, qui ne sont plus utilise, quand on supprime totalement le plugin.
J'ai donc fait, si je suis bien renseigné, un fichier monplugin_administrations.php
Dedans, j'ai l'initialisation de mesta_spip pour mes données, et function monplugin_vider_tables($nom_meta_base_version) { } pour vider la table.

La fonction est bien appelée (je me suis amusé à mettre effacer_config('spip_meta') => ça marche plus après! heureusement que c'est dans un bac à sable!)

Donc, la question, est: faut il supprimer tous les éléments du plugin, un par un, puis la référence dans spip_meta, ou est-ce qu'on ne peut rien supprimer?
j'avoue que j'ai tenté pas mal de chose, mais je sèche un peu.

Merci de votre aide.

Rémi.

Salut,

ce n'est pas très clair. Normalement effacer_config("mon_plugin") permet d'effacer toute la config du plugin. mais par ailleurs tu parle d'une table de données. Tu a donc créé une table sql en plus de la config ? Dans ce cas effacer_config() fera pas l'affaire pour supprimer la table sql (sql_drop_table() à la place). Ensuite, il faut bien, à la fin, effacer

Typiquement

function mon_plugin_effacer_tables($nom_meta_base_version) {
  include_spip('inc/config');
  include_spip('base/abstract_sql');
  sql_drop_table('table_du_plugin'):// pour effacer une table créé par le plugin
  effacer_config('mon_plugin');// pour effacer la config du plugin
  effacer_meta($nom_meta_base_version); // pour que SPIP ne pense plus que le plugin a été installé
  
}

cf

Maïeul

Merci Maïeul pour ta réponse.
J’ai utilisé une mauvaise terminologie, je m’en excuse.
J’ai bien utilisé que spip_meta.
Par contre, tu me confirme bien que normalement, il faut « juste » utiliser effacer_config() !

Mais, je ne sais pas pourquoi, mais cela fonctionne:
J’ai juste ajouté un test sur la première données de mon plugin
include_spip(« inc/config »);
if (existe(lire_config(‹ mon_plugin/taille ›)))
effacer_config(‹ monplugin/taille ›)
// ici placer les autres tests si ça marche
effacer_config(‹ monplugin ›);
effacer_metas(…);

Et la, ça à fonctionné dès que le premier champs a été supprimé!!!
ça fait deux semaine que je suis dessus!

Le principal, c’est que cela fonctionne.

26 mai 2019 17:08 « Rémi Suinot via spip » <spip@rezo.net> a écrit:

bonjour;
je suis toujours avec mon plugin. j’avance petit à petit. J’utilise le plugin saisie pour la configuration,
Cela fonctionne. j’enregistre les paramètres dans spip_meta, et je les lis/écrit avec lire_config(‹ monplugin/parametre_x ›) et ecrire_config(‹ monplugin/parametre_x ›).
Jusque la, tout va bien.

Par contre, je voudrai supprimer de la table les données, qui ne sont plus utilise, quand on supprime totalement le plugin.
J’ai donc fait, si je suis bien renseigné, un fichier monplugin_administrations.php
Dedans, j’ai l’initialisation de mesta_spip pour mes données, et function monplugin_vider_tables($nom_meta_base_version) { } pour vider la table.

La fonction est bien appelée (je me suis amusé à mettre effacer_config(‹ spip_meta ›) => ça marche plus après! heureusement que c’est dans un bac à sable!)

Donc, la question, est: faut il supprimer tous les éléments du plugin, un par un, puis la référence dans spip_meta, ou est-ce qu’on ne peut rien supprimer?
j’avoue que j’ai tenté pas mal de chose, mais je sèche un peu.

Merci de votre aide.

Rémi.

A contrario, comment je peux faire la différence entre première installation et mise à jour?
C’est toujours dans monplugin_administrations.php je pense, mais y a t’il une variable qui me le dit?

26 mai 2019 17:48 « Rémi Suinot via spip » <spip@rezo.net> a écrit:

Merci Maïeul pour ta réponse.
J’ai utilisé une mauvaise terminologie, je m’en excuse.
J’ai bien utilisé que spip_meta.
Par contre, tu me confirme bien que normalement, il faut « juste » utiliser effacer_config() !

Mais, je ne sais pas pourquoi, mais cela fonctionne:
J’ai juste ajouté un test sur la première données de mon plugin
include_spip(« inc/config »);
if (existe(lire_config(‹ mon_plugin/taille ›)))
effacer_config(‹ monplugin/taille ›)
// ici placer les autres tests si ça marche
effacer_config(‹ monplugin ›);
effacer_metas(…);

Et la, ça à fonctionné dès que le premier champs a été supprimé!!!
ça fait deux semaine que je suis dessus!

Le principal, c’est que cela fonctionne.

26 mai 2019 17:08 « Rémi Suinot via spip » <spip@rezo.net> a écrit:

bonjour;
je suis toujours avec mon plugin. j’avance petit à petit. J’utilise le plugin saisie pour la configuration,
Cela fonctionne. j’enregistre les paramètres dans spip_meta, et je les lis/écrit avec lire_config(‹ monplugin/parametre_x ›) et ecrire_config(‹ monplugin/parametre_x ›).
Jusque la, tout va bien.

Par contre, je voudrai supprimer de la table les données, qui ne sont plus utilise, quand on supprime totalement le plugin.
J’ai donc fait, si je suis bien renseigné, un fichier monplugin_administrations.php
Dedans, j’ai l’initialisation de mesta_spip pour mes données, et function monplugin_vider_tables($nom_meta_base_version) { } pour vider la table.

La fonction est bien appelée (je me suis amusé à mettre effacer_config(‹ spip_meta ›) => ça marche plus après! heureusement que c’est dans un bac à sable!)

Donc, la question, est: faut il supprimer tous les éléments du plugin, un par un, puis la référence dans spip_meta, ou est-ce qu’on ne peut rien supprimer?
j’avoue que j’ai tenté pas mal de chose, mais je sèche un peu.

Merci de votre aide.

Rémi.

Le 26/05/2019 à 17:48, "Rémi Suinot via spip <spip@rezo.net>"@alan.cursys.net a écrit :

if (existe(lire_config('mon_plugin/taille')))

if (existe(lire_config('mon_plugin/taille'))) -> existe ca n'existe pas comme fonction! if(lire_config('mon_plugin/taille')

serait mieux.

Le 26/05/2019 à 18:11, "Rémi Suinot via spip <spip@rezo.net>"@alan.cursys.net a écrit :

A contrario, comment je peux faire la différence entre première installation et mise à jour?
C'est toujours dans monplugin_administrations.php je pense, mais y a t'il une variable qui me le dit?

tout est expliqué là

Bah, je l’ai écrit bien sûr.
C’est juste un test derrière

Le 27 mai 2019 10:58:55 GMT+02:00, « Maïeul » maieul@maieul.net a écrit :

Le 26/05/2019 à 17:48, "Rémi Suinot via spip 
<spip@rezo.net>"@alan.cursys.net a écrit :

> if (existe(lire_config('mon_plugin/taille')))

if (existe(lire_config('mon_plugin/taille'))) -> existe ca n'existe pas 
comme fonction! if(lire_config('mon_plugin/taille')

serait mieux.

---

liste spip
spip@rezo.net - désabonnement : envoyer un mail à  spip-off@rezo.net

Archives : [https://www.mail-archive.com/spip@rezo.net/maillist.html](https://www.mail-archive.com/spip@rezo.net/maillist.html)

Infos : [https://listes.rezo.net/mailman/listinfo/spip](https://listes.rezo.net/mailman/listinfo/spip)

Documentation de SPIP : [http://www.spip.net/](http://www.spip.net/)

Irc : de l'aide à toute heure : [http://spip.net/irc](http://spip.net/irc)


Envoyé de mon appareil Android avec Courriel Open Mail. Veuillez excuser ma brièveté.