14 August, 2017
By totten
Filed under Architecture, Release, Tips

Compatibility with PHP 5.3 will end in December 2017, and compatibility with PHP 5.4 will end in March 2018. These changes follow a number of discussions and a multi-year deprecation process. The current recommended version is PHP 5.6.

Discussion

According to php.net, PHP v5.5.x became "end of life" in July 2016. This means that the official publishers of PHP no longer support v5.5.x -- if there are security issues in the PHP runtime, the PHP project won't provide advisories or fixes. They recommend that all PHP users upgrade. (That's just the security side of the equation -- upgrading to a newer PHP also brings access to better libraries and design-patterns.)

But... for small organizations using CiviCRM, upgrading their servers to a newer version of PHP would be an expense. So CiviCRM has continued to support PHP 5.5 (declining to...

Read more
08 August, 2017
By totten
Filed under Architecture, Release

The 4.7.24 release is scheduled for the first Wednesday of September. Ordinarily, there would be an announcement about the release-candidate (RC) in mid-August, but we're doing something a bit different this time around -- extending the RC to a full month, which mean the RC is available now at http://download.civicrm.org/latest. Testing out the RC is a great way to ensure that your systems will continue to work in the next release. Let me talk about how this change helps.

The Background

Quality-control for a new release is a team sport. It relies on reporters and developers performing thoughtful analysis when they identify a problem or improvement. It relies on developers writing code which anticipates errors, improves test-coverage, and follows recognizable conventions. It relies on infrastructure running automated tests. It relies on reviewers understanding the problem-domain and questioning assumptions. It...

Read more
21 July, 2017

CiviCooP and Systopia and Palasthotel have been working together on CiviProxy and CiviProxy. This blog is a round up of what we have achieved in the last couple of days. The first thing we have achieved is that we had fun and a very good work atmosphere. We made long days and made lots of progress.

What are CiviProxy and CiviMcRestFace?

CiviProxy is a script to act as an application firewall for CiviCRM. It could be used to put your civicrm in secure network. CiviProxy is the gatekeeper to which external systems, such as your website, connect (this is for example when a user signs a petition on your website and the website submits this data to your CiviCRM). CiviProxy will make sure the call is from the right place (ip-adress) and is only doing what allowed to do. 

CiviMcRestFace (CiviMRF) is a framework to be used in other systems (such as your external website) to connect to CiviCRM. The framework itself is...

Read more
25 October, 2016
By totten
Filed under Architecture

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:

We are what we repeatedly do. Excellence, then, is not an act, but a habit.

All of us -- users, developers, administrators, core, contributors -- want excellence in CiviCRM. Does that mean we need one grand release to prove our excellence? No, excellence merely means that we review every patch thoughtfully. Excellence means that we have mastery over our use-cases, and that we...

Read more
21 September, 2016
By totten
Filed under v4.7, Architecture, Release

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

Download

The release-candidate may be downloaded from the civicrm.org nightly build system:

http://dist.civicrm.org/by-date/latest/4.7.12-rc/

Please note that release-candidates are intended for use on test/staging servers - they are not intended for installation on live/production servers...

Read more
19 July, 2016
By totten
Filed under Architecture, Release, Tips

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.

Q: I am fluent in geek-speak. What should I do?

Determine if your web server has the PHP extension mysqli installed. Any of these will tell you:

  • Use the server's command-line:
    • Run "php -r 'echo extension_loaded("mysqli") ? "loaded\n" : "missing\n";'".
    • It should display "loaded".
  • ...
Read more
27 June, 2016
By Eileen
Filed under v4.7, Architecture

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?

Turning logging on is as simple as checking the box 'Logging' on the admin page at Administer->System Settings->Misc. Once you do this a 'shadow table' for each table in your database (except for cache tables) is created. For example log_civicm_contact tracks civicrm_contact table. MySQL triggers are created that cause every update, insert or delete action to be logged in these tables. Some of the data in these tables can be viewed through the 'Log' tab on the contact record, although much more is only visible through...

Read more
22 May, 2016
By Eileen
Filed under API, Architecture

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.

 

The focus of the fix so far has been very much on deadlocks when clearing the contact cache. The reason being that these have been causing the most havoc. In analysing the problem it turned out that when someone edits pretty much anything the code looks for stale groups & tries to flush the cache. Depending on the size of the cache that can take a few seconds and it doesn't update the cache last flushed date until afterwards. So if the...

Read more
29 March, 2016

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. Many additional contrib modules are available. Using these techniques, searching millions of records becomes fast and efficient.

The Facet API module allows site builders to easily create and manage faceted search interfaces. In addition to the UI components that standard, themers and module developers can build their own widgets, or alter the...

Read more
18 March, 2016

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. 

Example Use Case

A hypothetical organization advertises various community service projects that they organize and coordinate. Each service project can have it's own page, created by adding a Project content type to display a description, images, videos, slideshows or other information for each project. You'll probably use a View to show multiple Project listings on a page. All that is standard Drupal site building content and functionality. No problem.

But what if the organization wants to display to the user the Project Coordinator(s), which they also want to store in...

Read more
randomness