CakePHP Digest #7 - The Rise of the Plugin

Posted by Matt on Mon, Feb 09 2009

News

CakePHP has really cool, and underutilized plugin system. It looks like the underutilized part is starting to change as there are some neat examples of the power of plugins coming out lately.

First there is a new CakePHP API and the plugin that generates it, which has been released on TheChaw. Even though the CakePHP core works with PHP4/5, the API generator uses PHP's reflection API, so you're going to need PHP 5.2 or better to run it. Which really isn't a negative unless your stuck on PHP 5.1.6. Yea, I'm stuck using 5.1.6 at work. Seriously, 5.1.6? Come on!

The search kind of stunk when the new API was first launched, but was quickly improved. Although there are still some issues. Like how it can't find the classes by their name. Check out the search for httpsocket class. If only the code for the API was open source, I would totally fix...ah forget it.

For someone who uses the API almost excursively (I hardly ever use The CookBook), the changes are nice. I really didn't have a problem with the old API, but I will say this one seems much faster and the transition was seamless in terms of usability. Hey, anyone remember the old days when selecting text in the API would cause Firefox to freeze and eventually crash?

Anyway, the new API is the work of gwoo and Mark Story. No really, Mark Story was involved - can you believe it? Mark is also on the Twitter now, so follow him up.

In other Mark Story/CakePHP plugin news, the DebugKit is now offically off GitHub and exclusively on TheChaw. The DebugKit also has a new "history" panel, which is the work of pure divine genius. It is hard to say that this new panel was "coded" - a better description would be that it was born forth from a power that transcends all consciousness. So really, there is no reason to not be using the DebugKit.

And if downloading and unzipping is too tedious, John David Anderson, aka _psychic_, aka raisinbread released an early version of a plugin server. Right now there are only a few plugins on it, but it's still pretty cool and shows a glimpse of what is to come.

Tickets and Commits

Commits have slowed down lately, just 10 in the last two weeks. This was to be expected now that the framework has gone stable. Although there are a fair number of open tickets. Five are currently assigned to developers and at least another two that are legit, but unassigned at the moment (#6043 and #6072).

It's kind of sad that tickets have increased 700% since the release of 1.2 stable. This is a bit disappointing as I would expect maybe a 50% increase, tops. You may argue that there was only one ticket immediately post 1.2 release so a 700% increase is misleading plus an increase of 50% would mean there was a half ticket and that doesn't make sense. I would counter by having my mom call your mom and get you in trouble for being mean. So there.

In The Wild

A ton of new sites to mention - almost leads one to think that Cake makes it easy to build websites.

Dan from Lunar Cow Design emailed me a couple sites he built. The first is the International Marine Animal Trainer's Association, whose goal is to "foster communication, professionalism, and cooperation among those who serve marine mammal science." Sounds cool and as long as it means more dolphins playing volleyball for my amusement, I'm all for it. The second site is the Club Plus Network, which didn't meet my dolphin volleyball per page quota, so I lost interest before figuring out what it did.

From DRE via the Google Group comes iTestCars.com, which aggregates the feeds of various car blogs, yet oddly does not have a feed of it's own.

Lennaert Ekelmans wrote a bakery article about how Twittermail.com was rebuilt in 48 hours using CakePHP. I will write more about their bakery article in my forthcoming post "How To Use The CakePHP HttpSocket Lib Instead of curl."

Nate tweeted that the Blue Man Group site uses CakePHP. So if you're a depressed male you should definitely check out this support group.

Another site via twitter. This time from Tarique Sani who tweeted about Bedpost, a site to keep track of you sex life. They make the classic mistake of branding the site "Bedpost" but the domain name is "bedposted.com". Ironically, going to bedpost.com offers "Free Porn - No Bullshit." So really, between the two sites, they pretty much cover everything your love life could need. Heck, maybe you visit bedpost.com by mistake first, then a few minutes later you can log your encounter with Rosie Palm and her five friends on bedposted.com.

Once again from twitter. Oscar Carlsson announces his latest site, letsrace.se.

In The Blogs

The blog section of this digest can be renamed in honor of Neil Crookes, who cranked out three high quality CakePHP posts in the last two weeks - all with code available in GitHub. First up is his HistoryComponent, which tracks a users progress through the site and can be used to redirect them back to previous pages. Next is Neil's CakePHP implementation of Yahoo!'s BOSS, which right now is implemented as a set of files that you drop into your app, but could probably be rolled into a really cool plugin. Lastly is his SequenceBehavior that is used for getting a handle on ordering of records.

Teknoid, who has also been blogging a lot lately, has a nice post about managing baked and scaffolded templates.

m3nt0r has also been churning out the CakePHP posts. He has a post about a really cool blogger who is giving away a copy of CakePHP Application Development and made a strangely addictive timeline of all the #cakephp posts on twitter.

In The Groups

Not to single out any particular thread, but my singled biggest message board/forum/newsgroup peeve is when someone asks a perfectly legitimate question and gets responses either wanting to know why they asked the question or that the question is wrong in the first place. Come on people. Unless the poster made it clear the don't know what they're doing let's assume we're all competent and have our reasons for needing to do things a certain way.

Everyone's second favorite Google Group topic (behind the dreaded framework performance comparison topic) popped up again. Yup, it's the "which editor do I use to code CakePHP" topic.

Also I believe this is the first SVN vs Git thread. Keep a link to it handy, for when this topic comes up again on a monthly basis.

There a couple new plugins that allow to search the API and the CookBook from your Firefox search box. You can find them both here along with some bonus drama.

In general the Google Group seemed really active lately. Much more so then in the beginning of January, which can probably be attributed to holiday hangover. Some other active threads were about the new API and UTF-8 encoding.

In The Bakery

Ronny Vindenes created a helper for same timeline widget that you saw in the #cakephp twitter page above.

Siegfried Hirsch has created a datasource for dealing with CSV files.

With any luck both of the above links will still be valid at the time you're reading this. Yes, that is a veiled shot at my growing annoyance with the Bakery. I understand the need to moderate the content, but it sucks that anytime there is a change in the article the page goes missing until it is re-approved. Do you realize how hard that makes it to write a CakePHP Digest post?!?!?! COME ON!!1!

And on that note don't forget to subscribe to my feed or follow me on twitter.

As always if you think I missed something leave a comment. Or if you do something interesting and want it included in the next digest, send me an email.

Posted in CakePHP Digest

13 Comments

Aulay said on Feb 09, 2009
Great digest and thanks for the mention. We are going to try spit out at least 1 cake article per week, looking at it from both a technical perspective and business perspective.
Matt said on Feb 09, 2009
Hey Aulay, I subscribed to your feed and will keep an eye our for your CakePHP stuff. Also feel free to shoot me an email when you launch any Cake sites and I'll make sure to mention them in future digests.
Mark Story said on Feb 09, 2009
Its a good think I'm e-stalking you, or I would never find out about these issues, that don't get tickets :) Anyways your bug is fixed, so HA!
Matt said on Feb 09, 2009
I swear I was going to look into the bug myself, but then got bogged down in the whole PHP 5.1.6 thing and forgot I was going to look into it and ended up being that guy who bitches about stuff in his blog instead of taking action. Ugh, I hate that guy.

