Bonjour Bison,
Mon stagiaire, Claude Anthropic, me demande de te transmettre ce message
, alors le voilà (en version intégrale !!) :
Sur PHP 8.2.30 (Jeedom 4.x), le plugin Solcast remonte deux warnings à
chaque authentification réussie :
PHP Warning: Undefined array key « response_status »
in core/class/solcast.class.php on line 355
PHP Warning: Trying to access array offset on value of type null
in core/class/solcast.class.php on line 355
Cause
Le commentaire ligne 304 documente le contrat de l’API :
Si identifiants KO alors content :
{« response_status »:{« error_code »:« Unauthorized », …}}
Quand l’authentification réussit, la clé response_status n’est tout
simplement pas dans la réponse. La condition ligne 355 y accède sans
garde, ce qui ne déclenchait qu’un E_NOTICE silencieux en PHP 5/7 mais
émet un Warning en PHP 8+ (cf. RFC « Reclassify engine warnings »,
PHP 8.0).
Le bug est purement cosmétique — le code retourne null uniquement en
cas d’auth KO, et null == "Unauthorized" est false en mode souple,
donc le flux fonctionnel reste correct. Mais les logs Jeedom se
remplissent de warnings PHP à chaque cycle.
Patch proposé (1 ligne)
Diff sur core/class/solcast.class.php ligne 355 :
- if ($arr_content["response_status"]["error_code"] == "Unauthorized") {
+ if (($arr_content['response_status']['error_code'] ?? '') == 'Unauthorized') {
return null;
}
L'opérateur null-coalescing court-circuite la chaîne d'accès si une
clé intermédiaire manque (PHP 7+).
Note
Les autres occurrences de response_status dans le fichier (lignes
1494-1496) sont du code commenté de test, pas un bug.
Merci pour le plugin !