Anomalie #1538
ferméManque d'initialisation sur $errors pour Contributions fait planter ->store() après appel du constructeur
100%
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.