Cool that you fixed it so quick. Thanks!
Marc Grabanski said on Feb 09, 2009
Thanks for the digest, Matt. I am however, surprised no one caught my CakePHP + Yahoo! BOSS implementation last summer... hmm. Not to steal Neil's thunder, cause he rocks and probably did a better job than me. But either A) it sucked, or B) no one read my blog 7 months ago.
Cheers!
Marc Grabanski said on Feb 09, 2009
Neil's is much better and more Cake-like - makes my code look like a hack-job (which it was). Nice work, Neil!
Matt said on Feb 10, 2009
Hey Marc,
I definitely read your blog. If I was writing this digest 7 months ago you'd have been mentioned :)
Neil Crookes said on Feb 10, 2009
@Matt, cheers for the mention. I really wanted to put it in a plugin, but I couldn't figure out, without hacking, how you get routes, database config and datasource files to work from a plugin. Is this missing from Cake, or am I a dumbass, or are you just supposed to ship it as a plugin, then tell people to add the dbconfig and routes to those file in their app/config dir, and datasources to their app/models/datasources dir?

@Marc, I did check out your post before writing my code, and it gave me a good insight to how to add Yahoo! BOSS functionality, but you're right, it wasn't very cakey ;-)
Matt said on Feb 10, 2009
Hey Neil,
I haven't actually done this, but you may want to check out ConnectionManager::create (http://api.cakephp.org/class/connection-manager#method-ConnectionManagercreate, which seems to allow you to add datasources at will. That may allow to you put your datasource config and datasource class into a plugin.

I think Route::connect will allow you to add routes without having to edit the config file. Although you could just leave the normal plugin route (/yahoo_boss/search) and give instructions on how to change it in the default route if people want to.

Again, I haven't tried any of this, so I may be completely off here.
Neil Crookes said on Feb 10, 2009
@Matt, I was thinking it might be cool if cake would automatically look in all your plugin dirs in your app and look for config/routes.php, config/database.php and models/datasources files for you, and be aware of these, in the same way it has looks for various other files in multiple paths - what do you reckon?
Matt said on Feb 10, 2009
Agree completely. I guess it's just one more thing to add to the already ridiculous list of enhancements for 1.3 :)
Brendon Kozlowski said on Feb 10, 2009
Matt, just a thought...but I always tend to completely forget about the unofficial CakePHP forum. There are quite a few interesting topics over there too - it might be nice to quickly glance over the topics there and give some credit to those people (site admins) who are also trying to help spread the cake lovin'.
Matt said on Feb 10, 2009
There's an unofficial CakePHP forum? I had no idea. Google tells me that this is it: http://www.cakephpforum.net. I'll start keeping an eye on it. Thanks.

Add new comment