Passed
Push — master ( 57b5b6...1bd009 )
by
unknown
47:04 queued 32:28
created

SelectOptionsExtractor   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 1
eloc 32
dl 0
loc 53
rs 10
c 1
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 45 1
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of the TYPO3 CMS project.
7
 *
8
 * It is free software; you can redistribute it and/or modify it under
9
 * the terms of the GNU General Public License, either version 2
10
 * of the License, or any later version.
11
 *
12
 * For the full copyright and license information, please read the
13
 * LICENSE.txt file that was distributed with this source code.
14
 *
15
 * The TYPO3 project - inspiring people to share!
16
 */
17
18
namespace TYPO3\CMS\Form\Domain\Configuration\FrameworkConfiguration\Extractors\PropertyCollectionElement;
19
20
use TYPO3\CMS\Core\Utility\ArrayUtility;
21
use TYPO3\CMS\Form\Domain\Configuration\FrameworkConfiguration\Extractors\AbstractExtractor;
22
23
/**
24
 * @internal
25
 */
26
class SelectOptionsExtractor extends AbstractExtractor
27
{
28
29
    /**
30
     * @param string $_
31
     * @param mixed $value
32
     * @param array $matches
33
     */
34
    public function __invoke(string $_, $value, array $matches)
35
    {
36
        [, $formElementType, $propertyCollectionName, $propertyCollectionIndex, $propertyCollectionEditorIndex] = $matches;
37
38
        $propertyPath = ArrayUtility::getValueByPath(
39
            $this->extractorDto->getPrototypeConfiguration(),
40
            implode(
41
                '.',
42
                [
43
                    'formElementsDefinition',
44
                    $formElementType,
45
                    'formEditor',
46
                    'propertyCollections',
47
                    $propertyCollectionName,
48
                    $propertyCollectionIndex,
49
                    'editors',
50
                    $propertyCollectionEditorIndex,
51
                    'propertyPath',
52
                ]
53
            ),
54
            '.'
55
        );
56
57
        $propertyCollectionElementIdentifier = ArrayUtility::getValueByPath(
58
            $this->extractorDto->getPrototypeConfiguration(),
59
            implode(
60
                '.',
61
                [
62
                    'formElementsDefinition',
63
                    $formElementType,
64
                    'formEditor',
65
                    'propertyCollections',
66
                    $propertyCollectionName,
67
                    $propertyCollectionIndex,
68
                    'identifier'
69
                ]
70
            ),
71
            '.'
72
        );
73
74
        $propertyCollectionName = str_replace('Definition', '', $propertyCollectionName);
75
76
        $result = $this->extractorDto->getResult();
77
        $result['collections'][$propertyCollectionName][$propertyCollectionElementIdentifier]['selectOptions'][$propertyPath][] = $value;
78
        $this->extractorDto->setResult($result);
79
    }
80
}
81