The third incarnation of my user profiles tutorial, this time in module form, has arrived. I'd like to introduce the Advanced Profile module. It still needs work and isn't feature complete, but it's a good start and available to play around with.
It's been a long road getting here. In April of 2007, I spent a few weeks of free time learning nodeprofile and theming and put together what I thought was a pretty nice looking user profile for Coulee Region ONLINE. Since so many people had helped me learn while I struggled to create it, I decided to pass on the knowledge by writing a tutorial. It turned out to be more popular than I ever imagined and generated quite a few support requests. A lot of that was lost when I moved the tutorial between sites but I think the comments were over 400!
Having so many people use the tutorial pointed out a lot of flaws. Between that and improvements to the modules I used, I decided it was time to write a second version a few months later. This version improved on the first quite a bit but also had some issues I was never able to track down. The forums here are filled with support requests in addition to what I've gotten by email and on IRC. I'm having a terrible time keeping up with all the support and a few months ago I started thinking it was really time to do a version 3.
I waffled quite a bit on whether to do a "bug fix" version or a full blown new version. On the one hand, I was getting tired of the same support requests for the buggy version 2 and wanted to do a fixed version to help with that. On the other, I had some big ideas for version 3 and didn't want to spend any more time fixing up version 2. So version 3 stayed in a state of limbo for a while and I worked on other things. Then Panels 2, which is integral to my vision of version 3 got very usable so I decided to take the plunge and went full steam into a full rewrite.
First off, I had to create some code for panels 2 needed to connect it to other modules. The first was a relationship to make use of Bio to get the node from the passed in user. The second was a content type (panels term) for CCK groups. Once I had these two parts, I created the main panel page and the supporting mini panels and all the glue code and put it all into a module. By making a module instead of just writing a tutorial, I hope to make user profiles a lot more "plug and play" for people who aren't very advanced with Drupal. I do still plan on making a tutorial to go with it but it will be more along the lines of how I created the panel and cool things you can do with it rather than a list of steps you must follow if you want to make it work on your site.
In its current state, you get just what you see on the demo site. It takes a bit of effort to set it up but no where near what was needed with the tutorial. I don't reccomend it for newbies just yet but, if you are familiar with Drupal and know just a smidge of PHP, it's not hard. Immediate future plans include adding in a user photo gallery, making it work with nodeprofile and core profile, making use of user relationship as an alternative to buddylist, and nicer default theming. Looking farther down the road, the next big step is the profile edit page. I didn't bring along the customized edit form from the tutorial because I have bigger plans. I want to make it so the user can edit their profile through a limited panels interface making it similar to the mysite module. Related to that, another longer term plan is making it possible to use mysite droplets with advanced profile. So there's lots of good stuff in the works.
If you have problems with the module, please use the issue queue. General talk about it can be done on the forums here. Or catch me in IRC. If you make use of it on your site, I'd love to hear about it.