Stay True Tattoo
I developed this website in Drupal 6 for Stay True Tattoo in Oklahoma City. Stay True Tattoo is a shop located on 23rd Street near Classen. They do excellent work, and I in fact got my most recent tattoo from Mike Thurman at Stay True Tattoo.
This website was a fun one to develop. In the tattoo industry (or any industry, for that matter), it's often much easier to upload photos to a single place and not worry about it. Uploading the same photos to Facebook, your website, and elsewhere can be rather time consuming. From the get-go, I wanted to make this easier on the guys at Stay True Tattoo to maintain their gallery of work on the website.
Seeing that they already managed their albums on Facebook quite well and that it is easy for them to upload a photo from their smartphone directly to Facebook, I thought it would be an excellent idea to take advantage of Facebook's Open Graph API. The artist portfolios on the website are pulled directly from the photo albums on their Facebook page.
The custom module I had to write for this is rather simple. Through a set of loops, it checks for existing albums and photos on Facebook. When it finds an album, it creates a node for the album (if it doesn't already exist) and proceeds to process the photos contained therein. As it finds more photos in the album that haven't been imported previously, it downloads the photo from Facebook via cURL and creates a new node. I'm sure my ISP enjoyed my testing sessions where I was downloading 150+ images over and over again for hours on end. This is currently set up to run about every hour.
The Views module is then used to create the portfolios. Because the module imports every album (Wall Photos, Profile Photos, photos from a convention, etc.), I had to come up with a reasonably easy method to decide what albums should be shown as portfolios. In this case, Views checks to see if the "Artist Photo" field on the album is empty. If the field contains data, then the album is considered an artist portfolio and displayed as such.
All images (except those appearing in a modal window) are processed through ImageCache. After the image is imported from Facebook, Drupal automatically generates the images required in various places upon first request. This includes cropping, resizing, and applying the overlay that you see on thumbnails. Without this feature, creating and maintaining these photo galleries would be a rather tedious and time consuming process.
All in all, this was a fun project. I look forward to doing a similar project in the future!

