*/
class CRM_Contribute_BAO_Query extends CRM_Core_BAO_Query {
- static $_contribOrSoftCredit = "only_contribs";
+ public static $_contribOrSoftCredit = "only_contribs";
- static $_contribRecurPayment = NULL;
+ public static $_contribRecurPayment = NULL;
/**
* Function get the searchable fields for contribution.
* Associative array of contribution fields
*/
public static function getFields($checkPermission = TRUE) {
- if (!isset(\Civi::$statics[__CLASS__]) || !isset(\Civi::$statics[__CLASS__]['fields']) || !isset(\Civi::$statics[__CLASS__]['contribution'])) {
- $fields = CRM_Contribute_BAO_Contribution::exportableFields($checkPermission);
+ if (!isset(\Civi::$statics[__CLASS__]) || !isset(\Civi::$statics[__CLASS__]['fields']) || !isset(\Civi::$statics[__CLASS__]['fields']['contribution'])) {
+ // Adding fields with some care as those without unique names could clobber others.
+ // Refer to CRM_Contribute_Form_SearchTest for existing tests ... and to add more!
+ $testedRecurFields = array_fill_keys(['contribution_recur_trxn_id', 'contribution_recur_processor_id', 'contribution_recur_payment_processor_id'], 1);
+ $recurFields = array_intersect_key(CRM_Contribute_DAO_ContributionRecur::fields(), $testedRecurFields);
+ $fields = array_merge($recurFields, CRM_Contribute_BAO_Contribution::exportableFields($checkPermission));
CRM_Contribute_BAO_Contribution::appendPseudoConstantsToFields($fields);
unset($fields['contribution_contact_id']);
\Civi::$statics[__CLASS__]['fields']['contribution'] = $fields;
case 'contribution_recur_processor_id':
case 'contribution_recur_trxn_id':
- $fieldName = str_replace('contribution_recur_', '', $name);
- $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_contribution_recur.{$fieldName}",
+ $spec = $fields[$name];
+ $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause($spec['where'],
$op, $value, "String"
);
- $recurFields = CRM_Contribute_DAO_ContributionRecur::fields();
- $query->_qill[$grouping][] = ts("Recurring Contribution %1 %2 '%3'", [1 => $recurFields[$fieldName]['title'], 2 => $op, 3 => $value]);
- $query->_tables['civicrm_contribution_recur'] = $query->_whereTables['civicrm_contribution_recur'] = 1;
+ $query->_qill[$grouping][] = ts("Recurring Contribution %1 %2 '%3'", [1 => $fields[$name]['title'], 2 => $op, 3 => $value]);
+ $query->_tables[$spec['table_name']] = $query->_whereTables[$spec['table_name']] = 1;
return;
case 'contribution_recur_payment_made':
default:
//all other elements are handle in this case
$fldName = substr($name, 13);
- CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes);
- $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_contribution.financial_type_id", 'IN', array_keys($financialTypes), 'String');
if (!isset($fields[$fldName])) {
// CRM-12597
CRM_Core_Session::setStatus(ts(
FALSE, [
'class' => 'crm-select2',
'multiple' => 'multiple',
- 'placeholder' => ts('- any -')
+ 'placeholder' => ts('- any -'),
]
);
}