Fix for contribution api filter
[civicrm-core.git] / CRM / Contribute / BAO / Query.php
index c0d5791315b530c3a5c185846bf984fc7eba3e09..c61f3c587356feb4f550f475fde75f088d15a3c7 100644 (file)
@@ -3,7 +3,7 @@
  +--------------------------------------------------------------------+
  | 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$
- *
  */
 class CRM_Contribute_BAO_Query {
 
   /**
-   * Static field for all the export/import contribution fields
+   * Static field for all the export/import contribution fields.
    *
    * @var array
    */
@@ -63,7 +62,7 @@ class CRM_Contribute_BAO_Query {
   }
 
   /**
-   * If contributions are involved, add the specific contribute fields
+   * If contributions are involved, add the specific contribute fields.
    *
    * @param $query
    *
@@ -319,7 +318,15 @@ class CRM_Contribute_BAO_Query {
         $query->_tables['civicrm_contribution'] = $query->_whereTables['civicrm_contribution'] = 1;
         return;
 
+      case 'financial_type':
+      case 'contribution_page':
+      case 'payment_instrument':
+      case 'contribution_payment_instrument':
+      case 'contribution_status':
+        $name .= '_id';
       case 'financial_type_id':
+      case 'payment_instrument_id':
+      case 'contribution_payment_instrument_id':
       case 'contribution_page_id':
       case 'contribution_status_id':
       case 'contribution_id':
@@ -328,6 +335,7 @@ class CRM_Contribute_BAO_Query {
       case 'contribution_source':
       case 'contribution_trxn_id':
       case 'contribution_check_number':
+      case 'contribution_contact_id':
       case (strpos($name, '_amount') !== FALSE):
       case (strpos($name, '_date') !== FALSE):
         $qillName = $name;
@@ -339,11 +347,13 @@ class CRM_Contribute_BAO_Query {
               'contribution_source',
               'contribution_trxn_id',
               'contribution_check_number',
+              'contribution_payment_instrument_id',
+              'contribution_contact_id',
             )
           )
         ) {
           $name = str_replace('contribution_', '', $name);
-          if (!in_array($name, array('source', 'id'))) {
+          if (!in_array($name, array('source', 'id', 'contact_id'))) {
             $qillName = str_replace('contribution_', '', $qillName);
           }
         }
@@ -360,48 +370,6 @@ class CRM_Contribute_BAO_Query {
         $query->_tables['civicrm_contribution'] = $query->_whereTables['civicrm_contribution'] = 1;
         return;
 
-      case 'financial_type':
-        $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause($fields[$name]['where'], $op, $value, 'String');
-        CRM_Core_Error::debug('$query', $query->_where[$grouping]);
-        list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contribute_DAO_Contribution', $name, $value, $op);
-        $query->_qill[$grouping][] = ts('%1 %2 %3', array(1 => $fields[$name]['title'], 2 => $op, 3 => $value));
-        $query->_tables['civicrm_contribution'] = $query->_whereTables['civicrm_contribution'] = 1;
-        $query->_tables['civicrm_financial_type'] = $query->_whereTables['civicrm_financial_type'] = 1;
-        return;
-
-      case 'contribution_page':
-        $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause($fields[$name]['where'], $op, $value, 'String');
-        list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contribute_DAO_Contribution', $name, $value, $op);
-        $query->_qill[$grouping][] = ts('%1 %2 %3', array(1 => $fields[$name]['title'], 2 => $op, 3 => $value));
-        $query->_tables['civicrm_contribution_page'] = $query->_whereTables['civicrm_contribution_page'] = 1;
-        $query->_tables['civicrm_contribution'] = $query->_whereTables['civicrm_contribution'] = 1;
-        return;
-
-      case 'contribution_payment_instrument':
-      case 'contribution_payment_instrument_id':
-        $name = str_replace('contribution_', '', $name);
-      case 'payment_instrument':
-      case 'payment_instrument_id':
-        if ($name == 'payment_instrument') {
-          $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("contribution_payment_instrument.label", $op, $value);
-        }
-        else {
-          $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("contribution_payment_instrument.value", $op, $value, 'Int');
-        }
-        list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contribute_DAO_Contribution', 'payment_instrument_id', $value, $op);
-        $query->_qill[$grouping][] = ts('%1 %2 %3', array(1 => $fields['payment_instrument']['title'], 2 => $op, 3 => $value));
-        $query->_tables['civicrm_contribution'] = $query->_whereTables['civicrm_contribution'] = 1;
-        $query->_tables['contribution_payment_instrument'] = $query->_whereTables['contribution_payment_instrument'] = 1;
-        return;
-
-      case 'contribution_status':
-        $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("$name.label", $op, $value, 'String');
-        list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contribute_DAO_Contribution', $name, $value, $op);
-        $query->_qill[$grouping][] = ts('%1 %2 %3', array(1 => $fields[$name]['title'], 2 => $op, 3 => $value));
-        $query->_tables['civicrm_contribution'] = $query->_whereTables['civicrm_contribution'] = 1;
-        $query->_tables[$name] = $query->_whereTables[$name] = 1;
-        break;
-
       case 'contribution_pcp_made_through_id':
       case 'contribution_soft_credit_type_id':
         $qillName = $name;
@@ -852,7 +820,7 @@ class CRM_Contribute_BAO_Query {
   }
 
   /**
-   * Add all the elements shared between contribute search and advnaced search
+   * Add all the elements shared between contribute search and advnaced search.
    *
    *
    * @param CRM_Core_Form $form
@@ -1020,7 +988,7 @@ class CRM_Contribute_BAO_Query {
   }
 
   /**
-   * Add the where for dates
+   * Add the where for dates.
    *
    * @param array $values
    *   Array of query values.
@@ -1063,4 +1031,5 @@ class CRM_Contribute_BAO_Query {
       'contribution_recur_failure_retry_date' => ts('Failed Recurring Contribution Retry Date'),
     );
   }
+
 }