18 February, 2013
By jcm55

One of the most common phone calls we receive at Bay Area Children's Theatre is "Are tickets still available for performance xyz?"  That call is especially common on show days, when most of our staff is at the performance venue and not in the office to answer the phone.

BACT already uses Asterisk to provide our virtual PBX and I wanted to see if there was a way to automatically give callers a list of sold-out performances based on CiviCRM event data.  I discovered an Asterisk AGI script called GoogleTTS that uses Google's text-to-speach API to read arbitrary text to callers:


The only thing that was left was to come up with a little php to get the list of sold-out events from CiviCRM and pass it to GoogleTTS to read it to callers.  The php is pretty straightforward -- it uses the CiviCRM API to fetch the list of events with start_date > today.  Two small...

Read more
23 November, 2012

For the past few months we have been working with Future First, who have an ambitious mission of 'creating an alumni network for every state school in the UK'. A key part of this work is the ability to track and engage with recent school leavers and we've spent a fair amount of time building tools that allow them to do this. One of these is an extension that allows them to hold scripted SMS conversations with their contacts in CIviCRM.  We've just piloted this functionality with them and the results look quite promising.

The background

Over the summer Future First signed up over 25,000 school leavers to their alumni networks. They did this in two ways. Approx. 50% filled in their details just before they left school using an online form that we built with webform_civicrm. The form collected their name, email, mobile number and optionally facebook details. The other half filled in paper forms that were later electronicified...

Read more
27 October, 2012
By xavier
Filed under v4.2, API, Training


Node.js allows to run javascript on the server and is great for real time applications when you want to have lots of users and connections at the same time

I wrote a node module to easily connect to a civicrm server from that node.js. I found a cool module that makes it easy to generate names, addresses, phone number and emails and hacked a quick example of how civi can be used from node.js.

Without further intro:


Imaginary friends on CiviCRM

You have installed civicrm, but realised you don't have friends or contacts? Fed up of having activities with the same 102 contacts that ship by default with civi?

civi-charlatan is going to fill your social life with lots of interesting sounding contacts from all around the world. You will even have their emails, addresses and phones!

It's like...

Read more
12 May, 2012
Filed under CiviMobile, API

While we were working hard on a number of applications for free and open source market one of the application which was released by us was the CiviSync Mobile app for Android. You can download it from Google Play on your phone or here.

The App currently only supports read only mode and allows you to check your contacts, organisations, households, activities and groups. The app is developed using PhoneGap and hence it is easy to convert the app to an iPhone, Windows Mobile or Blackberry app when the need or the requirement comes from the market.

Once again the first version relied a bit on our extended API provided by CiviSync CMS component for Joomla and Drupal but in the next version we have moved away from using CiviSync CMS and towards using the native API for the search results.

In order to use CiviSync Mobile you need the following details:

  1. ...
Read more
12 May, 2012
Filed under API, Extensions

Hey All, Thanks for your patience and putting up with the delays in the release of CiviSync Outlook. CiviSync Outlook is the much awaited Outlook integration plugin for CiviCRM. It allows information sync between CiviCRM and Microsoft Outlook. CiviSync Outlook uses CiviCRM API. Due to some restrictions with API; at one stage we decided to use our own version of the API but it's not something we would like to run with in long term and hence dropped it fairly quickly.

CiviSync now uses the native API. A detailed user manual in creation but in the meantime Target Integration's wiki page will give you some information on how to install and use it on your installation of Outlook.

Don't forget you need four things to login to a CiviCRM instance using REST API:

  1. Username
  2. Password
  3. SiteKey
  4. API Key for the user who is trying to login. You don't need the...
Read more
27 March, 2012
By totten
Filed under API, Architecture, Extensions

Many CiviCRM customizations have been packaged and distributed as Drupal modules. This can be desirable when a customization delves into both the CMS and CRM functionality, but -- when a customization focuses only on CiviCRM -- Drupal modules are a drag: they need to be patched for CMS upgrades (D6/D7) as well as CRM upgrades (Civi 2.x/Civi 3.x), and they don't work with CiviCRM's other CMS's (Joomla and WordPress).

Fortunately, dlobo has been making progress on support for native modules (built around the "CiviCRM Extension" system) in 4.1 and 4.2. An example module is here:

Of course, this still poses a challenge: a native module needs to use native tools for packaging code, adding new web pages, developing templates, etc. -- and all those tools come with a learning curve. To improve the learning curve, I've taken a...

Read more
07 March, 2012
By Eileen
Filed under API

Although the API changes in 4.1 are not as obvious as took place in 3.4/4.0 there have been quite a few changes under the hood. This is a fairly detailed explanation of what's going on inside the API wrapper.


The way in which required fields & default values are set has been changed to be more consistent and to be self documenting.


For example if you look at the auto-generated (PHPDOC) documentation for Note API you will see that entity_id & note are marked as 'required' and that the default value for 'entity_table' is civicrm_contact. The default value for modified_date is 'now'  (the api accepts 'now' along with other relative dates for date fields).



Read more
03 March, 2012
By xavier


The code sprint in London has finished yesterday. It's always a pleasure to see old civi friends and meet new ones. Thanks to Michael and Katy to have organized it. Time for a quick update of what I've been working on with the most obscure title I could find. My focus has been on usuability to make civicrm easier and faster to use.


To make our crm more user friendly, we need to make the pages more "application like", where you can add, edit remove and reorder from the same page without having to switch and go to more pages with forms to fill and save. And load. And wait. And save, and load and wait more...


For instance  -and that will be a make it happen that we launch next week to improve- creating a survey today means you have to go to visit a different page to create the survey, the profile, for each field you add in the profile, for each custom field you need to...

Read more
22 January, 2012
Filed under v4.1, API, Release

Thanks to a successful Make-it-Happen campaign the 4.1 release comes with a much improved and super flexible approach for running Civi's critical back-ground processing tasks. These tasks include keeping membership statuses up to date and sending renewal reminders, sending scheduled CiviMail mailings, sending pledge payment reminders, and more. I've spent the past 10 days testing and documenting the new "consolidated cron" functionality, and the good news is that I think it fulfills the promise of providing a convenient and friendly way to administer and run all the required tasks for a site.


The "bad" news is that these improvements are NOT backward compatible. The set of PHP scripts which were previously used to run these tasks have all been deprecated (and moved to a 'deprecated' directory). This means that all CiviCRM-related cron jobs will stop working as soon as any site is upgraded to 4.1...

Read more
18 January, 2012

Notice to non-developers: This post is about how some functionality in 4.2 will be implemented in code and in the database, with very minor changes to anything visible through a browser. If you're not a developer, it probably won't interest you.

Simplifying the Codebase

As part of the CiviAccounts project we are looking to redo some of the implementation of the configuration and processing of payments for contributions, memberships, and events. Currently the processing for each of these three types of objects has two paths: one for a simple configuration of the objects, and one using price sets. This means there is more code, more complexity, more possibility of errors, more work when making changes, and more need for testing.

As we refactor the existing code we're looking at keeping the simplified UI for configuration and administration, but implementing everything under the hood using price sets. Before going ahead with that, we wanted some...

Read more