<?php declare(strict_types = 1); namespace MailPoet\Automation\Engine\Data; if (!defined('ABSPATH')) exit; class Step { public const TYPE_ROOT = 'root'; public const TYPE_TRIGGER = 'trigger'; public const TYPE_ACTION = 'action'; /** @var string */ private $id; /** @var string */ private $type; /** @var string */ private $key; /** @var array */ protected $args; /** @var NextStep[] */ protected $nextSteps; /** @var Filters|null */ private $filters; /** * @param array<string, mixed> $args * @param NextStep[] $nextSteps */ public function __construct( string $id, string $type, string $key, array $args, array $nextSteps, Filters $filters = null ) { $this->id = $id; $this->type = $type; $this->key = $key; $this->args = $args; $this->nextSteps = $nextSteps; $this->filters = $filters; } public function getId(): string { return $this->id; } public function getType(): string { return $this->type; } public function getKey(): string { return $this->key; } /** @return NextStep[] */ public function getNextSteps(): array { return $this->nextSteps; } public function getNextStepIds(): array { $ids = []; foreach ($this->nextSteps as $nextStep) { $nextStepId = $nextStep->getId(); if ($nextStepId) { $ids[] = $nextStep->getId(); } } return $ids; } /** @param NextStep[] $nextSteps */ public function setNextSteps(array $nextSteps): void { $this->nextSteps = $nextSteps; } public function getArgs(): array { return $this->args; } public function getFilters(): ?Filters { return $this->filters; } public function toArray(): array { return [ 'id' => $this->id, 'type' => $this->type, 'key' => $this->key, 'args' => $this->args, 'next_steps' => array_map(function (NextStep $nextStep) { return $nextStep->toArray(); }, $this->nextSteps), 'filters' => $this->filters ? $this->filters->toArray() : null, ]; } public static function fromArray(array $data): self { return new self( $data['id'], $data['type'], $data['key'], $data['args'], array_map(function (array $nextStep) { return NextStep::fromArray($nextStep); }, $data['next_steps']), isset($data['filters']) ? Filters::fromArray($data['filters']) : null ); } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
Automation.php | File | 6.27 KB | 0644 |
|
AutomationRun.php | File | 3.13 KB | 0644 |
|
AutomationRunLog.php | File | 5.2 KB | 0644 |
|
AutomationStatistics.php | File | 1.16 KB | 0644 |
|
AutomationTemplate.php | File | 2.09 KB | 0644 |
|
AutomationTemplateCategory.php | File | 486 B | 0644 |
|
Field.php | File | 1.38 KB | 0644 |
|
Filter.php | File | 1.39 KB | 0644 |
|
FilterGroup.php | File | 1.19 KB | 0644 |
|
Filters.php | File | 1.01 KB | 0644 |
|
NextStep.php | File | 498 B | 0644 |
|
Step.php | File | 2.4 KB | 0644 |
|
StepRunArgs.php | File | 4.44 KB | 0644 |
|
StepValidationArgs.php | File | 1.83 KB | 0644 |
|
Subject.php | File | 909 B | 0644 |
|
SubjectEntry.php | File | 1.26 KB | 0644 |
|
index.php | File | 6 B | 0644 |
|