Add statistics to template

[MAILPOET-1571]
This commit is contained in:
Pavel Dohnal
2019-01-14 14:05:56 +01:00
parent 3bd80aecd3
commit 1db75f40fb
3 changed files with 159 additions and 123 deletions

View File

@@ -42,9 +42,9 @@ class Worker {
try { try {
$this->mailer->send($this->constructNewsletter($task), $settings['address']); $this->mailer->send($this->constructNewsletter($task), $settings['address']);
} catch(\Exception $e) { } catch(\Exception $e) {
//if(WP_DEBUG) { if(WP_DEBUG) {
throw $e; throw $e;
//} }
} finally { } finally {
$this->markTaskAsFinished($task); $this->markTaskAsFinished($task);
} }
@@ -99,19 +99,24 @@ class Worker {
} }
private function prepareContext(Newsletter $newsletter, NewsletterLink $link) { private function prepareContext(Newsletter $newsletter, NewsletterLink $link) {
$clicked = ($newsletter->statistics['clicked'] * 100) / $newsletter->total_sent;
$opened = ($newsletter->statistics['opened'] * 100) / $newsletter->total_sent;
$unsubscribed = ($newsletter->statistics['unsubscribed'] * 100) / $newsletter->total_sent;
return [ return [
'subject' => $newsletter->subject, 'subject' => $newsletter->subject,
'preheader' => sprintf(_x( 'preheader' => sprintf(_x(
'%1$s%% opens, %2$s%% clicks, %3$s%% unsubscribes in a nutshell.', 'newsletter open rate, click rate and unsubscribe rate', 'mailpoet'), '%1$s%% opens, %2$s%% clicks, %3$s%% unsubscribes in a nutshell.', 'newsletter open rate, click rate and unsubscribe rate', 'mailpoet'),
number_format(($newsletter->statistics['clicked'] * 100) / $newsletter->total_sent, 2), number_format($clicked, 2),
number_format(($newsletter->statistics['opened'] * 100) / $newsletter->total_sent,2), number_format($opened, 2),
number_format(($newsletter->statistics['unsubscribed'] * 100) / $newsletter->total_sent,2) number_format($unsubscribed, 2)
), ),
'topLinkClicks' => $link->clicksCount, 'topLinkClicks' => (int)$link->clicksCount,
'topLink' => $link->url, 'topLink' => $link->url,
'linkSettings' => get_site_url(null, '/wp-admin/admin.php?page=mailpoet-settings#basics'), 'linkSettings' => get_site_url(null, '/wp-admin/admin.php?page=mailpoet-settings#basics'),
'linkStats' => get_site_url(null, '/wp-admin/admin.php?page=mailpoet-newsletters#/stats/' . $newsletter->id()), 'linkStats' => get_site_url(null, '/wp-admin/admin.php?page=mailpoet-newsletters#/stats/' . $newsletter->id()),
'premiumPluginActive' => is_plugin_active('mailpoet-premium/mailpoet-premium.php'), 'premiumPluginActive' => is_plugin_active('mailpoet-premium/mailpoet-premium.php'),
'clicked' => $clicked,
'opened' => $opened,
]; ];
} }

View File

@@ -170,7 +170,7 @@ class WorkerTest extends \MailPoetTest {
$this->stringContains('statsNotification.html'), $this->stringContains('statsNotification.html'),
$this->callback(function($context){ $this->callback(function($context){
return ($context['topLink'] === 'Link url2') return ($context['topLink'] === 'Link url2')
&& ($context['topLinkClicks'] === '2'); && ($context['topLinkClicks'] === 2);
})); }));
$this->stats_notifications->process(); $this->stats_notifications->process();

View File

