Completed
Push — impl-EZP-26000-permission-look... ( 500ba3 )
by
unknown
26:49
created

Content::map()   B

Complexity

Conditions 2
Paths 2

Size

Total Lines 24
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 24
cc 2
eloc 15
nc 2
nop 2
rs 8.9713
1
<?php
2
3
/**
4
 * @copyright Copyright (C) eZ Systems AS. All rights reserved.
5
 * @license For full copyright and license information view LICENSE file distributed with this source code.
6
 */
7
namespace eZ\Publish\Core\Repository\PermissionResolver\PermissionInfoMapper;
8
9
use eZ\Publish\API\Repository\Values\Content\Content as APIContent;
10
use eZ\Publish\API\Repository\Values\Content\ContentInfo;
11
use eZ\Publish\API\Repository\Values\Content\VersionInfo;
12
use eZ\Publish\API\Repository\Values\User\UserReference;
13
use eZ\Publish\API\Repository\Values\ValueObject;
14
use eZ\Publish\Core\Repository\PermissionResolver\PermissionInfoMapper;
15
use eZ\Publish\Core\Repository\PermissionResolver\PermissionResolver;
16
use eZ\Publish\Core\Repository\Values\PermissionInfo;
17
18
/**
19
 * todo
20
 */
21
class Content extends PermissionInfoMapper
22
{
23
    private $permissionResolver;
24
25
    public function __construct(PermissionResolver $permissionResolver)
26
    {
27
        $this->permissionResolver = $permissionResolver;
28
    }
29
30
    private function getModuleFunctionMap()
31
    {
32
        return [
33
            'read' => [],
34
            'edit' => [
35
                'LanguageLimitation'
36
            ],
37
            'remove' => [],
38
        ];
39
    }
40
41
    public function canMap(ValueObject $object)
42
    {
43
        return (
44
            $object instanceof APIContent ||
45
            $object instanceof VersionInfo ||
46
            $object instanceof ContentInfo
47
        );
48
    }
49
50
    /**
51
     * todo
52
     *
53
     * @param \eZ\Publish\API\Repository\Values\User\UserReference $userReference
54
     *
55
     * @return \eZ\Publish\Core\Repository\PermissionResolver\Permission[]
56
     */
57
    private function getPermissions(UserReference $userReference)
58
    {
59
        return $this->permissionResolver->getPermissions($userReference, 'content');
60
    }
61
62
    public function map(ValueObject $object, UserReference $userReference)
63
    {
64
        $permissions = $this->getPermissions($userReference);
65
        $functionMap = $this->getModuleFunctionMap();
66
        $permissionMap = [];
67
68
        foreach ($functionMap as $function => $limitations) {
69
            $permissionMap[$function] = $this->permissionResolver->resolvePermissions(
70
                'content',
71
                $function,
72
                $permissions,
73
                $object,
74
                $userReference
75
            );
76
        }
77
78
        return new PermissionInfo(
79
            [
80
                'object' => $object,
81
                'userReference' => $userReference,
82
                'permissionMap' => $permissionMap,
83
            ]
84
        );
85
    }
86
}
87