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.
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...
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