Contexte : je suis en train de faire évoluer le plugin Matomo afin que lors de sa désinstallation il efface les traces de la configuration du plugin dans la table spip_meta.
Dans pas de plugins il y a la présence de include_spip('inc/meta'), je supposais et @pierretux me l’a confirmé sur IRC que ça concernait la mise à jour d’« une méta de plugins avec ecrire_meta ».
Dois-je utiliser include_spip('inc/meta') en utilisant effacer_config ? Dans le cas de Matomo et des tests que j’ai réalisés jusqu’à là, cela semble fonctionner sans. Mais, n’étant pas le plus à l’aise en PHP et ne maitrisant pas toutes les finesses, je veux bien des avis de personnes compétentes et maitrisant les arcanes de SPIP.
include_spip sert à définir les fonctions dont tu as besoin en incluant le fichier qui les définit.
Si tu n’inclues pas include_spip('inc/meta') et qu’il n’y a pas d’erreur, c’est que les fonctions requises sont déjà définies et donc l’inclusion n’est pas nécessaire.
Mais est-ce le cas général ou bien est-ce qu’un autre plugin sur ton site, ou une autre fonctionnalité dans la page de test, inclue déjà ce fichier ? Pour savoir il faudrait tester sur un spip dist vierge.
Si tu ne sais pas ou si tu ne veux pas prendre de risque tu peux faire l’inclusion. Include_spip plusieurs fois le même fichier ne perd pas beaucoup de temps et ne fait pas de mal.
Merci beaucoup @JLuc de ces précisions qui m’aident à avancer.
Après test sur un SPIP vierge, en effet la désinstallation de Matomo et Umami ne fonctionne pas, il me manque quelque chose.
Je souhaite uniquement que lors de la désinstallation du plugin, la configuration soit nettoyée de la table spip_meta. Il n’y a pas besoin de plus.
Coucou Plumf,
dans le cas ou la doc n’est pas suffisante, regarde sur git.spip.net dans les plugins stables récents pour trouver la bonne méthode déjà appliquée à reprendre.
Tu as aussi search.spip.net qui est extra pour repérer ce que tu cherches.
Par exemple voir effacer_meta sur search.spip
avec l’utilisation du fichier ‹ prefixplugin_administrations.php › pris en compte automatiquement dans son plugin.
J’essaye de regarder à droite et à gauche. Mais mes tests en mimétisme d’autres plugins ne sont pas des plus concluants. Et @ybbet m’aide sur git pour Matomo.
HS : Ponpon, après sa contribution de ce matin sur Matomo, qui fait que Matomo s’installe et se désinstalle correctement, quand je porte des modifications sur Umami (les deux plugins ont la même structure), ça ne fonctionne pas ! Je continue à chercher.
Sans voir ton code ce n’est pas évident
Je suppose que tu connais le plugin La Fabrique qui génère tous les fichiers pour créer avec magie le plugin de tes rêves.
Dont bien sur les fichiers d’installation !
Essaye peut-être de créer un plugin simple sur lequel tu rajouteras ensuite tes spécificités ?
Le flou de ce témoignage me laisse imaginer que tu ne consultes pas les logs de php, car ceux ci contiennent les messages d’erreurs de PHP avec l’origine de l’erreur, et lèverait toute incertirtude en indiquant par exemple « Fatal error : function lire_meta is undefined in nomfichier.php line 138 ». ( Cf la page de spip.net sur les outils de debug, qui doit être la plus citée sur ce forum ! )
Ces jours-ci, je n’ai que mon écran d’ordinateur portable, j’ai peu utilisé ces outils car l’agencement m’empêche de cliquer (cf. ci-dessous) et je n’ai pas repéré de manière de déplacer et réagencer les fenêtres. J’ai essayé surtout de trouver des infos dans les logs de SPIP en augmentant la verbosité des logs.
Hello Plumf,
les logs PHP ne sont pas accessibles via l’interface de SPIP, mais à l’endroit paramétré sur le serveur, endroit qui dépend de ton hébergeur et qui n’est pas toujours facile à trouver au vu des discussions sur ce forum.
Par exemple pour infomaniak, c’est dans le « ik-logs folder at the root of your hosting. » ainsi qu’expliqué sur Display Web access and error logs
mais c’est différent sur chaque hébergeur.
Parfois on y accède via le manager ou panneau de contrôle, parfois par ftp ou ssh, parfois il faut les activer au préalable…
Finalement, tout ça m’a servi à comprendre un peu (beaucoup) plus comment fonctionnent SPIP sous le capot.
J’ai fait le choix de marquer l’utilisation de include_spip('inc/meta') et include_spip('inc/config').
Pour autant, administrations.php semble fonctionner sans ces deux appels, mais n’étant pas sûr que ce soit un effet de bord venant d’un autre morceau de code, j’ai préféré indiquer leur utilisation dans le fichier.
Cela permet d’indiquer à de futures contributrices et contributeurs que ces deux includes sont utilisés par le fichier.
La fonction include_spip() permet de charger une librairie PHP, un fichier. C’est l’équivalent du include_once() de PHP avec comme détail important le fait que le fichier demandé est recherché dans le path de SPIP, c’est à dire dans l’ensemble des dossiers connus, par ordre de priorité.
include_once
(PHP 4, PHP 5)
La structure include_once inclut et évalue le fichier spécifié durant l’exécution du script. Le comportement est similaire à include, mais la différence est que si le code a déjà été inclus, il ne le sera pas une seconde fois.
Finalement, tout ça m’a servi à comprendre un peu (beaucoup) plus comment fonctionnent SPIP sous le capot.
J’ai fait le choix de marquer l’utilisation de include_spip('inc/meta') et include_spip('inc/config').
Pour autant, administrations.php semble fonctionner sans ces deux appels, mais n’étant pas sûr que ce soit un effet de bord venant d’un autre morceau de code, j’ai préféré indiquer leur utilisation dans le fichier.
Cela permet d’indiquer à de futures contributrices et contributeurs que ces deux includes sont utilisés par le fichier.
Voir le sujet ou répondre à cet e-mail pour répondre.