BuddyPress forum et code source

Après la lecture de ce billet de Dan, j’ai trouvé intéressant la démarche d’éviter un plugin pour afficher des codes sources dans les forums de BuddyPress.

Alors j’ai essayé les fonctions décrites dans le functions.php de mon thème, d’autant que Dan nous indique que c’est le code utilisé par le site officiel de BuddyPress.

En dehors du fait qu’il n’y a pas de coloration syntaxique, je trouve le résultat assez intéressant. Néanmoins, lorsqu’on veut ajouter des balises, toutes ne passent pas les fonctions de filtre du forum ou des activités pour des raisons de sécurité évidentes.

Cependant, ça m’a fait cogiter toute l’après-midi cette histoire.. C’est quand même dommage de ne pas pouvoir afficher l’intégralité d’un code source. Alors je vous propose cette alternative, à copier dans le functions.php de votre thème 😉

Je reconnais que la fonction bp_imath_filter_insert_post est un peu tirée par les cheveux, dans la mesure où suite à l’ajout d’un post dans le forum, je récupère son post_id, je fais un select pour récupérer son post_text afin de lui appliquer un htmlentities() de ce qui est entre `backticks`. Ensuite j’update le post pour que le champ (base_prefix)bb_posts.post_text soit bien « htmlentitiesé » et entre `backticks` (en prévision d’une modification éventuelle du post par l’utilisateur).

Mais bon faut ce qu’il faut !! Voici un exemple de résultat :

Exemple d’output

NB : si vous utilisez BP Code Snippets (une extension qui ajoute en plus la coloration syntaxique), je vous déconseille cependant d’utiliser ce hack !!