PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.36.1
MailPoet – Newsletters, Email Marketing, and Automation v5.36.1
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 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 3 months ago Control 2 months ago Data 3 months ago Endpoints 2 months ago Exceptions 1 year ago Integration 1 year ago Mappers 10 months ago Storage 3 months ago Templates 2 years ago Utils 10 months ago Validation 3 months ago Engine.php 2 months ago Exceptions.php 2 months ago Hooks.php 3 months ago Integration.php 4 years ago Registry.php 4 months ago WordPress.php 3 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