FieldDefinitionMapper::arrayToStruct()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 3

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 4
c 1
b 0
f 0
nc 3
nop 2
dl 0
loc 8
ccs 6
cts 6
cp 1
crap 3
rs 9.4285
1
<?php
2
3
/**
4
 * This file is part of Transfer.
5
 *
6
 * For the full copyright and license information, please view the LICENSE file located
7
 * in the root directory.
8
 */
9
10
namespace Transfer\EzPlatform\Repository\Values\Mapper;
11
12
use eZ\Publish\API\Repository\Values\ContentType\FieldDefinitionCreateStruct;
13
use eZ\Publish\API\Repository\Values\ContentType\FieldDefinitionUpdateStruct;
14
use Transfer\EzPlatform\Repository\Values\FieldDefinitionObject;
15
16
/**
17
 * Field definition mapper.
18
 *
19
 * @internal
20
 *
21
 * @author Harald Tollefsen <[email protected]>
22
 */
23
class FieldDefinitionMapper
24
{
25
    /**
26
     * @var FieldDefinitionObject
27
     */
28
    public $fieldDefinitionObject;
29
30
    /**
31
     * @param FieldDefinitionObject $fieldDefinitionObject
32 38
     */
33
    public function __construct(FieldDefinitionObject $fieldDefinitionObject)
34 38
    {
35 38
        $this->fieldDefinitionObject = $fieldDefinitionObject;
36
    }
37
38
    /**
39
     * @param FieldDefinitionCreateStruct $createStruct
40 6
     */
41
    public function mapObjectToCreateStruct(FieldDefinitionCreateStruct $createStruct)
42
    {
43
        // Name collection (ez => transfer)
44 6
        $keys = array(
45 6
            'names' => 'names',
46 6
            'descriptions' => 'descriptions',
47 6
            'fieldGroup' => 'field_group',
48 6
            'position' => 'position',
49 6
            'isTranslatable' => 'is_translatable',
50 6
            'isRequired' => 'is_required',
51 6
            'isInfoCollector' => 'is_info_collector',
52 6
            'isSearchable' => 'is_searchable',
53 6
            'fieldSettings' => 'field_settings',
54 6
            'defaultValue' => 'default_value',
55 6
            'identifier' => 'identifier',
56 6
            'validatorConfiguration' => 'validator_configuration',
57 6
            'fieldTypeIdentifier' => 'type',
58
        );
59 6
60
        $this->arrayToStruct($createStruct, $keys);
61 6
62 6
        $this->callStruct($createStruct);
63
    }
64
65
    /**
66
     * @param FieldDefinitionUpdateStruct $updateStruct
67 33
     */
68
    public function mapObjectToUpdateStruct(FieldDefinitionUpdateStruct $updateStruct)
69
    {
70
        // Name collection (ez => transfer)
71 33
        $keys = array(
72 33
            'names' => 'names',
73 33
            'descriptions' => 'descriptions',
74 33
            'fieldGroup' => 'field_group',
75 33
            'position' => 'position',
76 33
            'isTranslatable' => 'is_translatable',
77 33
            'isRequired' => 'is_required',
78 33
            'isInfoCollector' => 'is_info_collector',
79 33
            'isSearchable' => 'is_searchable',
80 33
            'fieldSettings' => 'field_settings',
81 33
            'defaultValue' => 'default_value',
82 33
            'identifier' => 'identifier',
83 33
            'validatorConfiguration' => 'validator_configuration',
84
        );
85 33
86
        $this->arrayToStruct($updateStruct, $keys);
87 33
88 33
        $this->callStruct($updateStruct);
89
    }
90
91
    /**
92
     * @param FieldDefinitionCreateStruct|FieldDefinitionUpdateStruct $struct
93
     * @param array                                                   $keys
94 38
     */
95
    private function arrayToStruct($struct, $keys)
96 38
    {
97 38
        foreach ($keys as $ezKey => $transferKey) {
98 38
            if (isset($this->fieldDefinitionObject->data[$transferKey])) {
99 38
                $struct->$ezKey = $this->fieldDefinitionObject->data[$transferKey];
100 38
            }
101 38
        }
102
    }
103
104
    /**
105
     * @param FieldDefinitionCreateStruct|FieldDefinitionUpdateStruct $struct
106 38
     */
107
    private function callStruct($struct)
108 38
    {
109 1
        if ($this->fieldDefinitionObject->getProperty('struct_callback')) {
110 1
            $callback = $this->fieldDefinitionObject->getProperty('struct_callback');
111 1
            $callback($struct);
112 38
        }
113
    }
114
}
115