PHP 8 warnings dans authentificate()

Bonjour Bison,

Mon stagiaire, Claude Anthropic, me demande de te transmettre ce message :slight_smile: , 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 !

Salut @m.georgein,

Je n’ai pas constaté de soucis sur mon Jeedom de dev. Merci pour l’info je publierais une nouvelle version.

Tu as fais la modif dans le code, c’est bon pour toi après ça ?

Oui, Cloclo a fait la modif’, mais comme il le dit c’est cosmétique, pas vraiment urgent !!! Ne te prend pas la tête :slight_smile:

1 « J'aime »

Bonjour,

Le fix est en bêta et sera poussé en stable ce week-end