Add warning to stats notification

[MAILPOET-2394]
This commit is contained in:
Amine Ben hammou
2019-11-26 13:58:25 +01:00
committed by Jack Kitterhing
parent c9052d71d4
commit d0369e96c9
4 changed files with 102 additions and 2 deletions

View File

@ -13,9 +13,11 @@ use MailPoet\Mailer\Mailer;
use MailPoet\Mailer\MetaInfo; use MailPoet\Mailer\MetaInfo;
use MailPoet\Models\NewsletterLink; use MailPoet\Models\NewsletterLink;
use MailPoet\Models\ScheduledTask; use MailPoet\Models\ScheduledTask;
use MailPoet\Models\Subscriber;
use MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository; use MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\Tasks\Sending; use MailPoet\Tasks\Sending;
use MailPoet\Util\License\Features\Subscribers as SubscribersFeature;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Doctrine\ORM\EntityManager; use MailPoetVendor\Doctrine\ORM\EntityManager;
@ -51,6 +53,9 @@ class Worker {
/** @var NewsletterStatisticsRepository */ /** @var NewsletterStatisticsRepository */
private $newsletter_statistics_repository; private $newsletter_statistics_repository;
/** @var SubscribersFeature */
private $subscribers_feature;
function __construct( function __construct(
Mailer $mailer, Mailer $mailer,
Renderer $renderer, Renderer $renderer,
@ -60,7 +65,8 @@ class Worker {
StatsNotificationsRepository $repository, StatsNotificationsRepository $repository,
NewsletterLinkRepository $newsletter_link_repository, NewsletterLinkRepository $newsletter_link_repository,
NewsletterStatisticsRepository $newsletter_statistics_repository, NewsletterStatisticsRepository $newsletter_statistics_repository,
EntityManager $entity_manager EntityManager $entity_manager,
SubscribersFeature $subscribers_feature
) { ) {
$this->renderer = $renderer; $this->renderer = $renderer;
$this->mailer = $mailer; $this->mailer = $mailer;
@ -71,6 +77,7 @@ class Worker {
$this->entity_manager = $entity_manager; $this->entity_manager = $entity_manager;
$this->newsletter_link_repository = $newsletter_link_repository; $this->newsletter_link_repository = $newsletter_link_repository;
$this->newsletter_statistics_repository = $newsletter_statistics_repository; $this->newsletter_statistics_repository = $newsletter_statistics_repository;
$this->subscribers_feature = $subscribers_feature;
} }
/** @throws \Exception */ /** @throws \Exception */
@ -114,6 +121,7 @@ class Worker {
$opened = ($statistics->getOpenCount() * 100) / $statistics->getTotalSentCount(); $opened = ($statistics->getOpenCount() * 100) / $statistics->getTotalSentCount();
$unsubscribed = ($statistics->getUnsubscribeCount() * 100) / $statistics->getTotalSentCount(); $unsubscribed = ($statistics->getUnsubscribeCount() * 100) / $statistics->getTotalSentCount();
$subject = $newsletter->getLatestQueue()->getNewsletterRenderedSubject(); $subject = $newsletter->getLatestQueue()->getNewsletterRenderedSubject();
$subscribers_count = Subscriber::getTotalSubscribers();
$context = [ $context = [
'subject' => $subject, 'subject' => $subject,
'preheader' => sprintf(_x( 'preheader' => sprintf(_x(
@ -127,6 +135,9 @@ class Worker {
'linkStats' => WPFunctions::get()->getSiteUrl(null, '/wp-admin/admin.php?page=mailpoet-newsletters#/stats/' . $newsletter->getId()), 'linkStats' => WPFunctions::get()->getSiteUrl(null, '/wp-admin/admin.php?page=mailpoet-newsletters#/stats/' . $newsletter->getId()),
'clicked' => $clicked, 'clicked' => $clicked,
'opened' => $opened, 'opened' => $opened,
'subscribersLimitReached' => $this->subscribers_feature->check(),
'subscribersLimit' => $this->subscribers_feature->getSubscribersLimit(),
'upgradeNowLink' => 'https://account.mailpoet.com/?s=' . ($subscribers_count + 1),
]; ];
if ($link) { if ($link) {
$context['topLinkClicks'] = $link->getTotalClicksCount(); $context['topLinkClicks'] = $link->getTotalClicksCount();

View File

@ -17,6 +17,7 @@ use MailPoet\Models\StatisticsOpens;
use MailPoet\Models\StatisticsUnsubscribes; use MailPoet\Models\StatisticsUnsubscribes;
use MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository; use MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\Util\License\Features\Subscribers as SubscribersFeature;
use MailPoetVendor\Idiorm\ORM; use MailPoetVendor\Idiorm\ORM;
use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\MockObject\MockObject;
@ -71,7 +72,8 @@ class WorkerTest extends \MailPoetTest {
$this->repository, $this->repository,
$this->newsletter_link_repository, $this->newsletter_link_repository,
ContainerWrapper::getInstance()->get(NewsletterStatisticsRepository::class), ContainerWrapper::getInstance()->get(NewsletterStatisticsRepository::class),
$this->entity_manager $this->entity_manager,
ContainerWrapper::getInstance()->get(SubscribersFeature::class)
); );
$this->settings->set(Worker::SETTINGS_KEY, [ $this->settings->set(Worker::SETTINGS_KEY, [
'enabled' => true, 'enabled' => true,

View File

@ -45,6 +45,84 @@
</table> </table>
</td> </td>
</tr> </tr>
<% if subscribersLimitReached %>
<tr>
<td class="mailpoet_content" align="center" style="border-collapse:collapse;background-color:#fe5301!important" bgcolor="#fe5301">
<table width="100%" border="0" cellpadding="0" cellspacing="0" style="border-collapse:collapse;border-spacing:0;mso-table-lspace:0;mso-table-rspace:0">
<tbody>
<tr>
<td style="border-collapse:collapse;padding-left:0;padding-right:0">
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="mailpoet_cols-one" style="border-collapse:collapse;border-spacing:0;mso-table-lspace:0;mso-table-rspace:0;table-layout:fixed;margin-left:auto;margin-right:auto;padding-left:0;padding-right:0">
<tbody>
<tr>
<td class="mailpoet_spacer" height="26" valign="top" style="border-collapse:collapse"></td>
</tr>
<tr>
<td class="mailpoet_text mailpoet_padded_vertical mailpoet_padded_side" valign="top" style="border-collapse:collapse;padding-top:10px;padding-bottom:10px;padding-left:20px;padding-right:20px;word-break:break-word;word-wrap:break-word">
<table style="border-collapse:collapse;border-spacing:0;mso-table-lspace:0;mso-table-rspace:0" width="100%" cellpadding="0">
<tbody><tr>
<td class="mailpoet_paragraph" style="border-collapse:collapse;color:#000000;font-family:Arial,'Helvetica Neue',Helvetica,sans-serif;font-size:16px;line-height:25.6px;word-break:break-word;word-wrap:break-word;text-align:left">
<span style="color: #ffffff;"><strong><%= __('Congratulations, you now have more than [subscribersLimit] subscribers!')|replace({'[subscribersLimit]': subscribersLimit}) %></strong></span><br><br>
</td>
</tr></tbody></table>
<table style="border-collapse:collapse;border-spacing:0;mso-table-lspace:0;mso-table-rspace:0" width="100%" cellpadding="0">
<tbody><tr>
<td class="mailpoet_paragraph" style="border-collapse:collapse;color:#000000;font-family:Arial,'Helvetica Neue',Helvetica,sans-serif;font-size:16px;line-height:25.6px;word-break:break-word;word-wrap:break-word;text-align:left">
<span style="color: #ffffff;"><strong></strong></span>
</td>
</tr></tbody></table>
<table style="border-collapse:collapse;border-spacing:0;mso-table-lspace:0;mso-table-rspace:0" width="100%" cellpadding="0">
<tbody><tr>
<td class="mailpoet_paragraph" style="border-collapse:collapse;color:#000000;font-family:Arial,'Helvetica Neue',Helvetica,sans-serif;font-size:16px;line-height:25.6px;word-break:break-word;word-wrap:break-word;text-align:left">
<span style="color: #ffffff;"><%= __('Our free version is limited to [subscribersLimit] subscribers. You need to upgrade now to be able to continue using MailPoet.')|replace({'[subscribersLimit]': subscribersLimit}) %></span>
</td>
</tr></tbody></table>
</td>
</tr>
<tr>
<td class="mailpoet_padded_vertical mailpoet_padded_side" valign="top" style="border-collapse:collapse;padding-top:10px;padding-bottom:10px;padding-left:20px;padding-right:20px">
<div>
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;border-spacing:0;mso-table-lspace:0;mso-table-rspace:0">
<tbody><tr>
<td class="mailpoet_button-container" style="border-collapse:collapse;text-align:center"><!--[if mso]>
<v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word"
href=""
style="height:50px;
width:288px;
v-text-anchor:middle;"
arcsize="6%"
strokeweight="0px"
strokecolor="#0074a2"
fillcolor="#ffffff">
<w:anchorlock/>
<center style="color:#fe5301;
font-family:Arial;
font-size:20px;
font-weight:bold;">Upgrade Now
</center>
</v:roundrect>
<![endif]--><a class="mailpoet_button" href="<%= upgradeNowLink %>" style="color:#fe5301;text-decoration:none !important;display:inline-block;-webkit-text-size-adjust:none;mso-hide:all;text-align:center;background-color:#ffffff;border-color:#0074a2;border-width:0px;border-radius:3px;border-style:solid;width:288px;line-height:50px;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif;font-size:20px;font-weight:normal"> Upgrade Now</a>
</td>
</tr>
</tbody></table>
</div>
</td>
</tr>
<tr>
<td class="mailpoet_spacer" height="26" valign="top" style="border-collapse:collapse"></td>
</tr>
<tr>
<td class="mailpoet_spacer" bgcolor="#ffffff" height="26" valign="top" style="border-collapse:collapse"></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<% endif %>
<tr> <tr>
<td class="mailpoet_content-cols-two" align="left" style="border-collapse:collapse"> <td class="mailpoet_content-cols-two" align="left" 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">

View File

@ -5,6 +5,15 @@
<%= subject %> <%= subject %>
<% if subscribersLimitReached %>
<%= __('Congratulations, you now have more than [subscribersLimit] subscribers!')|replace({'[subscribersLimit]': subscribersLimit}) %>
<%= __('Our free version is limited to [subscribersLimit] subscribers. You need to upgrade now to be able to continue using MailPoet.')|replace({'[subscribersLimit]': subscribersLimit}) %>
<%= __('Upgrade Now') %>
<%= upgradeNowLink %>
<% endif %>
<%= __('open rate') %>: <%= number_format_i18n(opened) %>% <%= __('open rate') %>: <%= number_format_i18n(opened) %>%
<%= opened_stats_text(opened) %> <%= opened_stats_text(opened) %>