}
// get financial_type
- if (CRM_Utils_Array::value('financial_type', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['financial_type'])) {
$query->_select['financial_type'] = "civicrm_financial_type.name as financial_type";
$query->_element['financial_type'] = 1;
$query->_tables['civicrm_contribution'] = 1;
}
// get accounting code
- if (CRM_Utils_Array::value( 'accounting_code', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['accounting_code'])) {
$query->_select['accounting_code'] = "civicrm_financial_account.accounting_code as accounting_code";
$query->_element['accounting_code'] = 1;
$query->_tables['civicrm_accounting_code'] = 1;
$query->_tables['civicrm_financial_account'] = 1;
}
- if (CRM_Utils_Array::value('contribution_note', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['contribution_note'])) {
$query->_select['contribution_note'] = "civicrm_note.note as contribution_note";
$query->_element['contribution_note'] = 1;
$query->_tables['contribution_note'] = 1;
}
- if (CRM_Utils_Array::value('contribution_batch', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['contribution_batch'])) {
$query->_select['contribution_batch'] = "civicrm_batch.title as contribution_batch";
$query->_element['contribution_batch'] = 1;
$query->_tables['contribution_batch'] = 1;
}
// get contribution_status
- if (CRM_Utils_Array::value('contribution_status_id', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['contribution_status_id'])) {
$query->_select['contribution_status_id'] = "contribution_status.value as contribution_status_id";
$query->_element['contribution_status_id'] = 1;
$query->_tables['civicrm_contribution'] = 1;
}
// get contribution_status label
- if (CRM_Utils_Array::value('contribution_status', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['contribution_status'])) {
$query->_select['contribution_status'] = "contribution_status.label as contribution_status";
$query->_element['contribution_status'] = 1;
$query->_tables['civicrm_contribution'] = 1;
}
// get payment instruments
- if (CRM_Utils_Array::value('payment_instrument', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['payment_instrument'])) {
$query->_select['contribution_payment_instrument'] = "payment_instrument.name as contribution_payment_instrument";
$query->_element['contribution_payment_instrument'] = 1;
$query->_tables['civicrm_contribution'] = 1;
$query->_tables['contribution_payment_instrument'] = 1;
}
- // get honor contact name
- if (CRM_Utils_Array::value('honor_contact_name', $query->_returnProperties)) {
- $query->_select['contribution_honor_contact_name'] = "civicrm_contact_c.display_name as contribution_honor_contact_name";
- $query->_element['contribution_honor_contact_name'] = 1;
- $query->_tables['civicrm_contribution'] = 1;
- $query->_tables['contribution_honor_contact_name'] = 1;
- }
-
- // get honor type label
- if (CRM_Utils_Array::value('honor_type_label', $query->_returnProperties)) {
- $query->_select['contribution_honor_type_label'] = "honor_type.label as contribution_honor_type_label";
- $query->_element['contribution_honor_type_label'] = 1;
- $query->_tables['civicrm_contribution'] = 1;
- $query->_tables['contribution_honor_type_label'] = 1;
- }
-
- // get honor contact email
- if (CRM_Utils_Array::value('honor_contact_email', $query->_returnProperties)) {
- $query->_select['contribution_honor_contact_email'] = "honor_email.email as contribution_honor_contact_email";
- $query->_element['contribution_honor_contact_email'] = 1;
- $query->_tables['civicrm_contribution'] = 1;
- $query->_tables['contribution_honor_contact_email'] = 1;
- }
-
- // get honor contact id
- if (CRM_Utils_Array::value('honor_contact_id', $query->_returnProperties)) {
- $query->_select['contribution_honor_contact_id'] = "civicrm_contribution.honor_contact_id as contribution_honor_contact_id";
- $query->_element['contribution_honor_contact_id'] = 1;
- $query->_tables['civicrm_contribution'] = 1;
- }
-
-
- if (CRM_Utils_Array::value('check_number', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['check_number'])) {
$query->_select['contribution_check_number'] = "civicrm_contribution.check_number as contribution_check_number";
$query->_element['contribution_check_number'] = 1;
$query->_tables['civicrm_contribution'] = 1;
}
- if (CRM_Utils_Array::value('contribution_campaign_id', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['contribution_campaign_id'])) {
$query->_select['contribution_campaign_id'] = 'civicrm_contribution.campaign_id as contribution_campaign_id';
$query->_element['contribution_campaign_id'] = 1;
$query->_tables['civicrm_contribution'] = 1;
}
// LCD 716
- if (CRM_Utils_Array::value('soft_credit_name', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['soft_credit_name'])) {
$query->_select['contribution_soft_credit_name'] = "civicrm_contact_d.display_name as contribution_soft_credit_name";
$query->_element['contribution_soft_credit_name'] = 1;
$query->_tables['civicrm_contribution'] = 1;
$query->_tables['civicrm_contribution_soft_contact'] = 1;
}
- if (CRM_Utils_Array::value('soft_credit_email', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['soft_credit_email'])) {
$query->_select['contribution_soft_credit_email'] = "soft_email.email as contribution_soft_credit_email";
$query->_element['contribution_soft_credit_email'] = 1;
$query->_tables['civicrm_contribution'] = 1;
$query->_tables['civicrm_contribution_soft_email'] = 1;
}
- if (CRM_Utils_Array::value('soft_credit_phone', $query->_returnProperties)) {
+ if (!empty($query->_returnProperties['soft_credit_phone'])) {
$query->_select['contribution_soft_credit_email'] = "soft_phone.phone as contribution_soft_credit_phone";
$query->_element['contribution_soft_credit_phone'] = 1;
$query->_tables['civicrm_contribution'] = 1;
static function where(&$query) {
$grouping = NULL;
foreach (array_keys($query->_params) as $id) {
- if (!CRM_Utils_Array::value(0, $query->_params[$id])) {
+ if (empty($query->_params[$id][0])) {
continue;
}
if (substr($query->_params[$id][0], 0, 13) == 'contribution_' || substr($query->_params[$id][0], 0, 10) == 'financial_') {
$query->_tables['civicrm_contribution'] = $query->_whereTables['civicrm_contribution'] = 1;
return;
- case 'financial_type_id':
- case 'financial_type':
- $cType = $value;
+ case 'financial_type_id':
+ case 'financial_type':
+ // The financial_type_id might be an array (from aggregate contributions custom search)
+ // In this case, we need to change the query.
+ if (is_array($value)) {
+ $val = array();
+ // Rebuild the array to get the data we're interested in as array
+ // values not array keys.
+ foreach ($value as $k => $v) {
+ if ($v) {
+ $val[] = $k;
+ }
+ }
+ if (count($val) > 0) {
+ // Overwrite $value so it works with an IN where statement.
+ $op = 'IN';
+ $value = '(' . implode(',', $val) . ')';
+ }
+ else {
+ // If we somehow have an empty array, just return
+ return;
+ }
+ }
+
$types = CRM_Contribute_PseudoConstant::financialType();
+
+ // Ensure we have a sensible string to display to the user.
+ $names = array();
+ if (isset($val) && is_array($val)) {
+ foreach($val as $id) {
+ $names[] = CRM_Utils_Array::value($id, $types);
+ }
+ }
+ else {
+ $names[] = $types[$value];
+ }
+
$query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_contribution.financial_type_id",
$op, $value, "Integer"
);
- $query->_qill[$grouping ][] = ts('Financial Type - %1', array(1 => $types[$cType]));
+ $query->_qill[$grouping][] = ts('Financial Type %1', array(1 => $op)) . ' ' . implode(' ' . ts('or') . ' ', $names);
$query->_tables['civicrm_contribution'] = $query->_whereTables['civicrm_contribution'] = 1;
return;
$query->_tables['civicrm_contribution'] = $query->_whereTables['civicrm_contribution'] = 1;
return;
- case 'contribution_in_honor_of':
- $name = trim($value);
- $newName = str_replace(',', " ", $name);
- $pieces = explode(' ', $newName);
- foreach ($pieces as $piece) {
- $value = $strtolower(CRM_Core_DAO::escapeString(trim($piece)));
- $value = "'%$value%'";
- $sub[] = " ( contact_b.sort_name LIKE $value )";
- }
-
- $query->_where[$grouping][] = ' ( ' . implode(' OR ', $sub) . ' ) ';
- $query->_qill[$grouping][] = ts('Honor name like - \'%1\'', array(1 => $name));
- $query->_tables['civicrm_contact_b'] = $query->_whereTables['civicrm_contact_b'] = 1;
- $query->_tables['civicrm_contribution'] = $query->_whereTables['civicrm_contribution'] = 1;
- return;
-
case 'contribution_status':
case 'contribution_status_id':
if (is_array($value)) {
AND option_group_payment_instrument.id = payment_instrument.option_group_id ) ";
break;
- case 'civicrm_contact_b':
- $from .= " $side JOIN civicrm_contact contact_b ON (civicrm_contribution.honor_contact_id = contact_b.id )";
- break;
-
case 'contribution_status':
$from = " $side JOIN civicrm_option_group option_group_contribution_status ON (option_group_contribution_status.name = 'contribution_status')";
$from .= " $side JOIN civicrm_option_value contribution_status ON (civicrm_contribution.contribution_status_id = contribution_status.value
civicrm_contribution.id = civicrm_note.entity_id )";
break;
- case 'contribution_honor_contact_name':
- $from .= " $side JOIN civicrm_contact civicrm_contact_c ON (civicrm_contribution.honor_contact_id = civicrm_contact_c.id )";
- break;
-
- case 'contribution_honor_contact_email':
- $from .= " $side JOIN civicrm_email as honor_email ON (civicrm_contribution.honor_contact_id = honor_email.contact_id AND honor_email.is_primary = 1 )";
- break;
-
- case 'contribution_honor_type_label':
- $from = " $side JOIN civicrm_option_group option_group_honor_type ON ( option_group_honor_type.name = 'honor_type')";
- $from .= " $side JOIN civicrm_option_value honor_type ON (civicrm_contribution.honor_type_id = honor_type.value
- AND option_group_honor_type.id = honor_type.option_group_id ) ";
- break;
-
case 'contribution_membership':
$from = " $side JOIN civicrm_membership_payment ON civicrm_membership_payment.contribution_id = civicrm_contribution.id";
$from .= " $side JOIN civicrm_membership ON civicrm_membership_payment.membership_id = civicrm_membership.id ";
CRM_Core_PseudoConstant::get('CRM_Contribute_DAO_Contribution', 'currency', array('labelColumn' => 'name'))
);
+ // CRM-13848
$form->add('select', 'financial_type_id',
ts('Financial Type'),
- array(
- '' => ts('- any -')) +
- CRM_Contribute_PseudoConstant::financialType()
+ CRM_Contribute_PseudoConstant::financialType(), FALSE,
+ array('id' => 'financial_type_id', 'multiple' => 'multiple', 'title' => ts('- select -'))
);
$form->add('select', 'contribution_page_id',
$form->addYesNo('contribution_thankyou_date_is_not_null', ts('Thank-you sent?'));
$form->addYesNo('contribution_receipt_date_is_not_null', ts('Receipt sent?'));
- // Add fields for honor search
- $form->addElement('text', 'contribution_in_honor_of', ts("In Honor Of"));
-
$form->addYesNo('contribution_pay_later', ts('Contribution is Pay Later?'));
$form->addYesNo('contribution_recurring', ts('Contribution is Recurring?'));
$form->setDefaults(array('contribution_test' => 0));
}
- static function addShowHide(&$showHide) {
- $showHide->addHide('contributeForm');
- $showHide->addShow('contributeForm_show');
- }
-
static function searchAction(&$row, $id) {
}
static function tableNames(&$tables) {
// Add contribution table
- if (CRM_Utils_Array::value('civicrm_product', $tables)) {
+ if (!empty($tables['civicrm_product'])) {
$tables = array_merge(array('civicrm_contribution' => 1), $tables);
}
- if (CRM_Utils_Array::value('civicrm_contribution_product', $tables) &&
+ if (!empty($tables['civicrm_contribution_product']) &&
!CRM_Utils_Array::value('civicrm_product', $tables)) {
$tables['civicrm_product'] = 1;
}