File "WorkflowValidator.php"
Full Path: /home/warrior1/public_html/wp-content-20241001222009/plugins/mailpoet/lib/Automation/Engine/Validation/WorkflowValidator.php
File size: 2.69 KB
MIME-type: text/x-php
Charset: utf-8
<?php declare(strict_types = 1);
namespace MailPoet\Automation\Engine\Validation;
if (!defined('ABSPATH')) exit;
use MailPoet\Automation\Engine\Data\Workflow;
use MailPoet\Automation\Engine\Validation\WorkflowGraph\WorkflowWalker;
use MailPoet\Automation\Engine\Validation\WorkflowRules\AtLeastOneTriggerRule;
use MailPoet\Automation\Engine\Validation\WorkflowRules\ConsistentStepMapRule;
use MailPoet\Automation\Engine\Validation\WorkflowRules\NoCycleRule;
use MailPoet\Automation\Engine\Validation\WorkflowRules\NoDuplicateEdgesRule;
use MailPoet\Automation\Engine\Validation\WorkflowRules\NoJoinRule;
use MailPoet\Automation\Engine\Validation\WorkflowRules\NoSplitRule;
use MailPoet\Automation\Engine\Validation\WorkflowRules\NoUnreachableStepsRule;
use MailPoet\Automation\Engine\Validation\WorkflowRules\TriggerNeedsToBeFollowedByActionRule;
use MailPoet\Automation\Engine\Validation\WorkflowRules\TriggersUnderRootRule;
use MailPoet\Automation\Engine\Validation\WorkflowRules\UnknownStepRule;
use MailPoet\Automation\Engine\Validation\WorkflowRules\ValidStepArgsRule;
use MailPoet\Automation\Engine\Validation\WorkflowRules\ValidStepOrderRule;
use MailPoet\Automation\Engine\Validation\WorkflowRules\ValidStepRule;
use MailPoet\Automation\Engine\Validation\WorkflowRules\ValidStepValidationRule;
class WorkflowValidator {
/** @var WorkflowWalker */
private $workflowWalker;
/** @var ValidStepArgsRule */
private $validStepArgsRule;
/** @var ValidStepOrderRule */
private $validStepOrderRule;
/** @var ValidStepValidationRule */
private $validStepValidationRule;
/** @var UnknownStepRule */
private $unknownStepRule;
public function __construct(
UnknownStepRule $unknownStepRule,
ValidStepArgsRule $validStepArgsRule,
ValidStepOrderRule $validStepOrderRule,
ValidStepValidationRule $validStepValidationRule,
WorkflowWalker $workflowWalker
) {
$this->unknownStepRule = $unknownStepRule;
$this->validStepArgsRule = $validStepArgsRule;
$this->validStepOrderRule = $validStepOrderRule;
$this->validStepValidationRule = $validStepValidationRule;
$this->workflowWalker = $workflowWalker;
}
public function validate(Workflow $workflow): void {
$this->workflowWalker->walk($workflow, [
new NoUnreachableStepsRule(),
new ConsistentStepMapRule(),
new NoDuplicateEdgesRule(),
new TriggersUnderRootRule(),
new AtLeastOneTriggerRule(),
new TriggerNeedsToBeFollowedByActionRule(),
new NoCycleRule(),
new NoJoinRule(),
new NoSplitRule(),
$this->unknownStepRule,
new ValidStepRule([
$this->validStepArgsRule,
$this->validStepOrderRule,
$this->validStepValidationRule,
]),
]);
}
}