Integrating CakePHP with bbPress – Part 1

23 Aug

I’ve been working on StatForge.com for the past few days and one of the community features I want to integrate is a forum.  Rather than go for something bloated like phpbb or vanilla, I decided to go with bbPress from the makers of Wordpress.

This is the first of a 3 part tutorial on how to integrate bbPress with CakePHP 1.2.x.  When complete, these 3 tutorials will accomplish:

  1. Integrating bbPress in a sub-folder (not a subdomain) of your cake install
  2. Integrating user registration – when a user registers through your cake application they are automatically registered in bbPress. (UPDATE: part 2 here)
  3. Integrating the login – when a user is logged in via the cake application they are automatically logged in in bbPress.

Part 1 – Integrating bbPress in a sub-folder (not a subdomain)

It may be personal preference, but I’m not a big fan of subdomaining parts of an application.  There are definitely legitamite technical reasons to do so, but when I can get away with it, I try to use subfolders, i.e. http://statforge.com and http://statforge.com/forum/.

There’s a small hurdle here since CakePHP wants to ReWrite all your paths (if you’ve installed it in your domain root), but it’s easy to overcome.  Find the .htaccess file in the root of your cake install.  It should look like this:

   RewriteEngine on
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]

This is rewriting all of your requests to the webroot folder. Assuming you want to install bbPress into a subfolder called forum (i.e. http://statforge.com/forum/) the change this .htaccess file to the following:

   RewriteEngine on

   RewriteCond %{REQUEST_URI} ^/forum/(.*)$
   RewriteRule ^.*$ - [L]

   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]

This simply reads – if the Request starts with /forum/ pass it through normally. If not, let Cake handle it. The only limitation here is that you cannot have a controller named ‘forum’ in your cake application.

That’s it – you should be able to drop a fresh bbPress install into the /forum subfolder and access it normally without Cake interfering.

I’ve already integrated the user registration between my CakePHP install and my bbPress install, but I’ve gotta run for the time being. Hopefully tomorrow I’ll throw up part 2 – it’s a bit more complicated. (UPDATE: part 2 here)

  • Luke
    oh, what a pity :(

    I have seen some posts on a forum of people trying to do the same thing. I don't think it can be too difficult - A matter of an afterFind callback in Cake I suppose once th e User is found?

    not sure about the BB Press end as I have not used it yet, although it looks promising compared to other forum choices. Any thoughts?

    Luke
  • Well, my first approach when I get time to revisit would be to use the same
    cookie mechanism i'm already using in my cake app - namely the cookie
    handler. I usually dont rely just on Sessions for my user login, but set a
    cookie also.

    I would extend the Cookie handler built into cake to tap into the same
    libraries that BBPress is using (either by duplication or inclusion), and
    when I set my cake cookie I also set a BBPress cookie, and a session
    variable if BBPress requires one.

    Hope that helps - and yes, I apologize that I have not finished part 3 - it
    kills me as well!
  • Luke
    have any luck with the logging in to BBPress at the same time with a single log in?
  • No, unfortunately I haven't taken the time to finish this out or the project
    that this was for! I really hope to revisit soon.
blog comments powered by Disqus