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\Subjects\SubscriberSubject;
|
||||||
use MailPoet\Automation\Integrations\MailPoet\SubjectTransformers\OrderSubjectToSegmentSubjectTransformer;
|
use MailPoet\Automation\Integrations\MailPoet\SubjectTransformers\OrderSubjectToSegmentSubjectTransformer;
|
||||||
use MailPoet\Automation\Integrations\MailPoet\SubjectTransformers\OrderSubjectToSubscriberSubjectTransformer;
|
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\SomeoneSubscribesTrigger;
|
||||||
use MailPoet\Automation\Integrations\MailPoet\Triggers\UserRegistrationTrigger;
|
use MailPoet\Automation\Integrations\MailPoet\Triggers\UserRegistrationTrigger;
|
||||||
|
|
||||||
@ -45,12 +46,16 @@ class MailPoetIntegration implements Integration {
|
|||||||
/** @var OrderSubjectToSegmentSubjectTransformer */
|
/** @var OrderSubjectToSegmentSubjectTransformer */
|
||||||
private $orderToSegmentTransformer;
|
private $orderToSegmentTransformer;
|
||||||
|
|
||||||
|
/** @var SubscriberSubjectToWordPressUserSubjectTransformer */
|
||||||
|
private $subscriberToWordPressUserTransformer;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
ContextFactory $contextFactory,
|
ContextFactory $contextFactory,
|
||||||
SegmentSubject $segmentSubject,
|
SegmentSubject $segmentSubject,
|
||||||
SubscriberSubject $subscriberSubject,
|
SubscriberSubject $subscriberSubject,
|
||||||
OrderSubjectToSubscriberSubjectTransformer $orderToSubscriberTransformer,
|
OrderSubjectToSubscriberSubjectTransformer $orderToSubscriberTransformer,
|
||||||
OrderSubjectToSegmentSubjectTransformer $orderToSegmentTransformer,
|
OrderSubjectToSegmentSubjectTransformer $orderToSegmentTransformer,
|
||||||
|
SubscriberSubjectToWordPressUserSubjectTransformer $subscriberToWordPressUserTransformer,
|
||||||
SomeoneSubscribesTrigger $someoneSubscribesTrigger,
|
SomeoneSubscribesTrigger $someoneSubscribesTrigger,
|
||||||
UserRegistrationTrigger $userRegistrationTrigger,
|
UserRegistrationTrigger $userRegistrationTrigger,
|
||||||
SendEmailAction $sendEmailAction,
|
SendEmailAction $sendEmailAction,
|
||||||
@ -62,6 +67,7 @@ class MailPoetIntegration implements Integration {
|
|||||||
$this->subscriberSubject = $subscriberSubject;
|
$this->subscriberSubject = $subscriberSubject;
|
||||||
$this->orderToSubscriberTransformer = $orderToSubscriberTransformer;
|
$this->orderToSubscriberTransformer = $orderToSubscriberTransformer;
|
||||||
$this->orderToSegmentTransformer = $orderToSegmentTransformer;
|
$this->orderToSegmentTransformer = $orderToSegmentTransformer;
|
||||||
|
$this->subscriberToWordPressUserTransformer = $subscriberToWordPressUserTransformer;
|
||||||
$this->someoneSubscribesTrigger = $someoneSubscribesTrigger;
|
$this->someoneSubscribesTrigger = $someoneSubscribesTrigger;
|
||||||
$this->userRegistrationTrigger = $userRegistrationTrigger;
|
$this->userRegistrationTrigger = $userRegistrationTrigger;
|
||||||
$this->sendEmailAction = $sendEmailAction;
|
$this->sendEmailAction = $sendEmailAction;
|
||||||
@ -81,6 +87,7 @@ class MailPoetIntegration implements Integration {
|
|||||||
$registry->addAction($this->sendEmailAction);
|
$registry->addAction($this->sendEmailAction);
|
||||||
$registry->addSubjectTransformer($this->orderToSubscriberTransformer);
|
$registry->addSubjectTransformer($this->orderToSubscriberTransformer);
|
||||||
$registry->addSubjectTransformer($this->orderToSegmentTransformer);
|
$registry->addSubjectTransformer($this->orderToSegmentTransformer);
|
||||||
|
$registry->addSubjectTransformer($this->subscriberToWordPressUserTransformer);
|
||||||
|
|
||||||
// sync step args (subject, preheader, etc.) to email settings
|
// sync step args (subject, preheader, etc.) to email settings
|
||||||
$registry->onBeforeAutomationStepSave(
|
$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\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\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\OrderSubjectToSegmentSubjectTransformer::class)->setPublic(true)->setShared(false);
|
||||||
|
$container->autowire(\MailPoet\Automation\Integrations\MailPoet\SubjectTransformers\SubscriberSubjectToWordPressUserSubjectTransformer::class)->setPublic(true)->setShared(false);
|
||||||
|
|
||||||
// Automation - WooCommerce integration
|
// Automation - WooCommerce integration
|
||||||
$container->autowire(\MailPoet\Automation\Integrations\WooCommerce\ContextFactory::class)->setPublic(true);
|
$container->autowire(\MailPoet\Automation\Integrations\WooCommerce\ContextFactory::class)->setPublic(true);
|
||||||
|
Reference in New Issue
Block a user