Parameters::get()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 8
rs 9.4285
cc 2
eloc 4
nc 2
nop 1
1
<?php
2
3
namespace Ddeboer\Imap;
4
5
use Ddeboer\Transcoder\Transcoder;
6
7
class Parameters
8
{
9
    protected $parameters = [];
10
    
11
    public function __construct(array $parameters = [])
12
    {
13
        $this->add($parameters);
14
    }
15
    
16
    public function add(array $parameters = [])
17
    {
18
        foreach ($parameters as $parameter) {
19
            $key = strtolower($parameter->attribute);
20
            $value = $this->decode($parameter->value);
21
            $this->parameters[$key] = $value;
22
        }
23
    }
24
    
25
    public function get($key)
26
    {
27
        if (isset($this->parameters[$key])) {
28
            return $this->parameters[$key];
29
        }
30
        
31
        return null;
32
    }
33
    
34
    protected function decode($value)
35
    {
36
        $decoded = '';
37
        $parts = imap_mime_header_decode($value);
38
        foreach ($parts as $part) {
39
            $charset = 'default' == $part->charset ? 'auto' : $part->charset;
40
            // imap_utf8 doesn't seem to work properly, so use Transcoder instead
41
            $decoded .= Transcoder::create()->transcode($part->text, $charset);
42
        }
43
        
44
        return $decoded;
45
    }
46
}
47