From e0921408cb5afa32386ee9e543dc779752b4a1ce Mon Sep 17 00:00:00 2001 From: larssandergreen Date: Thu, 27 Jul 2023 16:27:09 -0600 Subject: [PATCH] Show bounce history on Contact Summary --- .../ang/afsearchEmailBounceHistory.aff.html | 4 + .../ang/afsearchEmailBounceHistory.aff.json | 7 + ext/civi_mail/info.xml | 1 + .../SavedSearch_Email_Bounce_History.mgd.php | 147 ++++++++++++++++++ templates/CRM/Contact/Page/Inline/Email.tpl | 3 +- 5 files changed, 161 insertions(+), 1 deletion(-) create mode 100644 ext/civi_mail/ang/afsearchEmailBounceHistory.aff.html create mode 100644 ext/civi_mail/ang/afsearchEmailBounceHistory.aff.json create mode 100644 ext/civi_mail/managed/SavedSearch_Email_Bounce_History.mgd.php diff --git a/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.html b/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.html new file mode 100644 index 0000000000..003d1fc134 --- /dev/null +++ b/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.html @@ -0,0 +1,4 @@ +
+ + +
diff --git a/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.json b/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.json new file mode 100644 index 0000000000..fc0020cc18 --- /dev/null +++ b/ext/civi_mail/ang/afsearchEmailBounceHistory.aff.json @@ -0,0 +1,7 @@ +{ + "type": "search", + "title": "Email Bounce History", + "icon": "fa-list-alt", + "server_route": "civicrm/contact/view/bounces", + "permission": "access CiviCRM" +} diff --git a/ext/civi_mail/info.xml b/ext/civi_mail/info.xml index 13c08f6790..089583adb5 100644 --- a/ext/civi_mail/info.xml +++ b/ext/civi_mail/info.xml @@ -29,6 +29,7 @@ scan-classes@1.0.0 + mgd-php@1.0.0 CRM/Mailing diff --git a/ext/civi_mail/managed/SavedSearch_Email_Bounce_History.mgd.php b/ext/civi_mail/managed/SavedSearch_Email_Bounce_History.mgd.php new file mode 100644 index 0000000000..28b6967386 --- /dev/null +++ b/ext/civi_mail/managed/SavedSearch_Email_Bounce_History.mgd.php @@ -0,0 +1,147 @@ + 'SavedSearch_Email_Bounce_History', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Email_Bounce_History', + 'label' => E::ts('Email Bounce History'), + 'form_values' => NULL, + 'mapping_id' => NULL, + 'search_custom_id' => NULL, + 'api_entity' => 'MailingEventBounce', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'time_stamp', + 'bounce_type_id:label', + 'bounce_reason', + 'MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.name', + ], + 'orderBy' => [], + 'where' => [], + 'groupBy' => [], + 'join' => [ + [ + 'MailingEventQueue AS MailingEventBounce_MailingEventQueue_event_queue_id_01', + 'INNER', + [ + 'event_queue_id', + '=', + 'MailingEventBounce_MailingEventQueue_event_queue_id_01.id', + ], + ], + [ + 'MailingJob AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01', + 'INNER', + [ + 'MailingEventBounce_MailingEventQueue_event_queue_id_01.job_id', + '=', + 'MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.id', + ], + ], + [ + 'Mailing AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01', + 'INNER', + [ + 'MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.mailing_id', + '=', + 'MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.id', + ], + ], + ], + 'having' => [], + ], + 'expires_date' => NULL, + 'description' => NULL, + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_Email_Bounce_History_SearchDisplay_Email_Bounce_History_Table', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Email_Bounce_History_Table', + 'label' => E::ts('Email_Bounce_History'), + 'saved_search_id.name' => 'Email_Bounce_History', + 'type' => 'table', + 'settings' => [ + 'description' => '', + 'sort' => [ + [ + 'time_stamp', + 'DESC', + ], + ], + 'limit' => 10, + 'pager' => [ + 'hide_single' => TRUE, + ], + 'placeholder' => 3, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'time_stamp', + 'dataType' => 'Timestamp', + 'label' => E::ts('Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'bounce_type_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('Type'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'bounce_reason', + 'dataType' => 'String', + 'label' => E::ts('Reason'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.name', + 'dataType' => 'String', + 'label' => E::ts('Mailing'), + 'sortable' => FALSE, + 'link' => [ + 'path' => '', + 'entity' => 'Mailing', + 'action' => 'view', + 'join' => 'MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01', + 'target' => 'crm-popup', + ], + 'title' => NULL, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + 'noResultsText' => '', + ], + 'acl_bypass' => FALSE, + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/templates/CRM/Contact/Page/Inline/Email.tpl b/templates/CRM/Contact/Page/Inline/Email.tpl index 9aeea58676..bdd8503bd0 100644 --- a/templates/CRM/Contact/Page/Inline/Email.tpl +++ b/templates/CRM/Contact/Page/Inline/Email.tpl @@ -45,7 +45,8 @@ {else} {$item.email} {/if} - {if $item.on_hold == 2} ({ts}On Hold - Opt Out{/ts}) {ts}{$item.hold_date|truncate:10:''|crmDate}{/ts}{elseif $item.on_hold} ({ts}On Hold{/ts}) {ts}{$item.hold_date|truncate:10:''|crmDate}{/ts}{/if}{if $item.is_bulkmail} ({ts}Bulk{/ts}){/if} + {crmAPI var='civi_mail' entity='Extension' action='get' full_name="civi_mail" is_active=1} + {if $item.on_hold == 2} ({ts}On Hold - Opt Out{/ts}) {ts}{$item.hold_date|truncate:10:''|crmDate}{/ts}{elseif $item.on_hold} {if $civi_mail.count}{/if}({ts}On Hold{/ts}) {ts}{$item.hold_date|truncate:10:''|crmDate}{/ts}{if $civi_mail.count} {/if}{/if}{if $item.is_bulkmail} ({ts}Bulk{/ts}){/if} {if !empty($item.signature_text) OR !empty($item.signature_html)} {ts}(signature){/ts} -- 2.25.1