Presentation is loading. Please wait.

Presentation is loading. Please wait.

CiviCRM Developer Training Extend and customize CiviCRM.

Similar presentations

Presentation on theme: "CiviCRM Developer Training Extend and customize CiviCRM."— Presentation transcript:

1 CiviCRM Developer Training Extend and customize CiviCRM

2 Introduction Matthew Briney ( Chang Xiao ( IRC: changx Forum changx (xcf33)

3 Development Environment Tools for Local Development – LAMP Stack Acquia Dev Desktop (Mac & Win) MySQL Workbench – ERD Diagrams

4 Cron Jobs =user&pass=pass&key=key

5 Develop For CiviCRM Topics CiviCRM Architecture Public APIs Hooks

6 CiviCRM Architecture DAO BAO

7 Directory Structure

8 Example CRM/Mailing/BAO/Job.php corresponds to: CRM_Mailing_BAO_Job Snippet: civicrm_initialize(); require_once(‘CRM/Mailing/BAO/Job.php’); $mailing_job = new CRM_Mailing_BAO_Job(); $mailing_job->id = 45 $mailing_job->getMailingSize();

9 How to Customize CiviCRM Write a module (API, hooks) Theme overrides (API, Smarty) Custom report Custom search Custom payment gateway

10 Public APIs CiviCRM+Public+APIs CiviCRM+Public+APIs Current Version: V2 Upcoming Version: V3 (CiviCRM 3.4/4.0)

11 Public API For 3.4/4.0 Look for civicrm.settings.php and change the API Define(‘CIVICRM_API_VERSION’, ‘3’); OR explicitly specify in the $param of the API cal $param = array( ‘version’ => ‘2’, );

12 Invoking the API Template level (smarty) REST interface AJAX ( AJAX+Interface) PHP (most common)

13 API Call (Template) {crmAPI entity="nameobject" action="namemethod" var="namevariable" extraparam1="aa" extraparam2="bb”} entity (contact, contribution) action (get, search) [retrieving method] var smarty template variable name extraparam parameters from the API documentation return fields to return.

14 API Call (Template) Example {crmAPI entity='contact' action="search" var="contacts”} {foreach from=$contacts item=contact} {$contact.sort_name} {/foreach} {crmAPI entity='contact' action="search" var="contacts" country="France" contact_type="Individual" return ="sort_name,email"}

15 API (REST Interface) xtern/rest.php?q=civicrm/ xtern/rest.php?q=civicrm/ { "@context": "", "@type": "ImageObject", "contentUrl": "", "name": "API (REST Interface) xtern/rest.php q=civicrm/ xtern/rest.php q=civicrm/

16 API PHP Default API Most reliable Called by modules Snippet: $params = array( 'contact_id' => 10, 'return_custom_N' => 1 ); $retrieved = civicrm_contact_get( $params ); if ( civicrm_error( $retrieved ) ) { return $retrieved['error_message']; } else { print_r($retrieved); }

17 API V3 Entity-action model Should you use it?

18 Live DEMO API Explorer Access it at: /civicrm/ajax/doc#explorer For version 3.4/4.0

19 CiviCRM Hooks CiviCRM+hook+specification#CiviCRMhookspecificatio n CiviCRM+hook+specification#CiviCRMhookspecificatio n Fires before or after an action or at specific time Have specific naming conventions.

20 Example 1 Snippet: (send an email when the contact is created) my_module_civicrm_post( $op, $objectName, $objectId, &$objectRef ) { if($op == ‘create’) { if($objectName == ‘Individual’) { // send the new contact an email mail($objectRef->email, ‘hi, welcome’, ‘Welcome to the site’); } } }

21 function my_module_civicrm_alterMailParams(&$params) { $token_params = array( 'subject' => $params['subject'], 'from' => $params['from'], ); // do token replacement here $tracking = array( 'utm_source' => token_replace(variable_get('civitracker_mailing_pattern_source', '[sitename]'), 'civitracker_mail', NULL, '[', ']', $token_params), 'utm_campaign' => token_replace(variable_get('civitracker_mailing_pattern_campaign', '[date]'), 'civitracker_mail', NULL, '[', ']', $token_params), 'utm_medium' => 'email', ); if(variable_get('civitracker_mailing_toggle', 1) == 1) { if(isset($params['html']) && $params['html'] != '') { $params['html'] = civitracker::url_append($params['html'], $tracking); } if(isset($params['text']) && $params['text'] != '') { $params['text'] = civitracker::url_append($params['text'], $tracking); }

22 Hands on exercise

23 Other useful functions Single Value Query: $query = “Select Blah FROM Blah” CRM_Core_DAO::singleValueQuery( $query );

24 Example (save a record) Create a new dashlet Snippet: civicrm_initiate(); require_once(‘CRM/Core/DAO/Dashboard.php’); $dashboard = new CRM_Core_DAO_Dashboard();$dashboard- >domain_id = 1; $dashboard->label = $title; $dashboard->url = ‘path/to/dashlet’; $dashboard->permission = 'view civicrm_tools dashlets’; $dashboard->is_active = 1; $dashboard->created_date = date('Y-m_d h:i:s'); $dashboard->save();

25 Custom Reports

26 Custom+Reports+(How+to) Custom+Reports+(How+to Grab a report that you wish to copy /var/www/htdocs/sites/all/modules/civicrm/CRM/Report/Form/Contact Create a custom report template and copy the file into /var/www/htdocs/custom_templates/CRM/Report/Form/Contact Rename the file name and class name AreaDemoSummary.php CRM_Report_Form_Contact_AreaDemoSummary extends CRM_Report_Form Copy template.tpl file from civicrm/templates/CRM/Report/Form/Contact/Summary.tpl to /var/www/htdocs/custom_templates/CRM/Report/Form/Contact/AreaDemoSummary.tpl

27 Custom Reports Register the report template at civicrm/admin/report/register&reset=1 Make sure you have custom template directory set up at civicrm/admin/setting/path&reset=1

28 Anatomy of a Report __construct() select() from() where()

29 Field Definition __construct() Define display columns, filters

30 select()

31 from()

32 where()

33 groupBy() orderBy() postProcess()

34 Example Going through examples.

35 Custom Searches

36 Process Build search file Place file in custom search folder Register report with CiviCRM /sites/all/modules/civicrm/CRM/Contact/Form/Search/Cust om

37 Documentation Custom+Search+Components Custom+Search+Components /sites/all/modules/civicrm/CRM/contact/Form/Search/Cus tom

38 Template Override

39 Template Structure Templates located in: /civicrm/templates/CRM Organized by feature

40 Overriding Templates Copy the file from /civicrm/templates/CRM to the same folder structure in /sites/all/civicrm_templates/CRM

41 Identify the page you want to edit (template) Find the correct template file Copy the template directory outside of /sites/all/modules/civicrm Set the configuration settings at adminster->global- >directories Make the changes

Download ppt "CiviCRM Developer Training Extend and customize CiviCRM."

Similar presentations

Ads by Google