[develop] Création de polls cassée
Bonjour,
Après avoir lutté pendant toute une journée sur ce bug, j'ai enfin pu diagnostiquer la source du problème que je vais essayer d'exposer ici.
Dans l'optique d'héberger une instance Framadate pour 42l, je tentais d'en installer une en local sur la branche develop (commit c8cb1825).
J'utilise Docker version 18.09.8 sur un Debian Buster avec un conteneur mysql:5.7
configuré comme indiqué sur cette page. (J'ai aussi tenté avec mariadb, mais le problème ne venait pas de là.)
Mon Dockerfile et mon entrypoint.sh sont aussi très similaires à ceux proposés sur cette repo (PHP 7.3.7 donc).
Dans ma configuration, j'ai configuré la base de données et désactivé SMTP.
J'ai pu faire tourner une instance Framadate en local sans trop de problèmes, mais j'ai découvert un bug assez critique que l'on peut reproduire facilement. Exemple :
- Créer un sondage spécial dates en remplissant les champs "nom", "titre" et "description" avec "aaaaa", "bbbbb" et "ccccc" ; passer à l'étape suivante.
- Choisir deux dates aléatoires (pas d'importance) ; passer à l'étape suivante.
- Vérifier la liste des options et confirmer la création du poll.
- Une fois sur la page d'administration du nouveau poll, revenir à la page d'accueil et créer un poll type "autre".
- Et là, constater que les champs sont déjà remplis avec les données du poll précédent : https://framapic.org/EETydQ1XfIZl/mfhpoOSU8QKt
- Cliquer sur Continuer, on arrive directement à l'étape 3/3 de la création du poll on peut constater que la liste des options est vide, qu'un message d'erreur s'affiche en bas de la page et qu'on peut quand même créer le poll : https://framapic.org/zlHX2Z38sqHg/R2qiRqGF3DuL
- Cliquer sur "Créer le poll" quand même. On tombe sur la page d'administration du poll, avec un poll vide (sans colonnes) : https://framapic.org/yMsudPEDZlXi/ErER3eX3cKfU
En ajoutant un nom et en cliquant sur "Enregistrer", l'application crash :
PHP Fatal error: Uncaught TypeError: Argument 1 passed to Framadate\\Services\\InputService::filterArray() must be of the type array, null given, called in /var/www/framadate/adminstuds.php on line 257 and defined in /var/www/framadate/app/classes/Framadate/Services/InputService.php:39
Après avoir passé en revue chaque version du logiciel sur la branche develop
, j'ai constaté que le commit 1d0b5655 est à l'origine du bug. Je ne sais pas exactement en quoi il casse tout, mais le bug ne se reproduit pas au commit précédent.
Voilà, bon courage :)
Neil