Asking questions about photos

I work at an archive and deal with photos. I have a set of photographs that I want to ask a consistent set of question about each photo. (Who, what, where, when, etc.) I want to ask these questions to a group of people (who are all over the world). Anyone can answer any question, once the question is answered then no one needs to answer it again. We then want to be able to pull out these answers to our archive metadata fields. I was thinking about deploying BuddyPress to do this. I have used WP since 2005 but am new to BP. Any pointers on how to best go about this?

There are many, many ways to do what you want using WordPress, BuddyPress, and BP-Media. The biggest influences on your design will be the scale you need to operate on (10 thousand images or 10 million images), and the granularity of admin control you need over user’s actions (what happens when a spammer fills image description fields with junk).

Creating a detailed “paper prototype” of how you want the finished system to work is an extremely important design step.

BP-Media (not BP-Album) has you covered in terms of scale. The plugin is designed to handle at least 100K media items on a single server, and can theoretically scale to millions of items in a multi-server install. However, for the rest of the functionality you’ve described, you’ll need to write a custom WordPress plugin to store your media item metadata to the database and add your views / controller to the BuddyPress page tree.

Using BP-Media as a prototype, the metadata storage portion of the plugin is about a day of work. First-off, read up on how our caching technology works here, here, and here. Next, take a look at how our object-oriented database technology works here. Then, create a copy of one of our data storage classes our system config class is a good example, and modify it to store data in the format you want.

After you’ve got your class built, you can dramatically simplify debugging and qualification by using our unit test suite. Documentation is located in test.php. Individual unit tests also serve as extremely detailed documentation for all of BP-Media’s classes. For example, the test_config.system.php unit test fully exercises and included working examples of every possible usecase of the system config class.

To run the unit tests …after setting up the required throw-away database… simply navigate to the unit tests directory at the command prompt and type “php test.php” [enter].

Adding your views and controller to the BuddyPress page tree is a bit of a challenge. You’ll want to have a look at the BuddyPress Skeleton Component. We’ve also created a tutorial for other developers transitioning to the new BuddyPress 1.5 architecture here.

If you need any more design advice, we’d be happy to help. You can also hire members of our development team to build all (or just the difficult parts) of the plugin for you.