Architecture

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

Import code cleanup in 5.51

Published
2022-06-14 14:04
Written by

The upcoming 5.51 release includes a significant cleanup of the import code. Anyone who has ever delved into this code will know that a four-hour deep dive often left you re-surfacing none-the-wiser. There is an ongoing cost to having code like this but - addressing it required a significant amount of change with an associated risk of regression. Hence I am putting out the request for as many people as possible to download the 5.51 rc and specifically test the import code.

6 people liked this (login to vote or to comment)

Civix v22.05: How to remove a million lines of extra code

Published
2022-05-02 19:20
Written by

civix is a development tool. It generates code for extensions, providing a baseline for developers and hackers who want to improve and add onto CiviCRM.

civix generates a lot of code. Much of this code is educational; hopefully, some of it is even useful. But some parts of it are redundant or excessive. The excess bits don't matter much with a single extension. However, in practice, they are copied to almost every extension. Individually, these are small bits. Collectively, they add up.

3 people liked this (login to vote or to comment)

CiviCRM / Drupal 8 Site Allows Chapters to Manage CiviCRM Data via Drupal

Published
2020-09-11 10:32
Written by

Skvare is the maintainer of International Mountain Bicycling Association (IMBA)’s Drupal 8 / CiviCRM website. IMBA is a network of local chapters, that provides resources to find local trails as well as information on building and protecting trails. The website utilizes CiviCRM integrated with Drupal 8 to allow local chapters to see membership reports, send emails to their members, and much much more. 

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

Civicrm Entities: not just for coders

Published
2019-11-18 09:28
Written by

In 1992, there was a little known new thing called the world wide web. By 1995, it was a "thing". Now, what exactly do those quotes do to the word "thing"? And what does this have to do with "entities"? Cue my favorite programming joke.

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

Insert data from a CSV file into CiviCRM

Published
2019-09-06 06:59
Written by

This blog post explains how you could insert data from a CSV file into CiviCRM. We use Pentaho Data Integration to read the CSV file and to call a Form Processor in CiviCRM.

This blog post is an example and when you follow the steps described in this post you can run the same import as me.

Pentaho is a tool to extract and transform data.

The form processor is an extension to create end points for forms in CiviCRM. Those end points can then be called through the api.

Prerequisites:

1 person liked this (login to vote or to comment)

(Development) Towards a clean build of CiviCRM on Drupal 8

Published
2019-07-29 16:31
Written by

In the coming weeks, you can expect a series of changes going into the development pipeline to support the CiviCRM-Drupal 8 integration. Individually, these will seem unrelated and disjoint - they may not explicitly reference “D8”. I wanted to spend a moment to discuss the concept which ties them together: the clean install process, which will make Civi-D8 an equal member of the Civi CMS club and a good base for continued development and maintenance.

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

Building Form Builder

Published
2019-05-07 10:03
Written by

With generous support from the community funding our first Form Builder Make-it-happen campaign, Tim Otten & Coleman Watts have begun regular code sprints for phase 1 of the Form Builder project. The extension is evolving rapidly, but I wanted to take a break from development for a few minutes to update you on what we've accomplished so far and where we go from here.

 

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

Understanding CiviCRM Form Builder for the layman

Published
2018-09-30 16:46
Written by

The recent DevCamp in New Jersey presented several sessions on new developments in CiviCRM land as well as showcased several of its inner workings. One session presented by Core Team member Tim Otten stood out for me: Form Builder. If you’re like me, you listen to folks like Tim with a great deal of respect and appreciation for what they say (and do).

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

Product maintenance in CiviCRM

Published
2018-09-25 19:23
Written by

As our North American colleagues (and those who have made the big trip over there) head into the governance sprint now seems like a good time to recap on product maintenance in CiviCRM. Product maintenance, as I discuss, is the monthly routine processes we do to incorporate patches & contributions into the CiviCRM product. This blog is kinda long & weedsy - so if it’s not for you then take a look at this baby octopus instead.

 

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

