segmentSubject = $segmentSubject; $this->subscriberSubject = $subscriberSubject; $this->wp = $wp; } public function getKey(): string { return 'mailpoet:segment:subscribed'; } public function getName(): string { return __('Subscribed to segment'); } public function getSubjects(): array { return [ $this->segmentSubject, $this->subscriberSubject, ]; } 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->segmentSubject->load(['segment_id' => $segment->getId()]); $this->subscriberSubject->load(['subscriber_id' => $subscriber->getId()]); $this->wp->doAction(Hooks::TRIGGER, $this, [ $this->segmentSubject, $this->subscriberSubject, ]); } }