11 November, 2006
Filed under Architecture, CiviCRM

We now move onto the more interesting stuff of what really happens when a request is made and the objects that are responsible for building the response. The top level CiviCRM objects are:

  • Form (CRM_Core_Form): CiviCRM forms are based on HTML_QuickForm. For drupal folks, this is more of an object representation of the much loved form api
  • Wizard (CRM_Core_Controller): A set of CiviCRM Forms that collectively make up an action (Import Wizard, Mailing Wizard etc). For simplicty sake a one page Form is represented as a Wizard (CRM_Core_Controller_Simple)
  • Page (CRM_Core_Page): A Page represents all html pages that are not of the above two types
  • Selector (CRM_Core_Selector): A selector is a tabular/grid representation of the database data. Selectors are not high level objects, but are embedded in either a Page or a Form object.

Each of these objects offer a...

Read more
11 November, 2006
Filed under Architecture, CiviCRM

CiviCRM uses the PEAR package DB_DataObject to access the mysql database. Doing so reduces the amount of sql we need to write to fetch / store values for a single table. For queries involving more than one table, we write them manually since since it was fairly painful to try to force complicated queries using DB_DataObject (we did use DB_DO for multiple table queries when we wrote EmailNow, in the end we felt the hoops we had to jump through was not worth the effort and hence the current scheme)

The basic PHP classes that represent a table are called DAO's (Data Access Objects). These are generated automatically by (xml/GenCode.php) which also generates the sql structure for that specific table. The xml files representing the schema is stored under CIVCRM_ROOT/xml/schema. The sql file generated (civicrm_41.mysql and civicrm_40.mysql) are stored under CIVICRM_ROOT/sql (note that the generated files are not present in the svn repository). The DAO files are stored under...

Read more
06 November, 2006
Filed under Architecture, CiviCRM

Make sure you read the Introduction Chapter of this series for a better understanding of the below. Developers might be interested in installing CiviCRM from our svn repository

Some of the important directories under CiviCRM svn root are:

  • CRM: Most of the CiviCRM specific source code is stored in the directory. This directory is further sub-divided into other directories based on functionality (Core, Utils, Contact, Contribute, Mailing etc).
  • xml: CiviCRM schema and the base Data access objects (DAO) are automatically generated from a simplified xml scheme which contains a fair amount of sql and type information. This makes it relatively easy for us to change the sql code, figure out what changes were made in a version and add meta information to a table within PHP.
  • ...
Read more
05 November, 2006
Filed under Architecture, CiviCRM

Over the next few weeks, I will blog about the architecture of CiviCRM and some basic principles that we follow in the design/coding phase. In this series I’ll also talk about how we integrate with Drupal/Joomla and the scalability/performance/memory bottlenecks in CiviCRM.

CiviCRM is built on top of some incredibly powerful open source toolkits. They include:

  • PHP, we use PHP 5.1 for development and will probably switch to PHP 5.2 in the next few weeks as our primary development platform. We restrict ourselves with the features that we use in PHP 5 to enable an auto-translation of the code to PHP 4. I suspect we will drop support for PHP4 around the time we release CiviCRM 2.0 :)
  • MySQL, we use MySQL 5.0 for development. We also support MySQL 4 and do not use MySQL 5 specific features. I suspect we will drop support for MySQL 4 when we release CiviCRM 2.0, primarily to use advanced...
Read more
18 October, 2006
Filed under CiviMail, CiviCRM

CiviMail is a component that allows the users to create, send, track and manage CiviCRM-based mailings. In CiviCRM 1.5, CiviMail underwent speed and memory optimisations; in CiviCRM 1.6 we’re concentrating on usability improvements.

CiviMail users can create mailings sent to a single CiviCRM group (both regular and ‘smart’) as well as group sums and differences; the recipient list can also be based on inclusions and exclusions of previous mailings’ addressees. The mailing template can contain various recipient-specific tokens, replaced accordingly for every target contact. The mailings can be scheduled to happen on a certain date, as well as be sent in admin-defined amounts (so the mailserver is not swamped with a one-time massive queue).

Once a mailing is sent, the CiviMail users can track the delivery and bounce ratio, the number of forwards and unsubscriptions, the number of emails being actually read (opened) by the...

Read more
17 March, 2006
Filed under CiviCRM
CivicSpace has announced the ALPHA of their hosted service. This includes CiviCRM 1.3. Please consider helping them out by signing up to be an alpha tester. From Zack: The service will be similiar to Drupal hosting offered by Bryght but will provide the CivicSpace 0.8.3 Drupal distribution. In the future we hope to launch the ASP publicly as a low cost service for the non-profit & advocacy sector, but for now we are looking for a few brave CivicSpace community members to help us test it. Please fill out the form if you are interested in participating and we will be in contact with you shortly. http://civicspacelabs.org/home/asp-alpha-test
26 June, 2005
Filed under CiviCRM
Functional and contact-level access control is now implemented on the sandbox. User access overview describes the permissioning options. Logins and User Roles Some 'example roles' have been setup on this sandbox. You can use the logins below to try them out: Role: CiviCRM Admin Login: crmadmin demo Role: Team Lead Login: teamlead demo Role: Volunteer login: volunteer demo Current Sandbox Access Control This is a snapshot of the current access control setup for the sandbox. Notice that for each 'Group' there is an 'edit' and a 'view' permission (edit encompasses view). There is also an 'edit' and 'view' permission for the Saved Search - 'Major Donors-California'.
24 June, 2005
Filed under CiviCRM
CiviCRM has a lot of details under the covers that people might miss. One such feature is a simple Google Maps integration. From the contact list, select one or more contacts. From the drop down actions menu, select "Map Contacts using Google Maps" and click the go button.