24 January, 2018
By totten
Filed under Tools, API, Architecture, WordPress

The civicrm-setup library aims to replace the CiviCRM installer. Following the December/January iteration, it's available for use as a CLI installer and as a web-based WordPress installer.

What's wrong with the old installer?

  • Entropy: The main installer's code has grown messy. For example, it mixes...
Read more
23 January, 2018
Filed under Tools, API, CiviCRM

The power of Workplace by Facebook is now available for CiviCRM users!

New button in the User Profile opens up a communication channel within CiviCRM for work chat, team groups, project updates, instant messages or alerts (see pic. 1 below). The functionality will noticeably improve communication across organization inside or outside the office as it falls back on all the strengths Facebook has to offer, the most prominent being the user-friendly familiar interface and secure collaboration.

pict. 1 - runing Workplace by Facebook from CiviCRM

Workplace by Facebook is your own version of Facebook which is a really convenient tool for internal communication. There are enough...

Read more
25 October, 2017
Filed under API, CiviCRM, Extensions

I just published a small extension (funded by Amnesty International Vlaanderen) to prevent the REST API requests still coming through when the site is in maintenance mode.

The extension is CiviCRM native and the structure is based on the CiviCRM User Framework. However, as I have little to no experience with a CMS other than Drupal, I have only implemented the Drupal module. Would be really great if others could add the same trick for the other CMS's!

Logic:

  • check if API request originated from REST (api_key and key in the request)
  • if yes, check if CMS is in maintenance mode
  • if yes, throw API_Exception with error code maintenance_mode

The extension can be found here.

Read more
09 October, 2017

One of the main reasons our partners choose to set up a CiviCRM application is its extended functionality developed specifically for managing all contacts, communications, records and activities of an organization in one place.

Yet one of our clients put a broader meaning into the concept single CiviCRM-based solution and requested new functionality that would allow users to manage their emails (check and read incoming emails, compose new messages, etc.) from the CRM instead of shifting between different applications.

In other words, the client requested an inbuilt email client for CiviCRM that would prevent the staff from wasting time by tediously switching between CRM and Emails.

 

... 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
17 April, 2017
Filed under API, Make it happen

We’ve talked about and have made some progress on APIv4. Along with a native form builder and an improved UI, a new version of CiviCRM’s API was identified as a key objective our roadmap. While it may be the least glamorous of the three, it is an increasingly important and powerful feature within CiviCRM. And it’s time for an update.

Api version 4 represents an important leap forward for the CiviCRM platform. An api is an "Application Program Interface" used to create, read, update or delete information in the database. It is used by extensions, 3rd-party integrations, customizations, and increasingly by the core CiviCRM software itself. CiviCRM currently ships with api version 3, which has many excellent features but also some limitations which hinder development of api-based applications.

Broadly speaking, APIv4 will allow organizations using CiviCRM to:

  • Better...

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
11 March, 2016

Our customer Werk met Zin (Network of job coaches in Flanders) has a Wordpress site and uses CiviCRM to manage their relations and cases. On their Wordpress site they allow users to register for some events, which they solve with the civicrm event info and registration pages.

However, they also allow an individual to request the start of individual job coaching with a form. This should end up in CiviCRM as a special activity with the fields on the website form as custom data. And the Wordpress website is on another server, although that would not make such a big difference. Anyway, we (as in CiviCooP) developed a specific solution that takes the data from the Wordpress website on server A and sends it to CiviCRM on server B. The solution has a Wordpress part and a CiviCRM part.

The Wordpress plugin

This plugin can be found at...

Read more
09 March, 2016
By totten
Filed under API, Architecture, Extensions

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.

Testing CiviCRM is trickier than testing a basic library -- tests may involve system services (from Civi or the CMS), and CiviCRM developers may use different CMS's, file structures, and URLs. This problem can be mitigated by creating more configuration files (for each extension, test-suite, or installation), but that grows unwieldy with multiple extensions.

We've published some updated documentation and tooling to support tests in extensions. The remainder of this post assumes that you have...

Read more
06 March, 2016
Filed under API

Mark your calendars, the api team will be doing a webinar introducing api version 4 on Thurs March 24 12:15pm EST.

For anyone that's developed an extension or other integration with CiviCRM, you know how important a good api is. CiviCRM's api version 3 is incredibly useful - it's mature, stable, tested, robust, and even has a handy gui explorer that writes code for you!

Great as it is, api v3 is now 5 years old, and while it may well last another 5 years before being retired, it's time to think about the future. Over the last 5 years it's managed to build up a fair amount of cruft and oddities, which we keep around for the sake of backward-compatability. Bumping up to version 4 represents a chance to start with a clean slate, lose the cruft, and embrace new technologies and techniques.

As of this writing, api v4 is in its infancy. It supports a single entity (Participant, which I picked for no other reason than it's one of the cruftiest and worst-supported by...

Read more