Eric a écrit:
Je suis vraiment pas doué :(
Mais je persiste ! Il y a quelque chose que je ne comprend pas dans le code de rvelices : A quoi sert ceci ?Code:
list($conf['gmaps_api_key']) = array_from_query('SELECT value FROM '.CONFIG_TABLE.' WHERE param="gmaps_api_key"', 'value');
Ca permet de mettre à jour ta variable!
Eric a écrit:
Bingo !
Cette fois, c'est bon pour la gestion des paramètres. Les données sont bien récupérées de la table et mises à jour après modification. Une journée de boulot juste pour la partie admin du plugin... Pas super productif !
Pour le reste, je rebascule dans le topic d'origine sur le Plugin Register_PunBB sauf si je rencontre encore des soucis avec la gestion des paramètres. Au quel cas, je reposterai ici.
Milles mercis rub !
Cool!
Mais de rien!
Hors ligne
Bon, désolé mais j'ai encore un petit pb avec la gestion des paramètres :
Parmis les 11 paramètres du plugin, j'en ai un nommé "punbb_status" qui définit si la fonction d'enregistrement automatique des utilisateurs dans punbb via l'inscription de PWG est active. Ce paramètre peut prendre la valeur true (fonction active) ou false (fonction inactive) mais ce n'est pas un paramètre de type booléen.
Or, le champ des valeurs dans la table #_config est un champ de type texte. Lorsque le plugin est installé, il y a bien création de l'entrée "punbb_status" avec la valeur "false" par défaut et le commentaire associé. Mais il n'y a pas de remontée de cette information dans mon formulaire de l'interface d'administration du plugin.
Pourtant tous les autres paramètres de mon plugin sont correctement remontés. Plus étrange, lorsque je modifie la valeur à "true" sur "punbb_status" via le formulaire d'administration, la modification est bien répercutée en base de donnée mais toujours pas affichée dans mon formulaire.
Est-ce parce que les valeurs de ce paramètre sont de type booléen (même si les données sont stockées dans un champ de type texte) ? Dans ce cas, comment faire ? Car une checkbox retournant une "vrai" valeur booléenne ne s'enregistre pas dans la table avec un typage de champ à "text". J'ai un message d'erreur SQL très furtif et impossible à recopier. Mais pour le coup, cette fois, je n'ai ni affichage de la donnée ni mise à jour en BDD.
Voici la requête d'installation du plugin concernant ce paramètre :
INSERT INTO '.CONFIG_TABLE.' (param,value,comment) VALUES ("punbb_status","true","Activation of Register_PunBB plugin");';
Un extrait de la fonction de mise à jour de la table #_config :
// Load configuration settings from database load_conf_from_db('param like \'punbb\\_%\''); // Update configuration settings in database if ( isset($_POST['submit']) ) { $query = ' UPDATE '.CONFIG_TABLE.' SET value="'.$_POST['punbb_status'].'" WHERE param="punbb_status" LIMIT 1'; pwg_query($query); $query = ' UPDATE '.CONFIG_TABLE.' SET value="'.$_POST['punbb_prefix'].'" WHERE param="punbb_prefix" LIMIT 1'; pwg_query($query); (...) // Reload settings for correct display after update load_conf_from_db('param like \'punbb\\_%\''); }
Et le début de mon template d'admin pour le plugin :
<form method="post" action="{RegPunBB_F_ACTION}" class="general"> <fieldset> <legend>{lang:SubTitle}</legend> <ul> <li><label>{lang:PluginActivation}</label><br /> <div align="center"><label><input type="text" name="punbb_status" value="{PUNBB_STATUS}" size="1" style="text-align: center;"/></label></div> <br /><br /> </li> <li><label>{lang:Punbb_Prefix}</label><br /> <div align="center"><label><input type="text" name="punbb_prefix" value="{PUNBB_PREFIX}" size="8" style="text-align: center;"/></label></div> <br /><br /> </li> <li><label>{lang:Punbb_Default_Group}</label><br /><br /> <div align="center"><label><input type="text" name="punbb_id_default_group" value="{PUNBB_ID_DEFAULT_GROUP}" size="1" style="text-align: center;"/></label></div> <br /><br /> </li>
[edit]
[HS]
rub : j'ai vu que tu t'étais inscrit sur ma galerie. C'est sympa, merci ! Pour info, tu est le 337ème membre depuis que PWG agrémente mon site.
[/HS]
[/edit]
Dernière modification par Eric (2007-05-13 03:16:44)
Hors ligne
Salut, je reviens sur la gestion des paramètres dans la base ou dans un fichier. Les deux se valent (niveau perf la base est peut être mieux et encore tout dépand du serveur), au contraire je suis totalement contre l'utilisation de la table _config de PhpWebGallery. Il me semble qu'on en avaient déjà discuté suite à un post de VDigital.
Premier problème, si un dev ce loupe dans la procédure d'installation, désinstallation, mise à jour c'est des coups à planter totalement la table et par la même occasion PhpWebGallery.
Deuxième problème, le préfixage du nom des champs, comment être certain qu'un champs ne porte pas le même nom malgré le préfixage ?
Je suis plutôt d'avis d'utiliser une table paramètre par plugin ça élimine les deux problèmes ci-dessus.
Hors ligne
Philippe,
Je crois comprendre ton propos.
Je pense que ton analyse n'est pas exacte.
Mon plugin crée une ligne dans la table de configuration qui abouti à générer une $conf['ccccccccccc']
En quoi, cette variable nouvelle mettrait en péril nos galeries.
Le code de base de PhpWebGallery l'ignorera.
Maintenant deux risques:
- Ecrasement/Perte de la table par une procédure d'instal douteuse.
- Conflit de paramètre (écrase une valeur de conf officielle ou d'un autre plugin)
L'un comme l'autre, je préconise une table différente mais commune aux plugins, et à terme des
routines de création/modification/supression des $conf par PhpWebGallery.
Inconvénient: Une conf actuelle ne serait pas protégée pour autant par un plugin mal écrit.
Table(s) spécifique(s) => Axe de développement inutile à mon avis.
Par contre, le plugin à terme inclus dans PhpWebGallery: No doubt !!!
Eric, Rub: Vos avis seront décisifs.
8-)
Hors ligne
Comme j'avais du l'écrire dans ce post ou un autre, je pense qu'il faudrait fournir une petite librairie de fonctions pour faire les lectures/miseAjour/écriture suppression.
Comme ca, d'une part, on peut mettre ce que l'on veut derrière (table #_conf ou #_config_plugin).
A partir de ce moment, peu importe que ce soit une nouvelle table ou pas, le risque de tout virer par erreur disparaît.
Par contre, il risque d'y avoir tout et n'importe quoi dans cette table. Sachant que la table #_conf est lu entièrement à chaque fois. Dans ce cas une nouvelle table est nécessaire!
Donc pour résumé, je suis pour:
o une nouvelle table de configuration dédié aux plugins
o une librairie de gestion de ces paramètres de configuration
PS: Eric, je n'ai pas le temps de voir en détail ce que tu as fait mais tu dois peut-être convertir ton boolean en texte pour l'insertion (il y a une fonction pour)
PS2: Je suis donc du même avis de VDigital
Dernière modification par rub (2007-05-13 11:09:33)
Hors ligne
VDigital a écrit:
L'un comme l'autre, je préconise une table différente mais commune aux plugins, et à terme des
routines de création/modification/supression des $conf par PhpWebGallery.
Pourquoi réinventer la poudre ? PWG propose une table de conf en natif. Il serait dommage de ne pas optimiser son emploi. D'autant plus que le risque de tout supprimer dans cette table est tout de même très minime.
Créer des Mods ou des plugins (car le cas peu également se présenter pour un Mod qui créerait des valeurs de conf dans #_config) n'est pas donné au premier venu - [ J'en sais quelques chose (sic) :-/ ] - et le developpeur est quand même sensé tester sont travail avant de le diffuser.
Personnellement, je me mets à la création de Mods / Plugins par besoin personnel. Si une erreur de ma part me déglingue toute ma galerie, je serai le premier impacté par la bévue et je ferai le maximum pour récupérer le coup avant même la diffusion du produit fini.
Non, franchement, la table #_config me convient très bien. Par contre +1 pour les routines de création/modification/suppression.
rub a écrit:
Sachant que la table #_conf est lu entièrement à chaque fois.
Je pense que cela étaye mes propos ci-dessus. Et enfonce le clou : La table #_conf est lue par défaut par PWG => Un souci en moins à gérer pour les plugins. Pour moi, les fonctions existantes du "noyau" de PWG doivent être exploitées avant d'éventuellement penser à en créer d'autres.
C'est un peu comme une loi votée mais non appliquée à laquelle on ajoute une seconde loi qui, elle sera appliquée ou fera appliquer la première.
Enfin, c'est ma vue du sujet.
rub a écrit:
Donc pour résumé, je suis pour:
o une nouvelle table de configuration dédié aux plugins
o une librairie de gestion de ces paramètres de configuration
Dixit ci-dessus, une nouvelle table serait inutile à mon sens. Mais, dans le cas proposé par rub, la nouvelle table devra être lu à chaque fois de la même manière que la table #_conf.
Et toujours +1 pour les fonctions de gestion des paramètres.
rub a écrit:
PS: Eric, je n'ai pas le temps de voir en détail ce que tu as fait mais tu dois peut-être convertir ton boolean en texte pour l'insertion (il y a une fonction pour)
Effectivement, je vais voir dans ce sens. Merci !
Hors ligne
Mon plugin crée une ligne dans la table de configuration qui abouti à générer une $conf['ccccccccccc']
En quoi, cette variable nouvelle mettrait en péril nos galeries.
C'est exacte dans le cas ou les procédures d'installation, désintallation, mise à jour sont correctement pensé et qu'elles n'ont pas généré d'erreur. Mais si par exemple pour une obscure raison l'une des procédure ce passe mal et écrit un peu tout et n'importe quoi dans la table _config, PhpWebGallery ne pourra pas ce passer de ces paramètres pour fonctionner. Alors vous allez me dire, c'est au dev de faire correctement sont taf. Mais je vois tellement des trucs bizarre en info (dev ou réseau) que je préfère prendre le minimum de risque. La création d'une table par plugin permet d'éliminer le risque d'erreur d'écriture dans _config.
Maintenant deux risques:
- Ecrasement/Perte de la table par une procédure d'instal douteuse.
- Conflit de paramètre (écrase une valeur de conf officielle ou d'un autre plugin)
L'un comme l'autre, je préconise une table différente mais commune aux plugins, et à terme des
routines de création/modification/supression des $conf par PhpWebGallery.
On revient au même problème. Alors effectivement la séparation de _config et _config_plugin (par exemple) empêche la destruction de paramètre propre à PhpWebGallery, mais ce n'est que déplacer le problème sauf qu'il se limitera au plugin. Au contraire la création de routine "d'encadrement" serait effectivement un plus pour ce protéger et simplifier la vie des dev ;)
Comme j'avais du l'écrire dans ce post ou un autre, je pense qu'il faudrait fournir une petite librairie de fonctions pour faire les lectures/miseAjour/écriture suppression.
Comme ca, d'une part, on peut mettre ce que l'on veut derrière (table #_conf ou #_config_plugin).
Tu veux dire qu'un dev pourra choisir quelle table il veut utiliser ?
Par contre, il risque d'y avoir tout et n'importe quoi dans cette table. Sachant que la table #_conf est lu entièrement à chaque fois. Dans ce cas une nouvelle table est nécessaire!
Effectivement ça va vite devenir le bazar. Surtout si la désinstallation d'un plugin ne supprime pas ces champs.
Pourquoi réinventer la poudre ? PWG propose une table de conf en natif. Il serait dommage de ne pas optimiser son emploi. D'autant plus que le risque de tout supprimer dans cette table est tout de même très minime.
Comme tu le dis, il est minime mais il est là et moi je ne veux pas prendre ce risque.
Créer des Mods ou des plugins (car le cas peu également se présenter pour un Mod qui créerait des valeurs de conf dans #_config) n'est pas donné au premier venu - [ J'en sais quelques chose (sic) :-/ ] - et le developpeur est quand même sensé tester sont travail avant de le diffuser.
Personnellement, je me mets à la création de Mods / Plugins par besoin personnel. Si une erreur de ma part me déglingue toute ma galerie, je serai le premier impacté par la bévue et je ferai le maximum pour récupérer le coup avant même la diffusion du produit fini.
Il arrive que quelque chose fonctionne chez l'un mais plante chez l'autre, et me demandez pas la raison... C'est surement la faute à Murphy ;)
Autre soucis, pour les mises à jours. La structure de mes champs a changé et il peut arriver que la commande MySQL ALTER ne soit pas dispo pour un utilisateur (déjà rencontré :( ) donc pas de mise à jour possible. Alors qu'avec une table supplémentraire il est facile de supprimer la première table en stockant les données éventuellement d'une façon ou d'une autre, de créer la nouvelle table, faire les traitements pour faire correspondre les données au nouveau shéma et ensuite les reimporter. Bon après j'suis pas un expert en procédure de mise à jour, je pense que Pierrick pourrait nous éclairer la dessus (il me semble que c'est lui qui écrit les procédures de mise à jour pour PhpWebGallery ?).
Je pense, qu'effectivement, la création d'une librairie est une bonne idée. Mais au contraire je reste sur ma première idée, l'utilisation d'une seule et même table (soit _config ou _config_plugin) est dangereuse.
Hors ligne
flipflip a écrit:
Autre soucis, pour les mises à jours. La structure de mes champs a changé et il peut arriver que la commande MySQL ALTER ne soit pas dispo pour un utilisateur (déjà rencontré :( ) donc pas de mise à jour possible. Alors qu'avec une table supplémentraire il est facile de supprimer la première table en stockant les données éventuellement d'une façon ou d'une autre, de créer la nouvelle table, faire les traitements pour faire correspondre les données au nouveau shéma et ensuite les reimporter. Bon après j'suis pas un expert en procédure de mise à jour, je pense que Pierrick pourrait nous éclairer la dessus (il me semble que c'est lui qui écrit les procédures de mise à jour pour PhpWebGallery ?).
Si dans #_conf, tu serialises, pas d'alter, juste un update => ça marche forcément!
ALTER sert à modifier une table, ça n'arrive pas tous les jours, et ça fait partie desmanips à risque.
Si on pose:
le paramètre z du plugin A s'appelle A_z , alors je pense que tout se passera bien: pas de risque d'écrasement (sauf à avoir 2 plugins qui s'appellent pareil...)
Tout dans la table config. Les champs sont du texte, je ne vois pas ce qui pourrait empêcher PWG de lire la table, même avec des données pourrites.
Par contre, +10 000 pour les fonctions de Gestion des paramètres.
PS: Et si les plugins, c'étaient des greffons ;-). Ça pourrait être des modules, mais c'est proche de MODs et la confusion est possible pour les néophytes.
Hors ligne
flipflip a écrit:
Autre soucis, pour les mises à jours. La structure de mes champs a changé et il peut arriver que la commande MySQL ALTER ne soit pas dispo pour un utilisateur (déjà rencontré :( ) donc pas de mise à jour possible. Alors qu'avec une table supplémentraire il est facile de supprimer la première table en stockant les données éventuellement d'une façon ou d'une autre, de créer la nouvelle table, faire les traitements pour faire correspondre les données au nouveau shéma et ensuite les reimporter. Bon après j'suis pas un expert en procédure de mise à jour, je pense que Pierrick pourrait nous éclairer la dessus (il me semble que c'est lui qui écrit les procédures de mise à jour pour PhpWebGallery ?).
C'est certain qu'un ALTER est très dangereux sur une table native de PWG. Mais je ne vois aucune raison de faire une telle chose. Si l'on utilise la table #_conf de PWG pour stocker des paramètres, il conviendra de l'utiliser dans sans altérer sa structure. De la même manière qu'un plugin ne modifie pas le code de base de PWG, il ne doit pas modifier les structures des tables existantes.
Si le besoin devait s'en faire sentir pour un plugin particulier, alors là oui, il faudra créer une table spécifique pour ce plugin et lui seul. Mais ce cas de figure ne concernerait pas le stockage des paramètres de fonctionnement du dit plugin. Je pense qu'il faut bien faire le distinguo entre :
- des *données* de paramétrage d'un plugin à stocker = pas de danger réel.
- des *informations* de fonctionnement d'un plugin = danger !
La première catégorie ne demanderai pas de table spécifique, pourrait utiliser la table #_conf par défaut et devrait se contenter de la structure de cette table. A l'installation / désinstallation du plugin, ce ne sont que des données insérées ou supprimées dans une table. Rien d'autre. Et, si l'on se conforme à une charte telle que toutes données ajoutées dans la table #_conf doivent être aisément identifiables par un préfixe relatif au plugin, le risque pour cette table est, selon moi, très négligeable.
Par contre, pour la seconde catégorie, c'est tout autre chose et cela présente un vrai risque avéré pour la / les tables de PWG puisque cela peut engendrer une modification de leur structure. Dans ce cas => table dédiée au plugin. Si un dev souhaite stocker les paramètres et les informations dans une même table, il n'aura pas d'autre choix que de créer une table spécifique.
Je vais prendre un exemple pour être clair : Imaginons le plugin News issu du Mod du même nom (Clin d'oeil à Nicco : Je l'attends avec impatience ! ;-) ).
- Ce plugin devra disposer de paramètres propres à son fonctionnement => Je ne vois aucun inconvénient à les retrouver dans la table #_conf
- Les données d'information du plugin (les news proprement dites et les traductions) ne peuvent être présentes que dans une table spécifiques à ce plugin. Comme cela est déjà le cas pour le Mod.
mathiasm a écrit:
Si on pose:
le paramètre z du plugin A s'appelle A_z , alors je pense que tout se passera bien: pas de risque d'écrasement (sauf à avoir 2 plugins qui s'appellent pareil...)
Tout dans la table config. Les champs sont du texte, je ne vois pas ce qui pourrait empêcher PWG de lire la table, même avec des données pourrites.
Par contre, +10 000 pour les fonctions de Gestion des paramètres.
On est sur la même longueur d'onde !
Dernière modification par Eric (2007-05-13 17:31:25)
Hors ligne
Eric a écrit:
[edit]
[HS]
rub : j'ai vu que tu t'étais inscrit sur ma galerie. C'est sympa, merci ! Pour info, tu est le 337ème membre depuis que PWG agrémente mon site.
[/HS]
[/edit]
Reste plus qu'à inscrire à ma démo ;-)
Eric a écrit:
Dixit ci-dessus, une nouvelle table serait inutile à mon sens. Mais, dans le cas proposé par rub, la nouvelle table devra être lu à chaque fois de la même manière que la table #_conf.
Dans ce cas, avec la librairie de fonctions ca ne sert à rien de faire une nouvelle table!
Si je pense qu'il faut justement ne pas faire de lecture à chaque, c'est que j'ai peur, que plein de données soient ramenées alors que ce n'est pas nécessaire.
Exemple: Prenons un plugin qui comme le pluginb-éta PhpMyVistes ajoute un bas de page, on va devoir sauvegarder du code HTML comme une paramètre classique de plugin (pour éviter de faire une table ou autre chose pour rien de plus).
Pour peu que tu essaies plusieurs plugin que tu installes, actives, désactives... A la fin, tu vas lire plein de codes HTML qui ne servent pas!
(je sais pas si c'est très clair comme exemple?)
flipflip a écrit:
Comme j'avais du l'écrire dans ce post ou un autre, je pense qu'il faudrait fournir une petite librairie de fonctions pour faire les lectures/miseAjour/écriture suppression.
Comme ca, d'une part, on peut mettre ce que l'on veut derrière (table #_conf ou #_config_plugin).Tu veux dire qu'un dev pourra choisir quelle table il veut utiliser ?
Non.
C'est PWG qui gére le choix du stockage pas le développeur pour qui ca doit être "transparent".
Ce que je veux dire par ma phase, c'était que la table pourrait évoluer (historisation, date d'effet ou je-ne-sais-pas) sans incidence pour le dev du plugin.
flipflip a écrit:
Mon plugin crée une ligne dans la table de configuration qui abouti à générer une $conf['ccccccccccc']
En quoi, cette variable nouvelle mettrait en péril nos galeries.C'est exacte dans le cas ou les procédures d'installation, désintallation, mise à jour sont correctement pensé et qu'elles n'ont pas généré d'erreur. Mais si par exemple pour une obscure raison l'une des procédure ce passe mal et écrit un peu tout et n'importe quoi dans la table _config, PhpWebGallery ne pourra pas ce passer de ces paramètres pour fonctionner. Alors vous allez me dire, c'est au dev de faire correctement sont taf. Mais je vois tellement des trucs bizarre en info (dev ou réseau) que je préfère prendre le minimum de risque. La création d'une table par plugin permet d'éliminer le risque d'erreur d'écriture dans _config.
+1
mathiasm a écrit:
Si on pose:
le paramètre z du plugin A s'appelle A_z , alors je pense que tout se passera bien: pas de risque d'écrasement (sauf à avoir 2 plugins qui s'appellent pareil...)
Tout dans la table config. Les champs sont du texte, je ne vois pas ce qui pourrait empêcher PWG de lire la table, même avec des données pourrites.
Par contre, +10 000 pour les fonctions de Gestion des paramètres.
(mathiasm qui ecrit pourrite? T'es pas de tch'nord pourtant ;-))
Ce n'est pas empêcher de lire mais simplement de ramener trop de données. (cf mon exemple au dessus)
Hors ligne
rub a écrit:
(mathiasm qui ecrit pourrite? T'es pas de tch'nord pourtant ;-))
Le panneau, paf! dedans! ;-) Nan, pas de tch'nord, mais j'avais envie :-)
rub a écrit:
Ce n'est pas empêcher de lire mais simplement de ramener trop de données. (cf mon exemple au dessus)
Comparée à un calcul des catégories rattachées à une image, ce simple select est à mon avis négligeable, même avec 1000 lignes...
Hors ligne
Ce que je vous propose de faire:
Etape 1:
o Mise en place de la librairie avec les fonctions de lecture/ecriture/création/suppression de paramètres
o Chacune des fonctions auront une argument identique, le nom court du plugin
o Tous les paramètres seront sauvegardés dans un seule ligne (serialize) de la #_config avec comme id "plugin_<pluginname>"
o L'accés aux valeurs se fera de la façon suivante:
$conf[<pluginname>][<value_name>]
et après que la fonction de lecture ai été appliquée
o La librairie pourra être intégrée dans les plugins en cours (si la fonction qui-va-bien n'existe pas, j'inclus le fichier librairie php qui va bien)
o Intégration de la librairie pour la version 1.7.1 (=> des la passage en 1.7.1, vu que la fonction qui-va-bien existera bien, le librairie fichier php qui va bien ne sera plus inclus)
Etape 2:
o Integration en 1.7.1
o Les plugins ne seront plus obligés d'inclure la librairie sauf pour garder une compatibilité avec la 1.7.0
Etape 3:
o en 1.8
o Pourquoi pas une table #_config_plugin! Dans ce cas, les données ne seront plus sauvegardés dans une ligne mais sur plusieurs
o Migration des données plugin
o Pas de changement à faire dans les plugins
Hors ligne
rub a écrit:
Ce que je vous propose de faire:
Etape 1:
o Tous les paramètres seront sauvegardés dans un seule ligne (serialize) de la #_config avec comme id "plugin_<pluginname>"
Quelle est la taile maximale du champ valeur? C'est la seule limite que je vois pour l'instant...
rub a écrit:
Etape 3:
o en 1.8
o Pourquoi pas une table #_config_plugin! Dans ce cas, les données ne seront plus sauvegardés dans une ligne mais sur plusieurs
o Migration des données plugin
o Pas de changement à faire dans les plugins
Si ça marche réellement à l'étape 1, pourquoi changer ? On économise une table à lire à chaque page.
Hors ligne
mathiasm a écrit:
rub a écrit:
Ce que je vous propose de faire:
Etape 1:
o Tous les paramètres seront sauvegardés dans un seule ligne (serialize) de la #_config avec comme id "plugin_<pluginname>"Quelle est la taile maximale du champ valeur? C'est la seule limite que je vois pour l'instant...
C'est un type "text" donc pas de limite (ou presque).
mathiasm a écrit:
rub a écrit:
Etape 3:
o en 1.8
o Pourquoi pas une table #_config_plugin! Dans ce cas, les données ne seront plus sauvegardés dans une ligne mais sur plusieurs
o Migration des données plugin
o Pas de changement à faire dans les pluginsSi ça marche réellement à l'étape 1, pourquoi changer ? On économise une table à lire à chaque page.
Pour les raisons ce-dessus, la pollution de la table #_conf, les lectures inutiles et le fait de bien séparés les paramètres internes et externes.
De plus en s'arrangeant bien si le nom du plugin passé en paramètre est implicite (nom du plugin en fait), la lecture de l'ensemble des paramètres nécessaires au plugin se fera en une seule fois!
Hors ligne
Il me semble qu'avec le préfix "plugin_", Mathias a peut être raison.
Bien joué !
Moins de tables et un bon niveau d'assurance.
Excellent !!!
8-)
Hors ligne