CRM-21546: Implement unique opens filter for mailing opened report
authordeb.monish <monish.deb@jmaconsulting.biz>
Wed, 13 Dec 2017 12:53:04 +0000 (18:23 +0530)
committerdeb.monish <monish.deb@jmaconsulting.biz>
Fri, 22 Dec 2017 09:22:52 +0000 (14:52 +0530)
CRM/Report/Form/Mailing/Opened.php

index ded8c03b08750f0bd2e962f10fe1ee1af244dbaa..f1b2ce3e9a9c595b73b99d8492d52ebe33d76570 100644 (file)
@@ -179,6 +179,7 @@ class CRM_Report_Form_Mailing_Opened extends CRM_Report_Form {
         'id' => array(
           'required' => TRUE,
           'no_display' => TRUE,
+          'dbAlias' => CRM_Utils_SQL::supportsFullGroupBy() ? 'ANY_VALUE(mailing_event_opened_civireport.id)' : NULL,
         ),
         'time_stamp' => array(
           'title' => ts('Open Date'),
@@ -191,6 +192,11 @@ class CRM_Report_Form_Mailing_Opened extends CRM_Report_Form {
           'operatorType' => CRM_Report_Form::OP_DATE,
           'type' => CRM_Utils_Type::T_DATE,
         ),
+        'unique_opens' => array(
+          'title' => ts('Unique Opens'),
+          'type' => CRM_Utils_Type::T_BOOLEAN,
+          'pseudofield' => TRUE,
+        ),
       ),
       'order_bys' => array(
         'time_stamp' => array(
@@ -296,6 +302,11 @@ class CRM_Report_Form_Mailing_Opened extends CRM_Report_Form {
       $groupBy = "civicrm_mailing_event_queue.email_id";
     }
     $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy);
+
+    if (!empty($this->_params['unique_opens_value'])) {
+      $this->_groupBy .= ", civicrm_mailing_event_queue.id";
+      $this->_groupBy = str_replace('mailing_event_opened_civireport.id,', '', $this->_groupBy);
+    }
   }
 
   public function postProcess() {