Completed
Push — middleware-wip ( ffd957...48fd00 )
by Romain
02:53
created

StepValidator   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 0
Metric Value
wmc 5
c 0
b 0
f 0
lcom 1
cbo 4
dl 0
loc 45
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
B isValid() 0 23 4
1
<?php
2
/*
3
 * 2017 Romain CANON <[email protected]>
4
 *
5
 * This file is part of the TYPO3 FormZ project.
6
 * It is free software; you can redistribute it and/or modify it
7
 * under the terms of the GNU General Public License, either
8
 * version 3 of the License, or any later version.
9
 *
10
 * For the full copyright and license information, see:
11
 * http://www.gnu.org/licenses/gpl-3.0.html
12
 */
13
14
namespace Romm\Formz\Validation\Validator\Internal;
15
16
use Romm\Formz\Configuration\Form\Form;
17
use Romm\Formz\Configuration\Form\Step\Step;
18
use TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator;
19
20
class StepValidator extends AbstractValidator
21
{
22
    /**
23
     * @var Form
24
     */
25
    protected $form;
26
27
    /**
28
     * @param array $options
29
     * @param Form  $form
30
     */
31
    public function __construct(array $options = [], Form $form)
32
    {
33
        parent::__construct($options);
34
35
        $this->form = $form;
36
    }
37
38
    /**
39
     * @param Step $step
40
     */
41
    public function isValid($step)
42
    {
43
        if (false === $step instanceof Step) {
44
            return;
45
        }
46
47
        if (false === $this->form->hasPersistence()) {
48
            $this->addError(
49
                'In order to use steps, you first need to register at least one persistence service for this form.',
50
                1491828562
51
            );
52
        } else {
53
            $defaultStep = $step->getSettings()->getDefaultStep();
54
55
            if (false === $step->hasStep($defaultStep)) {
56
                $this->addError(
57
                    'The step "%s" does not exist.',
58
                    1491828813,
59
                    [$defaultStep]
60
                );
61
            }
62
        }
63
    }
64
}
65