Ticket #1173 (closed defect: wontfix)
La suppression d'un setting est incomplète
| Reported by: | franck | Owned by: | dcteam |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | module:core | Version: | 2.2 |
| Severity: | normal | Keywords: | |
| Cc: |
Description
Lors de l'utilisation de la fonction dcNamespace::drop() le setting correspondant est supprimé dans la base de données mais reste présent dans les settings chargés.
La désynchronisation peut provoquer des effets de bord gênants.
Rajouter le code suivant dans la fonction drop() (après la suppression dans la base) peut régler le problème :
$global = ($this->blog_id === null ? true : false);
if ($this->settingExists($id,$global)) {
$array = $global ? 'global' : 'local';
unset($this->{$array.'__settings'}[$id]);
}
Change History
comment:2 Changed 15 years ago by franck
Ça peut en effet. Après il faut voir s'il faut le faire par défaut ou pas.
Cela dit, combien de plugins utilisent la fonction drop() ? À part au moment de la désinstallation éventuellement et dans ce cas je forcerai bien la suppression des deux côtés.
Discussion ouverte (c'était d'ailleurs l'objet de l'ouverture de ce ticket)…
Note: See
TracTickets for help on using
tickets.

Et pourquoi ne pas ajouter un paramètre à la fonction pour dire qu'on veut (ou pas) également le supprimer du script courant? Car ton effet de bord peut-être présent dans les deux sens.