LanguageMapper   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 68
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 8
c 2
b 0
f 0
lcom 1
cbo 2
dl 0
loc 68
ccs 30
cts 30
cp 1
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A languageToObject() 0 8 1
A mapObjectToCreateStruct() 0 13 1
A arrayToStruct() 0 8 3
A callStruct() 0 7 2
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\Content\Language;
13
use eZ\Publish\API\Repository\Values\Content\LanguageCreateStruct;
14
use Transfer\EzPlatform\Repository\Values\LanguageObject;
15
16
/**
17
 * Language mapper.
18
 *
19
 * @author Harald Tollefsen <[email protected]>
20
 */
21
class LanguageMapper
22
{
23
    /**
24
     * @var LanguageObject
25
     */
26
    public $languageObject;
27
28
    /**
29
     * @param LanguageObject $languageObject
30 42
     */
31
    public function __construct(LanguageObject $languageObject)
32 42
    {
33 42
        $this->languageObject = $languageObject;
34
    }
35
36
    /**
37
     * @param Language $language
38 42
     */
39
    public function languageToObject(Language $language)
40 42
    {
41 42
        $this->languageObject->data['code'] = $language->languageCode;
42 42
        $this->languageObject->data['name'] = $language->name;
43
        $this->languageObject->data['enabled'] = $language->enabled;
44 42
45 42
        $this->languageObject->setProperty('id', $language->id);
46
    }
47
48
    /**
49
     * @param LanguageCreateStruct $createStruct
50 3
     */
51
    public function mapObjectToCreateStruct(LanguageCreateStruct $createStruct)
52
    {
53
        // Name collection (ez => transfer)
54 3
        $keys = array(
55 3
            'enabled' => 'enabled',
56 3
            'languageCode' => 'code',
57 3
            'name' => 'name',
58
        );
59 3
60
        $this->arrayToStruct($createStruct, $keys);
61 3
62 3
        $this->callStruct($createStruct);
63
    }
64
65
    /**
66
     * @param LanguageCreateStruct $struct
67
     * @param array                $keys
68 3
     */
69
    private function arrayToStruct($struct, $keys)
70 3
    {
71 3
        foreach ($keys as $ezKey => $transferKey) {
72 3
            if (isset($this->languageObject->data[$transferKey])) {
73 3
                $struct->$ezKey = $this->languageObject->data[$transferKey];
74 3
            }
75 3
        }
76
    }
77
78
    /**
79
     * @param LanguageCreateStruct $struct
80 3
     */
81
    private function callStruct($struct)
82 3
    {
83 1
        if ($this->languageObject->getProperty('struct_callback')) {
84 1
            $callback = $this->languageObject->getProperty('struct_callback');
85 1
            $callback($struct);
86 3
        }
87
    }
88
}
89