wp = $wp; $this->subscribersRepository = $subscribersRepository; } public function transform(Subject $data): ?Subject { if ($this->accepts() !== $data->getKey()) { throw new \InvalidArgumentException('Invalid subject type'); } $commentId = (int)$data->getArgs()['comment_id']; $comment = $this->wp->getComment($commentId); if (!$comment instanceof \WP_Comment) { return null; } //phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps $email = $comment->comment_author_email; if (!$this->wp->isEmail($email)) { return null; } $subscriber = $this->subscribersRepository->findOneBy(['email' => $email]); if (!$subscriber) { return null; } return new Subject( SubscriberSubject::KEY, [ 'subscriber_id' => $subscriber->getId(), ] ); } public function returns(): string { return SubscriberSubject::KEY; } public function accepts(): string { return CommentSubject::KEY; } }