Als web agency is het belangrijk om expert te zijn in verschillende kennisvelden.  Ook contact- en ledenbeheer (CRM) is belangrijk voor veel van onze klanten. Daarom hebben wij ervoor gekozen om officiële partner te worden van CiviCRM, een krachtig Open Source CRM-systeem dat hoofdzakelijk bedoeld is voor websites met een actieve ledenwerking. Het systeem ondersteunt de ledenorganisatie in het beheren van contactpersonen, lidmaatschappen en evenementen en nog veel meer. Calibrate is het enige web agency in België dat officiële empowering partner is van CiviCRM.

CiviCRM partner Silver

Wat houdt dit partnership in?

Een partnership met CiviCRM is meer dan enkel een financiële bijdrage leveren. Samen met andere partners ondersteunen we de groei en stabiliteit van het platform. Hiernaast leveren we ook op regelmatige basis bijdrage aan de CiviCRM en Drupal Community met code contributies en sprints.

CiviCRM team

Dev Sprints door onze Experts

Op vrijdag 22/08/2018 leverden onze CiviCRM experts: Wouter Hechtermans (CiviCRM Lead), Joris Vercammen (Drupal Developer, Search API maintainer)  en Wannes De Roy (Full Stack developer) opnieuw een bijdrage aan de CiviCRM en Drupal Community met een development sprint.
Ter voorbereiding van een sprint worden tijdens een planningsmeeting de doelstellingen van de sprint vastgelegd. De doelstelling van de afgelopen sprint waren tweeledig, enerzijds wilden we de Drupal 8 module van een update voorzien, anderzijds wilden we CiviCRM implementeren met Composer. Nadat de doelstellingen bepaald zijn, is het coderen geblazen. 

Doelstellingen sprint op 22/08/2018

Doelstelling 1: verbeteringen aan de CiviCRM Drupal 8 module:

  • Project formats werden aangepast aan de huidige Drupal coding standards
  • Code werd van duidelijkere commentaar voorzien
  • Algemene performantie verbeteringen

Doelstelling 2 - Implementatie CiviCRM met Composer:

  • Dit laat ons toe een bepaalde processen te automatiseren, het zorgt dus voor tijdsbesparing en efficiëntere samenwerking.

De gerealiseerde punten - Warning! Geek stuff ahead!

Verbeteringen CiviCRM drupal 8 module

Een overzicht van alle ingediende pull requests:

  1. Project omzetten naar de Drupal Coding standards: lees meer
  2. Gebruik maken van een eigen foutmelding vanuit de drupal-integratie module. Zo is het duidelijker waar een mogelijke fout vandaan komt: lees meer.
  3. Gebruik maken van Dependency Injection in de permission-builder class. Dit is een best-practice in drupal 8 modules en dit maak het makkelijker om later testen toe te voegen: lees meer.
  4. Bestand dat niet gebruikt werd verwijderen: lees meer.
  5. Check gezet zodat enkel authenticated gebruikers gecontroleerd worden op overeenkomstig CiviCRM contact. Dit zorgt voor een performantie-verbetering voor gebruikers die niet ingelogd zijn: lees meer.

In de maak (nog te testen & optimaliseren):

  1. Maakt het makkelijk om de logica in de `ThemeNegotatiator` te begrijpen door de if-statements te spreiden over verschillende regels en gebruik te maken van early returns om de performantie te verbeteren: lees meer.
  2. Hetzelfde wat we voor de ThemeNegotatiator gedaan hebben, maar dan voor de `CivicrmBreadcrumbBuilder’:  if-statement spreiden en gebruik maken van early returns: lees meer.
  3. Weer dezelfde insteek, het eenvoudiger maken van het begrijpen van de code door ze minder diep te indenteren en early returns toe te voegen: lees meer.

Omdat deze class een belangrijke functie heeft, hebben we ook een Unit-test toegevoegd om te garanderen dat het gedrag nog steeds correct werkt. Jammer genoeg worden deze testen (nog) niet geautomatiseerd uitgevoerd.

We moeten er daarvoor eerst in slagen om CiviCRM op een eenvoudige manier via composer te installeren.

Dat maakt het makkelijker om [TravisCI], [CircleCI] of iets anders te gebruiken om deze uit te voeren.

_CiviCRM Sessie deleten voor anonieme gebruikers (issue met varnish caching)_

Wanneer je een Drupal8-website bezoekt met Varnish, werkt Varnish-caching prima totdat je op een publieke CiviCRM pagina komt, er wordt dan een sessie geplaatst. Wanneer je de pagina verlaat door op een andere link te klikken blijft de sessie en kan Varnish niet meer gebruikt worden om de pagina's te serveren.

We moeten er dus voor zorgen dat deze CiviCRM-sessie weggehaald wordt bij het verlaten van de CiviCRM pagina. Onze oplossing hiervoor is een custom middleware service die op basis van bepaalde voorwaarde deze sessie gaat clearen nadat een gebruiker op een CiviCRM pagina is geweest.

Nog te doen

  1. civicrm-drupal-8 module z’n versie vereisten voor civicrm-core staan nog op 4.7.*. Dit zou altijd de laatste stabiele versie moeten zijn. Of een minimum van bv 5.4. Hier is al een pull request van https://github.com/civicrm/civicrm-drupal-8/pull/2 die voorsteld om self.version te gebruiken. Zo zouden de civicrm-core en de civicrm-drupal-8 versies gelijk lopen.

Implementatie CiviCRM & Composer

Hieronder de genomen stappen om CiviCRM toe te voegen aan Composer van Drupal.
We gebruiken voor sommige packages onze eigen forks met bepaalde fixes al in. Verschillende fixes zitten al in pull-request maar zijn nog niet doorgevoerd in de laatste versies van de repositories.

  1. CiviCRM database: database aangemaakt, gestart van sql file (clean install D7/ CiviCRM 5.4.0)
  2. CiviCRM toevoegen aan composer: Via post script de packages kopieren naar CiviCRM core folder. Via `cp-rf` blijft de originele civicrm-packages staan en blijft composer op de hoogte voor eventuele changes.
    Libraries heeft 'type' & 'installer-name' in hun composer.json die zorgt dat het in de Drupal libraries folder komt. Door gebruik te maken van deze libraries kan de CiviCRM codebase in de vendor map buiten de webroot staan.
  3. CiviCRM Drupal 8 module: CiviCRM drupal 8 module toevoegen aan de composer.json via GIT repository
  4. Patches uitvoeren
  5. CiviCRM extensions toevoegen via composer.json

Dit zou gaan als de CiviCRM extensions op packagist beschikbaar zijn. En samen met composer installers en het type `civicrm-ext` komt deze direct in de juiste folder die je zelf kan instellen: lees meer.

fietsen

Op zoek naar een CiviCRM Expert? Wij adviseren je graag.  Laat hier je gegevens achter of contacteer ons vrijblijvend.