Add subscriber to WP user subject transformer
[MAILPOET-5168]
This commit is contained in:
@ -11,6 +11,7 @@ use MailPoet\Automation\Integrations\MailPoet\Subjects\SegmentSubject;
|
||||
use MailPoet\Automation\Integrations\MailPoet\Subjects\SubscriberSubject;
|
||||
use MailPoet\Automation\Integrations\MailPoet\SubjectTransformers\OrderSubjectToSegmentSubjectTransformer;
|
||||
use MailPoet\Automation\Integrations\MailPoet\SubjectTransformers\OrderSubjectToSubscriberSubjectTransformer;
|
||||
use MailPoet\Automation\Integrations\MailPoet\SubjectTransformers\SubscriberSubjectToWordPressUserSubjectTransformer;
|
||||
use MailPoet\Automation\Integrations\MailPoet\Triggers\SomeoneSubscribesTrigger;
|
||||
use MailPoet\Automation\Integrations\MailPoet\Triggers\UserRegistrationTrigger;
|
||||
|
||||
@ -45,12 +46,16 @@ class MailPoetIntegration implements Integration {
|
||||
/** @var OrderSubjectToSegmentSubjectTransformer */
|
||||
private $orderToSegmentTransformer;
|
||||
|
||||
/** @var SubscriberSubjectToWordPressUserSubjectTransformer */
|
||||
private $subscriberToWordPressUserTransformer;
|
||||
|
||||
public function __construct(
|
||||
ContextFactory $contextFactory,
|
||||
SegmentSubject $segmentSubject,
|
||||
SubscriberSubject $subscriberSubject,
|
||||
OrderSubjectToSubscriberSubjectTransformer $orderToSubscriberTransformer,
|
||||
OrderSubjectToSegmentSubjectTransformer $orderToSegmentTransformer,
|
||||
SubscriberSubjectToWordPressUserSubjectTransformer $subscriberToWordPressUserTransformer,
|
||||
SomeoneSubscribesTrigger $someoneSubscribesTrigger,
|
||||
UserRegistrationTrigger $userRegistrationTrigger,
|
||||
SendEmailAction $sendEmailAction,
|
||||
@ -62,6 +67,7 @@ class MailPoetIntegration implements Integration {
|
||||
$this->subscriberSubject = $subscriberSubject;
|
||||
$this->orderToSubscriberTransformer = $orderToSubscriberTransformer;
|
||||
$this->orderToSegmentTransformer = $orderToSegmentTransformer;
|
||||
$this->subscriberToWordPressUserTransformer = $subscriberToWordPressUserTransformer;
|
||||
$this->someoneSubscribesTrigger = $someoneSubscribesTrigger;
|
||||
$this->userRegistrationTrigger = $userRegistrationTrigger;
|
||||
$this->sendEmailAction = $sendEmailAction;
|
||||
@ -81,6 +87,7 @@ class MailPoetIntegration implements Integration {
|
||||
$registry->addAction($this->sendEmailAction);
|
||||
$registry->addSubjectTransformer($this->orderToSubscriberTransformer);
|
||||
$registry->addSubjectTransformer($this->orderToSegmentTransformer);
|
||||
$registry->addSubjectTransformer($this->subscriberToWordPressUserTransformer);
|
||||
|
||||
// sync step args (subject, preheader, etc.) to email settings
|
||||
$registry->onBeforeAutomationStepSave(
|
||||
|
@ -0,0 +1,40 @@
|
||||
<?php declare(strict_types = 1);
|
||||
|
||||
namespace MailPoet\Automation\Integrations\MailPoet\SubjectTransformers;
|
||||
|
||||
use MailPoet\Automation\Engine\Data\Subject;
|
||||
use MailPoet\Automation\Engine\Integration\SubjectTransformer;
|
||||
use MailPoet\Automation\Integrations\MailPoet\Subjects\SubscriberSubject;
|
||||
use MailPoet\Automation\Integrations\WordPress\Subjects\UserSubject;
|
||||
use MailPoet\Subscribers\SubscribersRepository;
|
||||
|
||||
class SubscriberSubjectToWordPressUserSubjectTransformer implements SubjectTransformer {
|
||||
/** @var SubscribersRepository */
|
||||
private $subscribersRepository;
|
||||
|
||||
public function __construct(
|
||||
SubscribersRepository $subscribersRepository
|
||||
) {
|
||||
$this->subscribersRepository = $subscribersRepository;
|
||||
}
|
||||
|
||||
public function accepts(): string {
|
||||
return SubscriberSubject::KEY;
|
||||
}
|
||||
|
||||
public function returns(): string {
|
||||
return UserSubject::KEY;
|
||||
}
|
||||
|
||||
public function transform(Subject $data): Subject {
|
||||
if ($this->accepts() !== $data->getKey()) {
|
||||
throw new \InvalidArgumentException('Invalid subject type');
|
||||
}
|
||||
|
||||
$subscriber = $this->subscribersRepository->findOneById((int)$data->getArgs()['subscriber_id']);
|
||||
if (!$subscriber) {
|
||||
throw new \InvalidArgumentException('Subscriber not found');
|
||||
}
|
||||
return new Subject(UserSubject::KEY, ['user_id' => $subscriber->getWpUserId()]);
|
||||
}
|
||||
}
|
@ -176,6 +176,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
||||
$container->autowire(\MailPoet\Automation\Integrations\MailPoet\Hooks\CreateAutomationRunHook::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Automation\Integrations\MailPoet\SubjectTransformers\OrderSubjectToSubscriberSubjectTransformer::class)->setPublic(true)->setShared(false);
|
||||
$container->autowire(\MailPoet\Automation\Integrations\MailPoet\SubjectTransformers\OrderSubjectToSegmentSubjectTransformer::class)->setPublic(true)->setShared(false);
|
||||
$container->autowire(\MailPoet\Automation\Integrations\MailPoet\SubjectTransformers\SubscriberSubjectToWordPressUserSubjectTransformer::class)->setPublic(true)->setShared(false);
|
||||
|
||||
// Automation - WooCommerce integration
|
||||
$container->autowire(\MailPoet\Automation\Integrations\WooCommerce\ContextFactory::class)->setPublic(true);
|
||||
|
Reference in New Issue
Block a user