59 lines
1.5 KiB
PHP
59 lines
1.5 KiB
PHP
<?php declare(strict_types = 1);
|
|
|
|
namespace MailPoet\Automation\Integrations\MailPoet\Triggers;
|
|
|
|
use MailPoet\Automation\Engine\Hooks;
|
|
use MailPoet\Automation\Engine\Workflows\Trigger;
|
|
use MailPoet\Automation\Integrations\MailPoet\Subjects\SegmentSubject;
|
|
use MailPoet\Automation\Integrations\MailPoet\Subjects\SubscriberSubject;
|
|
use MailPoet\Entities\SubscriberSegmentEntity;
|
|
use MailPoet\InvalidStateException;
|
|
use MailPoet\WP\Functions as WPFunctions;
|
|
|
|
class SegmentSubscribedTrigger implements Trigger {
|
|
/** @var WPFunctions */
|
|
private $wp;
|
|
|
|
public function __construct(
|
|
WPFunctions $wp
|
|
) {
|
|
$this->wp = $wp;
|
|
}
|
|
|
|
public function getKey(): string {
|
|
return 'mailpoet:segment:subscribed';
|
|
}
|
|
|
|
public function getName(): string {
|
|
return __('Subscribed to segment');
|
|
}
|
|
|
|
public function registerHooks(): void {
|
|
$this->wp->addAction('mailpoet_segment_subscribed', [$this, 'handleSubscription'], 10, 2);
|
|
}
|
|
|
|
public function handleSubscription(SubscriberSegmentEntity $subscriberSegment): void {
|
|
$segment = $subscriberSegment->getSegment();
|
|
$subscriber = $subscriberSegment->getSubscriber();
|
|
|
|
if (!$segment || !$subscriber) {
|
|
throw new InvalidStateException();
|
|
}
|
|
|
|
$this->wp->doAction(Hooks::TRIGGER, $this, [
|
|
[
|
|
'key' => SegmentSubject::KEY,
|
|
'args' => [
|
|
'segment_id' => $segment->getId(),
|
|
],
|
|
],
|
|
[
|
|
'key' => SubscriberSubject::KEY,
|
|
'args' => [
|
|
'subscriber_id' => $subscriber->getId(),
|
|
],
|
|
],
|
|
]);
|
|
}
|
|
}
|