J’ai un plugin pour lequel une table est créée dans la DB.
J’aimerai supprimer cette table lors de la désinstallation du plugin. J’ai d’abord utilié la procédure <pluginId>_remove() qui est définie dans plugin_info/install.php mais, contrairement à ce que son nom suggère, cette procédure n’est pas appelée lors du remove du plugin mais à chaque désactivation.
Y-a-t’îl une possibilité de déclencher un traitement lors de la désinstallation d’un pluggin sans que ce traitement ne soit exécuté quand on désactive le plugin?
Hello, non dans le core au deleteObjet (class update) il fait un setIsEnable (class plugin) a 0 (et supprime les eq Et le dossier, les configs etc ) Mais il y a pas d’autre hook que celui que tu utilises (pas d’évent non plus d’ailleurs).
On utilise des DB pour Jeemate et au début on avait souvent des users avec des soucis, en grattant on s’est aperçu que ceux-ci faisaient des activation/désactivation du plugin, ce qui avait pour effet de delete leurs databases et donc configuration.
Le choix a été fait de ne plus supprimer les DB mais d’ajouter un bouton pour le faire manuellement dans la page configuration.
Bien entendu, ce n’est pas l’idéal mais à défaut de mieux, on s’évite des heures de support pour des bêtises.
à la désactivation, on lance un script php en background (avec un &à la fin de la commande)
Le script attend un certain temps avant de vérifier si le répertoire du plugin est toujours là. Si non c’est que le plugin a été désinstallé et on peut supprimer la table.
Le problème est que ça ne marche pas si le plugin est déjà désactivé lorsqu’on de désinstalle
A mon avis, il faudrait revoir le traitement par le core des fonctions
<plunginID>_install
<plunginID>_update
<plunginID>_remove
et prévoir un support pour les fonctions
<plunginID>_activate
<plunginID>_unactivate
Mais je crains que ce ne soit pas possible sans casser des plugins existants