@@ -24,6 +24,20 @@
</style> </style>
</head> </head>
<% if opened > 30 %>
<% set openedColor = '2993ab' %>
<% elseif opened > 10 %>
<% set openedColor = 'f0b849' %>
<% else %>
<% set openedColor = 'd54e21' %>
<% endif %>
<% if clicked > 3 %>
<% set clickedColor = '2993ab' %>
<% elseif clicked > 1 %>
<% set clickedColor = 'f0b849' %>
<% else %>
<% set clickedColor = 'd54e21' %>
<% endif %>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" style="margin:0;padding:0;background-color:#f0f0f0"> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" style="margin:0;padding:0;background-color:#f0f0f0">
<table class="mailpoet_template" border="0" width="100%" cellpadding="0" cellspacing="0" style="border-spacing:0;mso-table-lspace:0;mso-table-rspace:0;border-collapse:collapse"> <table class="mailpoet_template" border="0" width="100%" cellpadding="0" cellspacing="0" style="border-spacing:0;mso-table-lspace:0;mso-table-rspace:0;border-collapse:collapse">
<tbody> <tbody>
@@ -106,8 +120,14 @@
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-spacing:0;mso-table-lspace:0;mso-table-rspace:0;border-collapse:collapse"> <table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-spacing:0;mso-table-lspace:0;mso-table-rspace:0;border-collapse:collapse">
<tr> <tr>
<td class="mailpoet_button-container" style="text-align:center;border-collapse:collapse"> <td class="mailpoet_button-container" style="text-align:center;border-collapse:collapse">
<a class="mailpoet_button" href="" style="display:inline-block;-webkit-text-size-adjust:none;mso-hide:all;text-decoration:none;text-align:center;background-color:#f0b849 ;border-color:#0074a2 ;border-width:0px ;border-radius:3px ;border-style:solid ;width:100px ;line-height:20px ;color:#ffffff ;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif ;font-size:10px ;font-weight:normal "> <a class="mailpoet_button" href="" style="display:inline-block;-webkit-text-size-adjust:none;mso-hide:all;text-decoration:none;text-align:center;background-color:#<%= openedColor %> ;border-color:#0074a2 ;border-width:0px ;border-radius:3px ;border-style:solid ;width:100px ;line-height:20px ;color:#ffffff ;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif ;font-size:10px ;font-weight:normal ">
GOOD <% if opened > 30 %>
<%= __('EXCELENT') %>
<% elseif opened > 10 %>
<%= __('GOOD') %>
<% else %>
<%= __('BAD') %>
<% endif %>
</a></td> </a></td>
</tr> </tr>
</table> </table>
@@ -117,8 +137,8 @@
<tr> <tr>
<td class="mailpoet_text mailpoet_padded_bottom mailpoet_padded_side" valign="top" style="word-break:break-word;word-wrap:break-word;padding-top:0;border-collapse:collapse;padding-bottom:20px;padding-left:20px;padding-right:20px"> <td class="mailpoet_text mailpoet_padded_bottom mailpoet_padded_side" valign="top" style="word-break:break-word;word-wrap:break-word;padding-top:0;border-collapse:collapse;padding-bottom:20px;padding-left:20px;padding-right:20px">
<h2 style="text-align:center;padding:0;font-style:normal;font-weight:normal;margin:0 0 12px;color:#222222;font-family:'Courier New',Courier,'Lucida Sans Typewriter','Lucida Typewriter',monospace;font-size:40px;line-height:64px"> <h2 style="text-align:center;padding:0;font-style:normal;font-weight:normal;margin:0 0 12px;color:#222222;font-family:'Courier New',Courier,'Lucida Sans Typewriter','Lucida Typewriter',monospace;font-size:40px;line-height:64px">
<span style="color: #f0b849;"> <span style="color: #<%= openedColor %>;">
<strong>29.8%</strong> <strong><%= number_format_i18n(opened) %>%</strong>
</span> </span>
</h2> </h2>
</td> </td>
@@ -128,7 +148,7 @@
<table style="border-spacing:0;mso-table-lspace:0;mso-table-rspace:0;border-collapse:collapse" width="100%" cellpadding="0"> <table style="border-spacing:0;mso-table-lspace:0;mso-table-rspace:0;border-collapse:collapse" width="100%" cellpadding="0">
<tr> <tr>
<td class="mailpoet_paragraph" style="word-break:break-word;word-wrap:break-word;text-align:center;border-collapse:collapse;color:#000000;font-family:Arial,'Helvetica Neue',Helvetica,sans-serif;font-size:16px;line-height:25.6px"> <td class="mailpoet_paragraph" style="word-break:break-word;word-wrap:break-word;text-align:center;border-collapse:collapse;color:#000000;font-family:Arial,'Helvetica Neue',Helvetica,sans-serif;font-size:16px;line-height:25.6px">
<span style="color: #f0b849;"> <span style="color: #<%= openedColor %>;">
<%= __('open rate') %> <%= __('open rate') %>
</span> </span>
</td> </td>
@@ -151,8 +171,14 @@
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-spacing:0;mso-table-lspace:0;mso-table-rspace:0;border-collapse:collapse"> <table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-spacing:0;mso-table-lspace:0;mso-table-rspace:0;border-collapse:collapse">
<tr> <tr>
<td class="mailpoet_button-container" style="text-align:center;border-collapse:collapse"> <td class="mailpoet_button-container" style="text-align:center;border-collapse:collapse">
<a class="mailpoet_button" href="" style="display:inline-block;-webkit-text-size-adjust:none;mso-hide:all;text-decoration:none;text-align:center;background-color:#2993ab ;border-color:#0074a2 ;border-width:0px ;border-radius:3px ;border-style:solid ;width:100px ;line-height:20px ;color:#ffffff ;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif ;font-size:10px ;font-weight:normal "> <a class="mailpoet_button" href="" style="display:inline-block;-webkit-text-size-adjust:none;mso-hide:all;text-decoration:none;text-align:center;background-color:#<%= clickedColor %> ;border-color:#0074a2 ;border-width:0px ;border-radius:3px ;border-style:solid ;width:100px ;line-height:20px ;color:#ffffff ;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif ;font-size:10px ;font-weight:normal ">
EXCELLENT <% if clicked > 3 %>
<%= __('EXCELENT') %>
<% elseif clicked > 1 %>
<%= __('GOOD') %>
<% else %>
<%= __('BAD') %>
<% endif %>
</a></td> </a></td>
</tr> </tr>
</table> </table>
@@ -162,8 +188,8 @@
<tr> <tr>
<td class="mailpoet_text mailpoet_padded_bottom mailpoet_padded_side" valign="top" style="word-break:break-word;word-wrap:break-word;padding-top:0;border-collapse:collapse;padding-bottom:20px;padding-left:20px;padding-right:20px"> <td class="mailpoet_text mailpoet_padded_bottom mailpoet_padded_side" valign="top" style="word-break:break-word;word-wrap:break-word;padding-top:0;border-collapse:collapse;padding-bottom:20px;padding-left:20px;padding-right:20px">
<h2 style="text-align:center;padding:0;font-style:normal;font-weight:normal;margin:0 0 12px;color:#222222;font-family:'Courier New',Courier,'Lucida Sans Typewriter','Lucida Typewriter',monospace;font-size:40px;line-height:64px"> <h2 style="text-align:center;padding:0;font-style:normal;font-weight:normal;margin:0 0 12px;color:#222222;font-family:'Courier New',Courier,'Lucida Sans Typewriter','Lucida Typewriter',monospace;font-size:40px;line-height:64px">
<span style="color: #2993ab;"> <span style="color: #<%= clickedColor %>;">
3.1% <%= number_format_i18n(clicked) %>%
</span> </span>
</h2> </h2>
</td> </td>
@@ -173,7 +199,7 @@
<table style="border-spacing:0;mso-table-lspace:0;mso-table-rspace:0;border-collapse:collapse" width="100%" cellpadding="0"> <table style="border-spacing:0;mso-table-lspace:0;mso-table-rspace:0;border-collapse:collapse" width="100%" cellpadding="0">
<tr> <tr>
<td class="mailpoet_paragraph" style="word-break:break-word;word-wrap:break-word;text-align:center;border-collapse:collapse;color:#000000;font-family:Arial,'Helvetica Neue',Helvetica,sans-serif;font-size:16px;line-height:25.6px"> <td class="mailpoet_paragraph" style="word-break:break-word;word-wrap:break-word;text-align:center;border-collapse:collapse;color:#000000;font-family:Arial,'Helvetica Neue',Helvetica,sans-serif;font-size:16px;line-height:25.6px">
<span style="color: #2993ab;"> <span style="color: #<%= clickedColor %>;">
<%= __('click rate') %> <%= __('click rate') %>
</span> </span>
</td> </td>
@@ -193,6 +219,7 @@
</table> </table>
</td> </td>
</tr> </tr>
<% if topLinkClicks > 0 %>
<tr> <tr>
<td class="mailpoet_content" align="center" style="border-collapse:collapse"> <td class="mailpoet_content" align="center" style="border-collapse:collapse">
<table width="100%" border="0" cellpadding="0" cellspacing="0" style="border-spacing:0;mso-table-lspace:0;mso-table-rspace:0;border-collapse:collapse"> <table width="100%" border="0" cellpadding="0" cellspacing="0" style="border-spacing:0;mso-table-lspace:0;mso-table-rspace:0;border-collapse:collapse">
@@ -262,6 +289,7 @@
</table> </table>
</td> </td>
</tr> </tr>
<% endif %>
<tr> <tr>
<td class="mailpoet_content" align="center" style="border-collapse:collapse"> <td class="mailpoet_content" align="center" style="border-collapse:collapse">
<table width="100%" border="0" cellpadding="0" cellspacing="0" style="border-spacing:0;mso-table-lspace:0;mso-table-rspace:0;border-collapse:collapse"> <table width="100%" border="0" cellpadding="0" cellspacing="0" style="border-spacing:0;mso-table-lspace:0;mso-table-rspace:0;border-collapse:collapse">
@@ -283,6 +311,7 @@
<tr> <tr>
<td class="mailpoet_spacer" height="30" valign="top" style="border-collapse:collapse"></td> <td class="mailpoet_spacer" height="30" valign="top" style="border-collapse:collapse"></td>
</tr> </tr>
<% if premiumPluginActive %>
<tr> <tr>
<td class="mailpoet_padded_bottom mailpoet_padded_side" valign="top" style="border-collapse:collapse;padding-bottom:20px;padding-left:20px;padding-right:20px"> <td class="mailpoet_padded_bottom mailpoet_padded_side" valign="top" style="border-collapse:collapse;padding-bottom:20px;padding-left:20px;padding-right:20px">
<div> <div>
@@ -297,6 +326,7 @@
</div> </div>
</td> </td>
</tr> </tr>
<% else %>
<tr> <tr>
<td class="mailpoet_text mailpoet_padded_bottom mailpoet_padded_side" valign="top" style="word-break:break-word;word-wrap:break-word;padding-top:0;border-collapse:collapse;padding-bottom:20px;padding-left:20px;padding-right:20px"> <td class="mailpoet_text mailpoet_padded_bottom mailpoet_padded_side" valign="top" style="word-break:break-word;word-wrap:break-word;padding-top:0;border-collapse:collapse;padding-bottom:20px;padding-left:20px;padding-right:20px">
<table style="border-spacing:0;mso-table-lspace:0;mso-table-rspace:0;border-collapse:collapse" width="100%" cellpadding="0"> <table style="border-spacing:0;mso-table-lspace:0;mso-table-rspace:0;border-collapse:collapse" width="100%" cellpadding="0">
@@ -321,6 +351,7 @@
</div> </div>
</td> </td>
</tr> </tr>
<% endif %>
<tr> <tr>
<td class="mailpoet_spacer" height="20" valign="top" style="border-collapse:collapse"></td> <td class="mailpoet_spacer" height="20" valign="top" style="border-collapse:collapse"></td>
</tr> </tr>