From 87f35abf8bfb3ace3b693e17f0c8a759194d5597 Mon Sep 17 00:00:00 2001 From: Jan Jakes Date: Thu, 28 Jul 2022 16:08:13 +0200 Subject: [PATCH] Add workflow and step before save hooks [MAILPOET-4515] --- mailpoet/lib/Automation/Engine/Hooks.php | 23 +++++++++++++++++++++++ mailpoet/lib/DI/ContainerConfigurator.php | 1 + 2 files changed, 24 insertions(+) diff --git a/mailpoet/lib/Automation/Engine/Hooks.php b/mailpoet/lib/Automation/Engine/Hooks.php index 025584dfcb..8d535cb6e0 100644 --- a/mailpoet/lib/Automation/Engine/Hooks.php +++ b/mailpoet/lib/Automation/Engine/Hooks.php @@ -2,10 +2,33 @@ namespace MailPoet\Automation\Engine; +use MailPoet\Automation\Engine\Data\Step; +use MailPoet\Automation\Engine\Data\Workflow; + class Hooks { + /** @var WordPress */ + private $wordPress; + + public function __construct( + WordPress $wordPress + ) { + $this->wordPress = $wordPress; + } + public const INITIALIZE = 'mailpoet/automation/initialize'; public const API_INITIALIZE = 'mailpoet/automation/api/initialize'; public const STEP_RUNNER_INITIALIZE = 'mailpoet/automation/step_runner/initialize'; public const TRIGGER = 'mailpoet/automation/trigger'; public const WORKFLOW_STEP = 'mailpoet/automation/workflow/step'; + + public const WORKFLOW_BEFORE_SAVE = 'mailpoet/automation/workflow/before_save'; + public const WORKFLOW_STEP_BEFORE_SAVE = 'mailpoet/automation/workflow/step/before_save'; + + public function doWorkflowBeforeSave(Workflow $workflow): void { + $this->wordPress->doAction(self::WORKFLOW_BEFORE_SAVE, $workflow); + } + + public function doWorkflowStepBeforeSave(Step $step): void { + $this->wordPress->doAction(self::WORKFLOW_STEP_BEFORE_SAVE, $step); + } } diff --git a/mailpoet/lib/DI/ContainerConfigurator.php b/mailpoet/lib/DI/ContainerConfigurator.php index f9db205976..11b0ed0371 100644 --- a/mailpoet/lib/DI/ContainerConfigurator.php +++ b/mailpoet/lib/DI/ContainerConfigurator.php @@ -119,6 +119,7 @@ class ContainerConfigurator implements IContainerConfigurator { $container->autowire(\MailPoet\Automation\Engine\Control\Steps\ActionStepRunner::class)->setPublic(true); $container->autowire(\MailPoet\Automation\Engine\Control\TriggerHandler::class)->setPublic(true); $container->autowire(\MailPoet\Automation\Engine\Engine::class)->setPublic(true); + $container->autowire(\MailPoet\Automation\Engine\Hooks::class)->setPublic(true); $container->autowire(\MailPoet\Automation\Engine\Migrations\Migrator::class)->setPublic(true); $container->autowire(\MailPoet\Automation\Engine\Registry::class)->setPublic(true); $container->autowire(\MailPoet\Automation\Engine\Storage\WorkflowRunStorage::class)->setPublic(true);