Lee County Bar Association Web Development with Drupal & CiviCRM
At the beginning of 2010, SoFla Web Studio was contracted to develop a new website for the Lee County Bar Association. We developed a solution that would assist the Association with marketing their organization online as well as provide added value for their existing members with expanded online resources. Our solution involved integrating Drupal as a Content Management System. Drupal would allow the Association staff to easily update their website themselves. This would provide more frequently updated content as well as overall cost savings for the Association.
Shortly after beginning the Discovery process, the team noticed that the administrative processes handled by the Association staff were run through the use of a Microsoft Access database and were not scalable to allow for future growth. At this point, SoFla Web Studio recommended utilizing CiviCRM to manage membership, registration and events. The proposal replaced the single local copy of an Access database with a robust online MySQL database that could be accessed from any internet connected computer and by multiple employees at the same time. Implementing this new system has established SoFla Web Studio as the premier South Florida CiviCRM development company.
Existing Site and Management
Their existing site was done in static HTML. All membership was handled through a single Access database, which besides inflexible, was an issue because as their membership grew, their need for multiple people to be able to edit the database at the same time was growing as well. Our goal was to integrate their website with their member management in order to open up the ability to do event registration tracking, membership signups and renewals, and to do that all through a web interface to allow multiple people access simultaneously.
There are many CRM systems available, however we wanted a system that was integrated well with Drupal and also was open source, so that they were not locked in to the system in the future. CiviCRM fits both of these requirements, and it’s a full featured CRM. It’s still undergoing rapid development, which makes it a bit of a moving target at times, but for the most part, we were pleased with the little we had to interface with the codebase itself.
One of our challenges was dealing with the membership directory. CiviCRM has profiles, which can act very similarly to views, except they exist for displaying contacts, not nodes. However, one of the problems we ran into was with access control. CiviCRM allows groups to determine access control, but they do not allow smart groups to be used for this purpose. We got around this constraint by using hook_pageRun and comparing the URL to the password protected pages. At that point, we compared the current user to the database and if the user does not exist in the smart group, we redirect them to a login page, or return a 403 error if the user does not belong to a smart group. This does add an extra database call, but since it only applies to a small subset of pages, we haven’t noticed a huge performance hit by doing it this way.
Another hurdle we had to jump was with membership costs. They work off of a fixed annual membership, which starts at the beginning of the year. New members can join halfway through the year for half price, and receive membership through the end of the year. The fixed membership part is covered by CiviCRM, but the price decrease was not. We achieved this by using the hook_membershipTypeValues. We checked the current date, and if the user was not a current member already. If both of these conditions were met, then we looped through the memberships and cut the prices in half, as well as appended “Half Year” onto the names.
The final stage of the project was importing their existing user database of over 800 members and give them Drupal access. Currently in CiviCRM, this is a four step process. The first step is to import the users as contacts, including all of their contact information. After the users have been imported, you have to import in the memberships. Once this has been done, then you need to go into Drupal and use the User Import module to import the list of users into Drupal. After the user accounts have been created, going back into CiviCRM, there is a menu item that will link the the CiviCRM contacts with Drupal users.
Key Modules Used:
- User Import
- LeeBar.org in our Portfolio
- Lee County Bar Association – web development Press Release 05/17/10
- Drupal & CiviCRM Diary