<?php
-
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.5 |
+ | CiviCRM version 4.6 |
+--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2014 |
+ | Copyright CiviCRM LLC (c) 2004-2015 |
+--------------------------------------------------------------------+
| This file is a part of CiviCRM. |
| |
| GNU Affero General Public License or the licensing of CiviCRM, |
| see the CiviCRM license FAQ at http://civicrm.org/licensing |
+--------------------------------------------------------------------+
-*/
+ */
/**
*
* @package CRM
- * @copyright CiviCRM LLC (c) 2004-2014
+ * @copyright CiviCRM LLC (c) 2004-2015
* $Id$
*
*/
protected $_summary = NULL;
protected $_customGroupExtends = array(
- 'Membership'
+ 'Contact',
+ 'Individual',
+ 'Contribution',
+ 'Membership',
);
/**
- *
- */
- /**
- *
*/
- function __construct() {
+ public function __construct() {
+ $this->_autoIncludeIndexedFieldsAsOrderBys = 1;
$this->_columns = array(
'civicrm_contact' => array(
'dao' => 'CRM_Contact_DAO_Contact',
'required' => TRUE,
'no_repeat' => TRUE,
),
+ 'first_name' => array(
+ 'title' => ts('First Name'),
+ ),
+ 'middle_name' => array(
+ 'title' => ts('Middle Name'),
+ ),
+ 'last_name' => array(
+ 'title' => ts('Last Name'),
+ ),
'id' => array(
'no_display' => TRUE,
'required' => TRUE,
),
+ 'gender_id' => array(
+ 'title' => ts('Gender'),
+ ),
+ 'birth_date' => array(
+ 'title' => ts('Birth Date'),
+ ),
+ 'age' => array(
+ 'title' => ts('Age'),
+ 'dbAlias' => 'TIMESTAMPDIFF(YEAR, contact_civireport.birth_date, CURDATE())',
+ ),
+ 'contact_type' => array(
+ 'title' => ts('Contact Type'),
+ ),
+ 'contact_sub_type' => array(
+ 'title' => ts('Contact Subtype'),
+ ),
+ ),
+ 'grouping' => 'contact-fields',
+ 'order_bys' => array(
+ 'sort_name' => array(
+ 'title' => ts('Last Name, First Name'),
+ 'default' => '1',
+ 'default_weight' => '0',
+ 'default_order' => 'ASC',
+ ),
+ 'first_name' => array(
+ 'name' => 'first_name',
+ 'title' => ts('First Name'),
+ ),
+ 'gender_id' => array(
+ 'name' => 'gender_id',
+ 'title' => ts('Gender'),
+ ),
+ 'birth_date' => array(
+ 'name' => 'birth_date',
+ 'title' => ts('Birth Date'),
+ ),
'contact_type' => array(
'title' => ts('Contact Type'),
),
'title' => ts('Contact ID'),
'no_display' => TRUE,
),
- ),
- 'order_bys' => array(
- 'sort_name' => array(
- 'title' => ts('Last Name, First Name'),
+ 'gender_id' => array(
+ 'title' => ts('Gender'),
+ 'operatorType' => CRM_Report_Form::OP_MULTISELECT,
+ 'options' => CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'gender_id'),
+ ),
+ 'birth_date' => array(
+ 'title' => ts('Birth Date'),
+ 'operatorType' => CRM_Report_Form::OP_DATE,
+ ),
+ 'contact_type' => array(
+ 'title' => ts('Contact Type'),
+ ),
+ 'contact_sub_type' => array(
+ 'title' => ts('Contact Subtype'),
),
),
- 'grouping' => 'contact-fields',
),
'civicrm_membership' => array(
'dao' => 'CRM_Member_DAO_Membership',
'dao' => 'CRM_Contribute_DAO_Contribution',
'fields' => array(
'receive_date' => array(
- 'default' => TRUE
+ 'default' => TRUE,
),
'invoice_id' => array(
'title' => ts('Invoice ID'),
parent::__construct();
}
- function preProcess() {
+ public function preProcess() {
parent::preProcess();
}
- function select() {
+ public function select() {
$select = array();
$this->_columnHeaders = array();
!empty($this->_params['fields'][$fieldName])
) {
switch ($fieldName) {
- case 'credit_accounting_code' :
+ case 'credit_accounting_code':
$select[] = " CASE
WHEN {$this->_aliases['civicrm_financial_trxn']}.from_financial_account_id IS NOT NULL
THEN {$this->_aliases['civicrm_financial_account']}_credit_1.accounting_code
ELSE {$this->_aliases['civicrm_financial_account']}_credit_2.accounting_code
END AS civicrm_financial_account_credit_accounting_code ";
break;
- case 'amount' :
+
+ case 'amount':
$select[] = " CASE
WHEN {$this->_aliases['civicrm_entity_financial_trxn']}_item.entity_id IS NOT NULL
THEN {$this->_aliases['civicrm_entity_financial_trxn']}_item.amount
ELSE {$this->_aliases['civicrm_entity_financial_trxn']}.amount
END AS civicrm_entity_financial_trxn_amount ";
break;
- case 'credit_name' :
+
+ case 'credit_name':
$select[] = " CASE
WHEN {$this->_aliases['civicrm_financial_trxn']}.from_financial_account_id IS NOT NULL
THEN {$this->_aliases['civicrm_financial_account']}_credit_1.name
ELSE {$this->_aliases['civicrm_financial_account']}_credit_2.name
END AS civicrm_financial_account_credit_name ";
break;
- default :
+
+ default:
$select[] = "{$field['dbAlias']} as {$tableName}_{$fieldName}";
break;
}
$this->_select = 'SELECT ' . implode(', ', $select) . ' ';
}
- function from() {
+ public function from() {
$this->_from = NULL;
$this->_from = "FROM civicrm_contact {$this->_aliases['civicrm_contact']} {$this->_aclFrom}
ON fitem.entity_id = {$this->_aliases['civicrm_line_item']}.id AND fitem.entity_table = 'civicrm_line_item' ";
}
- function orderBy() {
+ public function orderBy() {
parent::orderBy();
// please note this will just add the order-by columns to select query, and not display in column-headers.
}
}
- function where() {
+ public function where() {
foreach ($this->_columns as $tableName => $table) {
if (array_key_exists('filters', $table)) {
foreach ($table['filters'] as $fieldName => $field) {
ELSE financial_account_civireport_credit_2.accounting_code
END";
}
- else if ($fieldName == 'credit_name') {
+ elseif ($fieldName == 'credit_name') {
$field['dbAlias'] = "CASE
WHEN financial_trxn_civireport.from_financial_account_id IS NOT NULL
THEN financial_account_civireport_credit_1.id
}
}
- function postProcess() {
+ public function postProcess() {
// get the acl clauses built before we assemble the query
$this->buildACLClause($this->_aliases['civicrm_contact']);
parent::postProcess();
*
* @return array
*/
- function statistics(&$rows) {
+ public function statistics(&$rows) {
$statistics = parent::statistics($rows);
$select = " SELECT COUNT({$this->_aliases['civicrm_financial_trxn']}.id ) as count,
while ($dao->fetch()) {
$amount[] = CRM_Utils_Money::format($dao->amount, $dao->currency);
$avg[] = CRM_Utils_Money::format(round(($dao->amount /
- $dao->count), 2), $dao->currency);
+ $dao->count), 2), $dao->currency);
}
$statistics['counts']['amount'] = array(
}
/**
- * @param $rows
+ * Alter display of rows.
+ *
+ * Iterate through the rows retrieved via SQL and make changes for display purposes,
+ * such as rendering contacts as links.
+ *
+ * @param array $rows
+ * Rows generated by SQL, with an array for each row.
*/
- function alterDisplay(&$rows) {
+ public function alterDisplay(&$rows) {
$contributionTypes = CRM_Contribute_PseudoConstant::financialType();
$paymentInstruments = CRM_Contribute_PseudoConstant::paymentInstrument();
$contributionStatus = CRM_Contribute_PseudoConstant::contributionStatus();
if ($value = CRM_Utils_Array::value('civicrm_entity_financial_trxn_amount', $row)) {
$rows[$rowNum]['civicrm_entity_financial_trxn_amount'] = CRM_Utils_Money::format($rows[$rowNum]['civicrm_entity_financial_trxn_amount'], $rows[$rowNum]['civicrm_financial_trxn_currency']);
}
+
+ //handle gender
+ if (array_key_exists('civicrm_contact_gender_id', $row)) {
+ if ($value = $row['civicrm_contact_gender_id']) {
+ $gender = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'gender_id');
+ $rows[$rowNum]['civicrm_contact_gender_id'] = $gender[$value];
+ }
+ $entryFound = TRUE;
+ }
+
+ // display birthday in the configured custom format
+ if (array_key_exists('civicrm_contact_birth_date', $row)) {
+ $birthDate = $row['civicrm_contact_birth_date'];
+ if ($birthDate) {
+ $rows[$rowNum]['civicrm_contact_birth_date'] = CRM_Utils_Date::customFormat($birthDate, '%Y%m%d');
+ }
+ $entryFound = TRUE;
+ }
+
}
}
-}
+}