Ticket #435 (closed defect: fixed)
setNamespace() et namespace invalide
Reported by: | Moe | Owned by: | olivier |
---|---|---|---|
Priority: | low | Milestone: | 2.1 |
Component: | module:core | Version: | 2.0 |
Severity: | minor | Keywords: | |
Cc: |
Description
Bonjour,
je crois qu'il y a un problème avec la fonction setNamespace() de la classe dcSettings.
Comme on peut le voir là (et ci-dessous), une expression régulière évalue si la chaîne passée en argument est valide ou non. Si la chaîne n'est pas valide (si elle ne contient pas que des lettres minuscules) alors le namespace n'est pas modifié et reste sur "system" par défaut. Un plugin qui essaye d'utiliser un namespace invalide verra donc son paramètre utiliser le namespace "system". C'est ce qui se passe avec dc1redirect car son namespace n'est pas valide. Ça n'a aucune conséquence mais ça n'est pas normal. On peut le voir dans about:config : le paramètre dc1_redirect apparaît dans le namespace system et non dc1redirect.
On pourrait renvoyer une erreur quand le namespace n'est pas bon en modifiant /dotclear/inc/core/class.dc.settings.php :
public function setNamespace($ns) { if (preg_match('/^[a-z]+$/',$ns)) { $this->ns = $ns; } + else + { + throw new Exception(__('Invalid namespace :').' '.$ns); + } }
Pour mettre à jour le setting du plugin, il faudra mettre quelque chose comme ça :
dans le fichier _install.php du plugin.