Ticket #1116 (closed defect: wontfix)
Meta données des settings
Reported by: | zeiram | Owned by: | xave |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | module:core | Version: | 2.2 |
Severity: | normal | Keywords: | settings |
Cc: |
Description
Comme déjà soulevé sur le forum http://forum.dotclear.net/viewtopic.php?pid=288911#p288911, il y a actuellement un problème avec les méta-données des settings.
En effet les champs setting_type et setting_label de la table settings sont des méta-données mais sont malgré tout dupliquées pour chaque instance du setting dans la base (donc grosso modo autant de fois qu'il y a de blogs dans l'installation). Si on veut modifier une des valeurs (par exemple setting_label), il faut alors parcourir la liste de tous les blogs et faire à chaque fois la modification souhaitée.
Une solution plus propre serait de déporter ces deux champs dans une table séparée et d'ajouter une jointure lors de la lecture des settings.
Change History
comment:2 in reply to: ↑ 1 Changed 13 years ago by zeiram
Replying to Moe:
Si tu mets à jour en utilisant l'ancienne valeur comme filtre, ça se fait en une seule requête non ?
Le problème de faire cela via SQL, c'est que l'on casse les niveaux d'abstraction. Pour toute la gestion des settings, on a la série de classes dcNamespace et dcSetting qui nous offre une vue complètement abstraite de ces données. Attaquer directement la base nous sort de cette abstraction et promet de jolis problèmes si le modèle de base de données change.
Si tu mets à jour en utilisant l'ancienne valeur comme filtre, ça se fait en une seule requête non ?
Avec un code de ce genre :
Ceci dit, ça ne met à jour que les labels, il reste le problème des mises à jour des valeurs pour chaque blog ainsi que la duplication des labels qui occupe plus d'espace que ncessaire.