Spaces:
No application file
No application file
| namespace Mautic\CoreBundle\Update; | |
| use Mautic\CoreBundle\Update\Step\StepInterface; | |
| class StepProvider | |
| { | |
| /** | |
| * @var StepInterface[] | |
| */ | |
| private array $initialSteps = []; | |
| /** | |
| * @var StepInterface[] | |
| */ | |
| private array $finalSteps = []; | |
| public function addStep(StepInterface $step): void | |
| { | |
| if ($step->shouldExecuteInFinalStage()) { | |
| $this->finalSteps[] = $step; | |
| return; | |
| } | |
| $this->initialSteps[] = $step; | |
| } | |
| /** | |
| * @return StepInterface[] | |
| */ | |
| public function getInitialSteps(): array | |
| { | |
| return $this->orderSteps($this->initialSteps); | |
| } | |
| /** | |
| * @return StepInterface[] | |
| */ | |
| public function getFinalSteps(): array | |
| { | |
| return $this->orderSteps($this->finalSteps); | |
| } | |
| /** | |
| * @return StepInterface[] | |
| */ | |
| private function orderSteps(array $steps): array | |
| { | |
| usort($steps, fn (StepInterface $step1, StepInterface $step2): int => $step1->getOrder() <=> $step2->getOrder()); | |
| return $steps; | |
| } | |
| } | |