End of life plans for 5.x php versions & planning for 7.0 EOL

Published
2018-08-28 02:44
Written by
This blog serves as advance notice of our intention to stop supporting php versions 5.5, 5.6 and our ongoing evaluation of 7.0.
 
For php 5.5 we intend to end support in January 2019.
This is already unsupported by php and we strongly recommend you upgrade off it as soon as possible. The release in February 2019 will be the first release that does not support php 5.5
 
For php 5.6 our TARGET is to end support in September 2019 (Oct release would support php 7.0+).
(logged-in users can click thumbs up if they thought this blog post was useful) (login to vote or to comment)

Using CiviCRM form processor extension to handle form submissions from an external website

Published
2018-08-08 06:03
Written by

In this blog post I want to show how you could use the new form processor extension to handle form submissions from an external website.

My (imaginary) organisation provides buddies for young people and the form on our website is submitted when somebody is interested in becoming a buddy for a teenager. We ask for the name, address, e-mail, telephone number, birth date and gender.

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

Announcing 4.☔ LTS

Published
2018-04-01 04:55
Written by
You may have read the recent announcement of CiviCRM 5.0 and its revolutionary new method of numbering CiviCRM releases.
 
Meanwhile, those who prefer greater stability can use the Long-Term Support (LTS) releases of CiviCRM.  LTS users won't be left behind in the version numbering progress, however.
 
(logged-in users can click thumbs up if they thought this blog post was useful) (login to vote or to comment)

v5.0: The littlest biggest increment

Published
2018-03-13 17:36
Written by

During this coming April, you may notice something peculiar on the civicrm.org download page -- instead of 4.7.32, you'll see a jump up to 5.0.0. Does this mean that CiviCRM is finally implementing a personal voice-assistant to take-down Amazon Echo? Nope. Maybe it means open-season on changes, granting a general license to break backward-compatibility? Nope. 5.0 is boring. It's basically the same thing as 4.7. It's just a big number with a little change.

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

Prototype of form-processor and action-provider extension

Published
2018-03-13 08:38
Written by

I have finished a working prototype of the form-processor and action-provider extension. See my previous blog post for where the idea came from.

Below I will explain what you can do with this extension. Lets assume we have an external website where students can signup to volunteer in a summer program. When a student has signed up we want this data to be present in CiviCRM and the student added to the group student volunteers.

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

My experencies at the Sprint: Form Processor and Action Provider extension

Published
2018-02-12 05:03
Written by

Last week we had a Sprint in the wonderful city of Brussels. This blog post is a recap of what I have been up to.

Form Processor

I started the sprint to work on a new extension the form processor.  This idea came to my mind as I had a few clients at which I had to develop a custom api for data coming from their website (in those cases CiviCRM was separated from the website). And my idea was that I wanted to give system administrator and implementers a tool in which they could create those kind of API by themselves. So the form processor was born.

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

CiviCon UK Sponsor post: Registrations in seconds, logins without passwords

Published
2017-09-15 05:39
Written by

A big thank you to all our CiviCON UK Sponsors. Here's a special post from Gold Sponsor Yoti:

DOING THINGS DIFFERENTLY: REGISTRATIONS IN SECONDS, LOGINS WITHOUT PASSWORDS AND MINIMISING DATA.

Over the last 15 years I’ve probably been responsible for around 50 or so websites or microsites that in some way or another have tried to gather people’s data.  Either to enter into an event, join a forum or buy something.  And like most other marketeers I’ve been obsessed by two things.  Funnels and Data. i.e how easily are people signing up and how much do I now know about my customers.  I’ve always known that by asking people for more information there was a danger people would drop out of my acquisition funnel but we marketeers are hungry for data. We want it all and we want it now.

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

The Month-Long Freeze and Giving Some Love to the RC's

Published
2017-08-08 09:37
Written by

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.

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

CiviProxy and CiviMcRestFace sprint in Bonn

Published
2017-07-21 01:40
Written by

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?

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

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)