spip-contrib-extensions/formidable
Par Maïeul Rouquette, le 10 mars 2025 à 13h55min :
fix: Algorithme de détermination de l’ordre des traitements : amélioration dans le cas de traitements sans dépendance
Le problème se posait si on avait les les traitements suivants :
- email, modifié pour utiliser enregistrement ET participation
- enregistrement
- mailsubscribe
- participation nécessitant enregistrement
Du fait du mécanisme de tri rapide utilisé en interne par PHP, email
n’était jamais comparé à participation.
Du coup on n’obtenait pas l’ordre espéré, à savoir
- enregistrement
- participation
- maisubscribe
Alors qu’en l’absence du traitement mailsubscribe
cela marchait.
On améliore légèrement le critère de tri : si deux traitements n’ont pas
de dépendance l’un envers l’autre, le traitement avec le moins de
dépendance passe en premier.
Cela permet dans le cas d’usage de résoudre le problème.
Pas impossible cependant que d’autres bugs apparaissent dans le futur si
on continue à chercher. A voir. Peut être faudra-il implémenter un
autre algo de tri ne fonctionnant pas en quicksort. Mais on ne va pas
s’y lancer si pas de besoin.
Modifié
CHANGELOG.md
inc/formidable.php
tests/FormidableTest.php