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.

CiviCRM

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.

Member Directory

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.

Payment Options

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.

User Import

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

Calendar/Date
CCK
CiviCRM
Flickr
Imagecache/Nodequeue/Views_slideshow
User Import
Views

Lee County Bar Assocation
SoFlaWeb Project Page - Lee County Bar Association and CiviCRM

Comments

macmaci’s picture

Thanks so much for providing the overview of you project road map. Very nice job! I have a question that perhaps you can assist me with. I am doing a site for a small nonprofit pro bono. I have installed CiviCRM but having a problem with my Drupal navigation automatically expanded when I land on a CiviCRM page. I am using a Superfish menu as it looks like you did for your site and see that you are not having the same problem. I did install the CiviCRM theme module but this doesn't solve the problem considering I want to use my site theme for my for my CiviCRM public pages but it does help for my CiviCRM admin pages where I can use a different theme. Hope this is clear and you can offer a tip. I have not been able to get it resolved through the CiviCRM forum.
Thanks
Macmaci