Projet

Général

Profil

Actions

Anomalie #1538

fermé

Manque d'initialisation sur $errors pour Contributions fait planter ->store() après appel du constructeur

Ajouté par Mathieu Pellegrin il y a presque 4 ans. Mis à jour il y a plus de 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Catégorie:
Core
Version cible:
-
Début:
07/02/2021
Echéance:
% réalisé:

100%

Temps estimé:
Version utilisée:

Description

Bonjour,

Je remonte ce qui est, je pense, une anomalie qui touche le plugin Paypal, mais qui je pense a sa source dans le Core.

Lorsque le plugin Paypal traite le /notify, il réalise les actions suivantes :

$contrib = new Contribution($this->zdb, $this->login, $args);
...
$store = $contrib->store();

Or, la fonction ->store() de Contributions commence par effectuer le test suivant :

if (count($this->errors) > 0) {

Et cela fait planter le programme (du moins sous PHP 7.2) :

stderr: Message: count(): Parameter must be an array or an object that implements Countable

Car à aucun moment ni dans l'initialisation de l'attribut ni dans le constructeur la valeur $this->errors est initialisée avec un tableau vide.

La propriété étant privée, il n'est pas possible de l'initialiser autrement qu'en passant par la méthode ->check(...) mais celle-ci s'attend à avoir un objet de formulaire, qu'il faut construire.

De mon côté je pense qu'il suffirait d'initialiser l'attribut $errors avec un tableau vide dans la déclaration de la classe pour régler le problème.

Actions

Formats disponibles : Atom PDF