Completed
Push — master ( 0ff500...dd6203 )
by André
25:15 queued 09:04
created

VersionTranslationInfo   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Importance

Changes 0
Metric Value
dl 0
loc 51
rs 10
c 0
b 0
f 0
wmc 6
lcom 1
cbo 6

1 Method

Rating   Name   Duplication   Size   Complexity  
B visit() 0 41 6
1
<?php
2
3
/**
4
 * This file is part of the eZ Publish Kernel package.
5
 *
6
 * @copyright Copyright (C) eZ Systems AS. All rights reserved.
7
 * @license For full copyright and license information view LICENSE file distributed with this source code.
8
 */
9
namespace eZ\Publish\Core\REST\Server\Output\ValueObjectVisitor;
10
11
use eZ\Publish\Core\REST\Common\Output\ValueObjectVisitor;
12
use eZ\Publish\Core\REST\Common\Output\Generator;
13
use eZ\Publish\Core\REST\Common\Output\Visitor;
14
15
/**
16
 * Version value object visitor.
17
 */
18
class VersionTranslationInfo extends ValueObjectVisitor
19
{
20
    /**
21
     * Visit struct returned by controllers.
22
     *
23
     * @param \eZ\Publish\Core\REST\Common\Output\Visitor $visitor
24
     * @param \eZ\Publish\Core\REST\Common\Output\Generator $generator
25
     * @param \eZ\Publish\Core\REST\Server\Values\VersionTranslationInfo $data
26
     */
27
    public function visit(Visitor $visitor, Generator $generator, $data)
28
    {
29
        $versionInfo = $data->getVersionInfo();
30
        if (empty($versionInfo->languageCodes)) {
31
            return;
32
        }
33
34
        $generator->startObjectElement('VersionTranslationInfo');
35
36
        // single language-independent conditions for deleting Translation
37
        $canDelete = count($versionInfo->languageCodes) >= 2 && $versionInfo->isDraft();
38
39
        $generator->startList('Language');
40
        foreach ($versionInfo->languageCodes as $languageCode) {
41
            $generator->startHashElement('Language');
42
43
            $generator->startValueElement('languageCode', $languageCode);
44
            $generator->endValueElement('languageCode');
45
46
            // check conditions for deleting Translation
47
            if ($canDelete && $languageCode !== $versionInfo->contentInfo->mainLanguageCode) {
48
                $generator->startHashElement('DeleteTranslation');
49
                $path = $this->router->generate(
50
                    'ezpublish_rest_deleteTranslationFromDraft',
51
                    [
52
                        'contentId' => $versionInfo->contentInfo->id,
53
                        'versionNumber' => $versionInfo->versionNo,
54
                        'languageCode' => $languageCode,
55
                    ]
56
                );
57
                $generator->startAttribute('href', $path);
58
                $generator->endAttribute('href');
59
                $generator->endHashElement('DeleteTranslation');
60
            }
61
62
            $generator->endHashElement('Language');
63
        }
64
        $generator->endList('Language');
65
66
        $generator->endObjectElement('VersionTranslationInfo');
67
    }
68
}
69