Skip to content

Gestion des alias de boucles dans le traitement des champs

Glop a demandé de fusionner gh-3abd0771/163/unknown/refs/pull/163/head vers master

Bonjour,

Ce patch corrige une régression introduite par le commit c4f810b5.

Lorsqu'un alias de boucle existe, certains traitements sont définis par rapport à cet alias plutôt que par rapport au nom canonique de la boucle.

C'est par exemple le cas dans la version spip/3.2.11 du plugin Forum. Ce plugin définit un alias forums correspondant au nom canonique forum (voir ligne 32 de base/forum.php), puis définit plusieurs traitements associés à forums (l'alias) et non à forum (le nom canonique), comme par exemple ligne 57 du même fichier :

    $interfaces['table_des_traitements']['TEXTE']['forums'] = "[…]";

Le commit c4f810b5 force l'utilisation du nom canonique pour retrouver les traitements à appliquer à un champ, ce qui fait que les traitements définis avec l'alias ne sont plus appliqués.

Cela peut être problématique, car l'utilisation de l'alias est parfois plus fréquente que celle du nom canonique. Ainsi, l'alias forums est plus utilisé que le nom canonique forum : même la documentation de SPIP parle de la BOUCLE_xxx(FORUMS). Dans ce cas, il est donc plus intuitif de définir les traitements à effectuer par rapport à l'alias que par rapport au nom canonique.

Ce patch tente donc de concilier les deux approches, en cherchant tout d'abord à appliquer les traitements associés au nom canonique, puis, s'il n'y en a pas, en appliquant les éventuels traitements associés à l'alias. Cela permet de donner la priorité au nom canonique (ce qui était le sens de c4f810b5, je suppose), sans non plus complètement ignorer les alias (ce qui permet de maintenir une rétrocompatibilité avec l'existant, y compris avec les plugins officiels de SPIP).

Si cette PR est fusionnée, il faudra aussi l'appliquer à la branche 3.2, où le commit c4f810b5 a été cherry-picked (commit bdc53dcc).

Merci !

++ Glop

Rapports de requête de fusion