Files
piratepoet/mailpoet/lib/Automation/Integrations/MailPoet/Triggers/SegmentSubscribedTrigger.php
2022-07-12 13:36:58 +02:00

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(),
],
],
]);
}
}