From a052cdccebc1eb99af7355b83e634d9cc6c5881c Mon Sep 17 00:00:00 2001 From: Jan Jakes Date: Tue, 4 Oct 2022 15:25:43 +0200 Subject: [PATCH] Allow custom validation for all step types [MAILPOET-4659] --- mailpoet/lib/Automation/Engine/Control/RootStep.php | 4 ++++ mailpoet/lib/Automation/Engine/Integration/Action.php | 3 --- mailpoet/lib/Automation/Engine/Integration/Step.php | 3 +++ .../Validation/WorkflowRules/ValidStepValidationRule.php | 9 +++------ .../MailPoet/Triggers/SomeoneSubscribesTrigger.php | 4 ++++ .../MailPoet/Triggers/UserRegistrationTrigger.php | 4 ++++ 6 files changed, 18 insertions(+), 9 deletions(-) diff --git a/mailpoet/lib/Automation/Engine/Control/RootStep.php b/mailpoet/lib/Automation/Engine/Control/RootStep.php index 5255f741ba..56e88b305a 100644 --- a/mailpoet/lib/Automation/Engine/Control/RootStep.php +++ b/mailpoet/lib/Automation/Engine/Control/RootStep.php @@ -2,6 +2,7 @@ namespace MailPoet\Automation\Engine\Control; +use MailPoet\Automation\Engine\Data\StepValidationArgs; use MailPoet\Automation\Engine\Integration\Step; use MailPoet\Validator\Schema\ObjectSchema; @@ -21,4 +22,7 @@ class RootStep implements Step { public function getSubjectKeys(): array { return []; } + + public function validate(StepValidationArgs $args): void { + } } diff --git a/mailpoet/lib/Automation/Engine/Integration/Action.php b/mailpoet/lib/Automation/Engine/Integration/Action.php index 76cc6551b8..7900fcfc4e 100644 --- a/mailpoet/lib/Automation/Engine/Integration/Action.php +++ b/mailpoet/lib/Automation/Engine/Integration/Action.php @@ -3,10 +3,7 @@ namespace MailPoet\Automation\Engine\Integration; use MailPoet\Automation\Engine\Data\StepRunArgs; -use MailPoet\Automation\Engine\Data\StepValidationArgs; interface Action extends Step { public function run(StepRunArgs $args): void; - - public function validate(StepValidationArgs $args): void; } diff --git a/mailpoet/lib/Automation/Engine/Integration/Step.php b/mailpoet/lib/Automation/Engine/Integration/Step.php index 43980331b6..cbc5f81a71 100644 --- a/mailpoet/lib/Automation/Engine/Integration/Step.php +++ b/mailpoet/lib/Automation/Engine/Integration/Step.php @@ -2,6 +2,7 @@ namespace MailPoet\Automation\Engine\Integration; +use MailPoet\Automation\Engine\Data\StepValidationArgs; use MailPoet\Validator\Schema\ObjectSchema; interface Step { @@ -13,4 +14,6 @@ interface Step { /** @return string[] */ public function getSubjectKeys(): array; + + public function validate(StepValidationArgs $args): void; } diff --git a/mailpoet/lib/Automation/Engine/Validation/WorkflowRules/ValidStepValidationRule.php b/mailpoet/lib/Automation/Engine/Validation/WorkflowRules/ValidStepValidationRule.php index 860c11e175..4ed237e53a 100644 --- a/mailpoet/lib/Automation/Engine/Validation/WorkflowRules/ValidStepValidationRule.php +++ b/mailpoet/lib/Automation/Engine/Validation/WorkflowRules/ValidStepValidationRule.php @@ -44,12 +44,9 @@ class ValidStepValidationRule implements WorkflowNodeVisitor { } try { - if ($registryStep instanceof Action) { - $subjects = $this->collectSubjects($workflow, $node->getParents()); - $args = new StepValidationArgs($workflow, $step, $subjects); - $registryStep->validate($args); - } - + $subjects = $this->collectSubjects($workflow, $node->getParents()); + $args = new StepValidationArgs($workflow, $step, $subjects); + $registryStep->validate($args); } catch (Throwable $e) { $this->errors[$step->getId()] = [ 'step_id' => $step->getId(), diff --git a/mailpoet/lib/Automation/Integrations/MailPoet/Triggers/SomeoneSubscribesTrigger.php b/mailpoet/lib/Automation/Integrations/MailPoet/Triggers/SomeoneSubscribesTrigger.php index 5681a5e04e..aa79e58f7f 100644 --- a/mailpoet/lib/Automation/Integrations/MailPoet/Triggers/SomeoneSubscribesTrigger.php +++ b/mailpoet/lib/Automation/Integrations/MailPoet/Triggers/SomeoneSubscribesTrigger.php @@ -3,6 +3,7 @@ namespace MailPoet\Automation\Integrations\MailPoet\Triggers; use MailPoet\Automation\Engine\Data\StepRunArgs; +use MailPoet\Automation\Engine\Data\StepValidationArgs; use MailPoet\Automation\Engine\Data\Subject; use MailPoet\Automation\Engine\Hooks; use MailPoet\Automation\Engine\Integration\Trigger; @@ -47,6 +48,9 @@ class SomeoneSubscribesTrigger implements Trigger { ]; } + public function validate(StepValidationArgs $args): void { + } + public function registerHooks(): void { $this->wp->addAction('mailpoet_segment_subscribed', [$this, 'handleSubscription'], 10, 2); } diff --git a/mailpoet/lib/Automation/Integrations/MailPoet/Triggers/UserRegistrationTrigger.php b/mailpoet/lib/Automation/Integrations/MailPoet/Triggers/UserRegistrationTrigger.php index a286e68e80..6138533712 100644 --- a/mailpoet/lib/Automation/Integrations/MailPoet/Triggers/UserRegistrationTrigger.php +++ b/mailpoet/lib/Automation/Integrations/MailPoet/Triggers/UserRegistrationTrigger.php @@ -3,6 +3,7 @@ namespace MailPoet\Automation\Integrations\MailPoet\Triggers; use MailPoet\Automation\Engine\Data\StepRunArgs; +use MailPoet\Automation\Engine\Data\StepValidationArgs; use MailPoet\Automation\Engine\Data\Subject; use MailPoet\Automation\Engine\Hooks; use MailPoet\Automation\Engine\Integration\Trigger; @@ -56,6 +57,9 @@ class UserRegistrationTrigger implements Trigger { ]; } + public function validate(StepValidationArgs $args): void { + } + public function registerHooks(): void { $this->wp->addAction('mailpoet_user_registered', [$this, 'handleSubscription']); }