diff --git a/mailpoet/lib/Automation/Engine/Validation/WorkflowValidator.php b/mailpoet/lib/Automation/Engine/Validation/WorkflowValidator.php new file mode 100644 index 0000000000..fff608f709 --- /dev/null +++ b/mailpoet/lib/Automation/Engine/Validation/WorkflowValidator.php @@ -0,0 +1,36 @@ +workflowWalker = $workflowWalker; + } + + public function validate(Workflow $workflow): void { + $this->workflowWalker->walk($workflow, [ + new NoUnreachableStepsRule(), + new ConsistentStepMapRule(), + new NoDuplicateEdgesRule(), + new TriggersUnderRootRule(), + new NoCycleRule(), + new NoJoinRule(), + new NoSplitRule(), + ]); + } +} diff --git a/mailpoet/lib/DI/ContainerConfigurator.php b/mailpoet/lib/DI/ContainerConfigurator.php index 799129c93b..0afa036538 100644 --- a/mailpoet/lib/DI/ContainerConfigurator.php +++ b/mailpoet/lib/DI/ContainerConfigurator.php @@ -129,6 +129,7 @@ class ContainerConfigurator implements IContainerConfigurator { $container->autowire(\MailPoet\Automation\Engine\Storage\WorkflowTemplateStorage::class)->setPublic(true); $container->autowire(\MailPoet\Automation\Engine\Storage\WorkflowStorage::class)->setPublic(true); $container->autowire(\MailPoet\Automation\Engine\Validation\WorkflowGraph\WorkflowWalker::class)->setPublic(true); + $container->autowire(\MailPoet\Automation\Engine\Validation\WorkflowValidator::class)->setPublic(true); $container->autowire(\MailPoet\Automation\Engine\WordPress::class)->setPublic(true); // Automation - API endpoints $container->autowire(\MailPoet\Automation\Engine\Endpoints\Workflows\WorkflowsGetEndpoint::class)->setPublic(true);