Track source when user unsubscribes from manage
[MAILPOET-2792]
This commit is contained in:
@@ -17,6 +17,8 @@ class StatisticsUnsubscribeEntity {
|
||||
use SafeToOneAssociationLoadTrait;
|
||||
|
||||
const SOURCE_NEWSLETTER = 'newsletter';
|
||||
const SOURCE_MANAGE = 'manage';
|
||||
|
||||
/**
|
||||
* @ORM\ManyToOne(targetEntity="MailPoet\Entities\NewsletterEntity")
|
||||
* @ORM\JoinColumn(name="newsletter_id", referencedColumnName="id")
|
||||
|
@@ -2,11 +2,14 @@
|
||||
|
||||
namespace MailPoet\Subscription;
|
||||
|
||||
use MailPoet\Entities\StatisticsUnsubscribeEntity;
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\Form\Util\FieldNameObfuscator;
|
||||
use MailPoet\Models\CustomField;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Models\SubscriberSegment;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Statistics\Track\Unsubscribes;
|
||||
use MailPoet\Subscribers\LinkTokens;
|
||||
use MailPoet\Util\Url as UrlHelper;
|
||||
|
||||
@@ -24,9 +27,19 @@ class Manage {
|
||||
/** @var SettingsController */
|
||||
private $settings;
|
||||
|
||||
public function __construct(UrlHelper $urlHelper, FieldNameObfuscator $fieldNameObfuscator, LinkTokens $linkTokens, SettingsController $settings) {
|
||||
/** @var Unsubscribes */
|
||||
private $unsubscribesTracker;
|
||||
|
||||
public function __construct(
|
||||
UrlHelper $urlHelper,
|
||||
FieldNameObfuscator $fieldNameObfuscator,
|
||||
LinkTokens $linkTokens,
|
||||
Unsubscribes $unsubscribesTracker,
|
||||
SettingsController $settings
|
||||
) {
|
||||
$this->urlHelper = $urlHelper;
|
||||
$this->fieldNameObfuscator = $fieldNameObfuscator;
|
||||
$this->unsubscribesTracker = $unsubscribesTracker;
|
||||
$this->linkTokens = $linkTokens;
|
||||
$this->settings = $settings;
|
||||
}
|
||||
@@ -43,6 +56,19 @@ class Manage {
|
||||
|
||||
if (!empty($subscriberData['email'])) {
|
||||
$subscriber = Subscriber::where('email', $subscriberData['email'])->findOne();
|
||||
|
||||
if (
|
||||
($subscriberData['status'] === SubscriberEntity::STATUS_UNSUBSCRIBED)
|
||||
&& ($subscriber instanceof Subscriber)
|
||||
&& ($subscriber->status === SubscriberEntity::STATUS_SUBSCRIBED)
|
||||
) {
|
||||
$this->unsubscribesTracker->track(
|
||||
(int)$subscriber->id,
|
||||
null,
|
||||
StatisticsUnsubscribeEntity::SOURCE_MANAGE
|
||||
);
|
||||
}
|
||||
|
||||
if ($subscriber && $this->linkTokens->verifyToken($subscriber, $token)) {
|
||||
if ($subscriberData['email'] !== Pages::DEMO_EMAIL) {
|
||||
$this->updateSubscriptions($subscriber, $subscriberData);
|
||||
|
@@ -8,6 +8,7 @@ use MailPoet\Models\Segment;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Models\SubscriberSegment;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Statistics\Track\Unsubscribes;
|
||||
use MailPoet\Subscribers\LinkTokens;
|
||||
use MailPoet\Subscription\Manage;
|
||||
use MailPoet\Util\Url as UrlHelper;
|
||||
@@ -54,6 +55,7 @@ class ManageTest extends \MailPoetTest {
|
||||
return true;
|
||||
},
|
||||
]),
|
||||
$this->diContainer->get(Unsubscribes::class),
|
||||
$this->settings
|
||||
);
|
||||
$_POST['action'] = 'mailpoet_subscription_update';
|
||||
|
Reference in New Issue
Block a user