jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/367847 )
Change subject: Add filters to mailing report. ...................................................................... Add filters to mailing report. Primary goal here is to add an order by to received date on the mailing report here civicrm/report/instance/99?reset=1&force=1 so Caitlin can better review, use it. As a byproduct added a bunch more order bys & filters & a link to view mailing text Upstream PR https://github.com/australiangreens/au.org.greens.extendedmailingstats/pull/3 Bug: T161758 Change-Id: I04fff923322e23586d222dfe582cdbfafe61876d --- M sites/default/civicrm/extensions/civicrm-extendedmailingstats/CRM/ExtendedMailingStats/Form/Report/ExtendedMailingStats.php M sites/default/civicrm/extensions/civicrm-extendedmailingstats/info.xml 2 files changed, 208 insertions(+), 144 deletions(-) Approvals: jenkins-bot: Verified Ejegg: Looks good to me, approved diff --git a/sites/default/civicrm/extensions/civicrm-extendedmailingstats/CRM/ExtendedMailingStats/Form/Report/ExtendedMailingStats.php b/sites/default/civicrm/extensions/civicrm-extendedmailingstats/CRM/ExtendedMailingStats/Form/Report/ExtendedMailingStats.php index e06745f..b59a4b8 100644 --- a/sites/default/civicrm/extensions/civicrm-extendedmailingstats/CRM/ExtendedMailingStats/Form/Report/ExtendedMailingStats.php +++ b/sites/default/civicrm/extensions/civicrm-extendedmailingstats/CRM/ExtendedMailingStats/Form/Report/ExtendedMailingStats.php @@ -1,11 +1,9 @@ <?php -// $Id$ - /* +--------------------------------------------------------------------+ - | CiviCRM version 4.2 | + | CiviCRM version 4.7 | +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC (c) 2004-2012 | + | Copyright CiviCRM LLC (c) 2004-2017 | +--------------------------------------------------------------------+ | This file is a part of CiviCRM. | | | @@ -31,15 +29,10 @@ * * @package CRM * @copyright CiviCRM LLC (c) 2004-2012 - * $Id$ - * */ class CRM_ExtendedMailingStats_Form_Report_ExtendedMailingStats extends CRM_Report_Form { protected $_summary = NULL; - - # just a toggle we use to build the from - protected $_mailingidField = FALSE; protected $_customGroupExtends = array('Campaign'); @@ -57,6 +50,11 @@ if (CRM_Campaign_BAO_Campaign::isCampaignEnable()) { $this->_columns['civicrm_mailing'] = array( 'fields' => array( + 'mailing_id' => array( + 'title' => ts('Mailing ID'), + 'name' => 'id', + 'required' => TRUE, + ), 'mailing_campaign_id' => array( 'title' => ts('Campaign'), 'name' => 'campaign_id', @@ -75,126 +73,23 @@ ); } - $this->_columns = array_merge($this->_columns, $this->getCampaignColumns()); + $this->_columns = array_merge($this->_columns, $this->getCampaignColumns(), $this->getMailingStatColumns()); - $this->_columns['civicrm_mailing_stats'] = array( - 'dao' => 'CRM_Mailing_DAO_Mailing', - 'fields' => array( - 'mailing_id' => array( - 'title' => ts('Mailing ID'), - 'required' => TRUE, - ), - 'mailing_name' => array( - 'title' => ts('Mailing Name'), - 'default' => TRUE, - ), - 'is_completed' => array( - 'title' => ts('Is Completed'), - 'default' => TRUE, - ), - 'created_date' => array( - 'title' => ts('Date Created'), - 'default' => TRUE, - ), - 'start' => array( - 'title' => ts('Start Date'), - 'default' => TRUE, - ), - 'finish' => array( - 'title' => ts('End Date'), - ), - 'recipients' => array( - 'title' => ts('recipients'), - 'default' => TRUE, - ), - 'delivered' => array( - 'title' => ts('delivered'), - 'default' => TRUE, - ), - 'send_rate' => array( - 'title' => ts('Send Rate'), - 'default' => TRUE, - ), - 'bounced' => array( - 'title' => ts('bounced'), - 'default' => TRUE, - ), - 'opened_total' => array( - 'title' => ts('Total Opens'), - 'default' => TRUE, - ), - 'opened_unique' => array( - 'title' => ts('Unique Opens'), - 'default' => TRUE, - ), - 'unsubscribed' => array( - 'title' => ts('unsubscribed'), - 'default' => TRUE, - ), - 'forwarded' => array( - 'title' => ts('forwarded'), - 'default' => TRUE, - ), - 'clicked_total' => array( - 'title' => ts('clicked_total'), - 'default' => TRUE, - ), - 'clicked_unique' => array( - 'title' => ts('clicked_unique'), - 'default' => TRUE, - ), - 'trackable_urls' => array( - 'title' => ts('trackable_urls'), - 'default' => TRUE, - ), - 'clicked_contribution_page' => array( - 'title' => ts('clicked_contribution_page'), - 'default' => TRUE, - ), - 'contribution_count' => array( - 'title' => ts('Contribution Count'), - 'default' => TRUE, - ), - 'contribution_total' => array( - 'title' => ts('contributions_total'), - 'default' => TRUE, - ), - ), - 'filters' => array( - 'is_completed' => array( - 'title' => ts('Mailing Status'), - 'operatorType' => CRM_Report_Form::OP_SELECT, - 'type' => CRM_Utils_Type::T_INT, - 'options' => array( - 0 => 'Incomplete', - 1 => 'Complete', - ), - //'operator' => 'like', - 'default' => 1, - ), - 'start' => array( - 'title' => ts('Start Date'), - 'default' => 'this.year', - 'operatorType' => CRM_Report_Form::OP_DATE, - 'type' => CRM_Utils_Type::T_DATE, - ), - 'finish' => array( - 'title' => ts('End Date'), - 'operatorType' => CRM_Report_Form::OP_DATE, - 'type' => CRM_Utils_Type::T_DATE, - ), - 'recipients' => array( - 'title' => ts('Number of Recipients'), - 'operatorType' => CRM_Report_Form::OP_INT, - 'type' => CRM_Utils_Type::T_INT, - ), - 'Clicked_contribution_page' => array( - 'title' => ts('Clicked Contribution Page?'), - 'operatorType' => CRM_Report_Form::OP_INT, - 'type' => CRM_Utils_Type::T_INT, - ), - ), - ); + $this->_columns['civicrm_mailing_stats']['fields']['mailing_stats_mailing_name']['default'] = TRUE; + $this->_columns['civicrm_mailing_stats']['fields']['mailing_stats_is_completed']['default'] = TRUE; + $this->_columns['civicrm_mailing_stats']['fields']['mailing_stats_start']['default'] = TRUE; + $this->_columns['civicrm_mailing_stats']['fields']['mailing_stats_recipients']['default'] = TRUE; + $this->_columns['civicrm_mailing_stats']['fields']['mailing_stats_bounced']['default'] = TRUE; + $this->_columns['civicrm_mailing_stats']['fields']['mailing_stats_opened_total']['default'] = TRUE; + $this->_columns['civicrm_mailing_stats']['fields']['mailing_stats_opened_unique']['default'] = TRUE; + $this->_columns['civicrm_mailing_stats']['fields']['mailing_stats_unsubscribed']['default'] = TRUE; + $this->_columns['civicrm_mailing_stats']['fields']['mailing_stats_clicked_total']['default'] = TRUE; + $this->_columns['civicrm_mailing_stats']['fields']['mailing_stats_clicked_unique']['default'] = TRUE; + $this->_columns['civicrm_mailing_stats']['fields']['mailing_stats_delivered']['default'] = TRUE; + + $this->_columns['civicrm_mailing_stats']['filters']['mailing_stats_start']['default'] = 'this.year'; + + $this->_columns['civicrm_mailing_stats']['order_bys']['mailing_stats_start']['default_order'] = 'DESC'; parent::__construct(); } @@ -304,38 +199,207 @@ function alterDisplay(&$rows) { // custom code to alter rows $entryFound = FALSE; - foreach ($rows as $rowNum => $row) { + foreach ($rows as $rowNum => &$row) { + $checkedColumns = array('civicrm_mailing_stats_mailing_stats_mailing_name', 'civicrm_mailing_mailing_id', 'civicrm_mailing_mailing_campaign_id'); + + foreach ($checkedColumns as $columnName) { + if (isset($row[$columnName])) { + $entryFound = TRUE; + } + } + if (!$entryFound) { + return; + } // Link mailing name to Civimail Report - if (array_key_exists('civicrm_mailing_name', $row) && - array_key_exists('civicrm_mailing_id', $row) + if (array_key_exists('civicrm_mailing_stats_mailing_stats_mailing_name', $row) && + !empty($row['civicrm_mailing_mailing_id']) ) { $url = CRM_Report_Utils_Report::getNextUrl('civicrm/mailing/report', - 'reset=1&mid=' . $row['civicrm_mailing_id'], + 'reset=1&mid=' . $row['civicrm_mailing_mailing_id'], $this->_absoluteUrl, $this->_id ); - $rows[$rowNum]['civicrm_mailing_name_link'] = $url; - $rows[$rowNum]['civicrm_mailing_name_hover'] = ts("View CiviMail Report for this mailing."); + $rows[$rowNum]['civicrm_mailing_stats_mailing_stats_mailing_name_link'] = $url; + $rows[$rowNum]['civicrm_mailing_stats_mailing_stats_mailing_name_hover'] = ts("View CiviMail Report for this mailing."); $entryFound = TRUE; + } + + if (!empty($row['civicrm_mailing_mailing_id'])) { + $row['civicrm_mailing_mailing_id_link'] = CRM_Utils_System::url('civicrm/mailing/view', 'reset=1&id=' .(int) $row['civicrm_mailing_mailing_id']); + $row['civicrm_mailing_mailing_id_hover'] = ts('View mailing') . (!empty($row['civicrm_mailing_stats_mailing_stats_mailing_name'] ? ' ' . $row['civicrm_mailing_stats_mailing_stats_mailing_name'] : '')); + } if (!empty($row['civicrm_mailing_mailing_campaign_id'])) { $campaigns = CRM_Mailing_BAO_Mailing::buildOptions('campaign_id'); $rows[$rowNum]['civicrm_mailing_mailing_campaign_id'] = $campaigns[$row['civicrm_mailing_mailing_campaign_id']]; - $entryFound = TRUE; - } - - // skip looking further in rows, if first row itself doesn't - // have the column we need - if (!$entryFound) { - break; } } } /** + * Get columns for mailing stats table. * - * @param array + * @return array + */ + function getMailingStatColumns() { + $specs = array( + 'mailing_name' => array( + 'title' => ts('Mailing Name'), + 'is_filters' => TRUE, + 'is_order_bys' => TRUE, + 'is_fields' => TRUE, + 'type' => CRM_Utils_Type::T_STRING, + ), + 'is_completed' => array( + 'title' => ts('Is Completed'), + 'is_filters' => TRUE, + 'is_order_bys' => TRUE, + 'is_fields' => TRUE, + 'operatorType' => CRM_Report_Form::OP_SELECT, + 'type' => CRM_Utils_Type::T_INT, + 'options' => array( + 1 => 'Complete', + 0 => 'Incomplete', + ), + ), + 'created_date' => array( + 'title' => ts('Date Created'), + 'is_filters' => TRUE, + 'is_order_bys' => TRUE, + 'is_fields' => TRUE, + 'operatorType' => CRM_Report_Form::OP_DATE, + 'type' => CRM_Utils_Type::T_DATE, + ), + 'start' => array( + 'title' => ts('Start Date'), + 'is_filters' => TRUE, + 'is_order_bys' => TRUE, + 'is_fields' => TRUE, + 'default' => TRUE, + 'operatorType' => CRM_Report_Form::OP_DATE, + 'type' => CRM_Utils_Type::T_DATE, + ), + 'finish' => array( + 'title' => ts('End Date'), + 'is_filters' => TRUE, + 'is_order_bys' => TRUE, + 'is_fields' => TRUE, + 'operatorType' => CRM_Report_Form::OP_DATE, + 'type' => CRM_Utils_Type::T_DATE, + ), + 'recipients' => array( + 'title' => ts('Number of recipients'), + 'is_filters' => TRUE, + 'is_order_bys' => TRUE, + 'is_fields' => TRUE, + 'default' => TRUE, + 'operatorType' => CRM_Report_Form::OP_INT, + 'type' => CRM_Utils_Type::T_INT, + ), + 'delivered' => array( + 'title' => ts('delivered'), + 'is_filters' => TRUE, + 'is_order_bys' => TRUE, + 'is_fields' => TRUE, + 'type' => CRM_Utils_Type::T_INT, + ), + 'send_rate' => array( + 'title' => ts('Send Rate'), + 'is_filters' => TRUE, + 'is_order_bys' => TRUE, + 'is_fields' => TRUE, + 'type' => CRM_Utils_Type::T_INT, + ), + 'bounced' => array( + 'title' => ts('bounced'), + 'is_filters' => TRUE, + 'is_order_bys' => TRUE, + 'is_fields' => TRUE, + 'type' => CRM_Utils_Type::T_INT, + ), + 'opened_total' => array( + 'title' => ts('Total Opens'), + 'is_filters' => TRUE, + 'is_order_bys' => TRUE, + 'is_fields' => TRUE, + 'type' => CRM_Utils_Type::T_INT, + ), + 'opened_unique' => array( + 'title' => ts('Unique Opens'), + 'is_filters' => TRUE, + 'is_order_bys' => TRUE, + 'is_fields' => TRUE, + 'default' => TRUE, + 'type' => CRM_Utils_Type::T_INT, + ), + 'unsubscribed' => array( + 'title' => ts('unsubscribed'), + 'is_filters' => TRUE, + 'is_order_bys' => TRUE, + 'is_fields' => TRUE, + 'default' => TRUE, + 'type' => CRM_Utils_Type::T_INT, + ), + 'forwarded' => array( + 'title' => ts('forwarded'), + 'is_filters' => TRUE, + 'is_order_bys' => TRUE, + 'is_fields' => TRUE, + 'default' => TRUE, + 'type' => CRM_Utils_Type::T_INT, + ), + 'clicked_total' => array( + 'title' => ts('clicked_total'), + 'is_filters' => TRUE, + 'is_order_bys' => TRUE, + 'is_fields' => TRUE, + 'type' => CRM_Utils_Type::T_MONEY, + ), + 'clicked_unique' => array( + 'title' => ts('clicked_unique'), + 'is_filters' => TRUE, + 'is_order_bys' => TRUE, + 'is_fields' => TRUE, + 'type' => CRM_Utils_Type::T_INT, + ), + 'trackable_urls' => array( + 'title' => ts('trackable_urls'), + 'is_filters' => TRUE, + 'is_order_bys' => TRUE, + 'is_fields' => TRUE, + 'type' => CRM_Utils_Type::T_STRING, + ), + 'clicked_contribution_page' => array( + 'is_filters' => TRUE, + 'is_order_bys' => TRUE, + 'is_fields' => TRUE, + 'default' => TRUE, + 'title' => ts('Clicked Contribution Page?'), + 'operatorType' => CRM_Report_Form::OP_INT, + 'type' => CRM_Utils_Type::T_INT, + ), + 'contribution_count' => array( + 'title' => ts('Contribution Count'), + 'is_filters' => TRUE, + 'is_order_bys' => TRUE, + 'is_fields' => TRUE, + 'type' => CRM_Utils_Type::T_INT, + ), + 'contribution_total' => array( + 'title' => ts('contributions_total'), + 'is_filters' => TRUE, + 'is_order_bys' => TRUE, + 'is_fields' => TRUE, + 'type' => CRM_Utils_Type::T_MONEY, + ), + ); + + return $this->buildColumns($specs, 'civicrm_mailing_stats', 'CRM_ExtendedMailingStats_BAO_MailingStats'); + } + + /** + * Get columns for campaign table. * * @return array */ diff --git a/sites/default/civicrm/extensions/civicrm-extendedmailingstats/info.xml b/sites/default/civicrm/extensions/civicrm-extendedmailingstats/info.xml index d06023b..1ac6f82 100644 --- a/sites/default/civicrm/extensions/civicrm-extendedmailingstats/info.xml +++ b/sites/default/civicrm/extensions/civicrm-extendedmailingstats/info.xml @@ -8,8 +8,8 @@ <author>Andrew McNaughton</author> <email>and...@mcnaughty.com</email> </maintainer> - <releaseDate>2013-09-25</releaseDate> - <version>0.5</version> + <releaseDate>2017-07-26</releaseDate> + <version>1</version> <develStage>stable</develStage> <compatibility> <ver>4.7</ver> -- To view, visit https://gerrit.wikimedia.org/r/367847 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I04fff923322e23586d222dfe582cdbfafe61876d Gerrit-PatchSet: 2 Gerrit-Project: wikimedia/fundraising/crm Gerrit-Branch: master Gerrit-Owner: Eileen <emcnaugh...@wikimedia.org> Gerrit-Reviewer: Cdentinger <cdentin...@wikimedia.org> Gerrit-Reviewer: Ejegg <ej...@ejegg.com> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits