Completed
Pull Request — 1.0 (#53)
by Harald
06:43
created

UserGroupMapper   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 7

Test Coverage

Coverage 100%

Importance

Changes 7
Bugs 0 Features 1
Metric Value
wmc 7
c 7
b 0
f 1
lcom 1
cbo 7
dl 0
loc 56
ccs 28
cts 28
cp 1
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A userGroupToObject() 0 13 2
A populateUserGroupCreateStruct() 0 9 2
A populateUserGroupUpdateStruct() 0 10 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\ContentMetadataUpdateStruct;
13
use eZ\Publish\API\Repository\Values\User\UserGroup;
14
use eZ\Publish\API\Repository\Values\User\UserGroupCreateStruct;
15
use eZ\Publish\API\Repository\Values\User\UserGroupUpdateStruct;
16
use Transfer\EzPlatform\Repository\Values\UserGroupObject;
17
18
/**
19
 * Usergroup mapper.
20
 *
21
 * @author Harald Tollefsen <[email protected]>
22
 */
23
class UserGroupMapper
24
{
25
    /**
26
     * @var UserGroupObject
27
     */
28
    public $userGroupObject;
29
30
    /**
31
     * @param UserGroupObject $userGroupObject
32
     */
33 16
    public function __construct(UserGroupObject $userGroupObject)
34
    {
35 16
        $this->userGroupObject = $userGroupObject;
36 16
    }
37
38 16
    public function userGroupToObject(UserGroup $userGroup)
39
    {
40 16
        $this->userGroupObject->data['parent_id'] = $userGroup->parentId;
41
42 16
        $this->userGroupObject->data['fields'] = [];
43 16
        foreach ($userGroup->getFields() as $field) {
44 16
            $this->userGroupObject->data['fields'][$field->fieldDefIdentifier] = $field->value->text;
45 16
        }
46
47 16
        $this->userGroupObject->setProperty('id', $userGroup->contentInfo->id);
48 16
        $this->userGroupObject->setProperty('content_info', $userGroup->contentInfo);
49 16
        $this->userGroupObject->setProperty('version_info', $userGroup->versionInfo);
50 16
    }
51
52
    /**
53
     * @param UserGroupCreateStruct $userGroupCreateStruct
54
     */
55 16
    public function populateUserGroupCreateStruct(UserGroupCreateStruct $userGroupCreateStruct)
56
    {
57 16
        if (isset($this->userGroupObject->data['remote_id'])) {
58 2
            $userGroupCreateStruct->remoteId = $this->userGroupObject->data['remote_id'];
59 2
        }
60
61 16
        $fields = array_flip($this->userGroupObject->data['fields']);
62 16
        array_walk($fields, array($userGroupCreateStruct, 'setField'));
63 16
    }
64
65
    /**
66
     * @param UserGroupUpdateStruct $userGroupUpdateStruct
67
     */
68 3
    public function populateUserGroupUpdateStruct(UserGroupUpdateStruct $userGroupUpdateStruct)
69
    {
70 3
        if (isset($this->userGroupObject->data['remote_id'])) {
71 2
            $userGroupUpdateStruct->contentMetadataUpdateStruct = new ContentMetadataUpdateStruct();
72 2
            $userGroupUpdateStruct->contentMetadataUpdateStruct->remoteId = $this->userGroupObject->data['remote_id'];
73 2
        }
74
75 3
        $fields = array_flip($this->userGroupObject->data['fields']);
76 3
        array_walk($fields, array($userGroupUpdateStruct->contentUpdateStruct, 'setField'));
77 3
    }
78
}
79