CIVIevent, faire un template de listing

Qu’est ce que CIVICRM et CIVIevent

  1. CIVICRM est comme une partie de son nom l’indique: un CRM ou Customer Relationship Management. le système en lui même est gratuit et en open source, il permet de faire un suivi facile de contacts, de structures.
  2. Outre le fait que CIVICRM permet la gestion aisée de contacts (sous forme répertoire), il permet aussi de créer ses propres événements et leur gestion (avec des possibilités de paiement en ligne).

Voici donc un petit tutorial pour générer un joli listing de participants sur son site. Plus développé que les modèles d’origine:

  • Name only
  • Name and Email
  • name, Status and Register date

Que va t-on faire ???

La première chose à faire, lorsqu’on développe ou autre est de se poser la question, que faire ? Ce qui permet de se poser une autre question essentielle.. par où commencer

Donc le début pour notre cas, est de réutiliser des classes et templates déjà créés (ce n’est pas la peine de ré-inventer la roue) pour rajouter nom et prénom sur notre nouveau (joli) listing.

Première étape: le modèle

 Nous allons créer un nouveau modèle (appelé Gabarit dans la version française) à notre listing de participant. Pour cela il nous suffit d’aller dans la partie d’administration de CIVICRM pour choisir « gabarit de liste de participants » dans l’administration de CIVIevent ou à l’aide du lien suivant:

[url]/civicrm/admin/options/participant_listing &group=participant_listing&reset=1

 Nous allons insérer un nouveau modèle qui portera la description suivante:

CRM_Event_Page_ParticipantListing_MONMODELE

Attention le label n’est absolument pas importante (c’est pour vous) ; Par contre la DESCRIPTION est plus qu’importante, c’est elle le lien avec vos classes et modèles

Deuxième étape: Ajouter son fichier de classe

Nous allons ajouter un fichier de classe dans le dossier suivant :

« [URL]/sites/all/modules/civicrm/CRM/Event/Page/ParticipantListing ».

Pour ce faire nous allons utiliser le fichier existant pour le modifier sous notre nouveau nom.

 La modification est toute simple, nous allons réutiliser le fichier le plus proche de ce que nous voulons faire: ajouter la date d’inscription dans le fichier Name and Email

 Dupliquer le fichier NameAndEmail.php et renommez le sous le nom NameAndEmailDate.php

Remarques: vous avez vu, nous avons rajouté juste Date

 Maintenant modifions le code d’entête de la classe de ce nouveau fichier pour ajouter le bon nom de classe.

class CRM_Event_Page_ParticipantListing_NameAndEmailDate extends CRM_Core_Page {

 Modifier maintenant la requête SQL, avec ce que vous avez besoin pour envoyer dans le futur tableau qui sera utilisé par le template (prochaine grosse étape).

La modification de la requête se fait à divers endroits:

  • Dans la fonction run()
$query = "SELECT civicrm_contact.id as contact_id , civicrm_contact.display_name as name ,
civicrm_contact.sort_name as sort_name ,
civicrm_participant.id as participant_id,
civicrm_participant.status_id as status_id ,
civicrm_participant.register_date as register_date
$fromClause
$whereClause
ORDER BY $orderBy
LIMIT $offset, $rowCount";
  • Dans la boucle While
while ( $object->fetch( ) ) {
$row = array( 'id' => $object->contact_id,
'participantID' => $object->participant_id,
'name' => $object->name ,
'email' => $object->email,
'status' => CRM_Utils_Array::value( $object->status_id,$statusLookup ),
'date' => $object->register_date );
$rows[] = $row;
}
  • Dans la fonction OrderBy, vous pouvez aussi rajouter votre code. A titre d’exemple:
if ( ! $headers ) {
$headers = array( );
$headers[1] = array( 'name' => ts( 'Name' ),
'sort' => 'civicrm_contact.sort_name',
'direction' => CRM_Utils_Sort::ASCENDING );
$headers[2] = array( 'name' => ts( 'Status' ),
'sort' => 'civicrm_participant.status_id',
'direction' => CRM_Utils_Sort::DONTCARE );
$headers[3] = array( 'name' => ts( 'Register Date' ),
'sort' => 'civicrm_participant.register_date',
'direction' => CRM_Utils_Sort::DONTCARE );
}

troisième étape : Modifier le fichier.TPL

Maintenant que notre classe est créée, afin de pouvoir voir quelque chose, il nous avoir un template qui sera utilisé pour afficher notre résultat.

 Où se situe notre fichier pour modifier le Template: partie importante de ce tuto, sinon on voit rien 🙂 )

[url]/sites/all/modules/civicrm/templates/ CRM/Event/Page/ParticipantListing

Ici même démarche que la première fois avec le fichier de classe, duplication du fichier NameAndEmail.tpl

 Il suffit de rajouter dans ce fichier un champ qui fait référence à la données de la date.

<td class="crm-participant-date">{$row.date}</td>
Commentaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Time limit is exhausted. Please reload CAPTCHA.