#BuddyPress Important : le filtre groups_forbidden_names

Crédits Photo : Emergency Snake Forces Combine by Lomo-Cam, on Flickr

Bonsoir les créateurs de plugins BuddyPress,

Ce dimanche, aprÚs avoir travaillé à ma conférence prévue pour le prochain WordCamp parisien et qui précisément traitera de notre plugin WordPress préféré, je me suis intéressé à un bug qui m'a été remonté au sujet d'un de mes plugins : BP Code Snippets.

En passant, lecteur, si tu utilises ce plugin et que tu veux m'aider à résoudre ce bug qui est apparu suite à la mise sur orbite de la superbe 3.5 de WordPress, tu peux t'amuser à tester le fix que je décris dans ce forum. Je ferai le maximum pour résoudre rapidement (j'ai été pas mal occupé ces derniers temps..).

Bref, alors, que je rĂ©alisais les tests de mon fix, j'ai crĂ©Ă© un groupe du mĂȘme nom que le slug de mon plugin, Ă  savoir snippets. Rien d'extraordinaire me direz-vous.. Eh bien, figurez-vous que je venais de rĂ©veler un nouveau bug de mon plugin! Et ce juste en crĂ©ant ce groupe !!

si le slug du groupe == le slug de notre plugin alors Dang 🙁

Ainsi, dans le cas oĂč le slug du groupe est identique Ă  celui du plugin, la navigation de l'utilisateur est ajoutĂ©e Ă  celle du groupe. Comme vous pouvez le voir sur l'illustration on a bien les liens vers la page des snippets et des favoris qui sont normalement rĂ©servĂ©s Ă  la zone de profil de l'utilisateur.

Il fallait donc que je trouve le moyen d'Ă©viter qu'un utilisateur ne crĂ©e cette situation, et concrĂštement d'interdire l'utilisation du terme snippets pour le slug des groupes. Or BuddyPress contient un tableau qui est vĂ©rifiĂ© au moment de la crĂ©ation des slugs des groupes et le plus beau c'est que ce tableau est filtrable 🙂

Pour information, ce tableau est initialisé dans BP_Groups_Component::setup_globals() à la ligne 199 du script bp-groups/bp-groups-loader.php. Le nom du filtre est groups_forbidden_names. Il s'agit donc de l'intercepter pour l'enrichir du slug de notre plugin. Ci-dessous le filtre que j'utilise pour BP Code Snippets :

Une fois, le filtre en place, lorsqu'un utilisateur créera un groupe en utilisant un nom équivalent au slug de notre plugin, BuddyPress se chargera d'ajouter un rand() au slug du groupe au moment de sa création : génial !

Wow, comment j'ai pu passer à cÎté de ça ??

Par curiositĂ©, j'ai voulu benchmarker mes petits collĂšgues crĂ©ateurs d'extensions BuddyPress pour voir comment il gĂ©rait la chose. Et aprĂšs quelques tests sur certains plugins, je me suis senti moins seul ! En effet j'ai pu reproduire ce bug sur 3 de mes tests. J'en ai dĂ©duit, peut-ĂȘtre un peu vite, que c'Ă©tait un oubli frĂ©quent chez nous ;). En mĂȘme temps, la probabilitĂ© de crĂ©er ce bug s'amenuise si on opte pour un slug de plugin compliquĂ© du style 'slug-demonsuperplugin' !!

Toutefois, pour Ă©viter tout risque, je vous invite Ă  ne pas oublier ce filtre dans vos petits chefs d'oeuvre ..

A+

1 commentaire sur “#BuddyPress Important : le filtre groups_forbidden_names

  1. Bien vu ! Et ça me fait penser que le phénomÚne affecterait aussi la création de forum
    En effet, le slug « forums » est utilisé par BP lors de la créa de forum de groupe.
    Le mĂȘme terme apparaĂźt par dĂ©faut comme forum base name si jamais on utilise bbPress sĂ©parĂ©ment.

    En clair BP et BBP utilisent le mĂȘme slug. Ce n’est pas gĂȘnant quand on utilise ces 2 plugins sur des installs sĂ©parĂ©es Mais si d’aventure on se plaĂźt Ă  activer les forums de groupe ET bbPress comme forum gĂ©nĂ©ral, c’est BP qui reste prioritaire au niveau du slug.
    Les bugs qui sont reportĂ©s Ă  ce sujet sont assez comiques, exactement ce qu tu as constatĂ© sur le menu par ex….. Et bien entendu, ce n’est ni expliquĂ© ni documentĂ©, encore moins clairement signalĂ© lors du dĂ©ballage….

    Le plus troublant, c’est que ce blocage de nom ne soit pas activĂ© d’office pour BP/BBP par ceux-lĂ  mĂȘme qui ont crĂ©Ă© le filtre group_forbidden_name !

Les commentaires sont fermés.