CRM-14106 - Regex targeting inline conditonal statements
[civicrm-core.git] / CRM / Report / Form / Contribute / Summary.php
index 246e17c90b26fe37732818e25c4c5cc60457b91b..d15b69fae78b597c0785891209f09529dd3a89fd 100644 (file)
@@ -170,6 +170,12 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form {
             'options'  => CRM_Contribute_PseudoConstant::financialType(),
             'type' => CRM_Utils_Type::T_INT,
           ),
+          'contribution_page_id' =>
+          array('title' => ts('Contribution Page'),
+            'operatorType' => CRM_Report_Form::OP_MULTISELECT,
+            'options'  => CRM_Contribute_PseudoConstant::contributionPage(),
+            'type' => CRM_Utils_Type::T_INT,
+          ),
           'total_amount' =>
           array('title' => ts('Contribution Amount'),
           ),
@@ -225,6 +231,13 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form {
           'amount' =>
           array('title' => ts('Soft Credit Amount'),
           ),
+          'soft_credit_type_id' =>
+          array('title' => 'Soft Credit Type',
+            'operatorType' => CRM_Report_Form::OP_MULTISELECT,
+            'options' => CRM_Core_OptionGroup::values('soft_credit_type'),
+            'default' => NULL,
+            'type' => CRM_Utils_Type::T_STRING,
+          ),
           'soft_sum' =>
           array('title' => ts('Soft Credit Aggregate'),
             'type' => CRM_Report_Form::OP_INT,
@@ -423,7 +436,7 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form {
 
   function from() {
     $softCreditJoin = "LEFT";
-    if (CRM_Utils_Array::value('soft_amount', $this->_params['fields']) && 
+    if (CRM_Utils_Array::value('soft_amount', $this->_params['fields']) &&
       !CRM_Utils_Array::value('total_amount', $this->_params['fields'])) {
       // if its only soft credit stats, use inner join
       $softCreditJoin = "INNER";
@@ -502,42 +515,54 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form {
     }
   }
 
+  function storeWhereHavingClauseArray(){
+    parent::storeWhereHavingClauseArray();
+    if (!CRM_Utils_Array::value('soft_amount', $this->_params['fields']) && !empty($this->_havingClauses)){
+      foreach ($this->_havingClauses as $key => $havingClause) {
+        if (stristr($havingClause, 'soft_soft')){
+          unset($this->_havingClauses[$key]);
+        }
+      }
+    }
+  }
+
   function statistics(&$rows) {
     $statistics = parent::statistics($rows);
 
     $softCredit = CRM_Utils_Array::value('soft_amount', $this->_params['fields']);
     $onlySoftCredit = $softCredit && !CRM_Utils_Array::value('total_amount', $this->_params['fields']);
+    $totalAmount = $average = $softTotalAmount = $softAverage = array();
 
-    $select = "SELECT 
+    $select = "SELECT
 COUNT({$this->_aliases['civicrm_contribution']}.total_amount )        as civicrm_contribution_total_amount_count,
 SUM({$this->_aliases['civicrm_contribution']}.total_amount )          as civicrm_contribution_total_amount_sum,
 ROUND(AVG({$this->_aliases['civicrm_contribution']}.total_amount), 2) as civicrm_contribution_total_amount_avg,
 {$this->_aliases['civicrm_contribution']}.currency                    as currency";
 
     if ($softCredit) {
-      $select .= ", 
+      $select .= ",
 COUNT({$this->_aliases['civicrm_contribution_soft']}.amount )        as civicrm_contribution_soft_soft_amount_count,
 SUM({$this->_aliases['civicrm_contribution_soft']}.amount )          as civicrm_contribution_soft_soft_amount_sum,
 ROUND(AVG({$this->_aliases['civicrm_contribution_soft']}.amount), 2) as civicrm_contribution_soft_soft_amount_avg";
     }
     $group = "\nGROUP BY {$this->_aliases['civicrm_contribution']}.currency";
     $sql = "{$select} {$this->_from} {$this->_where} {$group} {$this->_having}";
-    
+
     $dao = CRM_Core_DAO::executeQuery($sql);
     $totalAmount = $average = $softTotalAmount = $softAverage = array();
     $count = $softCount = 0;
     while ($dao->fetch()) {
-      $totalAmount[] = CRM_Utils_Money::format($dao->civicrm_contribution_total_amount_sum, $dao->currency)."(".$dao->civicrm_contribution_total_amount_count.")";
+      $totalAmount[] = CRM_Utils_Money::format($dao->civicrm_contribution_total_amount_sum, $dao->currency)." (".$dao->civicrm_contribution_total_amount_count.")";
       $average[] = CRM_Utils_Money::format($dao->civicrm_contribution_total_amount_avg, $dao->currency);
       $count += $dao->civicrm_contribution_total_amount_count;
-      
+
       if ($softCredit) {
-        $softTotalAmount[] = CRM_Utils_Money::format($dao->civicrm_contribution_soft_soft_amount_sum, $dao->currency)."(".$dao->civicrm_contribution_soft_soft_amount_count.")";
+        $softTotalAmount[] = CRM_Utils_Money::format($dao->civicrm_contribution_soft_soft_amount_sum, $dao->currency)." (".$dao->civicrm_contribution_soft_soft_amount_count.")";
         $softAverage[] = CRM_Utils_Money::format($dao->civicrm_contribution_soft_soft_amount_avg, $dao->currency);
         $softCount += $dao->civicrm_contribution_soft_soft_amount_count;
       }
     }
-    
+
     if (!$onlySoftCredit) {
       $statistics['counts']['amount'] = array(
         'title' => ts('Total Amount'),
@@ -584,8 +609,8 @@ ROUND(AVG({$this->_aliases['civicrm_contribution_soft']}.amount), 2) as civicrm_
     if (CRM_Utils_Array::value('charts', $this->_params)) {
       if (CRM_Utils_Array::value('receive_date', $this->_params['group_bys'])) {
 
-        $contrib = CRM_Utils_Array::value('total_amount', $this->_params['fields']) ? TRUE : FALSE;
-        $softContrib = CRM_Utils_Array::value('soft_amount', $this->_params['fields']) ? TRUE : FALSE;
+        $contrib = !empty($this->_params['fields']['total_amount']) ? TRUE : FALSE;
+        $softContrib = !empty($this->_params['fields']['soft_amount']) ? TRUE : FALSE;
 
         foreach ($rows as $key => $row) {
           if ($row['civicrm_contribution_receive_date_subtotal']) {