Architecture

Discuss the Coding structure, libraries used and best practices to extend CiviCRM.

Releases: We are what we repeatedly do

Published
2016-10-25 15:49
Written by

At the CiviCons and developer meetings this year, we've had several conversations about release strategy. The topic is a bit abstract -- touching on a web of interrelated issues of technology and scheduling and business-process. I've been searching for a way to explain this topic to people who don't eat and breathe code in CiviCRM's git repos -- an analysis which is a bit simpler and more transcendent.

The best analysis predates us by a few years -- Will Durant attributed the idea to Aristotle's Nicomachean Ethics, paraphrasing:

(logged-in users can click thumbs up if they thought this blog post was useful) (login to vote or to comment)

CiviCRM 4.7.12-rc: Experimental support for PHP 7 / MySQL 5.7

Published
2016-09-21 18:52
Written by

CiviCRM 4.7.x has made significant progress towards supporting PHP 7, MySQL 5.7, and Ubuntu 16.04. I'm pleased to announce the availability of the release-candidate for v4.7.12.

These improvements were made possible with the collaborative efforts of several people and organizations, including Mark Burdett (EFF), Mattias Michaux, Seamus Lee (Australian Greens), the New York State Senate, and the CiviCRM core team (Jitendra Purohit and me).

(logged-in users can click thumbs up if they thought this blog post was useful) (login to vote or to comment)

PSA: Please verify PHP extension "mysqli"

Published
2016-07-19 18:17
Written by

To ensure that CiviCRM continues to work with standard, contemporary PHP hosting platforms, a future version may make a subtle change in hosting requirements. We expect this to be mostly seamless; however, we're looking for administrators responsible for sites running a recent CiviCRM (e.g. v4.7+) to spend a few minutes to help ensure a smooth transition.

Q: I'm not too fluent in geek-speak. What should I do?

Forward this to whoever manages your server. If you work with a CiviCRM partner, they may be thinking of you already.

(logged-in users can click thumbs up if they thought this blog post was useful) (login to vote or to comment)

Who did what when?

Published
2016-06-27 16:33
Written by

For many years CiviCRM has had the capability to log all actions that take place in the database but while it mostly works well there have been a few issues. I looked into these recently and came up with some improvements, which shipped in 4.7.7 - but if you want to take advantage of them there are some actions you might need to take. This article is mostly intended for a technical audience.

 

How does CiviCRM logging work?

(logged-in users can click thumbs up if they thought this blog post was useful) (login to vote or to comment)

4.7.8 Group Contact Cache deadlocks improvement

Published
2016-05-22 20:20
Written by

Busy sites have often encountered problems with deadlocks on the group contact cache. There were no less that 3 different code contributions to mitigate this problem put up for 4.7.8 and a number of other discussions have been going on in JIRA.

 

Merged into 4.7.8 are some improvements which we hope will mitigate this problem for those sites that experience it. JIRA is the primary source of information on this, however I wanted to share a brief overview.

 

(logged-in users can click thumbs up if they thought this blog post was useful) (login to vote or to comment)

CiviCRM Entity - Using Drupal Search and Facet APIs with CiviCRM Data

Published
2016-03-29 05:57
Written by

There are two powerful modules used in the Drupal world for creating fast custom searches. Search API is a framework which provides an interface for site builders to create custom searches on any entity known to Drupal. It supports several search backends, including Apache Solr and native database search. It has a flexible API so developers can easily extend, customize, and alter aspects of the search process.

(logged-in users can click thumbs up if they thought this blog post was useful) (login to vote or to comment)

CiviCRM Entity - Working with CiviCRM Contacts on Drupal Node Edit Forms Using Inline Entity Form

Published
2016-03-18 08:40
Written by

It's becoming a common request from our clients to find user-friendly ways to integrate CiviCRM data with the rest of their Drupal website functionality. Oftentimes content creators without direct user access to CiviCRM need to do simple things, such as create, update, and delete contacts in simple, specific ways. 

(logged-in users can click thumbs up if they thought this blog post was useful) (login to vote or to comment)

CiviCRM Entity -- Upcoming and Future Development

Published
2016-03-10 15:49
Written by

CiviCRM Entity is a Drupal module which greatly enhances CiviCRM integration with Drupal. This module exposes many CiviCRM entities as true Drupal entities. That means that almost any module can use Drupal entities. As a result, these modules can access and manipulate CiviCRM data directly from within Drupal via Drupal’s Entity API.

(logged-in users can click thumbs up if they thought this blog post was useful) (login to vote or to comment)

Developers: Extension Testapalooza

Published
2016-03-09 11:19
Written by

Automated tests are important when collaborating with other developers in a large project. Even if you focus your attention on a small piece of the puzzle, your piece depends on other pieces, and others may depend on you. There will be inevitable occasions when a change in one causes an unexpected change or break in another. Automated tests form the first line of defense, providing timely feedback so that problems can be addressed while the material is mentally fresh.

(logged-in users can click thumbs up if they thought this blog post was useful) (login to vote or to comment)

The static is dead. Long live the static!

Published
2015-09-21 20:57
Written by

Civi v4.7 introduces some overhauls to the core CiviCRM development framework. Some of the planning discussions can be found in the forum, but now that it's merged and stablized a bit, I wanted to give a walk-through for other developers. A few highlights:

(logged-in users can click thumbs up if they thought this blog post was useful) (login to vote or to comment)