CRM-13383 fix
authormonishdeb <monish.deb@webaccess.co.in>
Mon, 16 Sep 2013 08:45:14 +0000 (14:15 +0530)
committermonishdeb <monish.deb@webaccess.co.in>
Mon, 16 Sep 2013 08:45:14 +0000 (14:15 +0530)
----------------------------------------
* CRM-13383: Add Bounce Type option in Advance Search/Mailing section
  http://issues.civicrm.org/jira/browse/CRM-13383

CRM/Mailing/BAO/Query.php
templates/CRM/Mailing/Form/Search/Common.tpl
xml/schema/Mailing/Event/Bounce.xml

index fd64268278eb7132e11ecf72d9914890b800817a..4aa0b07e7e81bb8609a7336ef11e5c8bf7acbc0b 100644 (file)
@@ -274,6 +274,17 @@ class CRM_Mailing_BAO_Query {
         }
         return;
 
+      case 'mailing_bounce_types':
+        $op = 'IN';
+        $values = array($name, $op, $value, $grouping, $wildcard);
+        self::mailingEventQueryBuilder($query, $values,
+          'civicrm_mailing_event_bounce',
+          'bounce_type_id',
+          ts('Bounce type(s)'),
+          CRM_Core_PseudoConstant::get('CRM_Mailing_Event_DAO_Bounce', 'bounce_type_id', array('keyColumn' => 'id', 'labelColumn' => 'name'))
+        );
+        return;
+
       case 'mailing_open_status':
         self::mailingEventQueryBuilder($query, $values,
           'civicrm_mailing_event_opened', 'mailing_open_status', ts('Mailing: Trackable Opens'), CRM_Mailing_PseudoConstant::yesNoOptions('open')
@@ -367,6 +378,12 @@ class CRM_Mailing_BAO_Query {
     );
     $form->addElement('select', 'mailing_job_status', ts('Mailing Job Status'), $mailingJobStatuses, FALSE);
 
+    $mailingBounceTypes = CRM_Core_PseudoConstant::get(
+      'CRM_Mailing_Event_DAO_Bounce', 'bounce_type_id',
+      array('keyColumn' => 'id', 'labelColumn' => 'name')
+    );
+    $form->add('select', 'mailing_bounce_types', ts('Bounce Types'), $mailingBounceTypes, FALSE, array('multiple' => 'multiple'));
+
     // event filters
     $form->addRadio('mailing_delivery_status', ts('Delivery Status'), CRM_Mailing_PseudoConstant::yesNoOptions('delivered'));
     $form->addRadio('mailing_open_status', ts('Trackable Opens'), CRM_Mailing_PseudoConstant::yesNoOptions('open'));
@@ -398,7 +415,8 @@ class CRM_Mailing_BAO_Query {
     if ((CRM_Utils_Array::value('mailing_delivery_status', $fields) ||
         CRM_Utils_Array::value('mailing_open_status', $fields) ||
         CRM_Utils_Array::value('mailing_click_status', $fields) ||
-        CRM_Utils_Array::value('mailing_reply_status', $fields)
+        CRM_Utils_Array::value('mailing_reply_status', $fields) ||
+        CRM_Utils_Array::value('mailing_bounce_types', $fields)
       ) &&
       (!CRM_Utils_Array::value('mailing_id', $fields) &&
         !CRM_Utils_Array::value('mailing_date_low', $fields) &&
@@ -450,7 +468,14 @@ class CRM_Mailing_BAO_Query {
       $query->_where[$grouping][] = $tableName . ".id is null ";
     }
 
-    $query->_qill[$grouping][] = $fieldTitle . ' - ' . $valueTitles[$value];
+    if (is_array($value)) {
+      $query->_where[$grouping][] = "$tableName.$fieldName $op (" . implode(',', $value) . ")";
+      $query->_qill[$grouping][] = "$fieldTitle $op ". implode(', ', array_intersect_key($valueTitles, array_flip($value)));
+    }
+    else {
+      $query->_qill[$grouping][] = $fieldTitle . ' - ' . $valueTitles[$value];
+    }
+
     $query->_tables['civicrm_mailing_job'] = $query->_whereTables['civicrm_mailing_job'] = 1;
     $query->_tables['civicrm_mailing_event_queue'] = $query->_whereTables['civicrm_mailing_event_queue'] = 1;
     $query->_tables['civicrm_mailing_recipients'] = $query->_whereTables['civicrm_mailing_recipients'] = 1;
index 93cc471dba87856bfc63c2b821b7e9cc2ed116cd..ffb3e41648d235ebd65e9b072874b52511fedf72 100644 (file)
@@ -32,6 +32,9 @@
     <span class="crm-clear-link">
       (<a href="#" onclick="unselectRadio('mailing_delivery_status','{$form.formName}'); return false;">{ts}clear{/ts}</a>)
     </span>
+  <br />
+  {$form.mailing_bounce_types.label}
+  {$form.mailing_bounce_types.html}
   </td>
   <td>
   {$form.mailing_open_status.label}
index eb5cca365916514041a80a9dde4f5a08c0c7e401..ea09335ca0c0553eeaf278a6355815f037490e52 100644 (file)
         <name>bounce_type_id</name>
         <type>int unsigned</type>
         <comment>What type of bounce was it?</comment>
+       <pseudoconstant>
+         <table>civicrm_mailing_bounce_type</table>
+         <keyColumn>id</keyColumn>
+         <labelColumn>name</labelColumn>
+       </pseudoconstant>
     </field>
     <field>
         <name>bounce_reason</name>