From 111b2847d05ef415e181728ed87ef38b954864ce Mon Sep 17 00:00:00 2001 From: monishdeb Date: Mon, 16 Sep 2013 14:15:14 +0530 Subject: [PATCH] CRM-13383 fix ---------------------------------------- * CRM-13383: Add Bounce Type option in Advance Search/Mailing section http://issues.civicrm.org/jira/browse/CRM-13383 --- CRM/Mailing/BAO/Query.php | 29 ++++++++++++++++++-- templates/CRM/Mailing/Form/Search/Common.tpl | 3 ++ xml/schema/Mailing/Event/Bounce.xml | 5 ++++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/CRM/Mailing/BAO/Query.php b/CRM/Mailing/BAO/Query.php index fd64268278..4aa0b07e7e 100644 --- a/CRM/Mailing/BAO/Query.php +++ b/CRM/Mailing/BAO/Query.php @@ -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; diff --git a/templates/CRM/Mailing/Form/Search/Common.tpl b/templates/CRM/Mailing/Form/Search/Common.tpl index 93cc471dba..ffb3e41648 100644 --- a/templates/CRM/Mailing/Form/Search/Common.tpl +++ b/templates/CRM/Mailing/Form/Search/Common.tpl @@ -32,6 +32,9 @@ ({ts}clear{/ts}) +
+ {$form.mailing_bounce_types.label} + {$form.mailing_bounce_types.html} {$form.mailing_open_status.label} diff --git a/xml/schema/Mailing/Event/Bounce.xml b/xml/schema/Mailing/Event/Bounce.xml index eb5cca3659..ea09335ca0 100644 --- a/xml/schema/Mailing/Event/Bounce.xml +++ b/xml/schema/Mailing/Event/Bounce.xml @@ -31,6 +31,11 @@ bounce_type_id int unsigned What type of bounce was it? + + civicrm_mailing_bounce_type
+ id + name +
bounce_reason -- 2.25.1