Dotclear

Ticket #913 (closed defect: fixed)

Opened 14 years ago

Last modified 14 years ago

Plugin widgets : notices en php 5.3

Reported by: bruno Owned by: Tomtom33
Priority: normal Milestone: 2.2
Component: module:plugins Version: dev
Severity: normal Keywords:
Cc:

Description

Lors d'une installation toute fraîche d'un dc 2.2 alpha, si on ne touche pas au widgets, et si on va sur l'accueil du blog, il réside 2 notices dans les sidebars : {{ Notice: Deprecated function called. (dcSettings::old_style_get was called from ...\dc2\plugins\widgets\_public.php [38]) in ...\dc2\inc\core\class.dc.settings.php on line 143

Notice: Trying to get property of non-object in ...\dc2\plugins\widgets\_public.php on line 38 }}

Et effectivment, la ligne 38 du _public.php du plugin :

		$widgets = $GLOBALS['core']->blog->settings->widgets->{$wtype};

pointe sur un namespace inexistant. Autant le premier notice sera levé lorsque le message deprecated sera enlevé, autant le second notice subsistera...

Tout rentre dans l'ordre dès lors que les settings existent, ie. lorsqu'on met à jour les bandeaux une fois.

Change History

comment:1 Changed 14 years ago by bruno

  • Status changed from new to closed
  • Resolution set to fixed

Pour faire un contournement propre à ce notice, il faudrait pouvoir savoir si un namespace a été défini ou pas.

Je propose d'ajouter la méthode "hasNamespace" à inc/core/class.dc.settings.php :

	public function hasNamespace($n) {
		return array_key_exists($n, $this->namespaces);
	}

La function widgetsHandler du _public.php du plugin widget contiendrait alors le code suivant :

	if (!$GLOBALS['core']->blog->settings->hasNamespace('widgets')) { // If widgets value is empty, get defaults
		$widgets = self::defaultWidgets($type);
	} else { // Otherwise, load widgets
		$widgets = dcWidgets::load($GLOBALS['core']->blog->settings->widgets->{$wtype});
	}

comment:2 Changed 14 years ago by bruno

  • Status changed from closed to reopened
  • Resolution fixed deleted

comment:3 Changed 14 years ago by xave

Après avoir pas mal cogité (et causé avec Zeiram, qui connaît quand même bien le sujet) je pense que ce hasNamespace n'est pas la bonne façon de faire : ça ne servirait à peu près que là et serait obsolète une fois qu'on a dégagé la compatibilité avec l'ancienne version.

À bien y réfléchir, le plus propre, ça serait sans doute de créer les settings des widgets à l'installation, puisqu'actuellement, c'est le seul endroit où on considère avoir les settings par défaut lorsqu'ils n'existent pas, partout ailleurs, on initialise à l'install.

comment:4 Changed 14 years ago by Tomtom33

(In [2988]) Fixed settings notices in pings plugin (see #940, can be also a solution for see #913)

comment:5 Changed 14 years ago by Tomtom33

  • Owner changed from team to Tomtom33
  • Status changed from reopened to new

comment:6 Changed 14 years ago by xave

  • Status changed from new to closed
  • Resolution set to fixed

Fixed in [3091]/[3093]

Note: See TracTickets for help on using tickets.

Sites map