PluginProbe
MailPoet – Newsletters, Email Marketing, and Automation / 5.33.1
MailPoet – Newsletters, Email Marketing, and Automation v5.33.1
5.38.0 5.37.0 5.36.1 5.36.0 5.35.1 5.35.0 5.34.3 5.34.2 5.34.1 5.34.0 5.33.1 5.33.0 5.32.0 5.31.0 5.30.0 5.29.0 5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 All 542 releases
mailpoet / lib / Automation / Integrations / MailPoet / Subjects / NewsletterLinkSubject.php
NewsletterLinkSubject.php
69 lines 2.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php declare(strict_types = 1);
2
3 namespace MailPoet\Automation\Integrations\MailPoet\Subjects;
4
5 if (!defined('ABSPATH')) exit;
6
7
8 use MailPoet\Automation\Engine\Data\Subject as SubjectData;
9 use MailPoet\Automation\Engine\Integration\Payload;
10 use MailPoet\Automation\Engine\Integration\Subject;
11 use MailPoet\Automation\Integrations\MailPoet\Fields\NewsletterLinkFieldsFactory;
12 use MailPoet\Automation\Integrations\MailPoet\Payloads\NewsletterLinkPayload;
13 use MailPoet\Cron\Workers\StatsNotifications\NewsletterLinkRepository;
14 use MailPoet\NotFoundException;
15 use MailPoet\Validator\Builder;
16 use MailPoet\Validator\Schema\ObjectSchema;
17
18 /**
19 * @implements Subject<NewsletterLinkPayload>
20 */
21 class NewsletterLinkSubject implements Subject {
22
23
24 const KEY = 'mailpoet:email-link';
25
26 /** @var NewsletterLinkFieldsFactory */
27 private $emailLinkFieldsFactory;
28
29 /** @var NewsletterLinkRepository */
30 private $newsletterLinkRepository;
31
32 public function __construct(
33 NewsletterLinkFieldsFactory $emailLinkFieldsFactory,
34 NewsletterLinkRepository $newsletterLinkRepository
35 ) {
36 $this->emailLinkFieldsFactory = $emailLinkFieldsFactory;
37 $this->newsletterLinkRepository = $newsletterLinkRepository;
38 }
39
40 public function getKey(): string {
41 return self::KEY;
42 }
43
44 public function getName(): string {
45 // translators: automation subject (entity entering automation) title
46 return __('Email link', 'mailpoet');
47 }
48
49 public function getArgsSchema(): ObjectSchema {
50 return Builder::object([
51 'link_id' => Builder::integer()->minimum(1)->required(),
52 ]);
53 }
54
55 public function getFields(): array {
56 return $this->emailLinkFieldsFactory->getFields();
57 }
58
59 public function getPayload(SubjectData $subjectData): Payload {
60 $linkId = $subjectData->getArgs()['link_id'];
61 $linkEntity = $this->newsletterLinkRepository->findOneById($linkId);
62 if (!$linkEntity) {
63 throw NotFoundException::create()->withMessage(sprintf("Email link with ID '%d' not found", $linkId));
64 }
65
66 return new NewsletterLinkPayload($linkEntity);
67 }
68 }
69