Announcing the first ever CiviCon

I am very excited to announce the first CiviCon! The day after DrupalCon this April, stick around in San Francisco for CiviCon. We'll have celebrity speakers, breakout sessions highlighting real-world examples of people making non-profits rock with CiviCRM, and ample opportunity to ask questions, meet people, and generally max out your CiviCRM fu. If you're reading this, you need to be there!

Setting and Getting Custom Field Values in CiviCRM Hooks

Cross-posted at The Nerdy Adventures of Wes.

CiviCRM isn't always the most predictable codebase. Recently I needed to get and set some custom field values in a hook I was writing. The hook's job was to calculate some custom field values and create some contact references when a contribution was created or updated. As always, dlobo was a huge help (he's the CiviCRM guru, find him in #civicrm on Freenode). Here's what I did to set a couple of custom fields in my _pre hook:

Perl client module for CiviCRM REST API

I just uploaded the first version of the Perl client module for the CiviCRM REST API. You can download it from CPAN here. This means you can now create, edit, delete, and retrieve (most of) your CiviCRM data from Perl scripts and programs. I'm using it to provide integration between the Perl CMS WebGUI and CiviCRM. But you can use it for many different things; it's very general purpose.

CiviCRM Multi-org: Piggybacking on Multi-site and connecting groups and organization contacts

In my last blog post about multi-org, I made the case for merging groups and relationships as an elegant solution to the multi-organization data modeling requirements. My thinking boiled down to:
  1. Groups represent a relationship between "you" (i.e. one of the owner organizations of that Civi instance) and a contact (i.e. a member, newsletter subscriber, media contact, alumni, etc.).
  2. Relationships represent a relationship between 2 external contacts.
So, under multi-org there would be more than one "you" for the first scenario above, and I thought well, let's just piggyback on the existing many-to-many data model we have for relationships. However, this proved too drastic a change to make it into 2.3, so we (I and the core dev team) went back to the drawing board.

CiviCRM Multi-Org: Merging Groups with Relationships

CiviCRM Multi-Org refers to the ability to support multiple owner organizations (usually a hierarchical structure of umbrella orgs and sub-orgs or local chapters) and keep some data siloed in each org while allowing other users to aggregate data across orgs too. It has been been a tough nut to crack. But I and the organization I work for (The Public Interest Network) are committed to getting it working in CiviCRM 2.3.

Coming in 2.2: SQL import and pluggable import data sources

One of the new features in version 2.2 of CiviCRM (in alpha release as of this posting) is a new contact import system. I'll delve into the technical details in a bit, but at a conceptual level, this new design should allow more flexibility in the import system down the road. The first hint of this in the 2.2 release is the new SQL Query data source option. This allows you to query another database that the CiviCRM database user has appropriate permissions on (on the same MySQL server) to get the source data for the import.

CiviCRM in Google Summer of Code 2008

Thanks to the awesome folks over at the Joomla! project, CiviCRM will have a few projects in Google's Summer of Code this year.

You can see the list of proposed project ideas here:

The biggest thing we need now are students to apply!

Here are the top 3 reasons why you (or a student you know) should work on CiviCRM this summer: