PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.34.2
MailPoet – Newsletters, Email Marketing, and Automation v5.34.2
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 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 / Engine / Engine.php
mailpoet / lib / Automation / Engine Last commit date
API 3 years ago Builder 2 months ago Control 4 weeks ago Data 2 months ago Endpoints 1 month ago Exceptions 1 year ago Integration 11 months ago Mappers 9 months ago Storage 2 months ago Templates 2 years ago Utils 8 months ago Validation 2 months ago Engine.php 1 month ago Exceptions.php 1 month ago Hooks.php 2 months ago Integration.php 4 years ago Registry.php 3 months ago WordPress.php 2 months ago index.php 3 years ago
Engine.php
108 lines
1 <?php declare(strict_types = 1);
2
3 namespace MailPoet\Automation\Engine;
4
5 if (!defined('ABSPATH')) exit;
6
7
8 use MailPoet\Automation\Engine\API\API;
9 use MailPoet\Automation\Engine\Control\StepHandler;
10 use MailPoet\Automation\Engine\Control\TriggerHandler;
11 use MailPoet\Automation\Engine\Endpoints\Automations\AutomationsCreateFromTemplateEndpoint;
12 use MailPoet\Automation\Engine\Endpoints\Automations\AutomationsDeleteEndpoint;
13 use MailPoet\Automation\Engine\Endpoints\Automations\AutomationsDuplicateEndpoint;
14 use MailPoet\Automation\Engine\Endpoints\Automations\AutomationsGetEndpoint;
15 use MailPoet\Automation\Engine\Endpoints\Automations\AutomationsPutEndpoint;
16 use MailPoet\Automation\Engine\Endpoints\Automations\AutomationTemplateEmailPreviewEndpoint;
17 use MailPoet\Automation\Engine\Endpoints\Automations\AutomationTemplateGetEndpoint;
18 use MailPoet\Automation\Engine\Endpoints\Automations\AutomationTemplatesGetEndpoint;
19 use MailPoet\Automation\Engine\Endpoints\Automations\AutomationVersionsGetEndpoint;
20 use MailPoet\Automation\Engine\Storage\AutomationStorage;
21 use MailPoet\Automation\Integrations\Core\CoreIntegration;
22 use MailPoet\Automation\Integrations\WordPress\WordPressIntegration;
23
24 class Engine {
25 const CAPABILITY_MANAGE_AUTOMATIONS = 'mailpoet_manage_automations';
26
27 /** @var API */
28 private $api;
29
30 /** @var CoreIntegration */
31 private $coreIntegration;
32
33 /** @var WordPressIntegration */
34 private $wordPressIntegration;
35
36 /** @var Registry */
37 private $registry;
38
39 /** @var StepHandler */
40 private $stepHandler;
41
42 /** @var TriggerHandler */
43 private $triggerHandler;
44
45 /** @var WordPress */
46 private $wordPress;
47
48 /** @var AutomationStorage */
49 private $automationStorage;
50
51 public function __construct(
52 API $api,
53 CoreIntegration $coreIntegration,
54 WordPressIntegration $wordPressIntegration,
55 Registry $registry,
56 StepHandler $stepHandler,
57 TriggerHandler $triggerHandler,
58 WordPress $wordPress,
59 AutomationStorage $automationStorage
60 ) {
61 $this->api = $api;
62 $this->coreIntegration = $coreIntegration;
63 $this->wordPressIntegration = $wordPressIntegration;
64 $this->registry = $registry;
65 $this->stepHandler = $stepHandler;
66 $this->triggerHandler = $triggerHandler;
67 $this->wordPress = $wordPress;
68 $this->automationStorage = $automationStorage;
69 }
70
71 public function initialize(): void {
72 $this->registerApiRoutes();
73
74 $this->api->initialize();
75 $this->stepHandler->initialize();
76 $this->triggerHandler->initialize();
77
78 $this->coreIntegration->register($this->registry);
79 $this->wordPressIntegration->register($this->registry);
80 $this->wordPress->doAction(Hooks::INITIALIZE, [$this->registry]);
81 $this->registerActiveTriggerHooks();
82 }
83
84 private function registerApiRoutes(): void {
85 $this->wordPress->addAction(Hooks::API_INITIALIZE, function (API $api) {
86 $api->registerGetRoute('automations', AutomationsGetEndpoint::class);
87 $api->registerPutRoute('automations/(?P<id>\d+)', AutomationsPutEndpoint::class);
88 $api->registerGetRoute('automations/(?P<id>\d+)/versions', AutomationVersionsGetEndpoint::class);
89 $api->registerDeleteRoute('automations/(?P<id>\d+)', AutomationsDeleteEndpoint::class);
90 $api->registerPostRoute('automations/(?P<id>\d+)/duplicate', AutomationsDuplicateEndpoint::class);
91 $api->registerPostRoute('automations/create-from-template', AutomationsCreateFromTemplateEndpoint::class);
92 $api->registerGetRoute('automation-templates', AutomationTemplatesGetEndpoint::class);
93 $api->registerGetRoute('automation-template-email-preview', AutomationTemplateEmailPreviewEndpoint::class);
94 $api->registerGetRoute('automation-templates/(?P<slug>.+)', AutomationTemplateGetEndpoint::class);
95 });
96 }
97
98 private function registerActiveTriggerHooks(): void {
99 $triggerKeys = $this->automationStorage->getActiveTriggerKeys();
100 foreach ($triggerKeys as $triggerKey) {
101 $instance = $this->registry->getTrigger($triggerKey);
102 if ($instance) {
103 $instance->registerHooks();
104 }
105 }
106 }
107 }
108