I wanted to be able to embed videos from various services into forum posts on CoopersGuns Health, Fitness & BodyBuilding Forums so I decided to have a play with modifying the bbcode processor and here’s what I’ve come up with..
Modification instructions
Make the following modifications to forum/includes/bbcode.php
- Find the bbencode_first_pass function
- Locate the end of the function
// Remove our padding from the string..
return substr($text, 1);
- Add the following just before the above:
// [ifilm] and [/ifilm]
$text = preg_replace("#\[ifilm=([0-9]+[,][0-9]+[,][0-9]+)\](.*?)\[/ifilm\]#si", "[ifilm=\\1:$uid]\\2[/ifilm:$uid]", $text);
// [youtube] and [/youtube]
$text = preg_replace("#\[youtube=([0-9]+[,][0-9]+[,][0-9a-z\-_]+)\](.*?)\[/youtube\]#si", "[youtube=\\1:$uid]\\2[/youtube:$uid]", $text);
// [gvid] and [/gvid]
$text = preg_replace("#\[gvid=([0-9]+[,][0-9]+[,][0-9a-z\-_]+)\](.*?)\[/gvid\]#si", "[gvid=\\1:$uid]\\2[/gvid:$uid]", $text);
- Find the bbencode_second_pass function
- Locate the part that deals with [QUOTE]
// [QUOTE] and [/QUOTE] for posting replies with quote, or just for quoting stuff.
$text = str_replace("[quote:$uid]", $bbcode_tpl['quote_open'], $text);
$text = str_replace("[/quote:$uid]", $bbcode_tpl['quote_close'], $text);
- Add the following code after the above:
// [ifilm] and [/ifilm]
$text = preg_replace("#\[ifilm=([0-9]+)[,]([0-9]+)[,]([0-9]+):$uid\](.*?)\[/ifilm:$uid\]#si", "<embed allowScriptAccess=\"never\" width=\"\\1\" height=\"\\2\" src=\"http://www.ifilm.com/efp\" quality=\"high\" bgcolor=\"000000\" name=\"efp\" align=\"middle\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" flashvars=\"flvBaseClip=\\3\""."[/ifilm:$uid]", $text);
$text = str_replace("[/ifilm:$uid]", " />", $text);
// [youtube] and [/youtube]
$text = preg_replace("#\[youtube=([0-9]+)[,]([0-9]+)[,]([0-9a-z\-_]+):$uid\](.*?)\[/youtube:$uid\]#si", "<object width=\"\\1\" height=\"\\2\"><param name=\"movie\" value=\"http://www.youtube.com/v/\\3\"></param><embed src=\"http://www.youtube.com/v/\\3\" type=\"application/x-shockwave-flash\" width=\"\\1\" height=\"\\2\"></embed></object>"."[/youtube:$uid]", $text);
$text = str_replace("[/youtube:$uid]", "", $text);
// [gvid] and [/gvid]
$text = preg_replace("#\[gvid=([0-9]+)[,]([0-9]+)[,]([0-9a-z\-_]+):$uid\](.*?)\[/gvid:$uid\]#si", "<embed style=\"width:\\1px; height:\\2px;\" id=\"VideoPlayback\" type=\"application/x-shockwave-flash\" src=\"http://video.google.com/googleplayer.swf?docId=\\3&hl=en\"> </embed>"."[/gvid:$uid]", $text);
$text = str_replace("[/gvid:$uid]", "", $text);
- Save your changes to bbcode.php and upload the modified file (if you downloaded it to modify)
That’s it.. you can now embed iFilm, YouTube and Google Video videos into your forum posts
Usage
The syntax is similar for all three:
[ifilm=width,height,id]description[/ifilm]
[youtube=width,height,id]description[/youtube]
[gvid=width,height,id]description[/gvid]
Example:
CoopersGuns Health, Fitness & BodyBuilding Forums Post