UserMapper   A
last analyzed

Complexity

Total Complexity 12

Size/Duplication

Total Lines 102
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Test Coverage

Coverage 100%

Importance

Changes 3
Bugs 0 Features 0
Metric Value
wmc 12
c 3
b 0
f 0
lcom 1
cbo 6
dl 0
loc 102
ccs 47
cts 47
cp 1
rs 10

7 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A userToObject() 0 7 1
A mapObjectToCreateStruct() 0 13 1
A mapObjectToUpdateStruct() 0 17 1
A arrayToStruct() 0 8 3
A assignStructFieldValues() 0 10 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\User\User;
13
use eZ\Publish\API\Repository\Values\User\UserCreateStruct;
14
use eZ\Publish\API\Repository\Values\User\UserUpdateStruct;
15
use eZ\Publish\Core\Repository\Values\Content\ContentUpdateStruct;
16
use Transfer\EzPlatform\Repository\Values\UserObject;
17
18
/**
19
 * User mapper.
20
 *
21
 * @author Harald Tollefsen <[email protected]>
22
 */
23
class UserMapper
24
{
25
    /**
26
     * @var UserObject
27
     */
28
    public $userObject;
29
30
    /**
31
     * @param UserObject $userObject
32 10
     */
33
    public function __construct(UserObject $userObject)
34 10
    {
35 10
        $this->userObject = $userObject;
36
    }
37
38
    /**
39
     * @param User $user
40 1
     */
41
    public function userToObject(User $user)
42 1
    {
43 1
        $this->userObject->data['username'] = $user->login;
44 1
        $this->userObject->data['email'] = $user->email;
45 1
        $this->userObject->data['enabled'] = $user->enabled;
46 1
        $this->userObject->data['max_login'] = $user->maxLogin;
47
    }
48
49
    /**
50
     * @param UserCreateStruct $createStruct
51 5
     */
52
    public function mapObjectToCreateStruct(UserCreateStruct $createStruct)
53
    {
54
        // Name collection (ez => transfer)
55 5
        $keys = array(
56 5
            'enabled' => 'enabled',
57
        );
58 5
59
        $this->arrayToStruct($createStruct, $keys);
60 5
61
        $this->assignStructFieldValues($createStruct);
62 5
63 5
        $this->callStruct($createStruct);
64
    }
65
66
    /**
67
     * @param UserUpdateStruct $updateStruct
68 8
     */
69
    public function mapObjectToUpdateStruct(UserUpdateStruct $updateStruct)
70 8
    {
71
        $updateStruct->contentUpdateStruct = new ContentUpdateStruct();
72
73
        // Name collection (ez => transfer)
74 8
        $keys = array(
75 8
            'email' => 'email',
76 8
            'maxLogin' => 'max_login',
77 8
            'enabled' => 'enabled',
78
        );
79 8
80
        $this->arrayToStruct($updateStruct, $keys);
81 8
82
        $this->assignStructFieldValues($updateStruct);
83 8
84 8
        $this->callStruct($updateStruct);
85
    }
86
87
    /**
88
     * @param UserCreateStruct|UserUpdateStruct $struct
89
     * @param array                             $keys
90 10
     */
91
    private function arrayToStruct($struct, $keys)
92 10
    {
93 10
        foreach ($keys as $ezKey => $transferKey) {
94 9
            if (isset($this->userObject->data[$transferKey])) {
95 9
                $struct->$ezKey = $this->userObject->data[$transferKey];
96 10
            }
97 10
        }
98
    }
99
100
    /**
101
     * @param UserCreateStruct|UserUpdateStruct $struct
102 10
     */
103
    private function assignStructFieldValues($struct)
104 10
    {
105 10
        foreach ($this->userObject->data['fields'] as $key => $value) {
106 8
            if ($struct instanceof UserUpdateStruct) {
107 8
                $struct->contentUpdateStruct->setField($key, $value);
108 5
            } else {
109
                $struct->setField($key, $value);
110 10
            }
111 10
        }
112
    }
113
114
    /**
115
     * @param UserCreateStruct|UserUpdateStruct $struct
116 10
     */
117
    private function callStruct($struct)
118 10
    {
119 1
        if ($this->userObject->getProperty('struct_callback')) {
120 1
            $callback = $this->userObject->getProperty('struct_callback');
121 1
            $callback($struct);
122 10
        }
123
    }
124
}
125