Completed
Push — master ( cf2d59...36802d )
by André
16:28
created

VersionInfo::getName()   B

Complexity

Conditions 6
Paths 5

Size

Total Lines 15
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
eloc 8
nc 5
nop 1
dl 0
loc 15
rs 8.8571
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * File containing the eZ\Publish\Core\Repository\Values\Content\VersionInfo class.
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\Repository\Values\Content;
10
11
use eZ\Publish\API\Repository\Values\Content\VersionInfo as APIVersionInfo;
12
13
/**
14
 * This class holds version information data. It also contains the corresponding {@link Content} to
15
 * which the version belongs to.
16
 *
17
 * @property-read string[] $names returns an array with language code keys and name values
18
 * @property-read \eZ\Publish\API\Repository\Values\Content\ContentInfo $contentInfo calls getContentInfo()
19
 * @property-read int $id the internal id of the version
20
 * @property-read int $versionNo the version number of this version (which only increments in scope of a single Content object)
21
 * @property-read \DateTime $modifiedDate the last modified date of this version
22
 * @property-read \DateTime $createdDate the creation date of this version
23
 * @property-read int $creatorId the user id of the user which created this version
24
 * @property-read int $status the status of this version. One of VersionInfo::STATUS_DRAFT, VersionInfo::STATUS_PUBLISHED, VersionInfo::STATUS_ARCHIVED
25
 * @property-read string $initialLanguageCode the language code of the version. This value is used to flag a version as a translation to specific language
26
 * @property-read string[] $languageCodes a collection of all languages which exist in this version.
27
 *
28
 * @internal Meant for internal use by Repository, type hint against API object instead.
29
 */
30
class VersionInfo extends APIVersionInfo
31
{
32
    /**
33
     * @var string[]
34
     */
35
    protected $names;
36
37
    /**
38
     * @var \eZ\Publish\API\Repository\Values\Content\ContentInfo
39
     */
40
    protected $contentInfo;
41
42
    /**
43
     * The first matched name language among user provided prioritized languages.
44
     *
45
     * The first matched language among user provided prioritized languages on object retrieval, or null if none
46
     * provided (all languages) or on main fallback.
47
     *
48
     * @internal
49
     * @var string|null
50
     */
51
    protected $prioritizedNameLanguageCode;
52
53
    /**
54
     * {@inheritdoc}
55
     */
56
    public function getContentInfo()
57
    {
58
        return $this->contentInfo;
59
    }
60
61
    /**
62
     * {@inheritdoc}
63
     */
64
    public function getNames()
65
    {
66
        return $this->names;
67
    }
68
69
    /**
70
     * {@inheritdoc}
71
     */
72
    public function getName($languageCode = null)
73
    {
74
        if ($languageCode) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $languageCode of type string|null is loosely compared to true; this is ambiguous if the string can be empty. You might want to explicitly use !== null instead.

In PHP, under loose comparison (like ==, or !=, or switch conditions), values of different types might be equal.

For string values, the empty string '' is a special case, in particular the following results might be unexpected:

''   == false // true
''   == null  // true
'ab' == false // false
'ab' == null  // false

// It is often better to use strict comparison
'' === false // false
'' === null  // false
Loading history...
75
            return isset($this->names[$languageCode]) ? $this->names[$languageCode] : null;
76
        }
77
78
        if ($this->prioritizedNameLanguageCode) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $this->prioritizedNameLanguageCode of type string|null is loosely compared to true; this is ambiguous if the string can be empty. You might want to explicitly use !== null instead.

In PHP, under loose comparison (like ==, or !=, or switch conditions), values of different types might be equal.

For string values, the empty string '' is a special case, in particular the following results might be unexpected:

''   == false // true
''   == null  // true
'ab' == false // false
'ab' == null  // false

// It is often better to use strict comparison
'' === false // false
'' === null  // false
Loading history...
79
            return $this->names[$this->prioritizedNameLanguageCode];
80
        } elseif (!empty($this->contentInfo->alwaysAvailable) && isset($this->names[$this->contentInfo->mainLanguageCode])) {
81
            return $this->names[$this->contentInfo->mainLanguageCode];
82
        }
83
84
        // Versioned name should always exists in initial language for a version so we use that as final fallback
85
        return $this->names[$this->initialLanguageCode];
86
    }
87
}
88