Completed
Push — middleware-wip ( 5cfd03...f2f782 )
by Romain
05:53
created

AbstractFormObjectBuilder   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 71
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

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

4 Methods

Rating   Name   Duplication   Size   Complexity  
B getStaticInstance() 0 28 1
A getFormDefinitionObject() 0 7 1
A process() 0 3 1
getFormDefinition() 0 1 ?
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\Form\FormObject\Builder;
15
16
use Romm\Formz\Condition\Items\FieldIsValidCondition;
17
use Romm\Formz\Core\Core;
18
use Romm\Formz\Form\Definition\FormDefinition;
19
use Romm\Formz\Form\FormObject\Definition\FormDefinitionObject;
20
use Romm\Formz\Form\FormObject\FormObjectStatic;
21
use TYPO3\CMS\Core\Utility\GeneralUtility;
22
23
abstract class AbstractFormObjectBuilder implements FormObjectBuilderInterface
24
{
25
    /**
26
     * @var string
27
     */
28
    protected $className;
29
30
    /**
31
     * @var FormObjectStatic
32
     */
33
    protected $static;
34
35
    /**
36
     * @param string $className
37
     * @return FormObjectStatic
38
     */
39
    public function getStaticInstance($className)
40
    {
41
        $this->className = $className;
42
43
        $formDefinitionObject = $this->getFormDefinitionObject();
44
45
        $this->static = Core::instantiate(
46
            FormObjectStatic::class,
47
            $this->className,
48
            $formDefinitionObject
49
        );
50
51
        $this->process();
52
53
//        \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($formDefinitionObject->getValidationResult()->getFlattenedErrors(), '$formDefinitionObject->getValidationResult()->getFlattenedErrors()');
54
//        \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($formDefinitionObject->getDefinition(), '$formDefinitionObject->getDefinition()');
55
//        $formDefinitionObject->getDefinition()->addCondition('aze', FieldIsValidCondition::class, ['fieldName' => 'name']);
56
//        die();
57
58
        $formDefinitionObject->refreshValidationResult();
59
60
        /*
61
         * @todo
62
         */
63
        $formDefinitionObject->getDefinition()->getState()->markDefinitionAsFrozen();
64
65
        return $this->static;
66
    }
67
68
69
    /**
70
     * @return FormDefinitionObject
71
     */
72
    protected function getFormDefinitionObject()
73
    {
74
        /** @var FormDefinitionObject $formDefinitionObject */
75
        $formDefinitionObject = GeneralUtility::makeInstance(FormDefinitionObject::class, $this->getFormDefinition());
76
77
        return $formDefinitionObject;
78
    }
79
80
    /**
81
     * Override this function in child classes to implement custom processes.
82
     */
83
    protected function process()
84
    {
85
    }
86
87
    /**
88
     * Must return the form definition of the form class.
89
     *
90
     * @return FormDefinition
91
     */
92
    abstract public function getFormDefinition();
93
}
94