From 2faf0739a3917f4d74a534d4cf9f87bb896fbf2f Mon Sep 17 00:00:00 2001 From: Jan Jakes Date: Thu, 28 Jul 2022 13:33:08 +0200 Subject: [PATCH] Check that step implementation exists when saving workflow [MAILPOET-4515] --- .../Engine/Builder/UpdateStepsController.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/mailpoet/lib/Automation/Engine/Builder/UpdateStepsController.php b/mailpoet/lib/Automation/Engine/Builder/UpdateStepsController.php index c7379e1b28..f85bdebb76 100644 --- a/mailpoet/lib/Automation/Engine/Builder/UpdateStepsController.php +++ b/mailpoet/lib/Automation/Engine/Builder/UpdateStepsController.php @@ -4,8 +4,19 @@ namespace MailPoet\Automation\Engine\Builder; use MailPoet\Automation\Engine\Data\Step; use MailPoet\Automation\Engine\Data\Workflow; +use MailPoet\Automation\Engine\Exceptions; +use MailPoet\Automation\Engine\Registry; class UpdateStepsController { + /** @var Registry */ + private $registry; + + public function __construct( + Registry $registry + ) { + $this->registry = $registry; + } + public function updateSteps(Workflow $workflow, array $data): Workflow { $steps = []; foreach ($data as $stepData) { @@ -17,6 +28,11 @@ class UpdateStepsController { } private function processStep(array $data): Step { + $key = $data['key']; + $step = $this->registry->getStep($key); + if (!$step) { + throw Exceptions::workflowStepNotFound($key); + } return new Step( $data['id'], $data['type'],