Les anciens plugins qui n'effaceraient pas leurs traces en table config.
ou
Cas de perte du contenu du répertoire plugins.
Comment cela sera géré?
Hors ligne
VDigital a écrit:
Il me semble qu'avec le préfix "plugin_", Mathias a peut être raison.
;-( ;-( ;-( snif...
De toute façon, on n'est encore à l'étape 3... et l'avantage est que si on veut le faire, on pourra le faire quand on veut SANS influence sur les plugins développés sur la base de la librairie.
Suivons ce que les plugins vont donner, ce que va être implémentés et à partir de là, peut-être l'étape 3 ;-)
Hors ligne
(discussion fort intéressante, merci à mathiasm de m'avoir demandé mon avis par email)
Mon avis sur la question: je suis très très favorable à l'écriture d'une petite bibliothèque de fonctions permettant la lecture/écriture/suppression de paramètres. Ce qui dans mon esprit donnerait:
// echo '<pre>'; print_r($conf); echo '</pre>'; // // Array // ( // [history_guest] => 1 // [log] => 1 // [plugin_admin_advices] => Array // ( // [param1] => value1 // [param2] => value2 // [param3] => value3 // ) // [plugin_event_tracer] => Array // ( // [param1] => value1 // ) // ) set_plugin_conf( 'admin_advices', array( 'param1' => 'new_value1', 'param2' => 'new_value2', ) ); delete_plugin_conf_parameter('admin_advices', 'param3'); delete_plugin_conf('event_tracer'); reload_conf(); // echo '<pre>'; print_r($conf); echo '</pre>'; // // Array // ( // [history_guest] => 1 // [log] => 1 // [plugin_admin_advices] => Array // ( // [param1] => value1 // [param2] => value2 // ) // )
En ce qui concerne la façon de stocker dans la table #config, mon avis c'est que #config.param doit être plugin_<plugin_id>_<param_name>, par exemple plugin_admin_advices_param2. Pas de sérialization (la structure est déjà là, donc sérialisation inutile). A noter que quand je parle de plugin_id, je parle de #plugins.id.
Hors ligne
z0rglub a écrit:
Mon avis sur la question: je suis très très favorable à l'écriture d'une petite bibliothèque de fonctions permettant la lecture/écriture/suppression de paramètres. Ce qui dans mon esprit donnerait:
Code:
// echo '<pre>'; print_r($conf); echo '</pre>'; // // Array // ( // [history_guest] => 1 // [log] => 1 // [plugin_admin_advices] => Array // ( // [param1] => value1 // [param2] => value2 // [param3] => value3 // ) // [plugin_event_tracer] => Array // ( // [param1] => value1 // ) // ) set_plugin_conf( 'admin_advices', array( 'param1' => 'new_value1', 'param2' => 'new_value2', ) ); delete_plugin_conf_parameter('admin_advices', 'param3'); delete_plugin_conf('event_tracer'); reload_conf(); // echo '<pre>'; print_r($conf); echo '</pre>'; // // Array // ( // [history_guest] => 1 // [log] => 1 // [plugin_admin_advices] => Array // ( // [param1] => value1 // [param2] => value2 // ) // )
C'est bien un truc comme ca que j'avais en tête.
Sachant que les valeurs dans le tableau ne sont pas que des chaines mais aussi des booléens ou des tableaux.
z0rglub a écrit:
En ce qui concerne la façon de stocker dans la table #config, mon avis c'est que #config.param doit être plugin_<plugin_id>_<param_name>, par exemple plugin_admin_advices_param2. Pas de sérialization (la structure est déjà là, donc sérialisation inutile). A noter que quand je parle de plugin_id, je parle de #plugins.id.
Par contre, je préférais avoir un serialize pour les raisons suivantes:
o regroupement des paramètres par plugin plus forte
o ca évite de pouvoir modifier facilement les données sans passer par la librairie
o vue que l'accés se fera par $[plugin_admin_advices][param1] si on fait une ligne par paramètre, on aura des $conf[plugin_admin_advices_param1] à remettre dans un tableau $conf[plugin_admin_advices] et les $conf[plugin_admin_advices_param1] à unset.
=> cad une organisation de $conf différente de la table #_config
J'allais peut-être commencer les devs sur cette structure donc... quels sont les avis de chacun?
Hors ligne
rub a écrit:
Par contre, je préférais avoir un serialize pour les raisons suivantes:
o [...]
o ca évite de pouvoir modifier facilement les données sans passer par la librairie
Argh... t'es à deux doigts de vouloir faire du logiciel propriétaire là. C'est du discours de décideur commercial (excuses moi d'être aussi brutal ;-)
rub a écrit:
o vue que l'accés se fera par $[plugin_admin_advices][param1] si on fait une ligne par paramètre, on aura des $conf[plugin_admin_advices_param1] à remettre dans un tableau $conf[plugin_admin_advices] et les $conf[plugin_admin_advices_param1] à unset.
=> cad une organisation de $conf différente de la table #_config
Oui, tout à fait. Je milite en faveur d'une fonction load_conf qui bouclerait sur les paramètres un par un, pour les transformer en booléen et pour les ranger dans des sous-tableaux.
Hors ligne
z0rglub a écrit:
rub a écrit:
Par contre, je préférais avoir un serialize pour les raisons suivantes:
o [...]
o ca évite de pouvoir modifier facilement les données sans passer par la librairieArgh... t'es à deux doigts de vouloir faire du logiciel propriétaire là. C'est du discours de décideur commercial (excuses moi d'être aussi brutal ;-)
Ce n'est que pour la sécurité uniquement. Pas pour faire du propriétaire (depuis quand la sérialisation est du propriétaire?).
Dernière modification par rub (2007-05-15 12:49:37)
Hors ligne
(Pour rappel, entre nous, dans les "searches" on fait quoi?)
Ceci dit, vos idées me plaisent bien.
("à deux doigts": on est encore à côté, non?).
8-)
Hors ligne
VDigital a écrit:
(Pour rappel, entre nous, dans les "searches" on fait quoi?)
;-))
Hors ligne
VDigital a écrit:
(Pour rappel, entre nous, dans les "searches" on fait quoi?)
On doit sérialiser pour #search car on ne connait pas à l'avance le nombre de paramètres utilisés et ce serait dommage de devoir faire évoluer le modèle de #search si on ajoute un champ dans #images (qui peut potentiellemet être faire partie de la recherche)
Ce qui me gêne dans la sérialisation dans #config.value, c'est que c'est pour "mettre des bâtons" dans les roues. Je pense que si cet argument n'avait pas été mis en avant, j'aurais émis moins de réserve.
Note: dans le futur, utiliser de la sérialisation dans #config.value pourrait avoir du sens, pour des paramètres complexes que l'on souhaite gérer par écran (la frontière est fine avec un ensemble de paramètres pour un plugin).
Hors ligne
Bon cela dit, nos opinions sont très très proches en dehors de cette (sombre) histoire de sérialisation :-) Je donne mon GO, qu'elle que soit la méthode que rub choisira (sérialisation ou pas).
Hors ligne
z0rglub a écrit:
Ce qui me gêne dans la sérialisation dans #config.value, c'est que c'est pour "mettre des bâtons" dans les roues. Je pense que si cet argument n'avait pas été mis en avant, j'aurais émis moins de réserve.
Je n'ai jamais écrit ca, dans mon esprit c'est pour la sécurité et l'encapsulation des paramètres pas pour mettre des bâtons dans les roues mais au contraire pour aider les développeurs, je suis navré qu'on me comprenne ainsi.
Si tu relis le post depuis le début :
o ca évite de pouvoir modifier facilement les données sans passer par la librairie
ne veut pas dire que je veux faire quelque chose de propriétaire ou bien mettre des bâtons dans les roues.
MA CONCLUSION:
Dans ce cas, la librairie ne sert à rien, chacun gère comme il veut ses paramètres dans la table #_config.
Dernière modification par rub (2007-05-15 16:49:04)
Hors ligne
hop hop hop, pardon rub si je t'ai paru agressif. Ce n'était pas du tout l'objectif. Au contraire mon dernier post allait dans le sens: je te fais confiance pour faire de la bonne façon, sérialisation ou pas. La librairie de fonctions pour accéder au paramètres de configuration, c'est une très bonne chose.
J'ai une expérience professionnelle qui m'a appris a parfois trop me "méfier" des tentatives de cacher certaines choses alors que ce n'est pas justifié. Par exemple, la table de configuration ne contenait aucun libellé, que des chiffres, c'était complètement illisible (et c'était partiellement fait exprès).
happy coding
Hors ligne
J'ai pas trop participe,
mais serialise ou pas - ca peux toujours etre le choix du plugin s'il desire ... a lui de faire ...
Ce qu'il faudrait faire au minimum 3 fonctions du genre:
delete_param_from_conf_table
update_param_in_conf_table
insert_param_in_conf_table
je me demande s'il ne faudrait pas avoir une colonne #config.auto_load . Du genre j'ai un plugin avec beaucoup des donnnees, mais je l'utilise tres rarement donc il faudrait le charger seulement quand il y a besoin ...
Hors ligne
Ce que je souhaiterais qu'on évite c'est de faire une requête par paramètre. En dehors de cette "crainte", je pense que toute amélioration n'est pas néfaste :-)
Hors ligne
z0rglub a écrit:
hop hop hop, pardon rub si je t'ai paru agressif. Ce n'était pas du tout l'objectif. Au contraire mon dernier post allait dans le sens: je te fais confiance pour faire de la bonne façon, sérialisation ou pas. La librairie de fonctions pour accéder au paramètres de configuration, c'est une très bonne chose.
Nos posts se sont quelque peu croisés!
z0rglub a écrit:
J'ai une expérience professionnelle qui m'a appris a parfois trop me "méfier" des tentatives de cacher certaines choses alors que ce n'est pas justifié. Par exemple, la table de configuration ne contenait aucun libellé, que des chiffres, c'était complètement illisible (et c'était partiellement fait exprès).
Je comprends ;-)
Hors ligne