Completed
Push — id3-metadata-objects ( e37014...ee91c4 )
by Daniel
12:20
created

CommentFrameReader::readLanguage()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 11
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 11
ccs 0
cts 7
cp 0
rs 9.4285
cc 3
eloc 6
nc 2
nop 0
crap 12
1
<?php
2
/**
3
 * This file is part of the Metadata package.
4
 *
5
 * @author Daniel Schröder <[email protected]>
6
 */
7
8
namespace GravityMedia\Metadata\ID3v2\Reader\Frame;
9
10
use GravityMedia\Stream\Stream;
11
12
/**
13
 * ID3v2 comment frame reader class.
14
 *
15
 * @package GravityMedia\Metadata\ID3v2\Metadata\Frame
16
 */
17
class CommentFrameReader extends TextFrameReader
18
{
19
    /**
20
     * @var string
21
     */
22
    private $language;
23
24
    /**
25
     * Create ID3v2 comment frame reader object.
26
     *
27
     * @param Stream $stream
28
     */
29
    public function __construct(Stream $stream)
30
    {
31
        parent::__construct($stream, 4);
32
    }
33
34
    /**
35
     * Read language.
36
     *
37
     * @return string
38
     */
39
    public function readLanguage()
40
    {
41
        $this->getStream()->seek($this->getOffset() + 1);
42
        $language = strtoupper(trim($this->getStream()->read(3), "\x00"));
43
44
        if ('XXX' === $language || strlen($language) !== 3) {
45
            $language = 'UND';
46
        }
47
48
        return $language;
49
    }
50
51
    /**
52
     * Get language.
53
     *
54
     * @return string
55
     */
56
    public function getLanguage()
57
    {
58
        if (null === $this->language) {
59
            $this->language = $this->readLanguage();
60
        }
61
62
        return $this->language;
63
    }
64
}
65