PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.34.2
MailPoet – Newsletters, Email Marketing, and Automation v5.34.2
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 4.44.0 4.44.1 4.45.0 4.46.0 4.47.0 4.48.0 4.48.1 4.48.2 4.49.0 4.49.1 4.5.0 4.5.1 4.5.2 4.50.0 4.50.1 4.51.0 4.51.1 4.51.2 4.52.0 4.53.0 4.54.0 4.55.0 4.56.0 4.57.0 4.58.0 4.58.1 4.58.2 4.6.0 4.6.1 4.6.2 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 5.0.0 5.0.1 5.0.2 5.1.0 5.1.1 5.10.0 5.10.1 5.11.0 5.12.0 5.12.1 5.12.10 5.12.11 5.12.12 5.12.13 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13.0 5.13.1 5.13.2 5.14.0 5.14.1 5.14.2 5.14.3 5.15.0 5.15.1 5.16.0 5.16.1 5.16.2 5.16.3 5.16.4 5.17.0 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.18.0 5.19.0 5.2.0 5.2.1 5.2.2 5.2.3 5.20.0 5.21.0 5.21.1 5.21.2 5.21.3 5.22.0 5.22.1 5.22.2 5.22.3 5.22.4 5.23.0 5.23.1 5.23.2 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.7.0 5.7.1 5.8.0 5.8.1 5.9.0 3.0.0-beta.15 3.7.1 3.0.0-beta.16 3.7.2 3.0.0-beta.17 3.7.3 3.0.0-beta.18 3.7.4 3.0.0-beta.19 3.7.5 3.0.0-beta.2 3.7.6 3.0.0-beta.20 3.7.8 3.0.0-beta.21 3.70.0 3.0.0-beta.22 3.71.0 3.0.0-beta.23 3.71.1 3.0.0-beta.23.1 3.71.2 3.0.0-beta.23.2 3.71.3 3.0.0-beta.24 3.72.0 3.0.0-beta.25 3.73.0 3.0.0-beta.26 3.73.1 3.0.0-beta.27 3.73.2 3.0.0-beta.28 3.74.0 3.0.0-beta.29 3.74.1 3.0.0-beta.3 3.74.2 3.0.0-beta.30 3.74.3 3.0.0-beta.31 3.75.0 3.0.0-beta.32 3.75.1 3.0.0-beta.33 3.76.0 3.0.0-beta.33.1 3.77.0 3.0.0-beta.34.0.0 3.77.1 3.0.0-beta.36.0.0 3.78.0 3.0.0-beta.36.0.1 3.79.0 3.0.0-beta.36.2.0 3.8 3.0.0-beta.36.3.0 3.8.1 3.0.0-beta.36.3.1 3.8.2 3.0.0-beta.37.0.0 3.8.3 3.0.0-beta.4 3.8.4 3.0.0-beta.5 3.8.5 3.0.0-beta.6 3.8.6 3.0.0-beta.7 3.80.0 3.0.0-beta.7.1 3.81.0 3.0.0-beta.8 3.82.0 3.0.0-beta.9 3.83.0 3.0.0-rc.1.0.0 3.84.0 3.0.0-rc.1.0.1 3.84.1 3.0.0-rc.1.0.2 3.85.0 3.0.0-rc.1.0.3 3.85.1 3.0.0-rc.1.0.4 3.86.0 3.0.0-rc.2.0.0 3.87.0 3.0.0-rc.2.0.1 3.87.1 3.0.0-rc.2.0.2 3.87.2 3.0.0-rc.2.0.3 3.88.0 3.0.1 3.88.1 3.0.2 3.88.2 3.0.3 3.89.0 3.0.4 3.89.1 3.0.5 3.89.2 3.0.6 3.89.3 3.0.7 3.89.4 3.0.8 3.9.0 3.0.9 3.9.1 3.1.0 3.90.0 3.10 3.90.1 3.10.1 3.90.2 3.100.0 3.91.0 3.100.1 3.91.1 3.100.2 3.92.0 3.101.0 3.92.1 3.101.1 3.93.0 3.102.0 3.93.1 3.102.1 3.94.0 3.103.0 3.95.0 3.103.1 3.95.1 3.11.0 3.96.0 3.11.1 3.96.1 3.11.2 3.97.0 3.11.3 3.98.0 3.11.4 3.98.1 3.11.5 3.99.0 3.12.0 3.99.1 3.12.1 4.0.0 3.13.0 4.0.1 3.14.0 4.1.0 3.14.1 4.1.1 3.15.0 4.10.0 3.16.0 4.11.0 3.16.1 4.11.1 3.16.2 4.12.0 3.16.3 4.12.1 3.17.0 4.12.2 3.17.1 4.13.0 3.17.2 4.14.0 3.18.0 4.15.0 3.18.1 4.16.0 3.18.2 4.17.0 3.19.0 4.17.1 3.19.1 4.18.0 3.19.2 4.18.1 3.19.3 4.19.0 3.2.0 4.2.0 3.2.1 4.20.0 3.2.2 4.20.1 3.2.3 4.20.2 3.2.4 4.21.0 3.2.5 4.22.0 3.20.0 4.22.1 3.21.0 4.22.2 3.21.1 4.23.0 3.22.0 4.24.0 3.23.0 4.25.0 3.23.1 4.26.0 3.23.2 4.26.1 3.24.0 4.27.0 3.25.0 4.28.0 3.25.1 4.29.0 3.26.0 4.3.0 3.26.1 4.3.1 3.27.0 4.30.0 3.28.0 4.31.0 3.29.0 4.31.1 3.3.0 4.32.0 3.3.1 4.33.0 3.3.2 4.34.0 3.3.3 4.35.0 3.3.4 4.35.1 3.3.5 4.36.0 3.3.6 4.37.0 3.30.0 4.38.0 3.31.0 4.39.0 3.31.1 4.4.0 3.32.0 4.40.0 3.32.1 4.41.0 3.32.2 4.41.1 3.33.0 4.41.2 3.34.0 4.41.3 3.34.1 4.42.0 3.34.2 4.42.1 3.34.3 3.34.4 3.35.0 3.35.1 3.35.3 3.35.4 3.36.0 3.37.0 3.37.1 3.37.2 3.37.3 3.38.0 3.38.1 3.39.0 3.39.1 3.39.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.40.0 3.40.1 3.41.0 3.41.1 3.41.2 3.42.0 3.42.1 3.42.2 3.42.3 3.43.0 3.43.1 3.44.0 3.45.0 3.45.1 3.46.0 3.46.1 3.46.10 3.46.11 3.46.12 3.46.13 3.46.14 3.46.2 3.46.3 3.46.4 3.46.5 3.46.6 3.46.7 3.46.8 3.46.9 3.47.0 3.47.1 3.47.10 3.47.11 3.47.2 3.47.3 3.47.5 3.47.6 3.47.7 3.47.9 3.48.0 3.48.1 3.49.0 3.49.1 3.5.0 3.5.1 3.50.0 3.51.0 3.51.1 3.51.2 3.52.0 3.53.0 3.54.0 3.54.1 3.54.2 3.54.3 3.55.0 3.55.1 3.56.0 3.56.1 3.56.2 3.57.0 3.57.1 3.58.0 3.59.0 3.59.1 3.59.2 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.60.0 3.60.1 3.60.10 3.60.11 3.60.12 3.60.2 3.60.3 3.60.4 3.60.6 3.60.7 3.60.8 3.60.9 3.61.0 3.62.0 3.62.1 3.63.0 3.64.0 3.64.1 3.64.2 3.64.3 3.65.0 trunk 3.65.1 3.0.0 3.66.0 3.0.0-beta.1 3.67.0 3.0.0-beta.10 3.67.1 3.0.0-beta.11 3.68.0 3.0.0-beta.12 3.69.0 3.0.0-beta.13 3.69.1 3.0.0-beta.14 3.7.0
mailpoet / lib / Automation / Integrations / MailPoet / MailPoetIntegration.php
mailpoet / lib / Automation / Integrations / MailPoet Last commit date
Actions 1 month ago Analytics 1 month ago Fields 2 months ago Hooks 1 month ago Payloads 2 years ago SubjectTransformers 2 months ago Subjects 5 months ago Templates 1 month ago Triggers 2 months ago ContextFactory.php 2 months ago MailPoetIntegration.php 2 months ago index.php 3 years ago
MailPoetIntegration.php
171 lines
1 <?php declare(strict_types = 1);
2
3 namespace MailPoet\Automation\Integrations\MailPoet;
4
5 if (!defined('ABSPATH')) exit;
6
7
8 use MailPoet\Automation\Engine\Hooks;
9 use MailPoet\Automation\Engine\Integration;
10 use MailPoet\Automation\Engine\Registry;
11 use MailPoet\Automation\Engine\WordPress;
12 use MailPoet\Automation\Integrations\MailPoet\Actions\SendEmailAction;
13 use MailPoet\Automation\Integrations\MailPoet\Actions\SendLatestNewsletterAction;
14 use MailPoet\Automation\Integrations\MailPoet\Analytics\Analytics;
15 use MailPoet\Automation\Integrations\MailPoet\Hooks\AutomationEditorLoadingHooks;
16 use MailPoet\Automation\Integrations\MailPoet\Hooks\CreateAutomationRunHook;
17 use MailPoet\Automation\Integrations\MailPoet\Subjects\NewsletterLinkSubject;
18 use MailPoet\Automation\Integrations\MailPoet\Subjects\SegmentSubject;
19 use MailPoet\Automation\Integrations\MailPoet\Subjects\SubscriberSubject;
20 use MailPoet\Automation\Integrations\MailPoet\SubjectTransformers\CommentSubjectToSubscriberSubjectTransformer;
21 use MailPoet\Automation\Integrations\MailPoet\SubjectTransformers\CustomerSubjectToSubscriberSubjectTransformer;
22 use MailPoet\Automation\Integrations\MailPoet\SubjectTransformers\OrderSubjectToSegmentSubjectTransformer;
23 use MailPoet\Automation\Integrations\MailPoet\SubjectTransformers\OrderSubjectToSubscriberSubjectTransformer;
24 use MailPoet\Automation\Integrations\MailPoet\SubjectTransformers\SubscriberSubjectToWordPressUserSubjectTransformer;
25 use MailPoet\Automation\Integrations\MailPoet\Templates\TemplatesFactory;
26 use MailPoet\Automation\Integrations\MailPoet\Triggers\SomeoneSubscribesTrigger;
27 use MailPoet\Automation\Integrations\MailPoet\Triggers\SomeoneUnsubscribesTrigger;
28 use MailPoet\Automation\Integrations\MailPoet\Triggers\UserRegistrationTrigger;
29
30 class MailPoetIntegration implements Integration {
31 /** @var ContextFactory */
32 private $contextFactory;
33
34 /** @var SegmentSubject */
35 private $segmentSubject;
36
37 /** @var SubscriberSubject */
38 private $subscriberSubject;
39
40 /** @var NewsletterLinkSubject */
41 private $emailLinkSubject;
42
43 /** @var SomeoneSubscribesTrigger */
44 private $someoneSubscribesTrigger;
45
46 /** @var SomeoneUnsubscribesTrigger */
47 private $someoneUnsubscribesTrigger;
48
49 /** @var UserRegistrationTrigger */
50 private $userRegistrationTrigger;
51
52 /** @var SendEmailAction */
53 private $sendEmailAction;
54
55 /** @var SendLatestNewsletterAction */
56 private $sendLatestNewsletterAction;
57
58 /** @var AutomationEditorLoadingHooks */
59 private $automationEditorLoadingHooks;
60
61 /** @var CreateAutomationRunHook */
62 private $createAutomationRunHook;
63
64 /** @var OrderSubjectToSubscriberSubjectTransformer */
65 private $orderToSubscriberTransformer;
66
67 /** @var OrderSubjectToSegmentSubjectTransformer */
68 private $orderToSegmentTransformer;
69
70 /** @var SubscriberSubjectToWordPressUserSubjectTransformer */
71 private $subscriberToWordPressUserTransformer;
72
73 /** @var CommentSubjectToSubscriberSubjectTransformer */
74 private $commentToSubscriberTransformer;
75
76 /** @var CustomerSubjectToSubscriberSubjectTransformer */
77 private $customerToSubscriberTransformer;
78
79 /** @var TemplatesFactory */
80 private $templatesFactory;
81
82 /** @var Analytics */
83 private $registerAnalytics;
84
85 /** @var WordPress */
86 private $wordPress;
87
88 public function __construct(
89 ContextFactory $contextFactory,
90 SegmentSubject $segmentSubject,
91 SubscriberSubject $subscriberSubject,
92 NewsletterLinkSubject $emailLinkSubject,
93 OrderSubjectToSubscriberSubjectTransformer $orderToSubscriberTransformer,
94 OrderSubjectToSegmentSubjectTransformer $orderToSegmentTransformer,
95 SubscriberSubjectToWordPressUserSubjectTransformer $subscriberToWordPressUserTransformer,
96 CommentSubjectToSubscriberSubjectTransformer $commentToSubscriberTransformer,
97 CustomerSubjectToSubscriberSubjectTransformer $customerToSubscriberTransformer,
98 SomeoneSubscribesTrigger $someoneSubscribesTrigger,
99 SomeoneUnsubscribesTrigger $someoneUnsubscribesTrigger,
100 UserRegistrationTrigger $userRegistrationTrigger,
101 SendEmailAction $sendEmailAction,
102 SendLatestNewsletterAction $sendLatestNewsletterAction,
103 AutomationEditorLoadingHooks $automationEditorLoadingHooks,
104 CreateAutomationRunHook $createAutomationRunHook,
105 TemplatesFactory $templatesFactory,
106 Analytics $registerAnalytics,
107 WordPress $wordPress
108 ) {
109 $this->contextFactory = $contextFactory;
110 $this->segmentSubject = $segmentSubject;
111 $this->subscriberSubject = $subscriberSubject;
112 $this->emailLinkSubject = $emailLinkSubject;
113 $this->orderToSubscriberTransformer = $orderToSubscriberTransformer;
114 $this->orderToSegmentTransformer = $orderToSegmentTransformer;
115 $this->subscriberToWordPressUserTransformer = $subscriberToWordPressUserTransformer;
116 $this->commentToSubscriberTransformer = $commentToSubscriberTransformer;
117 $this->customerToSubscriberTransformer = $customerToSubscriberTransformer;
118 $this->someoneSubscribesTrigger = $someoneSubscribesTrigger;
119 $this->someoneUnsubscribesTrigger = $someoneUnsubscribesTrigger;
120 $this->userRegistrationTrigger = $userRegistrationTrigger;
121 $this->sendEmailAction = $sendEmailAction;
122 $this->sendLatestNewsletterAction = $sendLatestNewsletterAction;
123 $this->automationEditorLoadingHooks = $automationEditorLoadingHooks;
124 $this->createAutomationRunHook = $createAutomationRunHook;
125 $this->templatesFactory = $templatesFactory;
126 $this->registerAnalytics = $registerAnalytics;
127 $this->wordPress = $wordPress;
128 }
129
130 public function register(Registry $registry): void {
131 $registry->addContextFactory('mailpoet', function () {
132 return $this->contextFactory->getContextData();
133 });
134
135 $registry->addSubject($this->segmentSubject);
136 $registry->addSubject($this->subscriberSubject);
137 $registry->addSubject($this->emailLinkSubject);
138 $registry->addTrigger($this->someoneSubscribesTrigger);
139 $registry->addTrigger($this->someoneUnsubscribesTrigger);
140 $registry->addTrigger($this->userRegistrationTrigger);
141 $registry->addAction($this->sendEmailAction);
142 $registry->addAction($this->sendLatestNewsletterAction);
143 $registry->addSubjectTransformer($this->orderToSubscriberTransformer);
144 $registry->addSubjectTransformer($this->orderToSegmentTransformer);
145 $registry->addSubjectTransformer($this->subscriberToWordPressUserTransformer);
146 $registry->addSubjectTransformer($this->commentToSubscriberTransformer);
147 $registry->addSubjectTransformer($this->customerToSubscriberTransformer);
148
149 foreach ($this->templatesFactory->createTemplates() as $template) {
150 $registry->addTemplate($template);
151 }
152
153 // sync step args (subject, preheader, etc.) to email settings
154 $registry->onBeforeAutomationStepSave(
155 [$this->sendEmailAction, 'saveEmailSettings'],
156 $this->sendEmailAction->getKey()
157 );
158
159 // execute send email step progress when email is sent
160 $this->wordPress->addAction('mailpoet_automation_email_sent', [$this->sendEmailAction, 'handleEmailSent']);
161
162 // forbid combining the unsubscribe trigger with a "Send email" action
163 $this->wordPress->addAction(Hooks::AUTOMATION_BEFORE_SAVE, [$this->someoneUnsubscribesTrigger, 'validateAutomation']);
164
165 $this->automationEditorLoadingHooks->init();
166 $this->createAutomationRunHook->init();
167
168 $this->registerAnalytics->register();
169 }
170 }
171